深度学习

目前大多数机器学习能够取得不错的效果,因为可以人工设计表示和特征。机器学习只是用来优化权值,用来作出最终决策或预测。

表示学习的目标是自动学到好的特征或表示。深度学习的目标是学习多级表示,更高一级的表示会更加复杂或更加抽象。

一个深层结构

相关工作主要围绕深度信念网络 (DBNs),多层马尔科夫随机场,以及其他的多层神经网络。

下面是一个示例,由输入层,三个隐含层,输出层构成。其中,隐含层越往上学到的特征越抽象。

cnn在nlp应用_深度学习

1.1 基础---五个研究深度学习的原因

#1 学习表示

人工设计特征比较耗时

特征经常过于特定化,并且不完整

对于每个任务或领域等,都不得不需要重复性工作

需要超越人工设计特征和简单的机器学习

人类可以为学习和推理开发新的表示

计算机也应该做到

深度学习就提供了这样一种方式

cnn在nlp应用_cnn在nlp应用_02

#2 需要分散式表示

当前的NLP系统非常脆弱,因为它是基于原子符号的表示

cnn在nlp应用_核函数_03

需要分布式表示

学习得到的表示对NLP帮助很大,这种方法可以学到单词之间的相似性模型。

Koo & Collins 在2008年的一篇论文中利用Brown Clustering 方法使得依赖解析任务中的F1提升了1.4%,误差降低了15.2%。

斯坦福NER利用exchange clustering使得命名实体识别的F1提升了3.4%,误差降低了23.7%。

分散式表示则依赖更多维度来取得更好的表示。

cnn在nlp应用_深度学习_04

cnn在nlp应用_深度学习_05

cnn在nlp应用_核函数_06

分散式表示可以缓解维数灾难。局部泛化,比如最近邻方法,需要对所有相关变换都得到可以用来表示的样例。这方面比较经典的解决方案有:

  1. 手工设计特征
  2. 假设一个光滑的目标函数,比如线性模型
  3. 核方法,线性的基于样本点的核函数

神经网络通过设置适当的参数也可以学到相似性核函数。

cnn在nlp应用_核函数_07

当前,大部分实用的效果较好的NLP 和机器学习方法都需要有标签的训练数据,即有监督学习。但是几乎所有数据都是无标签的。另外,大部分信息需要无监督学习得到。有幸的是,一个好的模型有助于学习得到分类决策。

#4 学习多层表示

深度学习是一种由生物学激发的学习方法。大脑皮层中似乎有一种通用的学习算法,而且大脑具有一种深层结构。

cnn在nlp应用_深度学习_08

实际应用中需要效果较好的中间表示,这些中间表示可以跨任务共享。多层隐含变量可以组合式共享统计学的优势,不够深的模型表达能力不够强,可能是指数级的缩减。

cnn在nlp应用_深度学习_09

cnn在nlp应用_深度学习_10

人类语句由字和短语构成,机器学习模型中需要语义合成。人类语句中具有一种递归性。即同样的算子(相同的参数)重复用于不同的组成部分。

cnn在nlp应用_深度学习_11

#5 为什么现在兴起?

尽管之前对很多算法技巧都有所研究和理解,但是2006年之前,训练深层结构并不成功。自从2006年Geoffery Hinton 在 《Science》上发表了论文,情形有所改观:

提出了无监督预训练的新方法, 限制性玻尔兹曼机,自编码,对比估计等。

有了更有效的参数估计方法

对模型规整(约束,正则)有了更好的理解。

深度学习在自然语言处理中已经取得惊人的效果。

cnn在nlp应用_深度学习_12

深度学习在某些场景会非常快,比如:

• SENNA [Collobert et al 2011] 在 POS 或者 NER 任务中比其他 SOTA taggers 快很多,将近 16x 到 122x, 并且内存缩减了 25x

• WSJ POS 取得了97.29% 的准确率; CoNLL NER 任务达到了F1 达到了89.59%; CoNLL 在 Chunking 任务中F1达到了94.32%

计算技术的发展也促进了深度学习的兴起 • 在 NLP 中,传统方法是通过借助稀疏性来获得速度的提升 • 但是,有了现在的机器,程序分支和稀疏排列的内存访问比较昂贵 • 在密集向量中执行统一的并行操作速度更快一些

有了多核CPU和GPU,这些趋势会得到更加明显的体现。

cnn在nlp应用_cnn在nlp应用_13