深度学习(Deep Learning)是当下非常热门的一个话题。事实上,深度学习早已有之。最近深度学习重新被人们所重视起来的原因就是海量数据(Big data)的出现和计算能力的提高。这使得之前需要复杂模型来解决的问题都变得可以解决。并且,随着模型复杂度的提高,模型对复杂现实世界的刻画也越来越好,因此在很多任务(例如ImageNet等)中,深度学习的模型往往表现最佳。
深度学习在自然语言处理领域也有不俗的表现。最近大量的Paper应用了CNN、LSTM等深度神经网络来处理各种任务(Parsing、Postagging等)并取得了不错表现。笔者为NLP(自然语言处理)的入门研究者,最近在看Ian Goodfellow等人所著的《The Deep Learning Book》 一书,遂以此平台整理思路、分享读书的感悟。
** 知识库(Knowledge Base)**
最初人们尝试构建一个知识库来表示现实世界中的知识,并通过逻辑推理来解决问题。然而构建知识库需要耗费的人力成本太高,并且现实世界的复杂性使得这样的一个知识库系统在解决一些复杂问题的时候捉襟见肘。于是机器学习应运而生。
** 机器学习(Machine Learning) **
机器学习尝试从数据(Data)中直接找出模式(Pattern)。机器学习尝试通过一系列的特征(Feature)来判定结果。例如,在垃圾邮件分类系统中,通过对词汇的分布、一些特征词汇的词频等特征来判断是否为垃圾邮件。对于一些简单的分类任务来说,Logistic Regression、Naive Bayesian等方法已经足够。然而问题在于,对于某个特定的问题,你必须找出合适的特征。手工构建的特征(hand-crafted features) 需要耗费大量的人力成本,并且不同任务所需要的特征又是不同的。于是怎么寻找有效的特征成了下一个关键的问题。
** 特征学习 (Representation Learning) **
特征学习不进学习如何从特征映射到结果,也学习如何得到特征本身。特征学习使得我们的算法可以快速应用于新的任务,并且几乎不需要人工的干预。特征学习的一个例子是autoencoder。autoencoder自动将原始数据编码,即抽取出最有效的特征,然后再解码,解码的结果尽可能地靠近原始数据。
特征学习的过程就是抽丝剥茧、条分缕析地找出造成最后结果的原因,并且摒弃掉我们不关心的因素。比如在图像识别领域,影响某个物体如轮胎的图案的因素可能有光照、角度、线条、纹理等。特征学习的目的就是分别抽取出这些特征,解除它们之间的相互影响,然后去除我们不关心的特征(光照、角度),留下最有用的特征(线条、纹理)。
** 深度学习 (Deep Learning)**
深度学习就可以来自动地学习特征。基本的思路是,通过一些简单的概念来表达一些复杂的概念,层层递进,从而构建一系列不同尺度的特征出来。比如上文讲到的对轮胎进行识别,最基本的特征就是图像上的像素点。像素点构成了线条。线条形成了形状。形状勾画出轮廓。最后由轮廓可以认定出这就是个轮胎。这样层层递进的方式有效地表达了不同尺度下的特征。
深度学习的一个典型的例子就是Feedforward Neural Network (前馈神经网络),也叫Multilayer Perceptron(多层感知机)。这个网络结构作为最经典的结构,是构建更复杂的网络的基石。
最后用书中的一张图来总结此篇。