散记知识点
——“探索复杂高级的分类方法”
1.神经网络
1.1 神经网络的基本概念
(1) 定义
- 神经网络是一组连接的输入/输出单元,其中每个连接都与一个权重相关联。在学习阶段,通过调整这些权重,使得它能够预测输入元组的正确类标号来学习。
(2) 前馈神经网络结构
- 前馈神经网络,又称后向传播(BP, back propagation)神经网络。由一个输入层、一个或多个隐含层和一个输出层组成。
-
- 其中,每个输入层的每个输入 x1,x2,... x 1 , x 2 , . . . 对应于每个训练元组 X X 的观测属性,一般被称为输入神经元。输入层加权偏置后的输出作为每个隐含层神经元输入,每个隐含层神经元经过非线性激活函数 然后加权偏置的输出作为下一层每个隐含层输入……最后一层神经元称为输出神经元。它的输入为上一隐含层的输出,输出为类标号判别结果。
- 多层前馈神经网络可以将类预测作为输入的非线性组合。给定足够多的隐含层单元和足够多的训练样本,多层前馈神经网络可以逼近任意函数。
1.2 神经网络的构造
(1) 网络结构
- 输入层:输入层神经元个数取决于输入的数据,例如一个数据元组的 n n 个属性值,组成向量作为输入。
- 隐含层:按照实际需求预定义隐含层层数以及隐含层神经元个数,后期可以不断优化调整。
- 输出层:输出层神经单元个数取决于特定的问题,比如二分类问题可以使用一个输出,多分类问题对应多个输出。
(2) 输入和输出
对于输入:
- 连续值属性:对每个属性值进行规范化至(0, 1)之间,有助于加快学习进程。
- 离散值属性:可以进行编码,使得每个值对应一个输入单元。例如,属性 有三个可能的值 { a0,a1,a2} { a 0 , a 1 , a 2 } ,则可以为 A A 分配三个输入单元 。假如 A=a0 A = a 0 ,则 I0 I 0 置为1,其余为0
对于输出:
- 用于数值预测时,输出值为具体数值。
- 用于分类时:二分类问题对应一个输出单元,输出为0和1(1表示正类,0表示负类);多分类问题时,每个可能的分类对应一个输出值,通过具体策略(例如每个输出对应的概率大小),来确定类标号。
(3) 权值和偏置值初始化
开始训练之前,需要对网络中的权值和偏置值进行初始化,一般初始化为小随机数(-1,1)或(-0.5,0.5)。也可以使用小标准差的正态分布进行初始化权值和偏置值。
(4) 激活函数
隐含层和输出层的每个神经元都包含一个激活函数,结构如下表示:

激活函数将上一层来的一个较大的输入值映射到一个小的区间(0, 1)。一般激活函数都是非线性可微的,使得后向传播算法可以对非线性可分的分类问题建模。
关于各类激活函数的总结可以参考转载文章:神经网络各种激活函数总结
(5) 代价函数
在训练神经网络的过程中,会选择特定的代价函数来衡量预测值与真实值之间的差距。BP神经网络通过这个差距,反向传递误差,来不断地更新权值和偏置值。
代价函数的选择需要结合具体问题,有的时候需要配合激活函数进行选择。更多关于代价函数的内容在:机器学习:神经网络代价函数总结 。
1.3 BP神经网络后向传播算法
采用BP算法的多层感知器是至今为止应用最广泛的神经网络。
(1) BP算法的基本思想
学习过程由信号的正向传播与误差反向传播两个过程组成:
- 信号的正向传播:正向传播时,输入样本从输入层传入,经各隐含层逐层处理,传向输出层。若输出层的输出值与真实值不符,则转入误差反向传播阶段。
- 误差的反向传播:反向传播时,输出值与真实值的误差以某种形式通过隐含层向输入层逐层反传,并将误差分摊给各层的所有神经元。从而获得各层神经元的误差信号,此误差信号即作为修正各层权值和偏置值的一句。
这种信号的正向传播与误差反向传播的各层权值和偏置值调整的过程不断重复进行。权值和偏置值更新的过程,就是网络学习训练的过程。直到网络的输出误差减少到可接受的程度,或进行到预设的学习次数,才能够停止训练。
(2) BP算法推导
以一个三层BP神经网络(包含一个隐含层)为例:

输入向量为 X=(x1,x2,...,xn)T X = ( x 1 , x 2 , . . . , x n ) T ;隐含层输出向量为 Y=(y1,y2,...,ym)T Y = ( y 1 , y 2 , . . . , y m ) T ;输出层输出向量为 o=(o1,o2,...,ol)T o = ( o 1 , o 2 , . . . , o l ) T ,真实值向量为 D=(d1,d2,...,dl)T D = ( d 1 , d 2 , . . . , d l ) T 。
假定输入层和隐含层之间的权值矩阵用 V=(v1,v2,...,vm) V = ( v 1 , v 2 , . . . , v m ) 表示,其中列向量 vj v j 为隐含层第 j j 个神经元对应的权向量,对应的偏置值向量 ;隐含层到输出层的权值矩阵用 W=(w1,w2,...,wl) W = ( w 1 , w 2 , . . . , w l ) 表示,其中列向量 wk w k 为输出层第 k k 个神经元对应的权向量,对应的偏置值向量 。
① 正向传播时,各层信号之间的数学关系为:
- 对于输入层-隐含层:
netj=∑i=0nvijxi+bjyj=f(netj)j=1,2,...,mj=1,2,..,m n e t j = ∑ i = 0 n v i j x i + b j j = 1 , 2 , . . . , m y j = f ( n e t j ) j = 1 , 2 , . . , m
- 对于隐含层-输出层: