人工智能(语言识别&图像识别)pytnon下的自然语言处理

吴恩达-神经网络和深度学习( 第三周 浅层神经网络:)

2017-09-14  本文已影响56人  双愚

学习使用前向传播和反向传播搭建出有一个隐藏层的神经网络。

3.1 神经网络概览

Neutral Network

3.2 神经网络表示

神经网络表示

3.3 计算神经网络的输出

gengrate 生成
compute 计算
matrix 矩阵

image.png image.png image.png image.png

3.4 多个例子中的向量化

训练样本横向堆叠构成矩阵X

image.png image.png

3.5 向量化实现的解释

image.png

这就是对不同训练样本向量化的神经网络,接下来,我们目前为止我们一直都是用sigmoid函数

image.png

3.6 激活函数(activation function)

如何使用不同种类的激活函数,simoid只是其中的一个可能选择

但 二分分类是,输出层最好用sigmoid,因为y输出介于0-1更合理

image.png

不过,sigmoid和tanh函数都有一个缺点,如果z非常大,或非常小,函数的斜率很接近0,这样会拖慢梯度下降算法

修正线性单元(ReLU)就派上用场了(z为正,斜率为1,为负,斜率为0)

image.png

在选择激活函数时有一些经验法则

还有个带泄露的ReUL(z小于0是有一个缓缓的斜率,)通常比ReUL激活函数好,不过实际中使用的频率没那么高

在实践中使用ReUL激活函数,学习速度通常会快得多,比使用tanh或sigmoid激活函数快得多,因为ReUL没有函数斜率接近0时,减慢学习速度的学习速度的效应

说一下几个激活函数

image.png

3.7 为什么需要非线性激活函数(nonlinear activation function)?

如果用线性激活函数(linear activation function)或者叫做恒等激活函数,那么神经网络只是把输入线性组合再输出,
无论你的神经网络多少层,一直在做的只是计算线性激活函数,和没有任何的标准Logistic回归是一样的,因为两个线性函数组合的本身就是线性函数,除非你引用非线性,

3.8 激活函数的导数

接下来讨论梯度下降的基础,如何估计,如何计算单个激活函数的导数,斜率,

image.png image.png image.png image.png

3.9 神经网络的梯度下降法

梯度下降算法的具体实现,如何处理单隐层神经网络,
提供所需的方程,来实现反向传播,或者说梯度下降算法,

keepdims = true(确保python输出的是矩阵)

image.png

3.10 (选修)直观理解反向传播

3.11 随机初始化

当你训练神经网络时,随机初始化权重非常重要,对于logistic回归,可以将权重初始化为零,
但如果将神经网络各参数数组初始化为0,再使用梯度下降算法(gredient descent),那会完全失效

因为我们需要两个不同的隐藏单元,去计算不同的函数,这个问题的解决方案是随机初始化所有参数,

随机初始化

所以,在这周的视频里,你知道如何设立单隐层神经网络,初始化参数,并用正向传播计算预测值,还有计算导数,然后使用梯度下降,反向传播

上一篇下一篇

猜你喜欢

热点阅读