《基于深度学习的自然语言处理》学习笔记

ZhuYuanxiang 2019-06-06 00:00:00
Categories: Tags:

C13. N 元语法探测器:卷积神经网络

为了探索基于元素的有序集合,常常使用二元词组 ( Bi-Gram ) 词嵌入或者三元词组 ( Tri-Gram ) 词嵌入,由于这样处理的词嵌入词典过大,无法用于较长的 N 元语法模型,还会遇到数据稀疏性问题 ( 因为不同 N 元语法间的统计特性没有共享,例如:’very good’ 和 ‘quite good’ 两个词嵌入元素彼此独立 )。

卷积神经网络用于在大规模结构中识别出具有指示性的局部预测器,将这些预测器结合以生成一个固定大小的向量来表示这个结构,捕获对当前预测任务信息最多的局部特征。

卷积结构可以扩展成层次化的卷积层,每一层关注于句子中更长的N元语法,使得模型可以感知非连续的N元语法。

CNN 本质上是一种特征提取结构,作用是抽取出对于当前整体预测任务有用的、有的子结构。

CNN 应用在文本时,主要关心的是一维(序列)卷积。

CNN 的主要术语:滤波器、信道、感受野

13.1 基础卷积+池化

用于语言任务的「卷积+池化」的主要思想

直观上看:大小为 $k$ 的滑动窗口在序列上运行时,滤波器函数学习了如何识别信息量更加丰富的 $k$ 元语法

13.1.1 文本上的一维卷积

词序列:$\text{w}_{1:n}=w_1,\cdots,w_n$

词向量:$\mathbf{E}_{[w_i]}=\mathbf{w}_i$

填充

信道

总结:对序列中所有的 $k$ 元语法应用同一个参数函数,这样构建了 $m$ 个向量,每个向量代表序列中一个特定的 $k$ 元语法。这种表示能够感知 $k$ 元语法本身及其内部的词序,但是对于一个序列中不同位置的同一个 $k$ 元语法会得到相同的表示

13.1.2 向量池化

在文本上进行卷积得到 $m$ 个向量(维度 $l$),这些向量被结合(池化)为一个向量 $\mathbf{c}$ (维度 $l$)用于表示整个序列。向量 $\mathbf{c}$ 捕获了序列重要信息,需要编码进向量 $\mathbf{c}$ 的句子的重要信息的实质内容是任务相关的

池化操作方式

13.1.3 变体

多个卷积层,每个卷积层的窗口大小不同,捕获序列中不同长度的 $N$ 元语法,每个卷积层的结果将被池化,然后将得到的向量拼接后进行处理。

卷积结构还可以处理句法依存树,每个窗口围绕句法树中的一个结点,池化过程在不同的结点上进行

13.2 其他选择:特征哈希(Feature Hashing)

为了避免 $N$ 元语法带来的词库过大问题,可以使用特征哈希。

13.3 层次化卷积

一维卷积方法是一个 $N$ 元语法探测器,一个窗口大小为 $k$ 的卷积层学习识别输入中具有指标性的 $k$ 元语法。

扩展成层次化卷积层,卷积序列逐层相连,可以捕获跳跃的模式「not_good」或者「obvious_predictable_plot」,其中的_表示忽略的词