① 笔记记录于龙良曲老师的深度学习课程,B站可搜索到;
② 笔记关于深度学习的发展历程,以及历程中的关键论文。文末附有所有论文的云盘下载链接。
① 我们中学课程学过回归方程,就是通过已有数据,反推符合这些数据分布的函数表达式。
② 深度学习的原理从本质上来讲,就是求回归方程。下面一个例子,展示深度学习的代码组成。
注: <1> 假设这个回归方程为y’ = W·x,要优化的就是W矩阵,其实也就是一次方程的斜率;
<2> 优化的目标是使得实际值y与预测值y’的差值error最小;
<3> 然后求得误差error的导数gradient,也称为梯度。梯度的生成方式很多,如SGD,Adam;
<4> 用当前W矩阵值减去学习率alpha乘梯度的积,生成新的W矩阵;
<5> 如果当前W与新生成的W差值小于某个阈值tolerance,则训练结束。
① 生物科学家PITTS和LETTVIN研究发现,青蛙的神经元产生输出反应的前提是输入刺激强度要达到一定阈值。
② 信息科学家把神经元的这种特性表示为一种数学模型--Perceptron感知机模型,并于1958年发表了名为The perceptron: a probabilistic model for information storage and organization in the brain的论文。
③ 感知器模型原理:
注: <1> 随机初始化权重W矩阵;
<2> 输入x与w相乘,然后把所有积相加;
<3> 将相加后的和输入激活函数,如果和大于某个阈值,则输出1,反之输入0;
<4> 最初的激活函数就是个阶跃函数,函数的导数为0,也就是说没办法做梯度下降;
<5> 图中右下角,有研究者将这种网络结构用导线连接的方式构建了实体感知机。
④ 第一代的感知机能做正方形圆形之类的简单图形识别。
① 数学家Minsky和Papert出了一本书《Perceptrons: An Introduction To Computational Geometry》,书中提到perceptron感知机存在两个问题;
② 一是perceptron感知机是线性模型,它没办法处理非线性的分类问题,如感知机可以用一条线分类“或or”和“和and”,但没办法用同样的方式来分类“异或xor”。
③ 二是多层perceptron感知机的参数训练没法进行。一开始提出的感知机只有一层结构(多节点输入一节点输出),一层结构的w参数训练很好进行,只需根据输出是0或1适当调整w即可。但多层结构的感知机,其中间层输出不是0和1,对应中间层的输入参数w就没有一个较好的调整方式。
① 数学家Minsky虽然指出了感知机的问题,但也从理论上提出了解决方案:反向传播,但当时并没有引起重视,因此学界对深度学习的研究一直处于低迷的状态,一直持续到1986年。
② 机器学习之父Geoffrey E.Hinton等人在1986年发表了一篇题为《Learning representations by back-propagating errors》的Nature》论文,再次将深度学习引入公众视野。
③ 随后Geoffrey E.Hinton等人将这篇论文及更多的研究成果汇总成一本书《Parallel distributed processing》,并在第八章详细的介绍了反向传播。
④ 1989年一篇名为《Multilayer feedfoward networks are universal approximators》的论文,从理论上证明多层神经网络可以逼近任何数据分布。
⑤ 理论问题解决后,众多研究者再次投入到对深度学习的研究。1989年,Y.LeCun改良了多层感知机MLP,创造了现在耳熟能详的CNN(Convolutional Neural Networks,卷积神经网络),用在邮政编号手写体的识别,并发表了题为《Backpropagation applied to handwritten zip code recognization》的论文。
⑥ 与此同时,其他的一些神经网络结构也被开发出来,如
(1)Auto encode,经过中间层后,输出和输入相同;
(2)TDNN网络(Time delay neural networks),如音频,在时间域上的采样互有重叠,以保证采样点之间的局部相关性;
(3)RNN(Recurrent Neural Network),递归神经网络,可实现状态w自更新;
(4)LSTM(Long short-term memory),解决了RNN因时间序列过长,前端状态被遗忘的问题,且训练速度更快。
⑦ 大神之间的合作:
(1)Yann LeCun和Yoshua Bengio共同发表论文,关于CNN在图像,音频和时间序上的应用。
(2)Yann LeCun、Yoshua Bengio和Geoffrey Hinton三位祖师爷级别的大神,在Nature上发表关于神经网络的综述论文《Nature Deep Review》。
⑧ 多层神经网络+反向传输,使深度学习进入了第二个春天,众多知名神经网络也相继被提出,如MLP,CNN,TDNN,RNN。这一阶段的深度学习已经具备一定的实用意义,其成果也被应用到商业领域。1990年,美国的邮政编号识别工作,有10%-20%使用CNN。油管有一段早期视频,点击观看。
① 上世纪90年代,深度学习走到第二个瓶颈期,主要原因为:
(1)当时计算机算力不足,神经网络的规模一般不会设计得特别大,这就导致深度学习无法处理较复杂的问题;
(2)神经网络的梯度问题一直被人诟病,往往存在两种极端的现象:梯度离散(vanishing gradients,算法不收敛)和梯度爆炸(exploding gradients,算法收敛过程波动较大);
(3)支持向量机的出现。
② 支持向量机(Support Vector Machine),理论推导更优美,可从线性域推广到非线性域,性能还比深度学习好(至少在当时是这样的)。
③ 由于上述原因的存在,深度学习的研究热度骤降,相关paper被拒收,大神Hinton迁徙,学界为了生存,甚至通过改名来让paper蒙混过关(不叫神经网络了,叫深度学习)。
① Hinton等研究者始终坚信深度学习是个正确的方向,并熬过了漫长的瓶颈期,于2006年发表了一篇重要的论文《A fast learning algorithm for deep belief nets》,提出一种有效初始化的方法(layer by layer),对神经网络的训练速度和效果提升很大。
② Bengio同年发表论文《Greedy Layer-Wise Training of Deep Networks》,提出深层的神经网络能学到更多的隐藏信息,并提出贪婪分层训练。
③ 算力硬件设备的发展:NVIDA推出的通用的计算架构CUDA,使用GPU代替CPU做深度学习运算。
④ 新一任大神登场,Andrew Y.Ng(吴恩达)于2009年发表论文《Large-scale deep unsupervised learning using graphics processors》, 他们使用GPU完成深度学习训练,训练速度大幅提升。当时速度提升了70多倍,现在GPU训练大概能提升10倍左右。
⑤ LSTM之父Schmidhuber发表论文《Deep big simple neural nets excel on handwritten digit recognition》,使用GPU训练著名的手写数字数据集MNIST。
① Hinton等人于2012年发表论文《ImageNet Classification with Deep Convolutional Neural Networks》,使用五层卷积神经网络做图片分类,效果显著,该论文将公众视野再次引入深度学习的研究领域。
② 其他辅助性工作的进步,也促进了深度学习的发展。
(1)大数据;
(2)激活函数的改进。早期的激活函数就是个阶跃函数,其导数为0,没办法做梯度下降处理,后来出现了Sigmoid等激活函数,提升深度学习的训练质量;
(3)BatchNorm数据送入批量操作,加速训练过程;
(4)神经网络的初始化方式;
(5)Dropout,使神经网络的某些连接线故意断连,同时还要保证模型输出影响不大。这是提升模型鲁棒性的操作。
③ 其他重要的研究进展:
(1)GAN(Generative Adversarial Nets,生成对抗网络),可以生成逼真的照片。
(2)深度强化学习(Deep Reinforcement learning),可以使机器人玩游戏达到普通玩家级别。
(3)人工智能研究机构OpenAI Five,使用游戏研究多智能体的合作。
(4)无人驾驶
① 总结:深度学习=上世纪的理论基础+近些年的小修小补+显卡的红蓝Buff,它是一个很好的“规律提取工具”,但远没有业界内外某些有心者吹得那么神。我们要做的是理性看待,按需所用。
② 博客涉及论文下载链接:
链接:https://pan.baidu.com/s/11IrC6kyHBOnhx8iebr8nsw
提取码:6167