文章目录

欢迎关注《汽车软件技术》公众号,回复关键字获取资料。
1. 关键词
梯度下降
,链式法则
,反向传播
2. 导读
本文介绍了反向传播的数学基础,及其过程。
3. 数学基础
3.1 梯度下降
神经网络求解的目的,是使输出值更接近于真实值,这就转化成一个求最优解或最小值的过程,最常用的就是梯度下降法。从山顶沿负梯度方向(导数的反方向),一步步走到山底。
上图也演示了梯度下降受到起点的影响,得到的是局部最优解,并不一定是全局最优解。
3.2 链式法则
求解梯度就是求导数,但复杂的函数,不能一次性求出。因此需要引入链式法则。
∂ z ∂ x = ∂ z ∂ y ∂ y ∂ x ∂ ( z + y ) ∂ x = ∂ z ∂ x + ∂ y ∂ x \frac{\partial z}{\partial x}=\frac{\partial z}{\partial y}\frac{\partial y}{\partial x}\\ \frac{\partial(z+y)}{\partial x}=\frac{\partial z}{\partial x}+\frac{\partial y}{\partial x} ∂x∂z=∂y∂z∂x∂y∂x∂(z+y)=∂x∂z+∂x∂y
3.3 学习率
在得到梯度后,需要选择合适的步长,称作学习率。学习率不是越大,收敛的越快。如下图,左边的学习率大,反而不收敛;右边的学习率小,反而收敛。
学习率一般取一个小的数,或者多尝试几个,选择结果最好的。
4. 代价函数
在机器学习中,寻找最优解的目标函数,通常成为代价函数,表示输出值和真实值的误差。神经网络代价函数很复杂,公式如下:
J ( Θ ) = − 1 m [ ∑ i = 1 m ∑ k = 1 K y k ( i ) log ( h Θ ( x ( i ) ) ) k + ( 1 − y k ( i ) ) log ( 1 − ( h Θ ( x ( i ) ) ) k ) ] J(\Theta)=-\frac1{m}\left[\sum\limits_{i=1}^{m}\sum\limits_{k=1}^{K}y_k^{(i)}\log\left(h_{\Theta}(x^{(i)})\right)_k+(1-y_k^{(i)})\log\left(1-\left(h_{\Theta}(x^{(i)})\right)_k\right)\right] J(Θ)=−m1[i=1∑mk=1∑Kyk(i)log(hΘ(x(i)))k+(1−yk(i))log(1−(hΘ(x(i)))k)]
其中:
- m m m,输入数据的数量;
- i i i,第 i i i 次输入, i ∈ [ 1 , m ] i\in[1,m] i∈[1,m];
- k k k,第 k k k 个输出单元, k ∈ [ 1 , K ] k\in[1,K] k∈[1,K];
- K K K,输出单元数量;
- j j j,第 L + 1 L+1 L+1 层第 j j j 个神经元
- l l l,第 l l l 层, l ∈ [ 1 , L ] l\in[1,L] l∈[1,L];
- L L L,总层数;
- s l s_l sl,第 l l l 层神经元数量。
因为逻辑回归也使用了 sigmod 函数,所以代价函数有相似之处,注意区分:
J ( θ ) = − 1 m [ ∑ i = 1 m y ( i ) log ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) log ( 1 − ( h θ ( x ( i ) ) ) ) ] J(\theta)=-\frac1{m}\left[\sum\limits_{i=1}^{m}y^{(i)}\log\left(h_{\theta}(x^{(i)})\right)+(1-y^{(i)})\log\left(1-\left(h_{\theta}(x^{(i)})\right)\right)\right] J(θ)=−m1[i