ML03-神经网络

·

0 min read

西瓜书学习笔记

James

2019-05-23

神经网络

神经元模型

神经网络是由具有适应性的简单单元组成的广泛并行互联的网络,它的组织能够模拟生物神经系统对之恩是世界物体做出的交互反应。

神经网络中最基本的成分是神经元(neuron)模型。

M-P神经元模型

神经元接受一系列神经元传来的输入信号,这些信号通过带权重的连接进行传递,神经元将接收到的总输入与神经元的"阈值"(threshold)进行比较,然后通过"激活函数"(activation function)处理产生神经元的输出。

激活函数

理想中的激活函数能够将输入值映射为${0,1}$。

Sigmoid函数能够把较大范围内变化的输入值挤压到 $(0,1)$ 之间,因其连续且光滑,实际中经常被用作激活函数。

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

Sigmoid函数

感知机

感知机(Perceptron)由两层神经元组成。一个简单的感知机如下图所示:

感知机 对于线性可分的问题,即存在一个线性超平面能将问题分开,感知机的学习一定会收敛(converge)。要解决非线性可分的问题,我们可以使用多层功能神经元。

解决异或问题的两层感知机

神经网络学到的东西,蕴含在链接权与阈值之中。

误差逆传播算法(Back Propagation,BP)

对于每个训练样例,BP算法执行以下的操作:先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差(损失函数/目标函数,Loss function/Object function),再将误差逆向传播至隐层神经元(反向传播,链式求导),最后根据隐层神经元的误差来对链接权和阈值进行调整。

标准BP算法针对于一个训练样本更新连接权和阈值,更新非常频繁。累计BP算法针对累计误差最小化,他在读取整个训练集一遍后才对参数进行更新,更新频率低。

Hornik等证明,只许一个包含足够多神经元的隐层,多层前馈网络能以任意精度逼近任意复杂度的连续函数。如何设置隐层神经元的个数,在实际应用中通常靠“试错法”调整。

BP神经网络经常遭遇过拟合,常用的两种缓解过拟合的方法为:

  • 早停(early stopping)

    将数据划分为训练集和验证集(validation set),训练集用来计算梯度,更新参数,验证集用来计算误差。若训练集误差降低,但验证集误差上升,则停止进一步的训练。

  • 正则化(regularization)

    在误差目标函数中增加一个用于描述网络复杂度的部分。