网站建设站建设好吗,然后在亚马逊网站上做外贸,网页设计具体方案,手机网站程序源码概念
神经网络的梯度下降法是训练神经网络的核心优化算法之一。它通过调整神经网络的权重和偏差#xff0c;以最小化损失函数#xff0c;从而使神经网络能够逐渐逼近目标函数的最优值。
步骤
1损失函数#xff08;Loss Function#xff09;#xff1a; 首先#xff0c…概念
神经网络的梯度下降法是训练神经网络的核心优化算法之一。它通过调整神经网络的权重和偏差以最小化损失函数从而使神经网络能够逐渐逼近目标函数的最优值。
步骤
1损失函数Loss Function 首先我们定义一个损失函数用来衡量神经网络预测值与真实标签之间的差距。常见的损失函数包括均方误差Mean Squared Error和交叉熵Cross-Entropy等。
2初始化参数 在训练之前需要随机初始化神经网络的权重和偏差。
4前向传播 通过前向传播计算神经网络的输出根据输入数据、权重和偏差计算每一层的激活值和预测值。
5计算损失 使用损失函数计算预测值与真实标签之间的差距。
6反向传播 反向传播是梯度下降法的关键步骤。它从输出层开始计算每一层的误差梯度然后根据链式法则将梯度传递回每一层。这样可以得到关于权重和偏差的梯度信息指导参数的更新。
7更新参数 使用梯度信息按照一定的学习率learning rate更新神经网络的权重和偏差。通常采用如下更新规则新权重 旧权重 - 学习率 × 梯度。
8重复迭代 重复执行前向传播、计算损失、反向传播和参数更新步骤直到损失函数收敛或达到预定的迭代次数。
9评估模型 在训练过程中可以周期性地评估模型在验证集上的性能以防止过拟合并选择合适的模型。
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 4weights_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_hiddenhidden_output sigmoid(hidden_input)final_input np.dot(hidden_output, weights_hidden_output) bias_outputfinal_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_ratebias_output np.sum(d_output, axis0, keepdimsTrue) * learning_rateweights_input_hidden X.T.dot(d_hidden) * learning_ratebias_hidden np.sum(d_hidden, axis0, keepdimsTrue) * learning_rateif epoch % 1000 0:print(fEpoch {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)