对deep learning的第一周调研

来源:互联网 发布:生命起源知乎 编辑:程序博客网 时间:2024/05/01 00:06

以下仅是我的个人认识,说得不对请轻拍。
(目前,我只看了一些deep learning 的review和TOM Mitchell的书《machine learning》中的神经网络一章,认识有限。感觉3\4讲得一般,勉强一看。第五章纯粹是为了做笔记,真的不好表达,看不懂还是看tom的书吧。)

本文的组织:
1.我对deep learning的总体认识
2.发展简史
3.感知器模型
4.感知器的梯度下降训练方法
5.反向传播算法(BP)

1.我对deep learning的总体认识
deep learning是一类基于人工神经网络的方法总称。多层神经网络,由输入层、输出层、还有多层隐藏层构成。一般,在神经网络的输入层输入的是对象的基本表示,隐藏层是对象的另一种特征表示,低层的隐藏层表示对象的低级特征表示,高层的隐藏层表示对象的高级特征表示,每层的特征表示通过层与层之间系数来表征,神经网络就是从低级特征表示中提取出对象的高级特征的,输出层输出对象的具体类型。拿图像识别的列子来说,迭代训练时,就是从输入层输入图像的像素,然后抽取图像的高级特征,不停地改变神经网络的系数使得输入图像的像素在最后的输出层能够输出图像的正确类型(说的比较牵强)。

2.发展简史
在20世纪40年代,有人根据神经细胞的运行机制提出了感知器模型(单个人工神经元),到了20世纪60年代,由于单层的感知器模型表征能力不强,研究热度下降。20世纪80年代,有人提出了反向传播算法,实现了多层网络的训练,但一般都是训练3层的网络,因为训练更多层时BP就不够用了。人工神经网络,越多层,它的表征能力就越厉害,隐藏层所需要的节点数也就越少。所以人工神经网络的研究又受到限制了。到了2006年,Hinton大神发表了《Deep belief network》这篇文章,提出了分层训练的方法,使得人工神经网络的研究再次火起来。

3.感知器模型
perception
上图就是感知器的最初模型。它分为输入部分:x1,x2,…,xn和各个输入对应的系数w1,w2,…,wn(亦称权向量)还有阈值w0,以及激活函数o和输出。感知器模型是简单的线性分类模型,当输入的线性组合(w1.x1+w2.x2+…+wn.xn)大于阈值(w0)时,激活函数输出1,否则输出-1。如果把w0也归为一个输入的系数,那么上图中的公式就可以解释通了。当扔数据进去训练数据,调整好感知器的系数后,感知器就成为一个有用的分类器。如下图:激活函数就是那条直线。
这里写图片描述
感知器模型只能表征线性方差,不能表征非线性函数,注定是要被改进的。

4.感知器的梯度下降训练方法
对感知器的训练的就是学习最合适的系数,使得系数能够最好地表征激活函数,或者说使得感知器相对于某固定的训练样本的误差最小。
用数学来表达是这样的:
激活函数表达为:o=w0+w1.x1+…+wn.xn
误差用公式这里写图片描述表示。其中,D是训练样例集合,td是训练样例d的目标输出,od是感知器对训练样例d的输出。
那么现在的任务就是调整函数使得E达到最小。
这其实是一个优化问题。
假设现在只有两个系数w0和w1,那么E和w0和w1的关系如下图:
这里写图片描述
箭头显示该点的梯度的相反方向,指出了在w0和w1平面中沿误差曲面最陡峭的方向。从图中可以看出只要沿着这个方向就能下降就能到误差曲面中误差E最小的那一点。
怎么办?
为了最小化E,从一个任意的初始权向量开始,然后以很小的步伐修改这个向量。每一步都沿着误差曲面产生最陡峭下降的方向修改权向量,循环这个过程直到E最小。
梯度求法如下图:
这里写图片描述
每次的修改:这里写图片描述其中,这里写图片描述

5.反向传播算法(BP)
多个线性单元的连接仍产生线性函数,而我们更希望得到能表征非线性函数的网络。感知器模型是做不到了,但是sigmoid单元可以。sigmoid单元将用作BP算法训练的神经网络的神经元。
与感知器模型不同的是,sigmoid单元的激活函数换了而已。如下图
这里写图片描述

好了。回到BP算法上来。
多层网络,如图:这里写图片描述
BP是怎样训练多层网络的?
答:还是用梯度下降方法,只不过改进了一下。
BP既然是用梯度下降方法的改进来训练多层网络,那么误差E是怎样定义的呢?
答:这里写图片描述
其中,outputs是网络输出单元的集合,tkd是训练样例d在第k个输出单元的目标输出值。okd是训练样例在第k个输出单元的实际输出值。对于网络的每个输出单元(最后一层的单元)k,它的误差项为这里写图片描述
对于以上E的定义发问,隐藏层的神经元有目标输出值这么个定义吗?如果没有,那么E有是怎么定义的?
答:对于每个隐藏单元h,它的误差项为 这里写图片描述。因为训练样例仅对网络的输出提供了目标值tk,所以缺少直接的目标值来计算隐藏单元的误差值。因此采取以下间接办法计算隐藏单元的误差项:对受隐藏单元h影响的每一个单元的误差δk进行加权求和,每个误差δk权值为wkh,wkh就是从隐藏单元h到输出单元k的权值。这个权值刻画了隐藏单元h对于输出单元k的误差应“负责”的程度。

那么,最终每个权值就可以按这个公式更新了:这里写图片描述,其中,这里写图片描述
以上说的yita都是学习率。

1 0
原创粉丝点击