Google机器学习速成课-04

2019-03-06  本文已影响0人  一杯玄米茶

十二、神经网络

神经网络是更复杂版本的特征组合,能够自行学习特征规律而不用手动指定参数。

下面是一个简单的神经网络的结构示意,每个蓝色圆圈均表示一个输入特征,隐藏层中的每个黄色节点均是蓝色输入节点值的加权和,输出是黄色节点的加权和。

图12.1 简单的神经网络示例

但是上面的神经网络无论增加多少层,输出始终都是输入的线性组合。无法处理非线性问题。

要对非线性问题进行建模,我们可以直接引入非线性函数。我们可以用非线性函数将每个隐藏层节点像管道一样连接起来。

在下图所示的模型中,在隐藏层 1 中的各个节点的值传递到下一层进行加权求和之前,我们采用一个非线性函数对其进行了转换。这种非线性函数称为激活函数。

添加了激活函数层的三层模型

常用的激活函数

(1)S 型激活函数

将加权和转换为介于 0 和 1 之间的值,函数定义及曲线图如下:

F(x)=\frac{1}{1+e^{-x} }

图12.2 S型激活函数

(2)修正线性单元激活函数(ReLU)

ReLU 的优势在于它基于实证发现(可能由 ReLU 驱动),拥有更实用的响应范围。S 型函数的响应性在两端相对较快地减少。

ReLU激活函数

实际上,所有数学函数均可作为激活函数。假设 σ 表示我们的激活函数(ReLU、S 型函数等等)。因此,网络中节点的值由以下公式指定:\sigma (\omega\cdot x+b )

训练神经网络

反向传播算法是最常见的一种神经网络训练算法。但是,反向传播依赖于梯度这一概念。事物必须是可微的,这样我们才能够进行学习(允许存在少量的间断点)。

梯度下降法在多层神经网络中将成为可行方法。

失败案例

(1)梯度消失,有时会出现失败的情况,如果网络太过于深入信噪比会越来越差。学习速率可能会变得非常慢。

(2)梯度分解,如果学习速率太高就会出现不稳定的情况,模型中就可能出现NaN。这时就需要降低学习速率。

(3)ReLU消失,一旦 ReLU 单元的加权和低于 0,ReLU 单元就可能会停滞。它会输出对网络输出没有任何贡献的 0 激活,而梯度在反向传播算法期间将无法再从中流过。由于梯度的来源被切断,ReLU 的输入可能无法作出足够的改变来使加权和恢复到 0 以上。降低学习速率有助于防止 ReLU 单元消失。

丢弃正则化

这是称为丢弃的另一种形式的正则化,可用于神经网络。其工作原理是,在梯度下降法的每一步中随机丢弃一些网络单元。丢弃得越多,正则化效果就越强:

0.0 = 无丢弃正则化。

1.0 = 丢弃所有内容。模型学不到任何规律。

0.0 和 1.0 之间的值更有用。

有效的机器学习准则

(1)确保第一个模型简单易用。

(2)着重确保数据管道的正确性。

(3)使用简单且可观察的指标进行训练和评估。

(4)拥有并监控您的输入特征。

(5)将您的模型配置视为代码:进行审核并记录在案。

(6)记下所有实验的结果,尤其是“失败”的结果。

上一篇下一篇

猜你喜欢

热点阅读