反向传播算法详解
1. 反向传播算法基础
在神经网络中,使用预激活变量进行反向传播比使用后激活变量更为常见。下面是使用预激活变量的反向传播算法的伪代码实现:
设 $t_r$ 为第 $r$ 个输出节点的索引,$r \in {1, \ldots, k}$。
- 初始化:
- 对于每个输出节点 $t_r$,计算 $\Delta(t_r)=\frac{\partial L}{\partial y(t_r)}=\Phi^{\prime}(a(t_r))\frac{\partial L}{\partial h(t_r)}$。
- 循环:
- 选择一个未处理的节点 $i$,使得其所有输出节点 $j \in A(i)$ 的 $\Delta(j)$ 值都已知。
- 更新 $\Delta(i) \Leftarrow \Phi^{\prime} i\sum {j \in A(i)} w_{ij}\Delta(j)$。
- 直到所有节点都被选择。
- 对于每条边 $(j, i)$ 及其权重 $w_{ji}$,计算 $\frac{\partial L}{\partial w_{ji}}=\Delta(i)h(j)$。
这个算法可以用于任何类型的参数化计算图,只要它是无环的。例如,有一个神经网络允许随机特征包直接输入到隐藏层,该算法仍然适用。
2. 激活函数的有用导数
在反向传播算法的更新过程中,需要用到各种激活函数的导数。下面详细介绍几种常见激活函数的导数:
| 激活函数 | 表达式 | 导数表达式 |
| ---- | ---- | ---- |
|
超级会员免费看
订阅专栏 解锁全文

5080

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



