C01. 引言
1.1 自然语言处理的挑战
自然语言处理 ( Natural Language Processing, NLP ) 是一个设计输入和输出为非结构化自然语言数据的方法和算法的研究领域。
- 有监督学习:从事先标注好的输入/输出集合中推导出使用的模式和规则。
- 面临的困难:离散性、组合性、稀疏性
数据离散性 ( Discrete )
语言是符号化的和离散的。书面语义的基本单位是字符,字符构成了单词,单词表示了对象、概念、事件、动作和思想。
字符和单词都是离散符号,不同符号的含义是不相关的
数据组合性 ( compositional )
字母形成单词,单词形成短语和句子
短语的含义比单词大,并且遵循复杂的规则集
数据稀疏性 ( Sparseness ) :
- 单词 ( 离散符号 ) 组合并且形成意义的方式是无限的
1.2 神经网络和深度学习
深度学习是机器学习的一个分支,是更深的神经网络 ( 更多层 ) 。
- 深度学习不仅基于过去的观测学习预测,而且还学习正确地表示数据,以使模型更好地预测。
1.3 自然语言处理中的深度学习
神经网络使用嵌入层处理语言问题。
- 嵌入层 ( Embedding Layer ) :将离散的符号映射为相对低维的连续向量。
- 当嵌入单词的时候,从不同的独立符号转换为可以运算的数学对象。
- 向量之间的距离可以等价于单词之间的距离,使得一个单词更容易泛化为另一个单词。
- 学习单词的「向量表示」是训练过程的一部分。
- 网络学习单词向量的组合方式可以更好地预测,减轻了数据的离散问题和稀疏问题。
神经网络结构
- 前馈网络 ( Feedforward Network ) :也叫多层感知器 ( Multi-Layer Perceptron, MLP ) 。其输入大小固定,对于变化的输入长度,可以忽略元素的顺序。网络的非线性特征以及易于整合预训练词嵌入的能力导致了更好的分类精度。
- 卷积前馈网络:关于抽取数据中有意义的局部模式,这些模式对单词顺序敏感,忽略在输入中出现的益,适合于识别长句子或者文本中有指示性的短语和惯用语
- 循环/递归网络 ( Recurrent/Recursive Network ) :适合序列数据,输入的是序列,输出的是固定大小的向量作为序列的摘要。多被用于整个网络的特征提取,将训练结果与其他决策部件串联起来使用。
- 递归网络将循环网络从序列扩展到树
语言模型 ( Language-Modeling ) :预测序列中下一个单词的概率 ( 等价于预测一个序列的概率 )
- 自然语言处理的任务多是结构化的,因此产生的输出结构也非常复杂
- 自然语言预测的任务是互相关联的,某些任务的输出结果会对另一些任务有所帮助
- 多任务学习(Multi-Task Learning, MTL)
- 半监督(semi-supervised)学习
成功案例
- 全连接前馈神经网络(MLP)用来替代线性学习器
- 网络的非线性特征和对预训练词嵌入的整合能够提高分类的精度
- 基于柱搜索(beam-search)的结构化预测系统,在句法分析、序列标注等任务中能够提高精度
- 卷积和池化层的网络能够发现类别的局部线索,而忽略线索出现的位置
- 循环网络和递归网络能够保留许多结构化信息
- 循环网络用于处理序列数据
- 递归网络用于处理树结构数据
1.4 全书大纲
本书由四个部分组成
- 基本学习机制:有监督学习、多层感知器、基于梯度的训练、用于描述和训练神经网络的计算图模型
- 学习机制与语言进行关联
- 介绍处理语言时所能用到的主要信息源,并且解释如何将它们与神经网络机制进行整合
- 讨论词嵌入算法和分布式假设,将前馈方法用于语言模型
- Ch06 :提出通用语言处理问题的原型,讨论在使用语言数据时可用的信息 ( 特征 ) 资源
- Ch07 :语言处理问题的具体案例,如何在自然语言任务中应用语言特征
- Ch08 :介绍语言特征的编码方法,方便输入神经网络
- Ch09 :语言模型和前馈神经网络语言模型的结构
- Ch10 :用于词义表示的分布方法和分布式
- 用于分布语义的单词——上下文矩阵方法
- 受神经语言模型所启发的词嵌入算法:GloVe 和 Word2Vec
- 分布方法与分布式之间的联系
- Ch11 :不基于上下文的神经网络词嵌入
- Ch12 :前馈神经网络案例:自然语言推理任务
- 处理特征的结构以及其在语言数据中的应用
- Ch13 :卷积网络:用于处理 N-gram 的一维卷积网络,可以学习富含信息的 N 元语法模式
- 哈希核 ( Hash-Kernel )
- Ch14 :用于序列建模和栈建模的循环神经网络模型
- 条件生成框架
- 注意力模型
- Ch15 :循环神经网络的分类
- 简单循环神经网络,也叫 Elman 循环神经网络
- 带门的循环神经网络,例如:长短期记忆 ( Long Short Term Memory, LSTM )
- 带门的循环神经网络,例如:门限循环单元 ( Gated Recurrent Unit, GRU )
- Ch16 :循环神经网络的建模案例
- Ch17 :条件生成框架 ( 用于机器翻译系统 ) ,以及无监督句子建模
- Ch13 :卷积网络:用于处理 N-gram 的一维卷积网络,可以学习富含信息的 N 元语法模式
- 最新研究成果
自然语言推理数据集的特征结构: Ch12
卷积网络: Ch13
循环网络: Ch14 , Ch15 , Ch16 , Ch17
1.5 本书未覆盖的内容
- 不包括:语音数据和信号
- 不包括:对话系统、文本摘要、问答系统等领域
- 不包括:语义分析
- 只有少量的多模态应用
- 以英语为主的形态学讨论
- 不包括:数据标注和系统评价
- 数据标注:是自然语言处理的基础
- 恰当的标注任务定义
- 开发标注规范
- 决定标注数据来源的覆盖和类别分布,以及训练——测试的划分
- 与标注者一起工作,合并决策,验证标注者和标注的质量以及各种类似的主题
- 系统评价:对于给定的任务能够正确评价其性能的指标,进行错误分析以及评估统计的显著性
- 数据标注:是自然语言处理的基础
1.6 术语
- 特征 ( Feature ) :表示一个具体的、语言上的输入
- 输入向量 ( Input Vector ) :表示提供给神经网络分类器的真正输入
- 输入向量条目 ( Input Vecotr Entry ) :表示输入的具体值
1.7 数学符号
- $\text{X}$ 表示矩阵
- $\text{x}$ 表示向量
- 上标 $\text{W}^{( 1 )}$ 表示网络中的层数
- 下标表示元素
- $\text{W}_{[i,j]}$ 表示矩阵 $\text{W}$ 的第 $i$ 列,第 $j$ 行
- $\text{x}_{[i]}$ 表示向量 $\text{x}$ 的第 $i$ 个元素
- $\cdot$ 表示点乘运算
- $\text{w}\cdot\text{v}=\sum_i w_i v_i=\sum_i w_{[i]} v_{[i]}$
- $\text{x}_{1: n}$ 表示向量 $\text{x}_1,\cdots,\text{x}_n$ 的序列
- $\text{x}_{1: n}[i]=\text{x}_i$
- $\text{x}_{n:1}$ 表示向量 $\text{x}_1,\cdots,\text{x}_n$ 的逆序列
- $\text{x}{n: 1}[i]=\text{x}{n-i+1}$
- $[\text{v}_1;\text{v}_2]$ 表示向量串联