之前我们讨论的模型是对于分类的回归模型,包含了线性组合的多个基础函数。但是他的应用范围有一定的限制。另外一个方法在于事先限定基础函数的个数并且使得他可自适应的,也就是说使得他的参数值在训练当中是可以发生变化的,其中最成功的模型是前向神经网络(feed-forward network),也称作多层认知模型(Multilayer perceptron)。
1、前向网络函数
在第三章和第四章中讨论的回归线性分类模型的原型为:
其中f()是一个用于分类非线性的激活函数,我们的目标在于将基本函数基于参数然后允许这些参数能够被调整,我们首先构建M个这些线性值的组合:
得到这个aj值之后,紧接着我们得到:,这个函数所作用的节点称作隐藏节点(hidden units),而非线性函数h()通常使用sigmoid函数或者tanh函数,这些值 通常被线性组合得到:
其中:
因此:
因为在神经网络图中存在一个直接的关系,我们可以使用一个普遍的函数关系,但是,这个函数关系仅限于前向神经网络,而对于每一层节点,函数为:
2、神经网络训练
对于前向网络模型,我们对于训练的一个目标在于减小误差:
我们首先通过讨论回归函数问题当我们讨论一个目标变量t时:
因此对于多个数据我们可得:
我们对上式取负对数,可得:
因此,去掉后面的常数去掉,需要最小化的项为:
当我们找到上式的最小值wML,可以得到:
因此,最小化总的式子的误差值为:
我们首先考虑从两个类的分类情形:当t=1为C1,t=0时为C2,我们考虑从一个网络模型,有一个单个输出值,他的激活函数为logistic sigmoid:
我们可以将y(x,w)解释为条件概率p(C1|x),而p(C2|x)为1-p(x,w),我们可以将概率写成如下的贝努利分布格式:
因此,误差函数可以取负对数:
同样,对于有多个训练样本,我们可以得到:
因此误差函数为:
因此,当遇到多个类的分类情况(K个类)时,我们应当将使用如下条件:tk∈{0,1},输出函数被解释为:y(x,w)=p(tk=1|x)。
而在第四章中我们讨论得: