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


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

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

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

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

    在这里插入图片描述
            可以看到这里是多输出问题,但只关注一个输出的推导即可,其他都是一样的。
            首先看均方误差求偏导,其中公式(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)。
    在这里插入图片描述
            也就是:
    在这里插入图片描述

            结合公式和定义, β 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)。
    在这里插入图片描述
    在这里插入图片描述
             公式(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

    Δvih=ηjEkβjβjbhbhαhαhvih=ηjgjwhjbh(1bh)xi" role="presentation" style="position: relative;">Δvih=ηjEkβjβjbhbhαhαhvih=ηjgjwhjbh(1bh)xi
    Δ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算法工作流程如下:
    在这里插入图片描述
            5.5节的网络其实不算常见了,主要是他们的改进思路。

  • 相关阅读:
    经过一个多月的等待我有幸成为Spring相关项目的Contributor
    OpenCV第二篇:读取图像和保存图像
    将 N 叉树编码为二叉树
    C++ 11/14/17/20 核心特性列表
    37.JavaScript对象与JSON格式的转换,JSON.stringify、JSON.parse方法的使用方法和注意事项
    2022.12.4-----leetcode.1774
    重新定义音乐创作:ChatGPT与未来音乐产业的融合
    使用python编程数学挖掘-数据仓库与OLAP(课程5)
    uboot启动流程-uboot代码重定位说明一
    LCR 012.寻找数组的中心下标
  • 原文地址:https://blog.csdn.net/weixin_43476037/article/details/126394862