深度学习的一些总结(Introduce to Deep learning)

来源:互联网 发布:fgo淘宝石头号注意事项 编辑:程序博客网 时间:2024/06/06 20:04

最近这段时间在上海参加会议,对我来说学的东西有限,体现在三方面:1. 会议的主旨视乎定在sparse code上,Deep learning涉及的报告相对而言不多;2.报告人作的报告一部分知识其实我事先已经有部分认识;3. 此会议为国际会议,全程英语,鄙人英语能力有限,有些报告确实跟不上。不过此次会议对我的打击倒是挺大,先不说打击,先总结下自己的心得(笔记记忆版):

  • Introduce to Deep learning  --报告人Xiaogang Wang

就我的理解报告人的报告分为两部分,第一部分 介绍了Deep Learning的基础知识,另一部分 介绍文章 Joint Deep Learning for Pedestrian Detection。下面是自己的一些总结

第一    印象比较深刻的是报告人介绍了Deep Learning 的思想,或者说优点,总结如下:
  1. 分层学习,这个非常有意义,兴许若干年后,深度学习被别的其他算法取代,但是分层学习的思想会让人们记住的,从2012年,在图像领域Deep learning 取得突破性的进展一直到今天,从那个时候的11层到今天的20层、30层,会发现,层数越多,效果越好
  2. 提出了另个概念:Feature EngineerFeature Learning;前者指的是运用传统方法对图像进行特征处理,比如HOG、SIFT等,后者为深度神经网络逐层学习到的图像特征,相交而言,Feature Engineer提取到的特征是相对于不同任务而设计,一般而言不同的任务用不同的特征提取方法,所以其普适性相对较差,相反,Feature Learning 通过网络逐层学习得到的图像特征,一方面其表达能力相较于Feature Engineer得到的特征较高,另一方面其得到的特征适应不同任务的能力相对较强
  3. 利用大数据的思想,这个思想即便是Deep Learning 被取代之后同样还会有它的价值      --- 这一观点是来自 余凯
报告人说了深度学习的优点,那么顺便总结下他的局限性,其实任何算法都会有自身的局限性:
  1. Deep Learning 没提供uncertainty 的quantification,我做一个预测,他不能告诉我这个预测可信度大小,这对于有些预测是极其关键的
  2. Deep Learning 忽略了结构化的信息,就是说一些先验知识怎么用进去,以及怎么把知识嵌进去他做的不是很好,拿图像举例来说,深度神经网络直接输入的图像像素,但是就图像本身而言,像素与像素之间是有某种联系的,Deep Learning 忽略了这种联系,忽略了结构化信息
第二    报告人提到了Why deep 的疑问,我们知道包含一个隐藏层的神经网就能拟合任何复杂程度的函数,但为什么还要deep 呢?其实在之前组会的时候,实验室 老师也提出一样的问题,当时自己对deep learning 的理解一知半解,对这些深层次的问题没有做认真的思考,现在结合报告人的说法以及自己的一些积累,将这个问题做如下的总结:
  1. 从网络表达复杂目标函数的能力方面讲,浅层的结构网络有时无法很好实现高变函数 (highly varying functions, by Bengio) 等复杂高维函数的表示,而用深度网络结构能较好表达
  2. 在网络的计算复杂度方面,当深度为 k 的网络结构能够紧凑的表达某一函数时,在采用深度小于  的网络结构表达函数时,可能需要增加指数级规模的计算因子(computational elements)
  3. 信息共享方面,深度学习获得的是多重水平的提取特征可以在类似的不同任务中重复使用,相当于对任务求解提供了一些无监督的数据,可以获得更多的有用信息(share & re-use)
  4. 从仿生学角度,在仿生学角度方面,深度学习网络结构是对人类大脑皮层的最好模拟。与大脑皮层一样,深度学习对输入数据的处理是分层进行的,用每一层神经网络提取原始数据不同水平的特征,其实认知过程也是深度的
----------------------------------- 自己的一些总结 -----------------------------------------------
深度学习,概念:一个多层的深度结构,信号在这个多层结构中进行传播,形式上,最后得到信号的表达,内容上,深度结构是指层数多于一层的非线性函数关系,对数据局部特征进行多层次的抽象化的学习与表达,从这个角度来说,多层神经网络只是深度学习的一个子类。对神经网络而言,深度指的是网络学习得到的函数中非线性运算组合的水平的数量,直观的讲,就是隐藏层数目

第三    报告人提到了一对名词:underfitoverfit 对应中文:欠拟合,过拟合。为了说明这两种情况,我们先定义一个模型,其真实的模型表达函数的最高阶为2的多项式,现在我们有训练样本,我们将训练样本分为:训练集与测试集。
  1. underfit  指的是,在拟合模型的过程中,我们拟合得到的函数的最高阶小于2,有可能是一个常数,也可能是一个线性函数,这样,得到的函数不足以最大限度的表达这个模型
  2. overfit 与underfit相反,我们学习到的模型函数的最高阶大于2,有可能是3或者4次多项式,那么这个模型在训练集上,能得到很好的拟合训练样本结果,但是在测试集上得到的结果较差
其关系如图所示:
模型复杂度指的是,模型函数最高阶次数,可见模型复杂度为2的时候 just fit 。可见不管是过拟合还是欠拟合都表达的是对模型的真实函数的逼近程度。
那么在实际中如何衡量的呢?
首先,我们定义一个目标函数:

如图,它是由两部分组成,分别是loss function,以及正则化项regularization function组成。正则化项一般是模型复杂度的单增函数,模型越复杂,正则化项值越大,其中λ大于等于0。其分析如图下

我们会发现,这张图与上面那张模型复杂度图像有些关系。假设,λ--> 无穷大 ,这上面的objection function 为了取得最小值,其regularization function 为零,进而模型的参数取值须得为零,那么模型的拟合函数最高次为零,那么模型处于欠拟合状态,此时的误差为bias,相反,若 λ--> 0 regularization function 可以去任意值,那么模型拟合函数的最高次以极大概率 (奥卡姆剃刀原理,Occam's razor) 处于较大值,那么模型处于过拟合状态,此时误差由于过拟合引起variance。

奥卡姆剃刀 Occam's razor 原理,应用于模型选择的时变为以下想法:在所有可能选择的模型中,能够很好地解释已知数据并且十分简单才是最好的模型,也就是应该选择的模型。从贝叶斯估计的角度来看,正则化项对应于模型的先验概率,可以假设复杂的模型有较大的先验概率,简单的模型有较小的先验概率。通俗的说,正则化项为什么好用,因为他事先给模型做了一个假设,这样模型就多一个先验知识,多一个约束条件

这对名词又牵出两个概念:biasvariance。定义:bias 样本估计的期望与样本均值函数之间的差值;variance样本估计与估计的期望之间的方差。

那么问题来了;如果我们训练的网络得到的误差超出我们的预期怎么办?

  1. 调整λ值,升高或降低再次训练
  2. 减小特征集
  3. 试着增加多项式特征
  4. 增加额外特征
  5. 增加训练样本

2 0
原创粉丝点击