NLP学习笔记(1)—— 深度学习在NLP各方面的应用进展

NLP学习笔记(1)—— 深度学习在NLP各方面的应用进展

  • NLP中的深度学习
    • 主要模型
      • CNN
      • RNN
      • Attention Mechanisms
      • ResNet & dropout
    • 核心任务
      • Language Modeling
      • Morphology
      • Parsing
      • Semantics
    • NLP应用

NLP中的深度学习

在早期的NLP发展中,主要使用词频统计等概率模型完成一些预测任务。目前,NLP已经普遍使用深度学习中的各网络模型完成各项任务。对深度学习在NLP中的认识可以分为三层:适合使用的深度学习模型、各模型如何实现NLP的核心任务、各核心任务的组合实现NLP应用落地

主要模型

CNN

CNN最开始是在计算机视觉中大放异彩,自然而然的就被联想到在NLP中是否也可实现很好的效果。
CNN最大的优点就是共享权重不需要对数据做过多的预处理。前者使得计算量大大减少,对巨量语库的建模有了可实现性;后者意味着只要出现kernel所敏感的feature即可,对位置不敏感,pooling层更是抹去了位置信息。
但同时也带来了一些问题,比如对词序的不敏感、无法解决距离较远的句法结构问题等。

RNN

普通的RNN存在梯度爆炸或者梯度消失的问题,对长期记忆难以实现。为此提出了各种变形,主要有LSTM、GRU等。LSTM的结构学习推荐此链接:理解LSTM,其主要有忘记、输入、输出三个门控制信息总线上的信息状态,决定重要的信息(如主语的性别、职业等各属性),以及及时更新各信息。其他变体也是类似的思想,利用总线传递信息状态,实现无存储的长期记忆。
RNN最大的特点应是可实现对词序的敏感,为此可使用双向RNN,对前向后向的词与词之间的依赖同时保留。但前提是在输入时已经有了整个句子,甚至是整个段落,对实时性较高的任务不适用。
NLP学习笔记(1)—— 深度学习在NLP各方面的应用进展_第1张图片

Attention Mechanisms

记忆机制是近年来研究较多的NLP领域,尤其对于输入输出均为文本的任务(翻译、问答等)相当有效。在2014年提出了下图的模型,将RNN各时间的输出通过全连接进行编码,再使用RNN解码,实现对各输出进行权重的再分配,encoder-decoder。NLP学习笔记(1)—— 深度学习在NLP各方面的应用进展_第2张图片

ResNet & dropout

为了减缓深层网络的梯度爆炸、梯度消失问题,可采用ResNet的方法。ResNet是通过增加旁路跳过某些连接层,实现对输入输出的残差进行学习,参考链接:ResNet,如下图所示NLP学习笔记(1)—— 深度学习在NLP各方面的应用进展_第3张图片
F(x)+x = y,所以F(x)=y-x,即该层学习得到的为输出输出之间的残差。

Dropout是在网络训练中随机屏蔽一定比例的神经元节点,使得每次训练、BP过程中只依赖部分神经元,而使用模型时则依赖所有神经元,避免过拟合的状况。

核心任务

核心任务主要有以下四项,当前各类NLP任务不外乎是对其的应用,尤其是LM是最为关键的一项,其中word embedding的思想可谓是改变了NLP的面貌,使得character、word、sentence可以被量化了。就像物化生等基础研究一样,掌握了这些NLP的核心方法,才可实际解决NLP的各种应用问题。

Language Modeling

Language Modeling(LM,语言模型),本质上就是根据当前上下文对单词进行预测。
在早期主要是使用词频统计n-gram等方法,但最大的困难就是不能解决out-of-vocabulary (OOV)的问题。其后提出了word embedding的思想,主要有skip-gram、CBOW两种互为对称的方法,参考链接:word embedding,其主要思想是设立一个虚任务,网络的输入输出分别为上下文和单词本身(one-hot),通过语库上下文的预测实现网络的训练,并抽取其中一中间层固定维度的输出向量作为单词的特征表示,意味着上下文更相似的单词的word embedding更相近。
但对LM训练效果的评判指标又是一件难事,目前主要使用perplexity
NLP学习笔记(1)—— 深度学习在NLP各方面的应用进展_第4张图片
p(wi)是第i个词的概率。第一个词就是 p(w1|w0),而w0是START,表示句子的起始。PPL越小,p(wi)则越大,一句我们期望的sentence出现的概率就越高。在对不同模型进行评判时,还需统一语库,the Penn Treebank (PTB)和 the Billion Word Benchmark是最常用的。
在之后的发展中,将embedding再输入卷积网络中,进一步提取特征,降低维度。
同时字符级别的特征表示也有所发展,对于目前网络用语等不规范拼写以及OOV问题有一定的解决。特别是对词态多变的语言,利用LSTM进行字符级别的表示更有利于提高模型准确率,但一般不单独使用,多采用word embedding与character embedding结合使用的策略。

Morphology

Morphology(词语形态),主要是对词根、词缀等进行学习,属于character级别的建模,对词性确定(POS tagging)等目标有着不可或缺的作用。了解不多。

Parsing

Parsing(句法分割)是另一个非常重要的任务,目标是实现对句子结构的剖析,实现对整句的分割,学习词与词之间的相互联系。又分为 constituency parsing 和dependency parsing两个任务。前者主要是寻找相邻单词组成的短语,短语组合短语,一层层组成句子;后者主要是学习不相邻词与词之间的句法联系,又可分为 Graph-based 和 transition-based两种方法策略。其中Graph-based为生成模型,常用beam search与greedy search。

Semantics

Semantics(句意分析),就是对上述几个任务的整合了,试图“理解”句子,从字符、单词、短语等几个层次。其训练指标可以是让两个人工认为相似的句子被模型认定为相似,这至少实现了句意的对比。
类似于word embedding对单词建模,Semantics尝试对整个句子进行建模,这里的进展目前还很艰难。翻译是最依赖这一任务的应用,目前多使用DCNN动态卷积对句子建模,并结合LSTM进行不同语言文本之间的翻译转换,同样使用encoder-decoder的思想。

NLP应用

上述各核心任务终归是为了实现某些实际应用,目前NLP主要有以下几类应用

  1. Information Extraction
    主要是提取文本中的有效信息,如Named Entity RecognitionEvent ExtractionRelationship Extraction等。NER是指对某些专有名词或者时间、地点等信息的专门甄别,sota为CRF与LSTM的结合,输入也有结合word&char embeddings。事件提取的sota为 RNN-based encoder–decoder pair。
  2. Text Classification
    句子分类使用one convolutional layer followed by a softmax layer with dropout便可达到很好的效果,增加卷积层数即可对文件分类达到很好的效果。 softmax regression和DBN的结合可以达到最好的效果。
  3. Summarization
    该应用是为了从文本中提取出某项最重要的信息,主要有提取抽象两种。前者较为简单,是对文本的筛选简化等;而后者可能要生成文中没有的词语,主要用图、树等启发式生成模型。这项应用主要是利用注意力机制与encoder-decoder的结合。
  4. Question Answering
    attention-based recurrent进行问题匹配,对问题进行简化;self-matching attention提取问题特征表述;attention-pooling寻找答案relational networks是目前效果最好的。
  5. Machine Translation
    机器翻译是最有挑战的一项任务。对人而言,需要对两种语言的语法、词态、语义,包括语言对应的文化等,都有较深的理解才可达到很好的翻译效果。最初的翻译模型使用生成卷积和循环层对原语句进行编码,再计算出对应的目标语言的语句。目前,conditional GRU结合注意力机制经常被用来做解码器,beam search在进行答案搜索时十分有用。
  6. Image and Video Captioning
    图像视频字幕结合了CV与NLP,将图像进行编码并与文本进行对应。谷歌用CNN对图像编码,LSTM进行解码;2017有人提出可以使用强化学习优化此应用;3D卷积、循环卷积等模型也有使用。

你可能感兴趣的:(学习笔记)