神经网络是目前最主流的机器学习方法。本节将对神经网络的基本原理进行逐步介绍,从最基本的神经网络——感知机,到多层感知机,再到深度学习(深层神经网络),并对神经网络发展历程进行简要概述。
我们首先介绍最简单的人工神经网络:只有一个神经元的单层神经网络,即感知机。它可以完成简单的线性分类任务。图2.4是一个两输入的感知机模型,其神经元的输入是 x =[ x 1 ; x 2 ],输出是 y =1和 y =-1两类, w 1 和 w 2 是突触的权重(也称为神经网络的参数),该感知机可以完成对输入样本的分类。该感知机模型的形式化表示为:
其中,( w , b )是模型参数。
图2.4 一个神经元的单层感知机
感知机模型训练的目标是找到一个超平面 S ( w ⊤ x + b =0),将线性可分的数据集 T 中的所有样本点正确地分为两类。超平面是 N 维线性空间中维度为 N -1的子空间。二维空间的超平面是一条直线,三维空间的超平面是一个二维平面,四维空间的超平面是一个三维体。对于图2.5中的两类点,感知机模型训练时要在二维空间中找到一个超平面(即一条直线)将这两类点分开。为了找到超平面,需要找出模型参数 w 和 b 。相对线性回归,感知机模型中增加了sign( x )计算,即激活函数,激活函数的输出也称为激活值。该计算增加了求解参数的复杂性。
图2.5 分类区域 x 空间
感知机模型训练首先要找到一个合适的损失函数,然后通过最小化损失函数来找到最优的超平面,即找到最优的超平面的参数。考虑一个训练集 D ={( x 1 , y 1 ),( x 2 , y 2 ),…,( x m , y m )},其中样本 x j ∈ R n ,样本的标签 y j ∈{+1,-1}。超平面 S 要将两类点区分开来,即使分不开,也要与分错的点比较接近。因此,损失函数定义为误分类的点到超平面 S ( w ⊤ x + b =0)的总距离。
样本空间中任意点 x j 到超平面 S 的距离为
其中, 是 w 的 范数,简记为‖ w ‖,其计算为 。
假设超平面 S 可以将训练集 D 中的样本正确地分类,当 y j =+1时, w ⊤ x j + b ⩾0;当 y j =-1时, w ⊤ x j + b <0。对于误分类的点,预测出来的值可能在超平面的上方,但实际位置在下方,因此 y j 和预测出来的值的乘积应该是小于0的。即训练集 D 中的误分类点满足条件 -y j ( w ⊤ x j + b )>0。
去掉误分类点 x j 到超平面 S 的距离表达式(2.10)中的绝对值符号,得到
设误分类点的集合为 M ,所有误分类点到超平面的总距离为
由于‖ w ‖是一个常数,损失函数可定义为
感知机模型训练的目标是最小化损失函数。当损失函数足够小时,所有误分类点要么没有,要么离超平面足够近。损失函数中的变量只有 w 和 b ,类似于线性回归中的变量 w 1 和 w 2 。可以用梯度下降法来最小化损失函数,损失函数 L ( w , b )对 w 和 b 分别求偏导可以得到
如果用随机梯度下降法,可以随机选取误分类样本( x j , y j ),以 η 为步长对 w 和 b 进行更新
通过迭代可以使损失函数 L ( w , b )不断减小直至为0,即使最终不为0,也会逼近于0。通过上述过程可以把只包含参数( w , b )的感知机模型训练出来。