深度学习的发展历程
- 人工智能
- 机器学习
- 深度学习
人工智能
远在古希腊时期,发明家就梦想着创造能自主思考的机器。当人类第一次构思可编程计算机时,就已经在思考计算机能否变得智能(尽管这距造出第一台计算机还有一百多年)(Lovelace, 1842)。如今,人工智能(artificialintelligence, AI)已经成为一个具有众多实际应用和活跃研究课题的领域,并且正在蓬勃发展。我们期望通过智能软件自动地处理常规劳动、理解语音或图像、帮助医学诊断和支持基础科学研究。
一个人的日常生活需要关于世界的巨量知识。很多这方面的知识是主观的、直观的,因此很难通过形式化的方式表达清楚。计算机需要获取同样的知识才能表现出智能。人工智能的一个关键挑战就是如何将这些非形式化的知识传达给计算机。
机器学习
机器学习(Machine Learning)是一门专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构并不断改善自身性能的学科。简单来说,机器学习就是通过算法,使得机器能从大量的历史数据中学习规律,从而对新的样本做智能识别或预测未来。
机器学习在图像识别、语音识别、自然语言理解、天气预测、基因表达、内容推荐等很多方面的发展还存在着没有良好解决的问题。
上图是机器学习解决问题的一般流程,即将原始数据划分为训练数据和测试数据,并提取数据的特征用以训练模型,最终测试数据用来测试模型的好坏(泛化能力)。
深度学习
深度学习的概念源于人工神经网络的研究,含多隐层的多层感知机就是一种深度学习结构。深度学习通过组合低层特征形式更加抽象的高层表示属性类别或特征了,来发现数据的分布式特征表示。其动机在于建立、模拟人脑进行分析学习的神经网络,它模拟人脑的机制来解释数据,例如图像、声音和文本,深度学习是无监督学习的一种。
其实,神经网络早在八九十年代就被提出过,真正使得深度学习兴起有2个方面的因素:
- 大数据,用于训练数据的增加;
- 计算机的算力大大增加,更快的CPU、通用GPU 的出现
上图是深度学习的简单结构图,主要包含三个部分:输入层(Visible layer)、隐藏层(hidden layer)和输出层(Output layer)。图中解决的是图片分类问题。
输入层输入图片,即像素矩阵;
对于隐藏层,第一层可以轻易地通过比较相邻像素的亮度来识别边缘。有了第一隐藏层描述的边缘,第二隐藏层可以容易地搜索可识别为角和扩展轮廓的边集合。给定第二隐藏层中关于角和轮廓的图像描述,第三隐藏层可以找到轮廓和角的特定集合来检测特定对象的整个部分;
最后根据图像描述中包含的对象部分,输出层输出图片中所包含的对象类别。
深度学习常见的编程框架
观察发现,Google、Microsoft、Facebook等巨头都参与了这场深度学习框架大战,此外,还有毕业于伯克利大学的贾扬清主导开发的Caffe,蒙特利尔大学Lisa Lab团队开发的Theano,以及其他个人或商业组织贡献的框架。
另外,可以看到各大主流框架基本都支持Python,目前Python在科学计算和数据挖掘领域可以说是独领风骚。虽然有来自R、Julia等语言的竞争压力,但是Python的各种库实在是太完善了,Web开发、数据可视化、数据预处理、数据库连接、爬虫等无所不能,有一个完美的生态环境。仅在数据挖据工具链上,Python就有NumPy、SciPy、Pandas、Scikit-learn、XGBoost等组件,做数据采集和预处理都非常方便,并且之后的模型训练阶段可以和TensorFlow等基于Python的深度学习框架完美衔接。
深度学习的应用
无人驾驶
深度学习在无人驾驶领域主要用于图像处理, 也就是摄像头上面。 当然也可以用于雷达的数据处理, 但是基于图像极大丰富的信息以及难以手工建模的特性, 深度学习能最大限度的发挥其优势。
在做无人车的公司中,他们都会用到三个传感器激光雷达(lidar),测距雷达(radar)和摄像头(camera),但还是会各有侧重。比如 Waymo(前谷歌无人车)以激光雷达为主,而特斯拉和中国的图森互联以摄像头为主。我们可以从特斯拉近期放出的一段无人驾驶的视频中看到特斯拉有三个摄像头传感器,左中右各一个。
从上图我们可以看出,特斯拉成功识别了道路线(红色的线)前方整个路面(右中图),这个过程也可以用深度学习完成。
AlphaGo阿尔法狗
阿尔法狗(AlphaGo)是第一个击败人类职业围棋选手、第一个战胜围棋世界冠军的人工智能程序。它主要的原理就是深度学习。
早在1997年,IBM的国际象棋系统深蓝,击败了世界冠军卡斯帕罗夫时,采用的算法是通过暴力搜索的方式尝试更多的下棋方法从而战胜人类,其所依赖的更多是计算机的计算资源优势。但在围棋上,深蓝的方式完全不适用。为了战胜人类围棋选手,AlphaGo需要更加智能且强大的算法。深度学习为其提供了可能。
AlphaGo主要包括三个组成部分:
- 蒙特卡洛搜索树(MonteCarlo tree search,MCTS)
- 估值网络(Value network)
- 策略网络(Policy notebook)
AlphaGo的一个大脑——策略网络,通过深度学习在当前给定棋盘条件下,预测下一步在哪里落子。通过大量对弈棋谱获取训练数据,该网络预测人类棋手下一步落子点的准确率可达57%以上(当年数据)并可以通过自己跟自己对弈的方式提高落子水平。
AlphaGo的另一个大脑——估值网络,判断在当前棋盘条件下黑子赢棋的概率。其使用的数据就是策略网络自己和自己对弈时产生的。
AlphaGo使用蒙特卡罗树算法,根据策略网络和估值网络对局势的评判结果来寻找最佳落子点。
人脸识别
人脸识别的方法有很多,如face++,DeepFace,FaceNet…常规的人脸识别流程为:人脸检测—>对齐—>表达—>分类。
人脸对齐的方法包括以下几步:1.通过若干个特征点检测人脸;2.剪切;3.建立Delaunay triangulation;4.参考标准3d模型;5.讲3d模型比对到图片上;6.进行仿射变形;7.最终生成正面图像。