美文网首页
哲哲的ML笔记(十八:反向传播)

哲哲的ML笔记(十八:反向传播)

作者: 沿哲 | 来源:发表于2021-04-11 11:52 被阅读0次

    正向传播

    在之前介绍的通过神经网络预测结果,我们使用的其实是一种正向传播方法,从第一层开始正向一层一层进行计算,直到最后一层的h_\theta(x)


    现在,为了计算代价函数的偏导数\frac{\mathrm{d} J }{\mathrm{d} \theta^{l}_{ij}} >0,我们需要采用一种反向传播算法,也就是首先计算最后一层的误差,然后再一层一层反向求出各层的误差,直到倒数第二层。 以一个例子来说明反向传播算法。

    反向传播

    1. 不考虑正则
      假设我们的训练集只有一个样本(x^1,y^1),我们的神经网络是一个四层的神经网络,考虑4分类问题
      K=4, L=4,s_L=4,画出图来和上面正向传播的图一样
      引入误差因子\delta
      从最后一层开始计算,用\delta表示预测值与实际值的差距,y=\delta=a^4-y 也可以看成 \delta^4_j=a^4_j-y
      \delta^4计算前一层的误差\delta^3=(\Theta^3)^T\delta^4.*g^{'}(z^3)(注意这里的\Theta不取\theta^3_{10}、\theta^3_{20}…)
      其中g^{'}(z^3)=z^3.*(1-z^3)
      同理,\delta^2=(\Theta^2)^T\delta^3.*g^{'}(z^2)
      第一层是输入层,不存在误差
      按照上图的网络结构,\Theta^3\in 4*5, \delta^4\in 4,g^{'}(z^3)\in 5

    先不做正则化处理,\frac{\mathrm{d} J }{\mathrm{d} \Theta^{l}_{ij}} =a^l_j\delta^{l+1}_i
    重要的是清楚地知道上面式子中上下标的含义:
    l代表目前所计算的是第几层。
    j代表目前计算层中的激活单元的下标,也将是下一层的第j个输入变量的下标。
    i 代表下一层中误差单元的下标,是受到权重矩阵中第i行影响的下一层中的误差单元的下标。

    1. 考虑正则
      \Delta^l_{ij}表示整个误差矩阵,第l层的第i个激活单元受到第j个参数影响而导致的误差
      首先用正向传播方法计算出每一层的激活单元,利用训练集的结果与神经网络预测的结果求出最后一层的误差,然后利用该误差运用反向传播法计算出直至第二层的所有误差。

      代价函数的偏导数\frac{\mathrm{d} J }{\mathrm{d} \Theta^{l}_{ij}} =D^l_{ij}
      D^l_{ij}=\frac{1}{m}(\Delta^l_{ij}+\lambda\Theta^l_{ij}), j\neq0
      D^l_{ij}=\frac{1}{m}(\Delta^l_{ij}), j=0

    反向传播的直观理解

    先从下图回顾一下前向传播,一个4层的神经网络,以图中的第3层的第1个激活单元z^3_1/a^3_1为例


    反向传播就按照上面这个过程反过来,从最后一层开始,往前逐层计算\delta

    反向传播算法的目的就是算出梯度下降的方向,而梯度下降的过程就是沿着方向下降,一直到局部最优点


    \Theta的初始化

    初始所有参数为0,这样的初始方法对于逻辑回归来说是可行的,但是对于神经网络来说是不可行的。如果我们令所有的初始参数都为0,这将意味着我们第二层的所有激活单元都会有相同的值。同理,如果我们初始所有的参数都为一个非0的数,结果也是一样的。

    通常初始参数为正负ε之间的随机值,比如我们要随机初始一个尺寸为10×11的参数矩阵

    神经网络使用小结

    1. 选择网络结构,即决定选择多少层以及决定每层分别有多少个单元。
      第一层的单元数即我们训练集的特征数量。
      最后一层的单元数是我们训练集的结果的类的数量。
      如果隐藏层数大于1,确保每个隐藏层的单元个数相同,通常情况下隐藏层单元的个数越多越好。
    2. 训练神经网络:
      2.1 参数的随机初始化
      2.2 利用正向传播方法计算所有的h_\theta(x^i)
      2.3 编写计算代价函数J的代码
      2.4 利用反向传播方法计算所有偏导数\frac{\mathrm{d} J }{\mathrm{d} \theta^l_{ij}}
      2.5 利用数值检验方法检验这些偏导数
      2.6 使用优化算法来最小化代价函数

    相关文章

      网友评论

          本文标题:哲哲的ML笔记(十八:反向传播)

          本文链接:https://www.haomeiwen.com/subject/kncakltx.html