美文网首页
人工神经网络

人工神经网络

作者: 7NIC7 | 来源:发表于2019-04-12 14:09 被阅读0次

    (一)感知器

    简单介绍

        感知器是一个输入层,一个输出层的单层神经网络,通常是给定输入,经过一个线性权重的连接后,输出1或者-1。这样的网络的拟合能力是有限的,例如:我们不能找到一条直线可以把图上的四个点区分开。


    单层神经网络的缺点.png

    权重更新

        更新法则如下,\eta学习率,通常是一个很小的数。
    w_i = w_i + \eta(y_i - \hat{y}_i)x_i

    • 当预测正确,即y_i = \hat{y}_i,则不进行权重更新
    • y_i = 1\hat{y}_i= -1,则增大正项的权重,减小负项的权重
    • y_i = -1\hat{y}_i= 1,则增大负项的权重,减小正项的权重

    (二)多层神经网络

    简单介绍

    • 一般有一个输入层,一个输出层和若干个隐藏层
    • 每一层的连接方式:
      1)先是线性连接 : z^l_{i} = w ^T a^{l-1} + b^{l-1}
      2)再通过一个非线性的激活函数a^l_i = \sigma(z^l_i)
    • 权重更新的方法有很多,这里只介绍梯度下降随机梯度下降以及这些算法的核心部分——Back Propagation 反向传播

    Forward Propagation 前向传播

        设\hat{y}_i是NN的输出,下标代表处于该层的第几个元素,上标代表处于NN的第几层。
    \begin{align*} & z^l_{i} = w ^l a^{l-1} + b^{l-1} \\ & a^l_i = \sigma(z^l_i) \\ \end{align*}
        损失函数用的是回归问题常用的Mean Square Error
    l = \frac{1}{2}\sum_{i=1}^{N}(y_i - \hat{y}_i)^2

    Back Propagation 反向传播

        根据求导的链式法则,我们有:
    \begin{align*} \frac{\partial l}{\partial w_{i j}^l} = \frac{\partial l}{\partial z_i^l} \frac{\partial z_i^l}{\partial w_{ij}^l} \end{align*}
    其中,对于sigmoid激活函数来说,\frac{\partial z_i^l}{\partial w_{ij}^l}=a_j^{l-1}
        所以接下来只要计算\frac{\partial l}{\partial z_i^l}即可。
    1)如果l是输出层
    \frac{\partial l}{\partial z_i^l} = \frac{\partial l}{\partial a_i^l}\frac{\partial a_i^l}{\partial z_i^l} = -(y_i - \hat{y}_i)\sigma(z^l_i)(1-\sigma(z^l_i))
    2)如果l-1是最后一个隐藏层,即输出层的前一层
    \begin{align*} &\frac{\partial l}{\partial z_j^{l-1}} \\=& \sum_{i=1}^{l_n} \frac{\partial l}{\partial a_i^l}\frac{\partial a_i^l}{\partial z_j^{l-1}} \\ =& \sigma(z^{l-1}_j)(1- \sigma(z^{l-1}_j))\sum_{i=1}^{l_n}-(y_i - \hat{y}_i)\sigma(z^l_i)(1-\sigma(z^l_i))w_{ij} \end{align*}
    其中,l_n代表l层的神经元个数。
    3)l-2,\dots,1,这些都和2)中的过程一致

    • 总结
          算到3)的时候,相信你更能体会到这个方法为什么叫反向传播了。
      -- 对于每一层都是先接到上一层传递过来的\frac{\partial l}{\partial z_i^l}(类似于前向传播中每层的输入a^l
      -- 然后再乘以该层的权重w_{ij}^{l-1}(前向传播中的线性变换)
      -- 最后乘以一个系数\sigma(z^{l-1}_j)(1-\sigma(z^{l-1}_j))a_j^{l-1}(前向传播中的激活函数)
      这样就可以得到权重更新时需要的梯度\Delta w(导数的相反数),权重依据下式进行更新:
      w_i = w_i + \eta \Delta w
          最重要的是,BP做到了每个求导式子只计算了一次,从而大大增加了梯度求解的效率。

    Gradient Descend —— 梯度下降

        梯度下降就是应用BP算法,对每个样本点都计算\Delta w_kk=1,2,\dots,N,利用下式更新权重
    w_i = w_i + \eta\sum_{k=1}^{N}\Delta w_k

    Stochastic Gradient Descend —— 随机梯度下降

        梯度下降在更新权重的时候,需要计算所有的样本点的梯度,当样本量非常大的时候,将大大降低算法的效率,因此,随机梯度下降算法应运而生。
        其想法也很简单,就是在更新权重的时候我们可以每次只算一部分样本的梯度,这部分样本称为batch,设其大小为K\ (0 \leq K <N),那么权重更新用下式
    w_i = w_i + \eta\sum_{k=1}^{K}\Delta w_k

    注意:上述的每一个权重更新方法都不能保证NN可以收敛到全局最优点,有可能会陷入局部最优点。

    相关文章

      网友评论

          本文标题:人工神经网络

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