神经网络基础-神经网络补充概念-23-神经网络的梯度下降法

概念

神经网络的梯度下降法是训练神经网络的核心优化算法之一。它通过调整神经网络的权重和偏差,以最小化损失函数,从而使神经网络能够逐渐逼近目标函数的最优值。

步骤

1损失函数(Loss Function):

首先,我们定义一个损失函数,用来衡量神经网络预测值与真实标签之间的差距。常见的损失函数包括均方误差(Mean Squared Error)和交叉熵(Cross-Entropy)等。

2初始化参数:

在训练之前,需要随机初始化神经网络的权重和偏差。

4前向传播:

通过前向传播计算神经网络的输出,根据输入数据、权重和偏差计算每一层的激活值和预测值。

5计算损失:

使用损失函数计算预测值与真实标签之间的差距。

6反向传播:

反向传播是梯度下降法的关键步骤。它从输出层开始,计算每一层的误差梯度,然后根据链式法则将梯度传递回每一层。这样,可以得到关于权重和偏差的梯度信息,指导参数的更新。

7更新参数:

使用梯度信息,按照一定的学习率(learning rate)更新神经网络的权重和偏差。通常采用如下更新规则:新权重 = 旧权重 - 学习率 × 梯度。

8重复迭代:

重复执行前向传播、计算损失、反向传播和参数更新步骤,直到损失函数收敛或达到预定的迭代次数。

9评估模型:

在训练过程中,可以周期性地评估模型在验证集上的性能,以防止过拟合并选择合适的模型。

python实现

python 复制代码
import numpy as np

# 定义 sigmoid 激活函数及其导数
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

def sigmoid_derivative(x):
    return x * (1 - x)

# 设置随机种子以保证可重复性
np.random.seed(42)

# 生成模拟数据
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([[0], [1], [1], [0]])

# 初始化权重和偏差
input_size = 2
output_size = 1
hidden_size = 4

weights_input_hidden = np.random.uniform(-1, 1, (input_size, hidden_size))
bias_hidden = np.zeros((1, hidden_size))

weights_hidden_output = np.random.uniform(-1, 1, (hidden_size, output_size))
bias_output = np.zeros((1, output_size))

# 设置学习率和迭代次数
learning_rate = 0.1
epochs = 10000

# 训练神经网络
for epoch in range(epochs):
    # 前向传播
    hidden_input = np.dot(X, weights_input_hidden) + bias_hidden
    hidden_output = sigmoid(hidden_input)

    final_input = np.dot(hidden_output, weights_hidden_output) + bias_output
    final_output = sigmoid(final_input)

    # 计算损失
    loss = np.mean(0.5 * (y - final_output) ** 2)

    # 反向传播
    d_output = (y - final_output) * sigmoid_derivative(final_output)
    d_hidden = d_output.dot(weights_hidden_output.T) * sigmoid_derivative(hidden_output)

    # 更新权重和偏差
    weights_hidden_output += hidden_output.T.dot(d_output) * learning_rate
    bias_output += np.sum(d_output, axis=0, keepdims=True) * learning_rate

    weights_input_hidden += X.T.dot(d_hidden) * learning_rate
    bias_hidden += np.sum(d_hidden, axis=0, keepdims=True) * learning_rate

    if epoch % 1000 == 0:
        print(f'Epoch {epoch}, Loss: {loss}')

# 打印训练后的权重和偏差
print('Final weights_input_hidden:', weights_input_hidden)
print('Final bias_hidden:', bias_hidden)
print('Final weights_hidden_output:', weights_hidden_output)
print('Final bias_output:', bias_output)
相关推荐
拜小白9 小时前
【论文解读】《DeepPanoContext:用全局场景关系图 + 可微关系优做全景 3D 场景理解
深度学习·计算机视觉·全景图
剑雨巍巍9 小时前
AI Agent面试之基础概念
人工智能
微帧Visionular9 小时前
AI视频单帧清晰,播放时却闪烁,原因是什么?
人工智能·深度学习·音视频
武子康9 小时前
MultiNet6 空闲崩溃:`EXCVADDR=0x8` 后又出现 `CORRUPT HEAP`
人工智能·后端·agent
云智慧AIOps社区9 小时前
智能巡检机器人应用场景解析:机房巡检、园区安防、管廊巡视与展厅导览
人工智能·机器人·具身智能·智能巡检机器人·企业级智能巡检机器人·机房巡检机器人·导览机器人
EnCi Zheng9 小时前
Agent 如何进行工具调用:从一次 Function Calling 到生产级工具编排的完整链路
大数据·人工智能·agent·ai编程·工具调用
赛博守夜人9 小时前
AI安全攻防与治理之十四:AI 安全测试不能脱离传统安全,Web、API、移动端与模型攻击面的组合拳
前端·人工智能·安全
lovingsoft9 小时前
AI 时代未来软件形态趋势:从固定功能应用,走向意图驱动、智能体原生的柔性系统-浅析
人工智能
GlobalInfo9 小时前
重磅发布 | 2026年船体清洁机器人行业研究报告:市场规模、发展前景与十五五战略地图
大数据·人工智能·机器人
海宇服务9 小时前
零信任架构实战:基于海宇全能小微企业报告构建自动化园区商户免押租赁资信核验网关
大数据·人工智能·架构·自动化