【机器学习】神经网络通过梯度下降学习的步骤以及前向传播的详细步骤
通过这个过程,神经网络能够通过不断调整参数来学习数据中的模式,并减少预测误差对于每个层lll,计算加权输入ZlZ^{[l]}Zl应用激活函数σ\sigmaσ来获得激活输出AlA^{[l]}Al重复步骤1和2,直到到达输出层在输出层应用适当的激活函数(如Softmax)以获得最终输出。前向传播是神经网络进行预测的基础,它将输入数据转换为输出预测,为后续的反向传播和参数更新提供了必要的信息
·
引言
神经网络中的梯度下降是一种优化算法,用于训练网络,即调整网络的权重和偏置,以最小化损失函数
文章目录
一、神经网络通过梯度下降学习的步骤
1.1 初始化网络参数
- 随机初始化权重 W W W 和偏置 b b b
- 这些参数将随着训练过程的进行而更新
1.2 前向传播(Forward Propagation)
- 对于每个训练样本
x
x
x 和其对应的标签
y
y
y:
- 输入层:将输入 x x x传递到网络的第一层。
- 隐藏层:
- 计算加权输入: z [ l ] = W [ l ] a [ l − 1 ] + b [ l ] z^{[l]} = W^{[l]}a^{[l-1]} + b^{[l]} z[l]=W[l]a[l−1]+b[l],其中 l l l 表示层数, a [ l − 1 ] a^{[l-1]} a[l−1] 是前一层激活输出。
- 应用激活函数:
a
[
l
]
=
σ
(
z
[
l
]
)
a^{[l]} = \sigma(z^{[l]})
a[l]=σ(z[l]),其中
σ
\sigma
σ 是激活函数,如
ReLU
、Sigmoid
或Tanh
- 输出层:
- 计算加权输入和激活输出,对于分类问题,通常使用Softmax函数计算最终输出
1.3 计算损失(Loss)
- 使用损失函数计算预测输出 y ^ \hat{y} y^和实际标签 y y y之间的差异。
- 常见的损失函数包括:
- 对于回归问题:均方误差(MSE) L ( y , y ^ ) = 1 2 m ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2 L(y, \hat{y}) = \frac{1}{2m}\sum_{i=1}^{m}(y^{(i)} - \hat{y}^{(i)})^2 L(y,y^)=2m1∑i=1m(y(i)−y^(i))2
- 对于分类问题:交叉熵损失 L ( y , y ^ ) = − 1 m ∑ i = 1 m y ( i ) log ( y ^ ( i ) ) L(y, \hat{y}) = -\frac{1}{m}\sum_{i=1}^{m}y^{(i)}\log(\hat{y}^{(i)}) L(y,y^)=−m1∑i=1my(i)log(y^(i))
1.4 反向传播(Back Propagation)
- 计算损失函数关于输出层激活的梯度。
- 逆向遍历网络,计算每一层的梯度:
- 对于输出层:
- KaTeX parse error: Can't use function '\)' in math mode at position 58: …igma'(z^{[L]}) \̲)̲,其中 \( \nabla_{…是损失函数关于 a [ L ] a^{[L]} a[L]的梯度, σ ′ \sigma' σ′是激活函数的导数。
- 对于隐藏层:
- δ [ l ] = ( ( W [ l + 1 ] ) T δ [ l + 1 ] ) ⋅ σ ′ ( z [ l ] ) \delta^{[l]} = ((W^{[l+1]})^T \delta^{[l+1]}) \cdot \sigma'(z^{[l]}) δ[l]=((W[l+1])Tδ[l+1])⋅σ′(z[l])
- 计算损失函数关于参数的梯度:
- ∂ L ∂ W [ l ] = 1 m δ [ l ] ( a [ l − 1 ] ) T \frac{\partial L}{\partial W^{[l]}} = \frac{1}{m} \delta^{[l]} (a^{[l-1]})^T ∂W[l]∂L=m1δ[l](a[l−1])T
- ∂ L ∂ b [ l ] = 1 m ∑ i = 1 m δ [ l ] ( i ) \frac{\partial L}{\partial b^{[l]}} = \frac{1}{m} \sum_{i=1}^{m} \delta^{[l] (i)} ∂b[l]∂L=m1∑i=1mδ[l](i)
- 对于输出层:
1.5 参数更新
- 使用梯度下降更新权重和偏置:
- W [ l ] = W [ l ] − α ∂ L ∂ W [ l ] W^{[l]} = W^{[l]} - \alpha \frac{\partial L}{\partial W^{[l]}} W[l]=W[l]−α∂W[l]∂L - b [ l ] = b [ l ] − α ∂ L ∂ b [ l ] b^{[l]} = b^{[l]} - \alpha \frac{\partial L}{\partial b^{[l]}} b[l]=b[l]−α∂b[l]∂L
- 其中, α \alpha α是学习率
1.6 迭代
- 重复步骤2到5,直到满足停止条件,如达到预定的迭代次数、损失低于某个阈值或验证集上的性能不再提升
1.7 详细说明反向传播中的梯度计算
- 输出层梯度:对于不同的损失函数,计算方式不同。例如,对于交叉熵损失, δ [ L ] = y ^ − y \delta^{[L]} = \hat{y} - y δ[L]=y^−y
- 隐藏层梯度:通过链式法则,将输出层的梯度传递回前一层,计算每一层的梯度
- 参数梯度:最终计算得到的梯度用于更新权重和偏置
1.8 总结
通过这个过程,神经网络能够通过不断调整参数来学习数据中的模式,并减少预测误差
二、前向传播
前向传播(Forward Propagation)是神经网络中用于计算网络输出的一系列步骤。在这个过程中,输入数据通过网络层传递,每层都对数据进行变换,直到到达输出层。以下是前向传播的详细步骤:
2.1 输入层
- 输入数据:网络接收输入数据 X X X,它是一个维度为 [ n , d ] [n, d] [n,d]的矩阵,其中 n n n 是样本数量, d d d 是每个样本的特征数量
2.2 第一层(隐藏层或输入层)
- 加权输入:计算每个神经元的加权输入
Z
[
1
]
Z^{[1]}
Z[1]。这通过将输入
X
X
X与权重矩阵
W
[
1
]
W^{[1]}
W[1]相乘,并加上偏置向量
b
[
1
]
b^{[1]}
b[1]来完成。
Z [ 1 ] = W [ 1 ] X + b [ 1 ] Z^{[1]} = W^{[1]}X + b^{[1]} Z[1]=W[1]X+b[1] - 激活函数:将加权输入
Z
[
1
]
Z^{[1]}
Z[1]通过激活函数
σ
\sigma
σ 来获得该层的激活输出
A
[
1
]
A^{[1]}
A[1]
A [ 1 ] = σ ( Z [ 1 ] ) A^{[1]} = \sigma(Z^{[1]}) A[1]=σ(Z[1])
常用的激活函数包括ReLU
、Sigmoid
、Tanh
等
2.3 后续隐藏层
- 对于网络的每一个隐藏层
l
(
l
=
2
,
3
,
.
.
.
,
L
−
1
)
l( l = 2, 3, ..., L-1 )
l(l=2,3,...,L−1),其中
L
L
L是网络的总层数:
- 加权输入:计算每个神经元的加权输入
Z
[
l
]
Z^{[l]}
Z[l],这是通过将前一层的激活输出
A
[
l
−
1
]
A^{[l-1]}
A[l−1]与权重矩阵
W
[
l
]
W^{[l]}
W[l]相乘,并加上偏置向量
b
[
l
]
b^{[l]}
b[l]来完成的。
Z [ l ] = W [ l ] A [ l − 1 ] + b [ l ] Z^{[l]} = W^{[l]}A^{[l-1]} + b^{[l]} Z[l]=W[l]A[l−1]+b[l] - 激活函数:将加权输入
Z
[
l
]
Z^{[l]}
Z[l]通过激活函数
σ
\sigma
σ 来获得该层的激活输出
A
[
l
]
A^{[l]}
A[l]
A [ l ] = σ ( Z [ l ] ) A^{[l]} = \sigma(Z^{[l]}) A[l]=σ(Z[l])
- 加权输入:计算每个神经元的加权输入
Z
[
l
]
Z^{[l]}
Z[l],这是通过将前一层的激活输出
A
[
l
−
1
]
A^{[l-1]}
A[l−1]与权重矩阵
W
[
l
]
W^{[l]}
W[l]相乘,并加上偏置向量
b
[
l
]
b^{[l]}
b[l]来完成的。
2.4 输出层
- 对于网络的输出层
L
L
L:
- 加权输入:计算每个神经元的加权输入
Z
[
L
]
Z^{[L]}
Z[L],这是通过将最后一层的激活输出
A
[
L
−
1
]
A^{[L-1]}
A[L−1]与权重矩阵
W
[
L
]
W^{[L]}
W[L]相乘,并加上偏置向量
b
[
L
]
b^{[L]}
b[L] 来完成的。
Z [ L ] = W [ L ] A [ L − 1 ] + b [ L ] Z^{[L]} = W^{[L]}A^{[L-1]} + b^{[L]} Z[L]=W[L]A[L−1]+b[L] - 激活函数:根据问题的性质,选择合适的激活函数。对于分类问题,通常使用Softmax函数来获得概率分布输出
Y
^
\hat{Y}
Y^
Y ^ = softmax ( Z [ L ] ) \hat{Y} = \text{softmax}(Z^{[L]}) Y^=softmax(Z[L])
其中,Softmax函数将 Z [ L ] Z^{[L]} Z[L]转换为概率分布,使得每个输出 y ^ [ i ] \hat{y}^{[i]} y^[i] 都在0和1之间,并且所有输出之和为1
- 加权输入:计算每个神经元的加权输入
Z
[
L
]
Z^{[L]}
Z[L],这是通过将最后一层的激活输出
A
[
L
−
1
]
A^{[L-1]}
A[L−1]与权重矩阵
W
[
L
]
W^{[L]}
W[L]相乘,并加上偏置向量
b
[
L
]
b^{[L]}
b[L] 来完成的。
2.5 总结
前向传播的整个过程可以总结为以下步骤:
- 对于每个层 l l l,计算加权输入 Z [ l ] Z^{[l]} Z[l]
- 应用激活函数 σ \sigma σ 来获得激活输出 A [ l ] A^{[l]} A[l]
- 重复步骤1和2,直到到达输出层
- 在输出层应用适当的激活函数(如
Softmax
)以获得最终输出。
前向传播是神经网络进行预测的基础,它将输入数据转换为输出预测,为后续的反向传播和参数更新提供了必要的信息
更多推荐
已为社区贡献2条内容
所有评论(0)