深度学习笔记之Andrew Ng(3)

WEEK3:

本周进入了新的话题,神经网络,不过还暂时离不开我们之前学习的逻辑回归,我的理解是,标准神经网络使用了一个更大范围的神经网络,为什么这么说呢,我们来一步步的开始学习。

神经网络概述:

那么神经网络,是由一个个神经元构成的,长成这个样:
这里写图片描述其中中间的圆形就是我们说的神经元。
之前我们学习过了preceptron(感知器),事实上就是一个单层的神经网络模型,那么既然这样,首先我们需要知道一个神经元长什么样子:
这里写图片描述
下面的两个算式很明显,z为x的线性方程,a为z的激活函数,图中的函数为sigmoid函数,那么经过神经元的这两步替换,得到一个输出a,就是预测值y,就目前来讲,神经网络还和逻辑回归分类算法没有区别,但是下面我们会继续把这个模型变得更加复杂。

这里写图片描述
上图中,在中间层一共有四个神经元,每一个神经元对应着右侧的方程,那么对于三个输入数据x,我们将会训练出四个w与b的组合,使每个神经元对于输入数据都有计算的贡献,那么对于之前的单神经元计算,这个神经网络虽然只有一层,但是已经比之前的结构复杂很多,那么精度上也会进步一些。

激活函数(Activation Function):
一开始,我们接触到的线性转非线性的函数为sigmoid函数,但是为了达到线性变非线性,我们还有很多种选择,先不说每种的优缺点,我们单列出可选的几种函数来:sigmoid函数,tanh函数,relu函数(目前在神经网络中应用较多的一种)和leaky relu。视频中建议我们多使用各种激活函数来试验对于不同的情况,使用哪种激活函数比较合理。

那么为什么要有非线性激活函数呢? 按照Andrew的说法,在多层神经网络中,如果采用的是线性激活函数,那么不管做多少层神经网络,输出值都是一层神经网络的效果,那么就没有必要做多层神经网络了。但是非线性的激活函数能够避免这个问题,达到效果的转变。

梯度下降
逆向传播(这两章由于之前课程中都有涉及,不再赘述)

随机初始化
在初始化权重参数w时,我们不能简单的把w初始化为0,因为如果所有的w都是0,那么这些在同一层神经元会变成一样的w和b, 那么这些神经元都是一模一样的话,这一层神经元的效果就和一个神经元无异了,所以这里我们需要随机初始化参数。
这里写图片描述
这里我们把w和b随机初始化为一个很小的数,这样只要每个w和每个b互相之间都不一样,就可以达到我们初始化的目的:使每个神经元的参数相互之间变得不同。

WEEK3 end

猜你喜欢

转载自blog.csdn.net/jxsdq/article/details/78153183
今日推荐