Google机器学习速成课-04
十二、神经网络
神经网络是更复杂版本的特征组合,能够自行学习特征规律而不用手动指定参数。
下面是一个简单的神经网络的结构示意,每个蓝色圆圈均表示一个输入特征,隐藏层中的每个黄色节点均是蓝色输入节点值的加权和,输出是黄色节点的加权和。
图12.1 简单的神经网络示例但是上面的神经网络无论增加多少层,输出始终都是输入的线性组合。无法处理非线性问题。
要对非线性问题进行建模,我们可以直接引入非线性函数。我们可以用非线性函数将每个隐藏层节点像管道一样连接起来。
在下图所示的模型中,在隐藏层 1 中的各个节点的值传递到下一层进行加权求和之前,我们采用一个非线性函数对其进行了转换。这种非线性函数称为激活函数。
添加了激活函数层的三层模型常用的激活函数
(1)S 型激活函数
将加权和转换为介于 0 和 1 之间的值,函数定义及曲线图如下:
图12.2 S型激活函数(2)修正线性单元激活函数(ReLU)
ReLU 的优势在于它基于实证发现(可能由 ReLU 驱动),拥有更实用的响应范围。S 型函数的响应性在两端相对较快地减少。
ReLU激活函数实际上,所有数学函数均可作为激活函数。假设 σ 表示我们的激活函数(ReLU、S 型函数等等)。因此,网络中节点的值由以下公式指定:
训练神经网络
反向传播算法是最常见的一种神经网络训练算法。但是,反向传播依赖于梯度这一概念。事物必须是可微的,这样我们才能够进行学习(允许存在少量的间断点)。
梯度下降法在多层神经网络中将成为可行方法。
失败案例
(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)记下所有实验的结果,尤其是“失败”的结果。