深度学习笔记

1 概念

  • 人工智能(Artificial Intelligence) ————为机器赋予人的智能
  • 机器学习(Machine Learning) ———— 一种实现人工智能的方法
  • 深度学习(Deep Learning) ———— 一种实现机器学习的技术

2 单层神经网络

机器学习可以通过神经网络来实现。可以将深度学习简单理解为,就是使用深度方法应用在神经网络的机器学习方法。目前深度架构大部分时候就是指深度神经网络。

2.1神经元

1943 年,心理学家 McCulloch 和数学家 Pitts 参考了生物神经元的结构,发表了抽象的神经元模型 MP。

神经元模型是一个包含输入,输出与计算功能的模型。

其中的 Sgn 为激活函数

图中 Sum 求和圆圈和符号函数组成一个神经元。 连接是神经元中最重要的东西。每一个连接上都有一个权重。

一个神经网络的训练算法就是让权重的值调整到最佳,以使得整个网络的预测效果最好。

MP 模型虽然简单,但是是神经网络大厦的地基。

2.2 单层神经网络(感知器)

1958 年,计算科学家 Rosenblatt 提出了由两层神经元组成的神经网络。他给它起了一个名字—"感知器"(Perceptron)。

在原来 MP 模型的"输入"位置添加神经元节点,标志其为"输入单元"。其余不变,便有了最简单的神经网络。

假如我们要预测的目标不再是一个值,而是一个向量,例如 [2,3]。那么可以在输出层再增加一个"输出单元"。

感知器中的权值是通过训练得到的。所谓训练,就是根据已有的输入和输出,找出最合适的权重参数。

利用感知器,可以很好的完成线性分类任务。

下图显示了在二维平面中划出决策分界的效果,也就是感知器的分类效果。

1969 年 Minsky 出版了一本叫《Perceptron》的书,里面用详细的数学证明了感知器的弱点, 感知器只能做简单的线性分类任务。

3 两层神经网络

Minsky 说过单层神经网络无法解决异或问题;两层神经网络可以解决异或问题,且具有非常好的非线性分类效果,但两层神经网络的计算是一个问题,没有一个较好的解法。

3.1 两层神经网络(多层感知器)

1986 年,Rumelhar 和 Hinton 等人提出了反向传播(Backpropagation,BP)算法,解决了两层神经网络所需要的复杂计算量问题,从而带动了业界使用两层神经网络研究的热潮。

图中输入与输出的节点数是可以根据需要修改的。 同时为了让计算更合理,每一层都会增加一个常量的偏置单元。

使用矩阵运算来表达整个计算公式的话如下:(其中 W/a/z 都为矩阵)

g(W(1) a(1) b(1)) = a(2); g(W(2) a(2) b(2)) = z;

理论证明,两层神经网络可以无限逼近任意连续函数。也就是说,面对复杂的非线性分类任务,两层神经网络可以分类的很好。

下面就是一个 例子,红色的线与蓝色的线代表数据。而红色区域和蓝色区域代表由神经网络划开的区域,两者的分界线就是决策分界。

可以看到,这个两层神经网络的决策分界是非常平滑的曲线,而且分类的很好。

3.2 反向传播算法(BP)

机器学习模型训练的目的,就是使得参数尽可能的与真实的模型逼近。具体做法是这样的。首先给所有参数赋上随机值。我们使用这些随机生成的参数值,来预测训练数据中的样本。样本的预测目标为 yp,真实目标为 y。那么,定义一个值 loss,计算公式如下:

loss = (yp - y)^2

这个值称之为损失(loss),我们的目标就是使对所有训练数据的损失和尽可能的小。

此时这个问题就被转化为一个优化问题。一个常用方法就是高等数学中的求导,但是这里的问题由于参数不止一个,求导后计算导数等于 0 的运算量很大,所以一般来说解决这个优化问题使用的是梯度下降算法。梯度下降算法每次计算参数在当前的梯度,然后让参数向着梯度的反方向前进一段距离,不断重复,直到梯度接近零时截止。一般这个时候,所有的参数恰好达到使损失函数达到一个最低值的状态。

在神经网络模型中,由于结构复杂,每次计算梯度的代价很大。因此还需要使用反向传播算法。反向传播算法是利用了神经网络的结构进行的计算。不一次计算所有参数的梯度,而是从后往前。首先计算输出层的梯度,然后是第二个参数矩阵的梯度,接着是中间层的梯度,再然后是第一个参数矩阵的梯度,最后是输入层的梯度。计算结束以后,所要的两个参数矩阵的梯度就都有了。

反向传播算法可以直观的理解为下图。梯度的计算从后往前,一层层反向传播。前缀 E 代表着相对导数的意思。

4 深度学习

  • 随着 BP 算法的提出,神经网络也重新得到人们的重视,开始发力于语音识别,图像识别,自动驾驶等多个领域。
  • 但是神经网络仍然存在若干的问题:尽管使用了 BP 算法,一次神经网络的训练仍然耗时太久,而且困扰训练优化的一个问题就是局部最优解问题,这使得神经网络的优化较为困难。同时,隐藏层的节点数需要调参,这使得使用不太方便,工程和研究人员对此多有抱怨。
  • 90 年代中期,由 Vapnik 等人发明的 SVM(Support Vector Machines,支持向量机)算法诞生,很快就在若干个方面体现出了对比神经网络的优势:无需调参;高效;全局最优解。基于以上种种理由,SVM 迅速打败了神经网络算法成为主流。
  • 2006 年,Hinton 在《Science》和相关期刊上发表了论文,首次提出了"深度信念网络"的概念。与传统的训练方式不同,"深度信念网络"有一个"预训练"(pre-training)的过程,这可以方便的让神经网络中的权值找到一个接近最优解的值,之后再使用"微调"(fine-tuning) 技术来对整个网络进行优化训练。这两个技术的运用大幅度减少了训练多层神经网络的时间。他给多层神经网络相关的学习方法赋予了一个新名词—"深度学习"。
  • 很快,深度学习在语音识别领域崭露头角。接着,2012 年,深度学习技术又在图像识别领域大展拳脚。Hinton 与他的学生在 ImageNet 竞赛中,用多层的卷积神经网络成功地对包含一千类别的一百万张图片进行了训练,取得了分类错误率 15%的好成绩,这个成绩比第二名高了近 11 个百分点,充分证明了多层神经网络识别效果的优越性。

多层神经网络如下:

通过研究发现,在参数数量一样的情况下,更深的网络往往具有比浅层的网络更好的识别效率。这点也在 ImageNet 的多次大赛中得到了证实。从 2012 年起,每年获得 ImageNet 冠军的深度神经网络的层数逐年增加,2015 年最好的方法 GoogleNet 是一个多达 22 层的神经网络。

在最近的 ImageNet 大赛上,目前拿到好成绩的 MSRA 团队的方法使用的更是一个深达 152 层的网络!

目前,深度神经网络在人工智能界占据统治地位。但凡有关人工智能的产业报道,必然离不开深度学习。神经网络界当下的四位引领者除了前文所说的 Ng,Hinton 以外,还有 CNN 的发明人 Yann Lecun,以及《Deep Learning》的作者 Bengio。

5 回顾

从单层神经网络(感知器)开始,到包含一个隐藏层的两层神经网络,再到多层的深度神经网络,一共有三次兴起过程。

下图说明了,随着网络层数的增加,以及激活函数的调整,神经网络所能拟合的决策分界平面的能力。

一个成功的技术与方法,不仅需要内因的作用,还需要时势与环境的配合。神经网络的发展背后的外在原因可以被总结为:

  • 更强的计算性能
  • 更多的数据
  • 以及更好的训练方法。

6 其他

6.1 量子计算

随着深度学习需要的计算量越来越大,目前的计算水平无法满足深度学习的要求,量子计算的发展,可能会一定程度决定机器学习的发展。

6.2 人工智能

虽然现在人工智能非常火热,但是距离真正的人工智能还有很大的距离。就拿计算机视觉方向来说,面对稍微复杂一些的场景,以及易于混淆的图像,计算机就可能难以识别。个人认为,目前人工智能全面替代人还有很长的路要走。的路要走。

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

焦红平的专栏

1 篇文章1 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能LeadAI

想搞机器学习,不会特征工程?

引言 在之前学习机器学习技术中,很少关注特征工程(Feature Engineering),然而,单纯学习机器学习的算法流程,可能仍然不会使用这些算法,尤其是应...

2653
来自专栏数据科学与人工智能

【机器学习】机器学习的应用——关于正确应用机器学习

引言 前阵子看到一篇文章,学习了一段时间的机器学习算法后,再回头看机器学习问题,发现要想利用机器学习去很好的求解一个问题,其实并不是一件容易办到的事情,...

2558
来自专栏奇点大数据

深度学习入门

机器学习技术正越来越多的出现在消费级产品上,比如照相机和智能手机。 机器学习系统可用于识别图像中的对象,将语音转换成文本,选择搜索结果的相关项,以及匹配新闻、帖...

693
来自专栏Python中文社区

机器学习算法实践-标准与局部加权线性回归

專 欄 ❈PytLab,Python 中文社区专栏作者。主要从事科学计算与高性能计算领域的应用,主要语言为Python,C,C++。熟悉数值算法(最优化方法,...

2696
来自专栏编程

当今最火10大统计算法,你用过几个?

为什么学习统计学习?理解不同技术背后的理念非常重要,它可以帮助你了解如何使用以及什么时候使用。同时,准确评估一种方法的性能也非常重要,因为它能告诉我们某种方法在...

2710
来自专栏AI研习社

英伟达教你用深度学习做图像修复,确定不试一下?

深度学习是人工智能中发展最快的领域之一,被广泛的应用在很多领域,尤其是实时目标检测、图像识别和视频分类。深度学习通常采用卷积神经网络、深度信念网络、循环神经网络...

752
来自专栏人工智能头条

在实践中正确应用机器学习的12条法则

1714
来自专栏机器之心

CVPR 2018 | Spotlight 论文:非参数化方法实现的极端无监督特征学习

1443
来自专栏新智元

【一个神经元统治一切】ResNet 强大的理论证明

【新智元导读】MIT CSAIL的研究人员发现,隐藏层仅有一个神经元的ResNet就是一个通用的函数逼近器,恒等映射确实加强了深度网络的表达能力。研究人员表示,...

600
来自专栏人工智能LeadAI

花式解释AutoEncoder与VAE

什么是自动编码器 自动编码器(AutoEncoder)最开始作为一种数据的压缩方法,其特点有: 1、跟数据相关程度很高,这意味着自动编码器只能压缩与训练数据相似...

3534

扫码关注云+社区