深度学习究竟是个啥?
“当我每次解雇一名语言学家的时候,那么语音识别的性能就在上升”。
——IBM的Frederick Jelinek
如果说语言学家代指机器学习和固定的模型结构,那么深度学习意味着专家整体性能的提高。
深度学习是一个本质上引人入胜的主题,非常令人憧憬。Michel Herszak在LinkedIn写了一篇 博客 ,谈到了其对于深度学习的理解。
深度学习简述
深度学习已经在计算机视觉、语言识别和自然语言理解等多个领域取得了巨大的成就。深度学习的概念源于人工神经网络的研究。深度学习结构包含一个多隐层的多层感知器。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。
深度学习的概念由Hinton等人于2006年提出。基于深度信念网络(DBN)提出非监督贪婪逐层训练算法,为解决深层结构相关的优化难题带来希望,随后提出多层自动编码器深层结构。此外Lecun等人提出的卷积神经网络是第一个真正多层结构学习算法,它利用空间相对关系减少参数数目以提高训练性能。
深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。深度学习就是一种特征学习方法,把原始数据通过一些简单的但是非线性的模型转变成为更高层次的,更加抽象的表达。
深入介绍深入学习
深入研究深度学习,发现其包含三个核心概念:多层组合、端到端的学习和分布式表示。
多层组合
多层表示更符合人类的学习方式,神经网络作为其中的一种,可以从一个单一的感知输入中产生多种理解,例如一个单词的发言(与其类比,深度学习具有惊人的相似)。从一个单词的发音到大脑的理解之间存在多个隐层,这与深度学习的过程很一致。多层表示中最令人兴奋的一件事情就是,原来在处理数据分类任务的时候,是通过数据科学家建模神经网络,而现在他们可以自动生成数据模型。
当前多数分类、回归等学习方法为浅层结构算法,很多情况下只有一层表示,其局限性在于有限样本和计算单元情况下对复杂函数的表示能力有限,针对复杂分类问题其泛化能力受到一定制约。深度学习可通过学习一种深层非线性网络结构,实现复杂函数逼近,表征输入数据分布式表示,并展现了强大的从少数样本集中学习数据集本质特征的能力。(多层的好处是可以用较少的参数表示复杂的函数)
端到端的学习
在早期的深度学习中,关于语音识别的很多早期工作都存在一个问题,即各层表示之间的连接太密集。这个问题,Google的语音API也遇到过,它会导致系统的过拟合问题。
今天,深度学习是一种端到端的学习方式,整个学习过程中不需要中间的和显著的人类参与。直接把海量数据投放到算法中,让数据自己说话,系统会自动从数据中学习。从输入到输出是一个完全自动的过程。
同样,可以再次将其再次与人类大脑随着时间的发展进行类比,这些变化影响了人们对于信息的提取方式。
分布式表示
深度学习算法本质上是分布式概念的应用。分布式表示背后的想法是,观察到的信息是众多因素协同工作所产生的结果。它将堆积如山的数据转化为数据流的组合。
这里举一个简单的例子:假如你想用一台电脑存储有关车辆的数据。
- 首先,你有一辆大的蓝色福特汽车。
- 其次,你有一个巨大的白色大众汽车。
- 第三,你有一辆闪亮的McQueen汽车。
- 第四,你有一个大的红色的Vauxhal汽车。
通过这种方式,你需要将所有数据存储到一个单一的存储单元中。当有一台新的车辆数据要加入的时候,需要加载数据单元的整个负载。这似乎不是很高效。
那么想象一下存储这些车辆的一种新方式。事实上,可以使用三个存储单元:一个用来描述尺寸(小型、中型、大型灯),一个用来存储颜色,最后一个存储品牌。这样就可以存储想要的所有车辆,都有非常相同的三个存储内存单元。这种工作方法是分布式表示的一个例子。从最基本的意义上讲,这代表了神经元一起工作的方式。而且它是深度机器学习的一个高效的例子。
总之,深度学习是关于自动学习要建模的数据的潜在(隐含)分布的多层(复杂)表达的算法。换句话来说,深度学习算法自动的提取分类需要的低层次或者高层次特征。Deep learning能够得到更好地表示数据的特征,同时由于模型的层次、参数很多,能够具备足够强的表示能力。当然,deep learning本身也不是完美的,也不是解决世间任何机器学习问题的利器。
感谢杜小芳对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群 (已满),InfoQ读者交流群(#2) )。