美文网首页
神经网络和深度学习 - Chapter3 浅层神经网络

神经网络和深度学习 - Chapter3 浅层神经网络

作者: nlpming | 来源:发表于2021-09-15 16:44 被阅读0次

什么是神经网络?

  • 下面这个浅层神经网络,由多个Logistic Regression堆叠而成;浅层神经网络的反向传播过程,和逻辑回归类似;
  • 其中,z^{[1]}表示第一层神经网络的z值;上表[1]表示第1层神经网络;
    image.png

神经网络表示

  • 一个简单的三层神经网络结构如下所示;

  • 其中第一个隐藏层激活值:a^{[1]} = \left[a^{[1]}_1, a^{[1]}_2, a^{[1]}_3, a^{[1]}_4 \right]^T

    image.png
  • 每一个神经网络的激活值计算;

  • z^{[1]}_1 = w^{[1]T}_1 x + b^{[1]}_1,其中w^{[1]}_1 \in (3, 1), x \in (3, 1)

    image.png
  • 浅层神经网络前向传播向量化表示;

  • z^{[1]} = W^{[1]}x + b^{[1]}; a^{[1]} = \sigma(z^{[1]})

    image.png
    image.png

多个样本浅层网络向量化

  • m个样本结果堆叠在一起:z^{[1]} = \left[ z^{[1](1)}, z^{[1](2)}, ...,z^{[1](m)} \right], 其中每一个结果z^{[1](i)}都是一个列向量;
image.png
  • 多个样本浅层网络向量化公式如下: Z^{[1]} = W^{[1]}X + b^{[1]},其中W^{[1]} \in (h_1, n_x), X \in (n_x, m), b^{[1]} \in (h_1, 1)
  • Z^{[2]} = W^{[2]}A^{[1]} + b^{[2]},其中W^{[2]} \in (h_2, h_1), A^{[1]} \in (h_1, m), b^{[2]} \in (h_2, 1)
多个样本浅层网络向量化表达.png

神经网络激活函数

  • 常用的激活函数有:sigmoid,tanh,relu,leaky relu;
  • sigmoid一般在二分类的输出层使用,其他情况一般使用relu,或者tanh激活函数;
  • leaky relu主要是弥补,relu激活函数在x取值为负数的时候导数为0;
常见激活函数.png

神经网络为什么需要非线性激活函数?

  • 隐藏层使用线性激活函数,无论堆叠多少层只能建模输入输出的线性关系;
线性激活函数.png

激活函数的导数

  • sigmoid激活函数导数:g'(z) = g(z) \left[1- g(z)\right]
  • tanh激活函数导数:g'(z) = 1 - \left[ g(z) \right]^2
sigmoid激活函数导数.png
tanh激活函数导数.png
relu和Leaky relu激活函数导数.png

浅层神经网络梯度求导

  • 三层神经网络,参数求导过程如下:
image.png
三层神经网络前向&反向传播过程.png

神经网络参数初始化

  • 为什么不要把网络参数都初始化为0 ? 因为参数W的行与行之间是一样的,导致同一隐藏层的结点激活值是一样的。这样每次神经同一层神经网络结点学到的是同样的函数,即是对称的;这样堆叠多个神经元没有任何意义。
  • 解决方法是随机初始化网络参数,但是网络参数值不宜太大。因为对于sigmoid, tanh等这类激活函数,在取值很大的时候其导数接近于0,容易出现梯度消失问题;
神经网络参数初始化为0的弊端.png
随机初始化网络参数.png

相关文章

网友评论

      本文标题:神经网络和深度学习 - Chapter3 浅层神经网络

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