今天开始学习模式识别与机器学习Pattern Recognition and Machine Learning (PRML),章节5.1,Neural Networks神经网络-前向网络。

话说上一次写这个笔记是13年的事情了···那时候忙着实习,找工做,毕业什么的就没写下去了,如今工做了有半年时间也算稳定了,我会继续把这个笔记写完。其实不少章节都看了,不过还没写出来,先从第5章开始吧,第2-4章比较基础,之后再补!算法

 

第5章 Neural Networks

在第3章和第4章,咱们已经学过线性的回归和分类模型,这些模型由固定的基函数(basis functions)的线性组合组成。这样的模型具备有用的解析和计算特性,可是由于维度灾难(the curse of dimensionality)(即高维数据)的问题限制了它们的实际的适用性。为了把这些模型应用在大数据的问题中,咱们必须根据数据来调整这些基函数。网络

在第七章中会讨论SVM,是一个很是著名和有效的分类方法。SVM有其独特的方法理论,而且其一个重要的优势是:虽然涉及非线性优化,可是SVM自己的目标函数依然是convex的。在本章中不具体展开,第七章中有详述。app

另一个办法是虽然提早固定基函数的数量,可是容许它们在在训练的过程当中调整其参数,也就是说基函数是能够调整的。在模式识别领域,该方法最为典型的算法是本章节将会讨论 的前向神经网络(feed-forward neural network,后面简称NN),或者称为多层感知器(multilayer perceptron)。(注:这里多层模型是连续的,如sigmoid函数,而perceptron方法本来是不连续的;perceptron方法在PRML书中没有介绍,后面根据其余的资料单独写一篇)。不少状况下,NN训练的模型相比具备相同泛化能力的SVM模型更紧凑(注:我理解是参数更少),所以跟容易评估,可是代价是NN的基函数再也不是训练参数的convex函数。在实际中,在训练中花费大量计算资源以获得紧凑的模型,来快速处理新数据的状况是能够接受的。ide

接下来咱们会看到,为了获得神经网络的参数,咱们本质上是作了一个最大似然估计,其中涉及非线性优化问题。这须要对log似然函数针对参数求导数,咱们后面会讲一下偏差反向传播算法(error backpropagation,BP),以及BP算法的一些扩展方法。函数

 

5.1 Feed-forward Network Functions

在第3章和第4章中通论的线性模型,是基于固定的基函数image的线性组合,形式为:大数据

image

 

其中,f()在分类问题中是一个非线性的激励函数,而在回归模型中是单位矩阵identity。咱们的目标是把上面的模型中的基函数image变得依赖于参数,而且在训练的时候这些参数以及上面的wj都是可调整的。基函数的形式天然有不少种,神经网络的基函数采用和(5.1)相同形式,所以每一个基函数本事就是一个关于input线性组合的非线性函数,线性组合中的参数是能够调整的参数。这就是基本的神经网络的思想,由一系列函数转换组成:首先咱们构造针对输入变量image的M个线性函数优化

 

image

其中j=1,…,M,上标(1)表示参数是神经网络第一层的参数(input不算层)。咱们称参数image为权重weights,而参数image是截距biases。image称为激励(activation),会经过一个可导的非线性激励函数h()转换成:设计

image

这些M个函数值就是(5.1)中的基函数的输出,在神经网络模型中,称之为隐含层单元(hidden units)。非线性激励函数h()一般的选择是sigmoid函数或者是tanh函数。根据(5.1),这些值会再一次线性组合成output单元的激励值,3d

image

其中k=1,…,K,K是output单元数量。这个转换是神经网络的第二层,image是bias参数。最终,这些output单元的激励值会再由合适的激励函数转换成合适的最终输出image。和上面的提到的相似,若是是要作回归问题,激励函数咱们选择identity,即image;若是是作多个2分类问题,咱们采用logistic sigmoid function:blog

image

若是是多个类别的分类问题,咱们采用softmax函数,见PRML书公式(4.62)。

因而,咱们把全部阶段都组合起来,能够获得整体的神经网络函数(采用sigmoid output单元,两层网络,以下面图5.1):

image

所以,神经网络模型就是一个非线性函数,从输入的变量集合image到输出的变量集合image,而且由可调整的参数向量w来控制。网络的结构能够见图5.1,整个网络是向前传播的。

 

 

image

 

咱们能够专门增长x0=1和z0=1两个变量输入,这样能够把bias(偏移、截距)项合并到累加里面,简化了表达,所以能够获得:

image

以及:

image

下面的推导会用(5.9)的形式。若是看过第四章关于感知机(perception)的介绍,就会发现上面的形式就至关于用了两层的感知机模型,也是由于这样,神经网络模型也被称为多层感知机(the multilayer perceptron, or MLP)模型。区别是感知机模型采用输出0/1的步长函数(step-function),而NN采用连续的如sigmoid这样的非线性函数在中间的隐藏层单元,说明NN对于参数是可导的,这一点在NN模型的训练中很重要。

 

若是隐层单元的激励函数都是采用线性的,那么无论连续几层,最终模型仍是一个线性模型。并且若是隐层单元比输入单元或者输出单元少的话,那么就会有信息损失,相似于在隐层作了一次数据降维。目前来看,不多有人关注多层线性单元的神经网络模型。上面图5.1是一个最为典型的NN模型结构,它能够很容易的获得拓展——继续把输出层做为隐层,并增长新的层次,采用和以前同样的函数传递方法。业界在称呼NN模型的层次上有一些统一,有些人把图5.1叫作3层网络,而在本书中更推荐这个模型为2层,由于参数可调的层只有2层。

 

另一种对模型的泛化方法是像图5.2这样,input的节点能够直接链接到output,并不必定须要一层一层传递。(注:这样的NN结构更广义,优化的时候BP也同样能够应付,可是是怎么产生这些越层链接的呢?这一点书中没有展开,不知道这样的模型在深度网络结构中有没有应用呢?有同窗看到必定要留言告知哈~)

image

另一个很重要的性质,NN模型能够是稀疏的,事实上大脑也是这样的,不是全部的神经元都是活跃的,只有很是少的一小部分会活跃,不一样层的神经元之间也不多是全链接的。后面再5.5.6节中,咱们将看到卷积神经网络采用的稀疏网络结构的例子。

咱们天然能够设计出更复杂的网络结构,不过通常来讲咱们都限定网络结构为前向网络,也就是说不存在封闭的有向环,能够见图5.2表示的那样,每个隐层单元或者是输出单元能够经过下面计算获得:

image

因而,当有输入时,网络中的全部单元都会逐步被影响进而激活(也有可能不激活)。神经网络模型有很强的近似拟合功能,所以也被称为universal approximators.

事实上两层的NN模型就能够拟合任意function,只要隐层单元足够多以及参数训练的足够好。下面的图5.3说明了NN模型的拟合能力。解释请看图左边的描述。

 

image

 

5.1.1 权值空间的对称性

这是前向网络一个有趣的性质,好比咱们来看图5.1这样的典型两层网络,考察一个隐层单元,若是咱们把它的输入参数的符号所有取反,以tanh函数为例,咱们会获得相反的激励函数值,即tanh(−a) = −tanh(a)。而后把这个单元全部的输出链接权重也都取反,咱们又能够获得相同的output输出,也就是说,实际上有两组不一样的权值取值能够获得相同的output输出。若是有M个隐层单元,实际上有2M种等价的参数取值方案。

另外,若是咱们把隐层的两个单元的输入输出权重互相间调换一下,那么整个网络最终output是同样的,也就是说任何一种权重的取值组合是全部M!中的一种。可见上面这样的神经网络竟然有M!2M的权值对称性可能。这样的性质在不少激励函数都是有的,可是通常来讲咱们不多关心这一点。

相关文章
相关标签/搜索