一、神经元模型
上图是一个简单的单神经元模型,它接收来自其它神经元传递而来的信号x[0]~x[3],这些信号附带着权重w[0] ~ w[3]进行传递,神经元接收到的输入值与神经元的阈值
进行比较,最后经过激活函数产生输出。上图对应的公式即:
其中,f()即为激活函数。
常用的激活函数有如下几种:
1、Sigmoid函数
Sigmoid函数常被用作神经网络的阈值函数,将变量映射到0,1之间,公式:
2、Tanh函数
Tanh是双曲函数中的一个,Tanh()为双曲正切。在数学中,双曲正切“Tanh”是由基本双曲函数双曲正弦和双曲余弦推导而来。公式:
3、ReLU函数
Relu激活函数(The Rectified Linear Unit),用于隐层神经元输出。公式如下
4、阶跃函数
这是西瓜书中介绍的一个函数,将输入值映射为输出值0 或者 1
二、感知机与多层网络
感知机由两层神经元组成,如下图
感知机是二分类的线性模型,其输入是实例的特征向量,输出的是事例的类别
若两分类是可分的,即存在一个线性超平面能将它们分开,则感知机一定可以求得相应的权重向量
;否则,感知机学习会发生振荡,无法求得合适解。
西瓜书对权重和阈值是给定了合适的初始值,但权重和阈值可以通过学习得到。权重和阈值先给定一随机值,在得到结果后进行更新:如
其中
为学习率
西瓜书中阶跃函数让感知机实现逻辑与、或、非运算。但对于异或问题,感知机是无法解决的,必须引入多层神经元,同样的有输入层和输出层,位于两层之间的叫做隐层。多层神经网络结构模型如下:
三、误差逆传播算法
误差逆传播算法(error BackPropagation,简称BP),也成反向传播算法,是很强大的神经网络学习算法。以西瓜书给出的单隐层神经网络模型为例,给出权重、阈值的更新公式
变量符号意义参考西瓜书
以隐层到输出层的权重为例,权重的更新规则:
,其中
其它参数更新规则参考西瓜书。
误差逆传播算法:
输出:训练集
,学习率
过程:
在(0,1)范围内初始化所有权值和阈值
do:计算当前样本的输出,计算输出层的梯度项,计算隐层的梯度项,更新权重和阈值 until 达到停止条件
输出:多层前馈神经网络