【机器学习-周志华】学习笔记-第五章

记录第一遍没看懂的
记录觉得有用的
其他章节:
        第一章
        第三章
        第五章
        第六章
        第七章
        第八章
        第九章
        第十章
        十一章
        十二章
        十三章
        十四章
        十五章
        十六章

        第四章决策树,都是比较基础的概率论的东西,主要就是结合例子去理解概念。

        第五章是神经网络模型的介绍, 比较难理解的算是5.3 误差逆传播算法。它其实是对梯度计算结果的一个解释,用的其实还是梯度下降法。

也就是说,主要还是微积分多元函数的计算。头疼.jpg

【机器学习-周志华】学习笔记-第五章_第1张图片
        可以看到这里是多输出问题,但只关注一个输出的推导即可,其他都是一样的。
        首先看均方误差求偏导,其中公式(5.4)是三层复合函数,第一层是损失函数对输出求导( E k → y ˉ j k E_k \to \bar{y}_j^k Ekyˉjk),第二层是输出对节点的输入求导( y ˉ j k → β j \bar{y}_j^k\to\beta_j yˉjkβj),最后是输入对连接权求导( β j → w h j \beta_j\to w_{hj} βjwhj)。
【机器学习-周志华】学习笔记-第五章_第2张图片
        也就是:
在这里插入图片描述

        结合公式和定义, β j = ∑ h = 1 q w h j b h \beta_j=\sum_{h=1}^{q}w_{hj}b_h βj=h=1qwhjbh其实是一个线性的累加,对于每一个h来说,其他项都是常数,导数为0,那么 β j \beta_j βj求导也就是 b h b_h bh
        而激活函数 S i g m o i d ( x ) = 1 1 + e − x Sigmoid(x)=\dfrac{1}{1+e^{-x}} Sigmoid(x)=1+ex1。这个的导数是一个固定公式,推导过程简言之: ( 1 1 + e − x ) ′ = − 1 ( 1 + e − x ) 2 ( − 1 ) e − x = e − x + 1 − 1 ( 1 + e − x ) 2 = f ( x ) − f 2 ( x ) (\dfrac{1}{1+e^{-x}})'=-\dfrac{1}{(1+e^{-x})^2}(-1)e^{-x}=\dfrac{e^{-x}+1-1}{(1+e^{-x})^2}=f(x)-f^2(x) (1+ex1)=(1+ex)21(1)ex=(1+ex)2ex+11=f(x)f2(x)

Sigmoid函数求导推导公式更详细的解释可以参考:sigmoid函数求导-只要四步

        剩下的 E k E_k Ek y ˉ j k \bar{y}_j^k yˉjk的求导其实就是一个平方项的求导。
         为了使结果只和下标j有关,把前两层单独提出来,并把梯度下降的负号提过来,得到公式(5.10)。
【机器学习-周志华】学习笔记-第五章_第3张图片
在这里插入图片描述
         公式(5.14)中关于 Δ v i h \Delta v_{ih} Δvih的计算,其中 η \eta η表示步长, e h x i e_hx_i ehxi表示下降方向。同样,损失函数对输出 y j y_j yj求导,输出 y j y_j yj对节点的输入 β j \beta_j βj求导,输入对上一层节点的输出 b h b_{h} bh求导,然后上一层节点的输出 b h b_{h} bh对上一层节点的输入 α h \alpha_{h} αh求导,最后 α h \alpha_{h} αh再对 Δ v i h \Delta v_{ih} Δvih求导。
         需要注意的是,此时 Δ v i h \Delta v_{ih} Δvih的每一项会对每一个 y j y_j yj产生影响,所以还是需要 ∑ j \sum_j j的。
         所幸,损失函数对 β j \beta_j βj的求导在 g j g_j gj中已经完成了。而 β j \beta_j βj b h b_{h} bh求偏导类似于上一个 β j \beta_j βj w h j w_{hj} whj求偏导,也是线性的,结果就为 w h j w_{hj} whj。接着下一项,是输出对输入的求导,同样是套用Sigmoid函数的公式,也就是 b h ( 1 − b h ) b_h(1-b_h) bh(1bh);最后就是 x i x_i xi
Δ v i h = − η ∑ j ∂ E k ∂ β j ∂ β j ∂ b h ∂ b h ∂ α h ∂ α h ∂ v i h = η ∑ j g j w h j b h ( 1 − b h ) x i \begin{aligned} \Delta v_{ih} &=-\eta\sum_j\dfrac{\partial E_k}{\partial \beta_j}\dfrac{\partial \beta_j}{\partial b_h}\dfrac{\partial b_h}{\partial \alpha_h}\dfrac{\partial \alpha_h}{\partial v_{ih}}\\ &=\eta\sum_j g_j w_{hj} b_h(1-b_h)x_i \end{aligned} Δvih=ηjβjEkbhβjαhbhvihαh=ηjgjwhjbh(1bh)xi

        可以看出,每次都用了上一层的结论(比如这个 e h e_h eh用了 g j g_j gj,那么,如果有更多层,也是可以直接套用这个结果,也就是直接用 e h e_h eh。也就是说,无论多深,都是类似形式。
        BP算法工作流程如下:
【机器学习-周志华】学习笔记-第五章_第4张图片
        5.5节的网络其实不算常见了,主要是他们的改进思路。

你可能感兴趣的:(#,机器学习,机器学习,python,算法)