神经网络反向传播算法、围棋程序与AWS使用指南
1. 反向传播算法基础
反向传播算法用于训练神经网络。在介绍算法前,先明确一些符号表示。以一个具有 $l$ 层的前馈神经网络为例,每一层都使用 sigmoid 激活函数。第 $i$ 层的权重记为 $W^i$,偏置项记为 $b^i$。用 $x$ 表示大小为 $k$ 的输入数据小批量,$y$ 表示网络输出。相关符号定义如下:
- 第 $i$ 层激活后的输出记为 $y^{i+1}$,即 $y^{i+1} = \sigma(W^iy^i + b^i)$,且 $y^{i+1}$ 也是第 $i + 1$ 层的输入。
- 第 $i$ 层未激活的密集层输出记为 $z^i$,即 $z^i = W^i \cdot y^i + b^i$。
- 有时用 $f^i(y^i)$ 表示 $\sigma(W^iy^i + b^i)$。
前馈网络的第 $i$ 层前向传播可以递归定义,预测值可据此写出。损失函数 $Loss$ 由预测值 $y$ 和标签 $\hat{y}$ 计算得出,可类似拆分。计算损失函数的导数可通过应用多元微积分中的链式法则实现。
定义第 $i$ 层的 $\delta^i$ 后,可得到反向传播的关系。反向传播在结构上与前向传播类似,但索引是递减的。接下来需计算涉及的实际导数,sigmoid 函数和仿射线性函数关于其输入的导数可快速推导得出。
利用这些导数,可写出如何将第 $i + 1$ 层的误差项 $\delta^{i+1}$ 传播回第 $i$ 层,计算可分为密集层和激活层两部分。最后计算每一层参数 $W^i$ 和 $b^i$ 的梯度,有了 $\delta^i$ 就能直接得出参数梯度,进而可根据需要更
超级会员免费看
订阅专栏 解锁全文

17

被折叠的 条评论
为什么被折叠?



