11.4 拟合神经网络
11.4 拟合神经网络¶
神经网络模型中未知的参数,通常称为 权重 (weights),我们需要寻找它们的值使得模型很好地拟合训练数据。我们将参数的全集记为 \(\theta\),包括
对于回归,我们采用误差平方和用于衡量拟合的效果(误差函数)
\( R(\theta)=\sum\limits_{k=1}^K\sum\limits_{i=1}^N(y_{ik}-f_k(x_i))^2\tag{11.9} \)$
对于分类,我们可以采用平方误差或者交互熵(偏差):
\( R(\theta)=-\sum\limits_{i=1}^N\sum\limits_{k=1}^Ky_{ik}\mathrm{log}\;f_k(x_i)\tag{11.10} \)$
以及对应的分类器 \(G(x)=\mathrm{arg\; max}_kf_k(x)\)。有了 softmax 激活函数和交互熵误差函数,神经网络模型实际上是关于隐藏层的线性逻辑斯蒂回归模型,而且所有的参数通过极大似然来估计。
一般地,我们不想要 \(R(\theta)\) 的全局最小值,因为这可能会是一个过拟合解。而是需要一些正则化:这个可以通过惩罚项来直接实现,或者提前终止来间接实现。下一节中将给出详细的细节。
最小化 \(R(\theta)\) 的一般方法是通过梯度下降,在这种情形下称作 向后传播 (back-propagation)。因为模型的组成成分,运用微分的链式法则可以很简单地得到梯度。这个可以通过对网络向前或向后遍历计算得到,仅跟踪每个单元的局部量。
note “weiya 注:Recall 式( 11.5 )”
下面是对于平方误差损失的向后传播的细节。由 式( 11.5 ) 式令 \(z_{mi}=\sigma(\alpha_{0m}+\alpha_m^Tx_i)\),并令 \(z_i=(z_{1i},z_{2i},\ldots,z_{Mi})\),则我们有
微分为
给定这些微分,梯度下降在第 \((r+1)\) 步迭代更新为
其中 \(\gamma_r\) 为 学习速度 (learning rate),将在下面讨论。
现在将 \(式( 11.12 )\) 式写成
\(\delta_{ki}\) 和 \(s_{mi}\) 的值分别为当前模型在输出和隐藏层单元的误差。从它们的定义来看,它们满足
\( s_{mi}=\sigma'(\alpha_m^Tx_i)\sum\limits_{k=1}^K\beta_{km}\delta_{ki}\tag{11.15} \)$
上式称为 向后传播等式 (back-propagation equations)。用这个等式,\(式( 11.13 )\) 的更新可以通过 two-pass 算法来实现。在 forward pass,固定当前权重,预测值 \(\hat f_k(x_i)\) 通过 (11.5) 式计算。在 backward pass,计算当前误差 \(\delta_{ki}\),接着向后传播通过 \(式( 11.15 )\) 式给出误差 \(s_{mi}\)。则两个误差都用来计算 \(式( 11.13 )\)、\(式( 11.14 )\) 中更新的梯度。
note “weiya 注:向后传播的算法形式” 记
其中 $W^{(k-1)}$ 表示从 $L_{k-1}$ 层到 $L_k$,$a^{(k)}$ 是 $L_k$ 层所有的激活向量,并假设激活函数 $g^{(k)}$ 逐个元素地作用在向量上,则可以整理出向后传播的算法形式:
![](assets/bp_alg.png)
注意图中的符号含义与 ESL 中稍有不同。
这个 two-pass 过程称作向后传播。也被称为 delta rule (Widrow and Hoff, 19601)。交互熵计算的组分与平方误差函数和有同样的形式,并且在练习 11.3 中被导出来。
向后传播的优点在于简单,局部自然。在向后传播算法中,每个隐藏层单元仅仅向(从)有其联系的单元传递(接收)信息。因此可以在并行架构的计算机上高效地实现。
\(式( 11.13 )\) 式的更新是一种 batch learning,参数更新为所有训练情形的和。学习也可以 online 地进行——每次处理一个观测,每个训练情形过后更新梯度,然后对训练情形重复多次。在这种情形下,\(式( 11.13 )\) 式的和可以替换成单个被加数。训练时期 (training epoch) 指的是一次扫描整个训练集。在线 (online) 训练允许网络处理非常大的训练集,而且当新观测加入时更新权重。
batch learning 的学习速率 \(\gamma_r\) 经常取为常数,而且可以通过在每次更新时运用线搜索最小化误差函数来优化。online 学习中,当 \(r\rightarrow \infty\) 时 \(\gamma_r\) 应当下降减为 0。这个学习是 随机近似 (stochastic approximation) 的形式 (Robbins and Munro, 19512);如果 \(\gamma_r\rightarrow \infty,\sum_r\gamma_r=\infty\),且 \(\sum_r\gamma_r^2<\infty\),(举个例子,\(\gamma_r=1/r\) 便满足条件)则在这个领域内的结果保证收敛。
向后传播可以非常慢,而且因为这个原因经常不选择这个方法。像牛顿法的二阶技巧在这里不是很好,因为 \(R\) 的二阶微分矩阵(Hessian 阵)可以变得非常大。更好的拟合方式包括共轭梯度法以及变量度量方法。它们避免直接计算二阶微分矩阵但仍能提供很快的收敛性。