吴恩达《机器学习》学习笔记(二)

目录

浅层神经网络

神经网络概述

神经网络的表示

神经网络的输出

向量化实现

激活函数 Activation function

Sigmoid

ReLU

Tenh: tanh 函数是 sigmoid 的向下平移和伸缩后的结果

Leaky Relu:当𝑧是负值时,这个函数的值不是等于0,而是轻微的倾斜.

为什么需要非线性激活函数

激活函数的导数

Sigmoid

ReLU

Leaky Relu

Tenh

神经网络的梯度下降

随机初始化

为什么要随机初始化?

浅层神经网络

神经网络概述

神经网络的表示

我们有输入特征𝑥1、𝑥2、𝑥3,它们被竖直地堆叠起来,这叫做神经网络的输入层。它包含了神经网络的输入;然后这里有另外一层我们称之为隐藏层。"隐藏"的意义:无法在训练集中看到的层;在本例中最后一层只由一个结点构成,而这个只有一个结点的层被称为输出层

神经网络的输出

逻辑回归的计算有两个步骤,首先你按步骤计算出𝑧,然后在第二步中你以 sigmoid 函数为激活函数计算z。

向量化实现

激活函数 Activation function

Sigmoid

ReLU

Tenh: tanh 函数是 sigmoid 的向下平移和伸缩后的结果

在不同的神经网络层中,激活函数可以不同。

sigmoid 函数和 tanh 函数两者共同的缺点是,在𝑧特别大或者特别小的情况下,导数的梯度或者函数的斜率会变得特别小,最后就会接近于0,导致降低梯度下降的速度。

Leaky Relu:当𝑧是负值时,这个函数的值不是等于0,而是轻微的倾斜.

两者的优点是:

第一,在𝑧的区间变动很大的情况下,激活函数的导数或者激活函数的斜率都会远大于0,在程序实现就是一个 if-else 语句,而 sigmoid 函数需要进行浮点四则运算,在实践中,使用 ReLu 激活函数神经网络通常会比使用 sigmoid 或者 tanh 激活函数学习的更快。

第二,sigmoid 和 tanh 函数的导数在正负饱和区的梯度都会接近于 0,这会造成梯度弥散,而 Relu 和 Leaky ReLu 函数大于 0 部分都为常数,不会产生梯度弥散现象。(同时应该注意到的是,Relu 进入负半区的时候,梯度为 0,神经元此时不会训练,产生所谓的稀疏性,而 Leaky ReLu 不会有这问题)

𝑧在 ReLu 的梯度一半都是 0,但是,有足够的隐藏层使得 z 值大于 0,所以对大多数的训练数据来说学习过程仍然可以很快。

为什么需要非线性激活函数

如果使用线性激活函数或者没有使用一个激活函数,那么无论神经网络有多少层一直在做的只是计算线性函数,所以不如直接去掉全部隐藏层。此时无法解决非线性问题。

激活函数的导数

Sigmoid

ReLU

Leaky Relu

Tenh

神经网络的梯度下降

反向传播公式如下:

随机初始化

为什么要随机初始化?

        如果你把权重都初始化为0,那么由于隐含单元开始计算同一个函数,所有的隐含单元就会对输出单元有同样的影响。一次迭代后同样的表达式结果仍然是相同的,即隐含单元仍是对称的。通过推导,两次、三次、无论多少次迭代,不管你训练网络多长时间,隐含单元仍然计算的是同样的函数。

        我们通常倾向于初始化为很小的随机数,这样经过激活函数计算的值会很小,计算出来的梯度会较大,学习速度较快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想的小鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值