【Nan‘s 吴恩达深度学习笔记】第三周 浅层神经网络

浅层神经网络(shallow neural networks)

3.2 神经网络表示

在这里插入图片描述

输入层:输入特征𝑥1、 𝑥2、 𝑥3,它们被竖直地堆叠起来;
隐藏层:在训练集中看到他们,中间结点的准确值未知;
输出层:负责产生预测值。

符号使用中,当我们计算网络的层数时,输入层不算入总层数内。

3.3 神经网络输出计算

在这里插入图片描述
在这里插入图片描述
计算出隐藏层的四个逻辑回归单元和整个隐藏层的输出结果,如果编程实现需要的也只是这四行代码:
在这里插入图片描述

3.4 多样本向量化

在这里插入图片描述
矩阵𝐴:从水平上看,代表了各个训练样本。从竖直上看,矩阵𝐴的不同的索引对应于不同的隐藏单元。
矩阵𝑍、X:水平方向上,对应于不同的训练样本;竖直方向上,对应不同的输入特征,而这就是神经网络输入层中各个节点。

3.6 激活函数(Activation Function)

使用一个神经网络时,需要决定使用哪种激活函数用隐藏层上,哪种用在输出节点上。使用不同的函数𝑔(𝑧[1]), 𝑔可以是非线性函数
在这里插入图片描述

①sigmoid函数
在这里插入图片描述
在神经网路的前向传播中, 𝑎[1] = 𝜎(𝑧[1])和𝑎[2] = 𝜎(𝑧[2])这两步会用到 sigmoid 函数。

②tanh 函数
在这里插入图片描述
tanh 函数(双曲正切函数)是 sigmoid 的向下平移和伸缩后的结果。对它进行了变形后,穿过了(0,0)点,并且值域介于+1和-1之间。

在训练一个算法模型时,其效果总是优于 sigmoid 函数。如果使用 tanh 函数代替sigmoid 函数中心化数据,使得数据的平均值更接近 0 而不是 0.5.

例外:在二分类的问题中,对于输出层需要使用 sigmoid 激活函数,因为𝑦的值是 0 或 1,所以想让 y ^ \hat{y} y^的数值介于 0 和 1 之间,而不是在-1 和+1 之间.

sigmoid 函数和 tanh 函数两者共同的缺点:在𝑧特别大或者特别小的情况下,导数的梯度或者函数的斜率会变得特别小,最后就会接近于 0,导致降低梯度下降的速度。
③修正线性单元的ReLu函数
在这里插入图片描述
④Leaky ReLu
效果通常比ReLu更好,但实际不常用。
在这里插入图片描述
经验法则:
二分类问题:如果输出是 0、 1 值(),则输出层选择 sigmoid 函数,然后其它的所有单元都选择 Relu 函数。

对于隐藏层:若不确定使用哪个激活函数,通常会
使用 Relu 激活函数。有时,也会使用 tanh 激活函数,但 Relu 的一个优点是:当𝑧是负值的时候,导数等于 0。在实践中,使用 ReLu 激活函数神经网络通常会比使用 sigmoid 或者 tanh 激活函数学习的更快。

③小结:
sigmoid 激活函数:除了输出层是一个二分类问题基本不会用它。
tanh 激活函数: tanh 是非常优秀的,几乎适合所有场合。
ReLu 激活函数:最常用的默认函数,,如果不确定用哪个激活函数,就使用 ReLu 或者Leaky ReLu。

Why非线性激活函数

没有非线性激活函数,神经网络也就失去了意义!
𝑎[2] = 𝑧[2] = 𝑊′𝑥 + 𝑏′
如果你是用线性激活函数或者叫恒等激励函数,那么神经网络只是把输入线性组合再输出。

如果在隐藏层用线性激活函数,在输出层用 sigmoid 函数,那么这个模型的复杂度和没有任何隐藏层的标准 Logistic 回归是一样的。

不能在隐藏层用线性激活函数,唯一可以用线性激活函数的通常就是输出层(一般用于回归问题)。

激活函数的导数

①sigmoid
在这里插入图片描述
在这里插入图片描述
②tanh
在这里插入图片描述
在这里插入图片描述
神经网络中:
a = g ( z ) a=g(z) a=g(z)
g ( z ) ′ = d d z g ( z ) = 1 − a 2 g(z)'=\frac{d}{dz}g(z)=1-a^2 g(z)=dzdg(z)=1a2
③ReLU
在这里插入图片描述
④Leaky ReLU
在这里插入图片描述

神经网络的梯度下降

训练参数需要梯度下降,在训练神经网络的时候,随机初始化参数很重要,而不是初始化成全零。当你参数初始化成某些值后,每次梯度下降都会循环计算预测值 y ^ ( i ) ( i = 1 , 2 , . . . , m ) \hat{y}^{(i)}(i=1,2,...,m) y^(i)(i=1,2,...,m)
在这里插入图片描述
在这里插入图片描述
3.32:
在这里插入图片描述
3.33:
为什么 a [ 1 ] T a[1]^T a[1]T多了个转置: 𝑑𝑤中的𝑊(视频里是 W i [ 2 ] W_i^{[2]} Wi[2]是一个列向量,而𝑊[2]是个行向量,故需要加个转置。
类似逻辑回归中,dw=dz·x,只是 a [ 1 ] a[1] a[1]目前充当x。

维度总结:
𝑊[2]的维度是: (𝑛[2], 𝑛[1])。
𝑧[2] , 𝑑𝑧[2]的维度都是: (𝑛[2], 1),如果是二分类,那维度就是(1,1)

随机初始化

对于一个神经网络,如果你把权重或者参数都初始化为 0,那么梯度下降将不会起作用。

解 决 方 法 就 是 随 机 初 始 化 参 数,把偏置项𝑏初始化为 0 是合理的,但是把𝑤初始化为 0 就有问题。

通常倾向于初始化为很小的随机数。防止造成tanh/Sigmoid 激活函数饱和在龟速的学习。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值