3.3 现代的模型
感知机模型是各种神经网络模型的基本单元,那么看如何用现代方法描述感知机模型呢?它解决的仍然是从输入到输出的映射问题,输入可以是图像像素的亮度值、声音信号在某个时刻的声波振幅、样本的某个特征值等,输出则是我们希望模型能够从输入模式中识别出的类型信息或者某种预测值。比如,在图像识别的场景中,输入图像是猫和狗的照片,我们希望能够通过输出0、1数值来区分图像中是猫还是狗。再如,在医学诊断的场景中,输入是病人的各项检查指标,例如血压、心率、血糖、血脂等,输出则是患有某种疾病的概率。
假设有N个输入维度,那么用xi表示第i个维度的输入值(i=1,…,N)。感知机如同生物神经元一样,对输入刺激进行叠加,这个叠加过程是线性加权叠加,有的刺激起作用大,权重就高一些,有的刺激起作用小,权重就低一些,还有的刺激起抑制作用,权重就是负值。第i维输入的权重用wi表示。若输入刺激叠加超过一定阈值就会将神经元激活,这个过程我们用一个激活函数σ来表示。那么,神经元的输出就可以表示为以下公式:
激活函数σ可以是一个分段函数,当自变量取值大于阈值时,函数值为1,否则,函数值为0。通常,我们不希望函数的定义与阈值相关,因此,可以引入一个新的量b,作为叠加的一部分,用来调整阈值,这个量通常叫作偏置(bias)。
其中
有时候也可以忽略参数b,只要我们假设有某个额外的输入xi总是等于1,那么它的权重wi就可以看作b。
另外,激活函数σ还可以有很多种不同的形式,它主要用来模拟神经元激活这种非线性过程,只要是单调递增的非线性函数就可以(线性函数就是具有y=kx+b这种形式的一次函数)。我们后面会看到,为了能够自动学习感知机的权重参数,模型训练过程需要计算激活函数σ的导数,因此,我们希望它是连续可导的(如果是分段函数的话,至少在每一段上可导),而且导数不能总是等于0,因为导数等于0会使感知机找不到学习改进的方向。下面是一个满足以上这些约束的常用激活函数,称作Sigmoid函数,如图3.2所示。
σ(t)=(1+e−t)−1
图3.2 Sigmoid激活函数σ(t)的图像
Sigmoid函数的导数有个奇妙的性质,即它可以通过函数值直接计算得到。
σ′(t)=σ(t)(1−σ(t))