深度学习的愿景、问题、应用和资料
系列笔记因个人原因部分未完成,近期会尽快完成,将整体呈现出来的。
深度学习的愿景
和机器学习相比,深度学习的好处非常明显,或者说“看起来”非常明显——用上深度学习,就不需要特征工程和调参啦!
因为本课的主旨是讲解统计学习模型的原理,所以很少涉及特征工程,也没有专门讲过在实际应用中的模型调参。
自己动过手的同学想必知道,在实践中,模型、算法都是工具,支持库封装好了,直接调用对应接口就可以。最难的,恰恰是调参(超参数)和特征工程。
注意:特征工程指根据领域知识生成样本特征的过程,一般包括特征选择、特征获取、特征处理等步骤。
在狭义的机器学习领域(统计学习模型),特征工程以手工为主。现实的样本属性可能有几百几千(甚至更多)个,要从里面选出最具代表性的一部分作为特征,主要依据领域知识和既往经验,其他的工程性方法(降维等)只是起辅助作用。
而领域知识和经验与具体业务紧密相关,恰恰是大多数程序员不熟悉的。这就导致了在实践中总是存在着无法完全释放样本数据潜力的问题。
而调参,在超参数稍多(比如多于三个)以后,以何种策略使几种超参数组合达到最佳,则基本上可以算是一门艺术了。
当深度学习出现后,这两件让机器学习工程师头疼的任务,看起来好像消失了:
- 首先,NN 只有网络结构没有超参数,不需要调参;
- 其次,NN 训练的结果就是获得各个神经元的权值,因此也可以说 NN 具备了自动察觉特征重要程度的机制,可以自动完成特征筛选,不再需要特征工程啦!
深度学习的现实
可惜,现实总是骨感的。
深度学习虽然不需要调参但是需要自己搭建网络。用什么类型的网络(或者网络组合),一共有几层,每层有几个/什么类型的单元,如何连接……这些都要用户自己来创建和指定。
虽然具体到某个实际问题,可能有大量的论文提供学术研究出的解决方案,也有很多经典网络,可以直接拿来使用。但是,重现他人的学术研究成果也是一件蛮复杂的工作。
毕竟,在现阶段的国内企业中,能够迅速在工业应用中实现前沿学术成果的人,就已经被尊为算法科学家了(欲了解“算法科学家”,请参见:附录)。
说到特征选取,虽然理论上 NN 可以接受所有的特征,然后自动选出重要的“委以重任”。也确有将 Million 甚至 Billion 量级的特征输入到 NN 的尝试。但最起码,特征的数字化还是要人类来完成的。
更何况,NN 筛选特征的能力同样也受限于它自身的结构。
另外,如果有具备雄厚领域知识和经验的专家人工筛选出特征,则不仅能够提升 NN 模型的效果,还可以大量节约各种(运算、数据乃至人力)资源。
故而,在实际的工作中,NN 的特征选取也未必全部是自动进行,有时也会加入人工干预。
机器学习和深度学习
下表横向比较了机器学习和深度学习:
模型的自适应性(Scalability)强这一点自然是深度学习的优点,但这种能力不是白来的,它的代价就是对于训练数据和运算能力的巨量需求。
同样训练一个分类器,可能用 LR 或者 SVM 只要几千个样本,就能得到一个基本可用的模型,但如果用深度学习网络,有可能10倍的样本投入进去,训出的模型效果并不比之前的好。
也许投入20倍训练数据后深度学习模型的性能会显示出优势,但是现实工作都要考虑成本收益比。“有限投入基本可用” vs “大量投入优质耐用”,很多时候是前者胜出。
虽然目前深度学习相对于机器学习更加热门,但其实在工业界,深度学习的实际落地点并不是很多。反而倒是机器学习因为模型轻巧易用,对数据需求有限,而适用范围更广。
深度学习的落地点
目前,工业实践中,深度学习都有哪些确实的落地点呢?
最主要的有三个:语音、图像和自然语言处理。
语音处理(Speech Processing)
语音处理是现阶段深度学习技术成熟度最高的领域。
语音处理主要包括两个大的方向。
语音识别(Speech Recognition,SR,又称为自动语音识别 Automatic Speech Recognition,ASR,或者 Speech To Text,STT)指通过自动化手段将语音转化为文本的方法和技术。
语音合成(Speech Synthesis,又称为Text To Speech,TTS)指根据文本用机器模拟人类语音的方法和技术。
这两者一听一说,一进一出。如果有一项产品同时应用了这两项技术,也就做到了 Speech-In/Speech-Out,可以说是允许人类通过语音与其进行交流了。
在深度学习崛起之前,语音处理技术采用以 HMM 为代表的统计学习模型,在 SR 和 TTS 上都已经取得了丰硕的研究成果,只是还不足以产品化。
深度学习崛起后,微软成功将深度学习应用到 SR 系统中,使得单词错误率(WER)大幅度下降,并且用 DNN+HMM 彻底改变了 SR 的原有技术框架。
在 TTS 方面,DeepMind 公司(已被 Google 收购)推出的 WaveNet 声码器和 Tacotron 框架几乎可以说是利用深度学习技术开创了 TTS 的新时代——这套技术目前正在实践落地中。
除了众多科研院所和微软、Google 这样的国际大公司,国内的讯飞、百度等公司,也在将深度学习用于语音处理的研究和应用中取得了很大进步。
在应用层面上,以语音为主要输入/输出的移动终端应用不断融入日常生活。我们使用手机,经常会用到语音助手、语音搜索、短信听写、地图导航等功能。它们都切实地为我们的生活提供了方便。
图像处理(Image Processing)
图像处理可谓是深度学习兴起和成为社会热点的急先锋。深度学习的威力为公众所知,就是从图像分类(识别)开始的。
但就现状而言,图像领域的产品成熟度在整体上比不上语音,有许多方向上的学术成果还远未到实战应用的水准。
不过,有一个方向可谓一枝独秀,不仅已经在现实生活中广泛应用,而且几乎可以说是凭一己之力使得图像处理在应用落地方面与语音处理相抗衡。这个方向就是:人脸识别(Face Recognition)。
人脸识别在安防、认证、监控等方面有着巨大的需求。相应也涌现出了多家独角兽企业,国内最著名的当属商汤和旷世。
说到产品,已经有越来越多的资格考试需要先经过人脸识别再进考场;部分小区已经采用了刷脸门禁;而我们每天都在用的智能手机,有很多都是靠人脸识别解锁了。
自然语言处理(Natural Language Processing,NLP)
NLP 相比语音和图像,成熟度要相差不少,甚至我们可以说,当前 NLP 只是深度学习的“半个”落地点。
人工智能包括感知和认知两方面的能力,语音和图像的处理能力属于感知;相比而言,NLP 更接近于认知——涉及了对人类语言、文字的理解。
NLP 研究方向众多,像信息抽取、文本摘要、文本生成、自动问答等,种类繁多。可惜的是,其中任何一个方向都还不足以“顶门立户”。
目前阶段,NLP 的应用都需要结合具体业务和场景,很难形成像 SR、TTS 或者人脸识别那样的通用技术产品。
技术产品:指那种可以脱离具体业务,通过封装模型,对外提供技术功能的产品。例如:语音转录文字;文字合成语音;比较不同人脸的相似度;根据人脸识别年龄、性别等自然人属性等。
从我们实际应用的角度来看,各类聊天机器人(Chatbot)是 NLP 主要的实战用武之地。
语音助手和智能音箱其实都算是 Chatbot,只不过它们是 Speech-in/Speech-out 的 Chatbot。更多的 Chatbot 则以文字为输入输出。
不过无论 I/O 形式如何,Chatbot 最基本的功能都包括语言理解(Language Understanding,LU)模块,这部分大多 Chatbot 会采用机器学习,甚至深度学习模型来开发。
深度学习的局限
深度学习的局限,其实前面多少已经提到过了。
发展到今天,深度学习仍然缺乏理论基础,模型本身可解释性差——好的结果和突破性进展来自于“尝试”而非“推理”,基本上研究处在经验阶段,未能提升到理论高度(“深度学习==炼丹”)。
即使是“炼丹”,也常常因为缺乏“原料”而炼不成。
深度学习对训练数据需求巨大。特别是,目前被证明能有效应用的主要是有监督的深度学习模型,训练数据都需要标注。
这就导致,实际应用时,有可能搜集不够用来“喂食”模型的样本数据,还有可能标注巨量数据的成本不可承受。
而且,相对于获取知识型、讯息型数据的艰难、昂贵,对深度学习更加致命的是:常识性数据的缺乏。
常识:指的是我们在日常生活中实则日积月累学习到,却没有感觉到在学习的那些“Everyone knows”、“不言自明”、“天经地义”的东西。
比如:一松手东西会掉在地上;一个人的脸暂时被挡住了一部分,但他还是他,没有变成另外一个人;物体 A 无法放到 B 里面是因为 B 比 A 小而不是相反;等等。
人类可以根据已有常识来理解新观察到的事物,而这些常识却无法告知机器。因为,这种常识的量太过巨大,远远大于当前我们所拥有的知识和咨询;而且此前人类对于常识实在缺乏研究,如何表示常识都还不清楚;……
这些局限固然是问题,是障碍,不过现今世界上最聪明的一群头脑正在投入大量的时间和精力来研究其解决方法。
越来越多的研究资源投入到无监督的深度学习上去,期望能够在无须标注的情况下直接利用数据。对生成对抗网络(Generative Adversarial Nets,GAN)、半监督(Semi-Supervised)学习方法的研究,都是在往这方面做着努力。
深度学习资料
前面我们非常简要地介绍了什么是深度学习,几种常见深度学习网络结构,深度学习的优势、应用和局限。
相信有很多同学想要进一步精研深度学习。在此,为大家提供一些学习资料(下面所列出的各项内容都仅是最基础的“点到为止”)。
代表人物
在列举具体的资料之前,我们先来认识一下深度学习的代表人物。
这个领域虽然人才云集,但最富盛名,且至今活跃在学术第一线的,非下面这三位莫属:
上图从左到右依次是:Yann LeCun、Geoffery Hinton 和 Yoshua Bengio。
注意:如果你不知道读什么论文又想多读些论文。就可以用上面这三位的名字去搜索,搜到什么读什么好了。
论文
深度学习是一个相对年轻的学科,大规模爆发不过是近几年的事情。许多内容还来不及整理成书,而最新的成果更是以井喷之势竞相涌现。因此,这一领域的论文尤其重要。
学习深度学习,读论文是少不了的。有个站点也必须知道,那就是:arXiv.org。上面汇聚了众多学术领域(自然包括人工智能、机器学习、深度学习)的大量论文,包括已经发表的、被退稿的和尚未发表的。
在这里我们且列举最基础也最经典的几篇:
[1] LeCun, Yann, Yoshua Bengio, and Geoffrey Hinton: “Deep learning.” Nature 521.7553 (2015): 436-444.
看看这论文题名,看看这几位作者,看看他们发表的期刊,有多牛不用我说了吧。
[2] Hinton, Geoffrey E., Simon Osindero, and Yee-Whye Teh. “A fast learning algorithm for deep belief nets.” Neural computation 18.7 (2006): 1527-1554.
[3] Hinton, Geoffrey E., and Ruslan R. Salakhutdinov. “Reducing the dimensionality of data with neural networks.” Science 313.5786 (2006): 504-507.
正是 [2] 和 [3] 让 DNN 重新回到了公众视野中,作为“人和项”(理论基础),引爆了后来的 AI 繁荣。
[4] Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. “Imagenet classification with deep convolutional neural networks.” Advances in neural information processing systems. 2012.
深度学习在图像处理领域的突破性成果,CNN。
[5] Graves, Alex, Abdel-rahman Mohamed, and Geoffrey Hinton. “Speech recognition with deep recurrent neural networks.” IEEE international conference on acoustics, speech and signal processing. 2013
深度学习在语音处理领域的成就,RNN。
学术会议
[1] CVPR : IEEE Conference on Computer Vision and Pattern Recognition, CVPR
[2] NIPS : Neural Information Processing Systems (NIPS)
[3] ACL : Meeting of the Association for Computational Linguistics (ACL)
[4] ICML : International Conference on Machine Learning (ICML)
[5] ICCV : IEEE International Conference on Computer Vision
[6] ICIP : IEEE International Conference on Image Processing
[7] INTERSPEECH : Conference of the International Speech Communication Association (INTERSPEECH)
[8] IJCAI: International Joint Conference on Artificial Intelligence
[9] AAAI: Association for the Advancement of Artificial Intelligence
书籍
论文未必适合初学者阅读,大多数人在学习基础知识阶段,还是喜欢读书。
虽然深度学习方面的书籍没有传统学科丰富,甚至比机器学习都少得多,但总算还是有的。
[1] Deep Learning
[2] Deep Learning with Python
[3] Mastering TensorFlow 1.x
### 课程
[1] Andrew Ng(吴恩达)
Machine Learning
Deep Learning
注意:吴恩达的课程在 Coursera 和网易云课堂中都可找到。
[2] Coursera
还有下列这些学校的在线机器学习和数据挖掘课程:
- UIUC(翟成祥)
- Stanford
- UMichigan
- John Hopkins University
工具和框架
Python Library
[1] Numpy
[2] Scikit-Learn
深度学习框架
[1] Tensorflow(Google)
[2] PyTorch(Facebook)
[3] CNTK(Microsoft)
[4] Caffe (UC Berkeley)
[5] Keras
数据集
[1] Kaggle
提供各类基本数据。
[2] ImageNet
提供图像数据。
[3] SQuAD
提供 NLP 数据。
[4] NIST 2000 Switchboard
提供语音数据。