(3)神经网络

神经网络2.1 神经网络的结构表示方法用圆括号表示网络中的单个元素用方括号表示网络中的层,每一层中的各个元素用下标表示输入层为第 0 层结构一个网络分为 :输入层 a[0]隐层输出层如上图,是一个两层网络模型,一般认为输入层不是一个标准神经网络层…

神经网络

3.1 神经网络的结构

(3)神经网络

表示方法

用圆括号表示网络中的单个元素
用方括号表示网络中的层,每一层中的各个元素用下标表示
输入层为第 0 层

结构

一个网络分为 :

  1. 输入层 a[0]
  2. 隐层
  3. 输出层
    如上图,是一个两层网络模型,一般认为输入层不是一个标准神经网络层

3.2 神经网络的输出

对于每个隐层的结点单元,我们要分别算出其 z 值与 sigmoid(z)
(3)神经网络

对每一层的每个结点进行同样的操作
(3)神经网络

对隐层 z[1] 的运算如下(3)神经网络
但是该过程如果使用 for 的话效率就很低,于是我们对其进行向量化
(3)神经网络
整理得到 对于单个样本
(3)神经网络
实际上,这个神经网络只需要以上四行代码即可完成计算
对于 m个样本
(3)神经网络
向量化后
(3)神经网络
(3)神经网络

3.3 激活函数

当然可用的激活函数不止 sigmoid 一种,于是神经网络的激活函数可以用 g(z) 表示
(3)神经网络

sigmoid
进行二分类时,输出结果要介于 0-1之间,所以此时使用 sigmoid 函数更合适
(3)神经网络

tanh 双曲正切函数
效果往往比 sigmoid 要好,它可以让数据平均值接近 0, 方便下一次数据处理
(3)神经网络

ReLU 修正线性单元
这是机器学习中最受欢迎的一个激活函数,对于前两个激活函数,当 z 值过大或者过小时,斜率接近0,导致梯度下降的速度很慢,而 ReLU 在 z 为正的部分斜率为 1 ,而在 0 处可以选择赋值为 0 或者 1。对于 z 的负值部分,可以使用 泄露ReLU 函数或者不做考虑,因为有足够多的神经元使得 z 的值为正,所以大多数梯度下降的速度很快。
在不知道用什么激活函数的时候一般使用 ReLU
(3)神经网络

(3)神经网络

3.4 为什么要使用激活函数呢?

如下图推导过程所示,如果不使用激活函数,那么无论有多少个隐层,最终的计算过程相当于进行了一次线性组合,那么多个隐层就相当于只有一个隐层。
(3)神经网络

线性隐层毫无意义,所以应该使用非线性的激活函数

线性函数只有在回归问题中使用,比如房价都是正实数,训练用来估计房价的的模型时使用线性函数

3.5 梯度下降法

激活函数的导数

sigmoid
(3)神经网络

tanh(z)(3)神经网络

ReLU
(3)神经网络

正向传播与反向传播过程
(3)神经网络

随机初始化权重

如果初始化权重均为 0 ,那么对于每个结点,无论进行多少次梯度下降,其计算结果都是对称的(相同的计算过程),对模型的训练没有用
证明如下(3)神经网络

参数的初始化
W的初始化不能全为0,会影响对称性
b的初始化可以为0,不影响对称性
*
初始化 W 为什么要乘 0.01 而不是 100 呢?
这与计算过程有关,W 过大会导致 z 过大,带入激活函数中容易落入斜率趋于 0 的区域,使学习速度大大降低,所以一般会选择乘一个小常数
(3)神经网络

版权声明:本文为博主FH_FE原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/zhiai_/article/details/122506309

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2022年1月18日
下一篇 2022年1月18日

相关推荐