4.3.1 神经网络代价函数
代价函数 \(C(w; b)\):
设计算法找到权重\(w\)和偏置\(b\),使得网络的输出 \(y(x) \) 最好的拟合所有的训练输入 \(x\)的输出\(a\),为了量化这个目标,需要定义一个代价函数\(C(w; b)\)),常见的二次代价函数为:
训练神经网络的目的就是要找到能最小话得代价函数\(C(w,b) ≈ 0\)的权重和偏置。
求解\(C(w; b)\) 最小值的方法:
- 微积分求解极值:若\(C\)是一个只有少数几个变量的函数,可以通过微积分寻找\(C\)的极值点。但神经网络有很多很多权重和偏置的变量,通过微积分来计算最小值是不可行的。
- 梯度下降的算法近似求全局最小值\(min\ C(w; b)\):在机器学习中通常采用的求极值的方法。
4.3.2 神经网络梯度下降算法
算法推演:
假设\(C(v) \)函数只有两个变量\(v_1 \) 和\(v_2\):
- 当在 \(v_1 \) 和\(v_2\)方向分别移动一个很小的量,即\(\Delta v_1\)和 \(\Delta v_2\)时:
- 定义\(\Delta v\)为\(v\)变化的向量:\(\Delta v=(\Delta v_1,\Delta v_2)^T\),用\(\Delta C \)来表示\(C\)梯度向量(偏导数的向量):\(∇C=(∂C/∂v_1 , ∂C/∂v_2)^T\) ,则:\(\Delta C ≈ ∇C · \Delta v\)
- 寻找\(\Delta v_1 \)和 \(\Delta v_2\)的一种组合\(\Delta v\)使得\(\Delta C\)为负,让\(C\)减小。假设选取\(\Delta v= -η∇C\)(\(η \) 是一个很小的正数,称为学习速率):由于\(∥∇C∥^2≥ 0\),这保证了\(\Delta C ≤ 0\),按照此规则去改变\(v\),那么\(C\)会一直减小,不会增加。
- 然后反复持续用此规则计算下一次移动,\(C\)将持续减小,直至到获得一个全局的最小值。
算法特点:
- 工作方式是重复计算梯度 \(∇C\),然后沿着梯度相反的⽅向移动,即沿着山谷“滚落”。
- 通过在 \(C \)下降最快的方向上微小的变化,逐步获得\(C \)的最小值。
算法应用:
寻找能使得方程 \(C(w; b)=\frac {1}{2m} ∑x∥y(x)- a∥^2 \)的代价取得最小值的权重 \(w_k \) 和偏置 \(b_l\),梯度向量\(∇C=(∂C/∂w_k, ∂C/∂b_l)^T\)用这些分量来写梯度下降的更新规则:$$w_k→w{k}{‘}=wk-η \frac {∂C}{∂w_k}\ b_l→b{l}{‘}=b_l-η \frac {∂C}{∂b_l}$$
随机梯度下降算法:
通过随机选取小量训练输入样本来计算均方误差,可以快速得到一个对于实际梯度 \(∇C\)的很好的估算,这有助于加速梯度下降,进而加速学习过程。 随机梯度下降通过随机选取小量的\(m\) 个训练输入来工作,将它们称为一个小批量数据: