【机器学习】BP & softmax求导

 

 

目录算法

1、BP原理及求导网络

2、softmax及求导函数

 

1、BP学习

一、为何沿梯度方向是上升最快方向spa

    根据泰勒公式对f(x)在x0处展开,获得f(x) ~ f(x0) + f'(x0)(x-x0), 故获得f(x) - f(x0) ~ f'(x0)(x-x0), 因此从x0出发,变化最快,即便f(x)-f(x0)最大,也就f'(x0)(x-x0),因为f'(x0)与(x-x0)均为向量(如今x0取的是一个数,若是放在多维坐标那么x0就是一个多维向量),由余弦定理f'(x0) 与(x-x0)方向相同时,点积最大,故梯度方向是上升最快方向。3d

二、什么是BPblog

梯度反向传播(back propagation)过程就是: 由前馈神经网络获得损失函数,而后根据损失函数后向地更新每一层的权重,目的就是让损失函数变小get

 

 

三、BP的优点博客

  • 与从前日后进行求导相比,BP可以避开了路径被重复访问,它对于每个路径只访问一次就能求顶点对全部下层节点的偏导值。
  • 可以自适应、自主学习。这是BP算法的根本以及其优点所在,BP算法根据预设的参数更新规则,不断地调整神经网络中的参数,以达到最符合指望的输出。

四、BP的不足io

  • BP是基于梯度降低算法实现的,因此容易陷入局部最小而不是全局最小
  • 因为BP神经网络中的参数众多,每次都须要更新数量较多的阈值和权值,故会致使收敛速度过慢

 

2、softmax函数及求导

一、softmax函数

在Logistic regression二分类问题中,咱们能够使用sigmoid函数将输入Wx + b映射到(0, 1)区间中,从而获得属于某个类别的几率。将这个问题进行泛化,推广到多分类问题中,咱们能够使用softmax函数,对输出的值归一化为几率值。

这里假设在进入softmax函数以前,已经有模型输出C值,其中C是要预测的类别数,模型能够是全链接网络的输出a,其输出个数为C,即输出为a_{1}, a_{2}, ..., a_{C}

因此对每一个样本,它属于类别i的几率为:

y_{i} = \frac{e^{a_i}}{\sum_{k=1}^{C}e^{a_k}} \ \ \ \forall i \in 1...C

经过上式能够保证 \sum_{i=1}^{C}y_i = 1,即属于各个类别的几率和为1。

 

二、求导

对softmax函数进行求导,即求 \frac{\partial{y_{i}}}{\partial{a_{j}}}


i项的输出对第j项输入的偏导。
代入softmax函数表达式,能够获得:

\frac{\partial{y_{i}}}{\partial{a_{j}}} = \frac{\partial{ \frac{e^{a_i}}{\sum_{k=1}^{C}e^{a_k}} }}{\partial{a_{j}}}

     因此,当i = j时:

\frac{\partial{y_{i}}}{\partial{a_{j}}} = \frac{\partial{ \frac{e^{a_i}}{\sum_{k=1}^{C}e^{a_k}} }}{\partial{a_{j}}}= \frac{ e^{a_i}\Sigma - e^{a_i}e^{a_j}}{\Sigma^2}=\frac{e^{a_i}}{\Sigma}\frac{\Sigma - e^{a_j}}{\Sigma}=y_i(1 - y_j)

i \ne j时:

\frac{\partial{y_{i}}}{\partial{a_{j}}} = \frac{\partial{ \frac{e^{a_i}}{\sum_{k=1}^{C}e^{a_k}} }}{\partial{a_{j}}}= \frac{ 0 - e^{a_i}e^{a_j}}{\Sigma^2}=-\frac{e^{a_i}}{\Sigma}\frac{e^{a_j}}{\Sigma}=-y_iy_j

LOSS 求导

对一个样原本说,真实类标签分布与模型预测的类标签分布能够用交叉熵来表示:l_{CE} = -\sum_{i = 1}^{C}t_i log(y_i)

最终,对全部的样本,咱们有如下loss function:

L = -\sum_{k = 1}^{n}\sum_{i = 1}^{C}t_{ki} log(y_{ki})

其中t_{ki}是样本k属于类别i的几率,y_{ki}是模型对样本k预测为属于类别i的几率。

对单个样原本说,loss functionl_{CE}对输入a_j的导数为:


\frac{\partial l_{CE}}{\partial a_j} = -\sum_{i = 1}^{C}\frac {\partial t_i log(y_i)}{\partial{a_j}} = -\sum_{i = 1}^{C}t_i \frac {\partial log(y_i)}{\partial{a_j}} = -\sum_{i = 1}^{C}t_i \frac{1}{y_i}\frac{\partial y_i}{\partial a_j}

上面对\frac{\partial{y_{i}}}{\partial{a_{j}}}求导结果已经算出:

i = j时:\frac{\partial{y_{i}}}{\partial{a_{j}}} = y_i(1 - y_j)

i \ne j时:\frac{\partial{y_{i}}}{\partial{a_{j}}} = -y_iy_j

因此,将求导结果代入上式

 

 

 

参考博客:

一、https://zhuanlan.zhihu.com/p/27223959

相关文章
相关标签/搜索