TensorFlow系列专题(三):深度学习简介
一.深度学习的发展历程
- 深度学习的起源阶段
- 深度学习的发展阶段
- 深度学习的爆发阶段
二.深度学习的应用
- 自然语言处理
- 语音识别与合成
- 图像领域
三.参考文献
一.深度学习的发展历程
作为机器学习最重要的一个分支,深度学习近年来发展迅猛,在国内外都引起了广泛的关注。然而深度学习的火热也不是一时兴起的,而是经历了一段漫长的发展史。接下来我们简单了解一下深度学习的发展历程。
- 深度学习的起源阶段
1943年,心里学家麦卡洛克和数学逻辑学家皮兹发表论文《神经活动中内在思想的逻辑演算》[1],提出了MP模型。MP模型是模仿神经元的结构和工作原理,构成出的一个基于神经网络的数学模型,本质上是一种“模拟人类大脑”的神经元模型(这里有必要说明的是,我们说的模仿其实更准确的说法应该是参考,计算机领域的“人工神经网络”的确是受到生物学上的“神经网络”的启发,但是两者相差万里,没有直接的可比性。)。MP模型作为人工神经网络的起源,开创了人工神经网络的新时代,也奠定了神经网络模型的基础。
1949年,加拿大著名心理学家唐纳德·赫布在《行为的组织》中提出了一种基于无监督学习的规则——海布学习规则(Hebb Rule)[2]。海布规则模仿人类认知世界的过程建立一种“网络模型”,该网络模型针对训练集进行大量的训练并提取训练集的统计特征,然后按照样本的相似程度进行分类,把相互之间联系密切的样本分为一类,这样就把样本分成了若干类。海布学习规则与“条件反射”机理一致,为以后的神经网络学习算法奠定了基础,具有重大的历史意义。
20世纪50年代末,在MP模型和海布学习规则的研究基础上,美国科学家罗森布拉特发现了一种类似于人类学习过程的学习算法——感知机学习[3]。并于1958年,正式提出了由两层神经元组成的神经网络,称之为“感知器”。感知器本质上是一种线性模型,可以对输入的训练集数据进行二分类,且能够在训练集中自动更新权值。感知器的提出吸引了大量科学家对人工神经网络研究的兴趣,对神经网络的发展具有里程碑式的意义。
但随着研究的深入,人们发现了感知器模型所存在的不足,它甚至无法解决最简单的线性不可分问题(例如异或问题)。由于这一不足以及没有及时推广感知器到多层神经网络中,在20世纪70年代,人工神经网络进入了第一个寒冬期,人工神经网络的发展也受到了很大的阻碍甚至质疑。
- 深度学习的发展阶段
1982年,著名物理学家约翰·霍普菲尔德发明了Hopfield神经网络。Hopfield神经网络是一种结合存储系统和二元系统的循环神经网络。Hopfield网络也可以模拟人类的记忆,根据激活函数的选取不同,有连续型和离散型两种类型,分别用于优化计算和联想记忆。但由于容易陷入局部最小值的缺陷,该算法并未在当时引起很大的轰动。
直到1986年,深度学习之父杰弗里·辛顿提出了一种适用于多层感知器的反向传播算法——BP算法[3]。BP算法在传统神经网络正向传播的基础上,增加了误差的反向传播过程。反向传播过程不断地调整神经元之间的权值和阈值,直到输出的误差达到减小到允许的范围之内,或达到预先设定的训练次数为止。BP算法解决了非线性分类问题,让人工神经网络再次引起了人们广泛的关注。
但是由于八十年代计算机的硬件水平有限,运算能力跟不上,以及当神经网络的层数增加时,BP算法会出现“梯度消失”的问题等等。这使得BP算法的发展受到了很大的限制。再加上90年代中期,以SVM为代表的其它浅层机器学习算法被提出,并在分类、回归问题上均取得了很好的效果,其原理相较于神经网络模型具有更好的可解释性,所以人工神经网络的发展再次进入了瓶颈期。
- 深度学习的爆发阶段
2006年,杰弗里·辛顿以及他的学生鲁斯兰·萨拉赫丁诺夫正式提出了深度学习的概念。他们在世界顶级学术期刊《Science》发表的一篇文章中详细的给出了“梯度消失”问题的解决方案——通过无监督的学习方法逐层训练算法[4],再使用有监督的反向传播算法进行调优。该深度学习方法的提出,立即在学术圈引起了巨大的反响,以斯坦福大学、多伦多大学为代表的众多世界知名高校纷纷投入巨大的人力、财力进行深度学习领域的相关研究,而后又迅速蔓延到工业界中。
2012年,在著名的ImageNet图像识别大赛中,杰弗里·辛顿领导的小组采用深度学习模型AlexNet一举夺冠[5]。AlexNet采用ReLU激活函数,极大程度上上解决了梯度消失问题,并采用GPU极大的提高了模型的运算速度。同年,由斯坦福大学著名的吴恩达教授和世界顶尖计算机专家Jeff Dean共同主导的深度神经网络——DNN技术在图像识别领域取得了惊人的成绩,在ImageNet评测中成功的把错误率从26%降低到了15%。深度学习技术在世界大赛的脱颖而出,又进一步吸引了学术界和工业界对于深度学习领域的关注。
随着深度学习技术的不断进步以及计算机硬件算力的不断提升,2014年,Facebook基于深度学习技术的DeepFace项目,在人脸识别方面的准确率已经能达到97%以上,跟人类识别的准确率几乎没有差别。这样的结果也再一次证明了深度学习技术在图像识别方面的一骑绝尘。
2016年,谷歌公司基于深度强化学习开发的AlphaGo以4:1的比分战胜了国际顶尖围棋高手李世石,深度学习的热度一时无两。后来,AlphaGo又接连和众多世界级围棋高手过招,均取得了完胜。这也证明了在围棋界,基于深度学习技术的机器人几乎已经超越了人类。
2017年,基于深度强化学习技术的AlphaGo升级版AlphaGo Zero横空出世。其采用“从零开始”、“无师自通”的学习模式,以100:0的比分轻而易举打败了之前的AlphaGo。除了围棋,它还精通国际象棋等其它棋类游戏,可以说是真正的棋类“天才”。此外在这一年,深度学习相关技术也在医疗、金融、艺术、无人驾驶等多个领域均取得了显著的成果。所以,也有专家把2017年看作是深度学习甚至是人工智能发展最为突飞猛进的一年。
深度学习发展到今天已经越来越趋于成熟,尤其是图像方面。无论是科研还是应用,大家也越来越理性,而不是像早些时候,把深度学习视为“万能的”,盲目的去跟风。当然,这一领域也还有许多问题需要解决,还有很多有趣、有挑战性的方向可以研究。
图1 深度学习发展简史
二.深度学习的应用
作为机器学习发展到一定阶段的产物,近年来深度学习技术之所以能引起社会各界广泛的关注,是因为不光在学术界,同时也在工业界取得了重大突破和广泛的应用。其中应用最广的几个研究领域分别是自然语言处理、语音识别和图像处理。接下来,我们分别来看一下这三个领域的发展现状:
- 自然语言处理
自然语言处理(NLP)是语言学和人工智能的交叉科学,旨在让计算机能够“读懂”人类的语言。其包括的主要范畴有(我们这里说的自然语言处理仅仅指文本相关的):分词、词性标注、命名实体识别、句法分析、关键词抽取、文本分类、自动摘要以及信息检索等等。传统的自然语言处理主要是利用语言学领域本身的知识结合一些统计学的方法来获取语言知识。后来伴随着机器学习浅层模型的发展(如:SVM、逻辑回归等等),自然语言处理领域的研究取得了一定的突破,但在语义消歧、语言的理解等方面还是显得力不存心。近年来,随着深度学习相关技术(DNN、CNN、RNN等)[6][7]取得了显著的进展,其在自然语言处理方面的应用也展现出了明显的优势。
从算法上来看,词向量(word vector)作为深度学习算法在自然语言领域的先驱,有着及其广泛的应用场景,在机器翻译、情感分析等方面均取得了不错的效果。其基本思想是把人类语言中的词尽可能完整地转换成计算机可以理解的稠密向量,同时要保证向量的维度在可控的范围之内,在Bahdanau等人利用LSTM[8]模型结合一些自定义的语料,解决了传统模型的Out of dictionary word问题之后,更使得基于深度学习的自然语言处理较于传统方法有明显的优势。目前,基于深度学习的自然语言处理在文本分类、机器翻译、智能问答、推荐系统以及聊天机器人等方向都有着极为广泛的应用。
- 语音识别与合成
语音相关的处理其实也属于自然语言处理的范畴,目前主要是语音合成(Text to Speech,TTS)和语音识别(Automated Speech Recognition,ASR)。语音识别应该是大家最为熟知的,也是应用最为广泛的。同自然语言处理类似,语音识别也是人工智能和其它学科的交叉领域,其所涉及的领域有:模式识别、信号处理、概率论、信息论,发声原理等等。近年来随着深度学习技术的兴起,语音识别取得显著的进步,基于深度学习的语音技术不仅从实验室走向了市场,更得到了谷歌、微软、百度以及科大讯飞等众多科技公司的青睐。语音输入法、家用聊天机器人、医疗语音救助机、智能语音穿戴设备等具体的应用场景也是层出不穷。
事实上,在深度学习算法还未普及之前的很长一段时间,语音识别系统大多采用高斯混合模型(GMM)这一机器学习浅层模型完成数据的量化和建模。由于该模型可以精确地量化训练集并对数据有较好的区分度,所以长期在语音识别领域占主导地位。直到2011年,微软公司推出了基于深度学习的语音识别系统,模拟人类大脑分层对数据特征进行提取,使得样本特征之间的联系更加密切,完美的克服了GMM[9]模型处理高维数据方面的不足。直到今天,基于深度神经网络的模型仍然广泛应用在语音相关的各个领域中。
- 图像领域
事实上,图像领域目前算是深度学习应用最为成熟的领域。也正是由于深度学习算法在ImageNet图像识别大赛中远超其它机器学习算法、以巨大优势夺魁才推动了深度学习发展的第三次浪潮。目前,通过卷积神经网络(CNN)构建的图像处理系统能够有效的减小过拟合、对大像素数图像内容能很好的识别,在融合GPU加速技术后,使得神经网络在实际中能够更好的拟合训练数据,更快更准确的识别大部分的图片。总而言之,深度学习模型可谓是和图像处理技术的完美结合,不仅能够提高图像识别的准确率,同时还可以在一定程度上提高运行效率,减少了一定的人力成本。
三.参考文献
[1] A Logical Calculus of the Ideas Immanent in Nervous Activity . Warren S. McCulloch. Walter Pitts.1943
[2] Organization of Behavior: A Neuropsychological Theory . Donald Hebb . 1949
[3] Learning Internal Representations by Error Propagation . Rumelhart.1986
[4] Reducing the dimensionality of data with neural networks . Hinton.2006
[5]Imagenet classification with deep convolutional neural networks. Hinton.2012
[6] ImageNet Classification with Deep Convolutional Networks. Yann LeCun .1998
[7] Supervised Sequence Labelling with Recurrent Neural Networks. Alex Graves .2008
[8] Learning to forget: continual prediction with LSTM. FA Gers , J Schmidhuber , F Cummins . 2014
[9] A finite sample correction for the variance of linear efficient two-step GMM estimators. F Windmeijer.2000
TensorFlow系列专题(三):深度学习简介的更多相关文章
- 【tensorflow:Google】一、深度学习简介
参考文献:<Tensorflow:实战Google深度学习框架> [一]深度学习简介 1.1 深度学习定义 Mitchell对机器学习的定义:任务T上,随着经验E的增加,效果P也可以随之增 ...
- TensorFlow+Keras 01 人工智能、机器学习、深度学习简介
1 人工智能.机器学习.深度学习的关系 “人工智能” 一词最早是再20世纪50年代提出来的. “ 机器学习 ” 是通过算法,使用大量数据进行训练,训练完成后会产生模型 有监督的学习 supervise ...
- Reading | 《TensorFlow:实战Google深度学习框架》
目录 三.TensorFlow入门 1. TensorFlow计算模型--计算图 I. 计算图的概念 II. 计算图的使用 2.TensorFlow数据类型--张量 I. 张量的概念 II. 张量的使 ...
- 基于Ubuntu+Python+Tensorflow+Jupyter notebook搭建深度学习环境
基于Ubuntu+Python+Tensorflow+Jupyter notebook搭建深度学习环境 前言一.环境准备环境介绍软件下载VMware下安装UbuntuUbuntu下Anaconda的安 ...
- React文档翻译系列(三)JSX简介
# React文档翻译系列(三)JSX简介 先来看一下下面的变量声明: ``` const element = Hello world! ``` 这种有趣的标签语法既不是字符串也不是HTML. 这种形 ...
- 【书评】【不推荐】《TensorFlow:实战Google深度学习框架》(第2版)
参考书 <TensorFlow:实战Google深度学习框架>(第2版) 这本书我老老实实从头到尾看了一遍(实际上是看到第9章,刚看完,后面的实在看不下去了,但还是会坚持看的),所有的代码 ...
- Tensorflow 深度学习简介(自用)
一些废话,也可能不是废话.可能对,也可能不对. 机器学习的定义:如果一个程序可以在任务T上,随着经验E的增加,效果P也可以随之增加,则称这个程序可以在经验中学习. “程序”指的是需要用到的机器学习算法 ...
- TensorFlow系列专题(五):BP算法原理
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/ ,学习更多的机器学习.深度学习的知识! 一.反向传播算法简介 二.前馈计算的过程 第一层隐藏层的计算 第 ...
- TensorFlow系列专题(六):实战项目Mnist手写数据集识别
欢迎大家关注我们的网站和系列教程:http://panchuang.net/ ,学习更多的机器学习.深度学习的知识! 目录: 导读 MNIST数据集 数据处理 单层隐藏层神经网络的实现 多层隐藏层神经 ...
随机推荐
- Leetcode 20题 有效的括号(Valid Parentheses) Java语言求解
题目描述: 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空 ...
- ODI学习资料
ODI12.2.1.4入门指南:https://docs.oracle.com/en/middleware/fusion-middleware/data-integrator/12.2.1.4/ind ...
- czC#01
1. .net简介: .net分为.net平台及.net Framework 2..NET作用 2.转义与@ 3.类型转换 1) 隐式转换 2)显式类型转换 (待转换的目标类型)原始值
- svg和css3创建环形渐变进度条
在负责的项目中,有一个环形渐变读取进度的效果的需求,于是在网上查阅相关资料整理一下.代码如下: <!DOCTYPE html> <html lang="en"&g ...
- Postgresql存放数组形式的数据
Postgres 数据库允许把字段定义为可变长度的数组.数据类型既可以是内置类型,也可以是用户自定义的类型或枚举类型. 例如: 创建表 create table demo(name text,subj ...
- Linux——如何将Red Hat Enterprise Linux 6的语言改为中文?
第一步,打开终端,输入su -,获取超级用户权限,输入密码. 第二步,输入cd /etc/sysconfig,进入设置目录. 第三步,输入vi i18n,进入到配置文件. 第四步,按 ‘i’键,进入编 ...
- activiti设置customSessionFactories时的一个小坑
现象:activiti设置customSessionFactories不起作用,流程还是走原来的查询方法原因:新实现的XXXEntityManagerFactory的getSessionType方法返 ...
- 爬虫使用中间代理人 fiddl...,charles,mitmproxy 设置
一般的设置在网上就能找到(端口,ip啥的) 但是难点是关于安卓手机证书 在网上找到的几种方法,一种是在app源码中添加设置让手机app同意你下载安装的证书,另一种则是root_adb 安装证书 但是太 ...
- celery异步任务 定时任务
以前项目中用到过 celery ,但是没怎么记笔记,现在在记一下,方便以后用. Celery.png 问:Celery 是什么? 答:Celery 是一个由 Python 编写的简单.灵活.可靠的 ...
- JAVAEE学习day03,基本的流程控制
有问题请留言 1.流程控制语句分类 1)顺序控制语句 2)选择结构语句 if... if...else... if...else if... else... for... switch... whil ...