NLP的特征表达-语言模型

语言模型

语言模型的本质上是 判断 一句话是否合理。
语言模型经历了专家语法规则模型(至80年代),统计语言模型(至00年),神经网络语言模型(till now)。

1. 专家语法规则模型
专家语法规则模型在计算机初始阶段,随着计算机编程语言的发展,归纳出的针对自然语言的语法规则。但是自然语言本身的多样性,口语化,在时间,空间上的演化,及人本身强大的纠错能力,导致语法规则急剧膨胀,不可持续。

2. 统计语言模型
统计语言模型用简单的方式,加上大量的语料,产生了比较好的效果。统计语言模型通过对句子的概率分布进行建模,从统计来来说,概率高的语句比概率底的语句更为合理。

在实现中,通过给定的上文来预测句子的下一个词, 如果预测的词和下一个词是一致(该词在上文的前提下出现的概率比其它词概率要高),那么上文+该词出现的概率就会比上文+其他词词的概率要更大,上文+该词更为合理。

3. 神经网络语言模型
神经网络语言模型在统计语言模型的基础上,通过网络的叠加和特征的逐层提取,可以表征除了词法外,相似性,语法,语义,语用等多方面的表示。

1. 统计语言模型

统计语言模型是"单个字母/单词/词序列”的概率分布,假设有一个m长度的文本序列,统计语言模型的目的是建立一个能够描述给定文本序列对应的概率分布。

1.1 统计语言模型的基本公式(条件概率)

统计语言模型从统计的角度预测句子出现的概率分布,通常对数据量有较大的要求。对于句子w1,w2,w3…wn。
在这里插入图片描述
其中,每个词出现的概率通过统计计算得到:
在这里插入图片描述
即第n个词的出现与前N-1个词相关,整个句子的概率就是各个词出现概率的成绩。

1.2 马尔科夫假设:有限前序字符依赖约束条件的统计语言模型(n-gram)

传统的统计语言模型存在几个问题:
1. 参数空间过大,语言模型由于语言的灵活性参数空间维度极高;举个直观的例子,我们有词表 V=10^5 的语料库,学习长度为 l=10 的序列出现概率,潜在参数空间大小为 10000 0 10 = 1 0 50 100000 ^{10}=10^{50} ;
2. 数据极度稀疏,长序列的出现频次较低,越长的序列的越不容易出现,整个参数矩阵上会有很多0值;

为了简化问题,引入了马尔科夫假设:当前词出现的概率仅依赖前n-1这种假设下,模型就大大减少了需要参与计算的先验参数。
在这里插入图片描述
马尔科夫假设的一个具体实现即n-gram.

n-gram是最为普遍的统计语言模型。它的基本思想是将文本里面的内容进行大小为N的滑动窗口操作,形成长度为N的短语子序列,对所有短语子序列的出现频度进行统计。

n-gram并不关注词在样本中的具体位置n-gram保留的词序列只是它自己的context上下文的词组序列因此n-gram编码后的vector丢失了原始sentence sequence 的长度特征,它只保存了n阶子序列的短程依赖关系,无法建立长期依赖。

同时n-gram对不同的词组之间的先后信息也丢失了,原始文本中不同词组出现的先后关系在ngram这里是忽略的。
当n过大时仍会被数据的稀疏性严重影响,实际使用中往往仅使用bigram或者trigram。

n-gram中的平滑
从ngram的公式我们可以看到,随着n的提升,我们拥有了更多的前置信息量,可以更加准确地预测下一个词。但这也带来了一个问题,词组概率分布随着n的提升变得更加稀疏了,导致很多预测概率结果为0。

当遇到零概率问题时,我们可以通过平滑来缓解n-gram的稀疏问题。
n-gram需要平滑的根本原因在于数据的稀疏性,而数据的稀疏性则是由自然语言的本质决定的。当这种稀疏性存在的时候,平滑总能用于缓解问题提升性能。 直观上讲,如果你认为你拥有足够多的数据以至于稀疏性不再是一个问题,我们总是可以使用更加复杂、更多参数的模型来提升效果,如提高n的大小。当n提高,模型参数空间的指数级增加,稀疏性再度成为了所面临的问题,这时通过合理的平滑手段可以获得更优的性能。

参考Andrew Gelman的一句名言:样本从来都不是足够大的。如果 N 太大不足以进行足够精确的估计,你需要获得更多的数据。但当 N “足够大”,你可以开始通过划分数据研究更多的问题,例如在民意调查中,当你已经对全国的民意有了较好的估计,你可以开始分性别、地域、年龄进行更多的统计。N 从来都无法做到足够大,因为当它一旦大了,你总是可以开始研究下一个问题从而需要更多的数据。

**平滑解决的问题就是:根据训练集数据的频率分布,估计在测试集中“未登录词”的概率分布,从而在测试集上获得一个更加理想的概率分布预估 。**也可以理解为在原始的样本驱动的概率分布之上附加了一个先验正则化,通过先验分布来干预侯后验概率分布。

拉普拉斯平滑,对分母+1,
加性平滑,既定每个n-gram时间额外发生过v次
古德图灵平滑

n-gram的应用

  • 计算两句话之间的距离
  • 评估语句是否合理

1.3 独立同分布假设:所有字符间都独立同分布的统计语言模型

独立同分布假设是对马尔科夫假设的进一步,即假设所有字符间连前序关系都不存在,而是一个个独立的字符,这和朴素贝叶斯的独立同分布假设本质上是一致的,都是通过增加先验约束,从而显著减小参数搜索空间。

词袋bow统计语言模型
把文本看成无序的词的组合,利用统计语言模型来理解词序列的概率分布。
文本中每个词出现的概率仅与自身有关而无关于上下文,这是对原始语言模型公式的最极端的简化,丢失了原始文本序列的前序依赖信息。不能捕获词相对位置信息。

1.4 局部与整体假设:TF-IDF表示

TF-IDF属于BOW语言模型的一种,但是在基础的词频统计之上增加和单个词和全局词集的相对关系。同时,TF-IDF也不关注词序信息,TF-IDF同样也丢失了词序列信息。

1.5 LSA :一种基于SVD矩阵奇异值分解的语义分析语言模型

文本分类中常出现的问题-歧义与多义
比如 bank 可以是金融机构,河岸的意思,要看上下文。

LSA 就是解决模糊歧义的问题

2. 神经网络语言模型(NNLM)

统计语言模型的问题:1. 维度灾难,2. 数据稀疏0概率的问题。

简单来说,由于自然语言本身的特性,词集空间越大,维度就越高,就越容易出现高维稀疏问题,一段自然语言句子常常会分布在高维空间的高维部分,而低维部分大量浪费了。
后面要介绍的词向量主要就是解决该问题,将每个词”相对均匀“地分布到一个维度相对适中的词向量空间中,避免了维度稀疏。
词向量的核心思想是,不从词频角度来对文本进行建模,而是将所有词都看作是一个向量空间中的一个向量,这就不存在”未登录词“的问题,所有的词都被映射到向量空间中某个向量点。

2.1 分布式表征(distributed representation)词向量概念

传统的词频统计模型是one-hot类型的,每个词都是一个 |V| 长度的且只有一位为1,其他位都为0的定长向量。每个词向量之间都是完全正交的,相关性为0。虽然可以实现对原始语料进行编码的目的,但是对不同的词之间的相似性、语法语义的表征能力都很弱。

为了解决这个问题,Hinton教授提出了分布式表征词向量,先来直观地看一下什么是分布式表征词向量,下面是一组将高维词向量通过t-SNE降维到2维平面上进行可视化展示的截图。
在这里插入图片描述
在该二维图中,每一个词不仅对应了一个向量(词向量化编码)。同时相似的词之间,例如“are”和“is”是紧挨在一起的。
通过这个图,我们可以很直观地对这个所谓的分布式表征词向量的特性作一个猜想:

  1. 首先,这个所谓的分布式表征词向量依然是一个定长的向量,每个词向量都位于同一个向量空间中;
  2. 词向量之间具有明显的空间相关性(这里借用了线性先关的概念思想),即相似的词都明显聚集在某一个空间区域中,用其中一个词可以表达(代替)这个区域中的所有词。相对的,不相似的词分布在空间中的不同区域;

2.2 Word2Vec(2013)

2.3 ELMo 语言模型(2018)

Glove/Word2vec在NLP领域受到新挑战是”多义词问题“,多义词是自然语言中经常出现的现象,也是语言灵活性和高效性的一种体现。

比如根据不同的上下文,苹果可能指手机,也可能指水果。

但是在用传统语言模型训练的时候,不论什么上下文的句子经过word2vec/glove,都只能得到苹果的一个静态词向量表达,所以word embedding无法区分多义词的不同语义,这就是它的一个比较严重的问题。
回到一个NLP语言模型的核心任务上来,泛化地说,一个NLP语言模型必须要完成如下几个目标:

(1)对词具备编码能力;
(2)capture syntactic and semantic information of words: 有效表征对应语言的语法和语义特性,也即对不同的语法和语义要在编码上能够区分;
(3)context-dependent: 对语言中包含的上下文多态性,也即多义词要具备编码能力,也即对不同上下文环境下的词在编码上能够区分;

传统模型完成可以胜任前2点,但是第3点对模型提出了更高的复杂性要求。这给了我们几个启发式地思考方向:

  1. 要引入更深的神经网络来存储和表征这部分新的信息;
  2. bidirectional RNN/LSTM网络,能够捕获单词所在的不同上下文环境信息;
  3. 使用多层双向循环神经网络结构,能够提取不同层次的语言信息,较低层的LSTM抓住的是词汇的简单句法信息(也就是我们所谓的多义词),较高层次的LSTM向量抓住的是词汇的语义信息(上下文无关的语言信息)。关于这点,我们从CNN的不断层次的卷积核代表不同层次的图像细节也可以得到类似的启发;

ELMo的网络结构
在这里插入图片描述
从Word Embedding到ELMO
ELMO是“Embedding from Language Models”的简称,其实这个名字并没有反应它的本质思想,提出ELMO的论文题目:“Deep contextualized word representation”更能体现其精髓,而精髓在哪里?在deep contextualized这个短语,一个是deep,一个是context,其中context更关键。在此之前的Word Embedding本质上是个静态的方式,所谓静态指的是训练好之后每个单词的表达就固定住了,以后使用的时候,不论新句子上下文单词是什么,这个单词的Word Embedding不会跟着上下文场景的变化而改变,所以对于比如Bank这个词,它事先学好的Word Embedding中混合了几种语义 ,在应用中来了个新句子,即使从上下文中(比如句子包含money等词)明显可以看出它代表的是“银行”的含义,但是对应的Word Embedding内容也不会变,它还是混合了多种语义。这是为何说它是静态的,这也是问题所在。ELMO的本质思想是:我事先用语言模型学好一个单词的Word Embedding,此时多义词无法区分,不过这没关系。在我实际使用Word Embedding的时候,单词已经具备了特定的上下文了,这个时候我可以根据上下文单词的语义去调整单词的Word Embedding表示,这样经过调整后的Word Embedding更能表达在这个上下文中的具体含义,自然也就解决了多义词的问题了。所以ELMO本身是个根据当前上下文对Word Embedding动态调整的思路。

  1. 预训练(pre-train unsupervised):
    无监督的语法/语义学习,主要用于提取词的语法/语义/上下文信息。
    无监督的语言模型起到encoder的作用,将词转换为词向量,之后作为输入进入另一个有监督的语言模型中。这种架构目前被学术界和工业界大量接受并采用。
    同时,这种架构也是一种迁移学习(Transfer learning model)的思想,即通过预训练一种泛化能力较好的网络模型,并将网络的输出作为下游特定任务模型的输入进行有监督训练;

  2. 微调(fine-tune supervised task model):
    有监督NLP任务模型,主要用于根据特定标签数据,针对special task,对词向量进行特定性的调整;

1. 输入层 - embedding
ELMo在embedding层得到基础的词向量表示。

2. 双向双层LSTM网络
这个网络结构是ELMO和主要核心,论文花了大量的篇幅对这个话题展开了讨论,我们这里介绍其主要的思想。

1)Bidirectional language models
讨论双向语言模型前,我们再来回顾下我们传统的标准语言模型,也叫前向语言模型(forward language model)。

给定一个包含N个token的序列(t1, t2, …, tN),计算每个词(tk)以及这个词的前序子序列(t1, …, tk−1)的条件概率累积和:
在这里插入图片描述
不管前面介绍的语言模型如何复杂,本质上都没有跳出这个语言模型的范畴。直到 Bidirectional language models 被提出(2016)。

双向LSTM网络如下图所示:
在这里插入图片描述
biLM在大数据集上利用语言模型任务,根据单词Wi
在这里插入图片描述
2)two-layer LSTM
论文作者通过分析lowest和top layer中词向量在空间聚集性上的表现,发现不同层次的layer,提取出了不同的语言信息:

  1. 较低层的LSTM抓住的是词汇的简单句法信息(也就是我们所谓的多义词);
  2. 较高层次的LSTM向量抓住的是词汇的语义信息(上下文无关的语言信息);

3. Linear combination of the biLM layers
不同层次的LSTM捕获到了不同层次的语言信息。ELMO模型通过线性组合,将所有LSTM层组合起来(projection),获得了一个更好的性能。

在线性组合层中,ELMO通过归一化加权,将biLM转换成一个向量输入到下游任务中。

下游任务可以是任意有监督的网络结构。

2.4 GPT(Generative Pre-Training)(2018)

2018年提出的GPT,全称是生成式的预训练,它是一种基于多层transformer的单向语言模型。GPT总体包括2个阶段:首先利用其语言模型的特性在海量语料库上进行预训练;完成预训练后,通过fine-tune 的模型解决下游任务。GPT可以用于丰富的任务类型:
在这里插入图片描述
GPT与ELMo很像,区别主要在于

  1. 使用transformer取代LSTM对特征进行抽取。Transformer是当前NLP领域最强的特征抽取器,可以更加充分地提取语义特征。
  2. 坚持使用单向语言模型。ELMo的一个显著特点是利用上下文信息对词向量进行表征,而GPT使用的是单向语言模型,仅使用上文信息对下文进行预测。这种选择比较符合人类的阅读方式,同时也有一定的局限性,如阅读理解中,我们通常需要结合上下文才能进行决策,仅考虑上文会使预训练丢失掉很多信息量。(注:这一点会在BERT中进行优化。)
  3. GPT预训练后的使用方式也与ELMo不同,ELMo属于基于特征的预训练方式,而GPT在完成预训练后需要进行finetune(类似于图像中迁移学习的方式)

2.5 BERT(2018)

Elmo 通过双向拼接融合词向量表征上下文,GPT利用单向语言模型来获取向量表达,2018年提出的BERT对GPT的改进 将任务从预测句中下一个词变为从句子中抠掉一个词用上下文去预测这个词,同时增加了预测是否是下一个句子的任务。模型结构沿用GPT思想,利用transformer的self-attention 和FFN前馈网络叠加。充分利用transformer强大特征抽取能力。
相比GPT在微调时需要加入起始符、终结符和分隔符等改造,BERT在训练时就将其加入,保证预训练和微调的输入之间没有差异,提高预训练的可利用性。

2.6 GPT-2(2019)

GPT-2 优化点:

  1. 对数据质量进行筛选,使用更高质量的数据
  2. 数据的选取范围更广,包括多个领域
  3. 使用更大的数据量
  4. 加大模型,增加参数(15亿参数),是BERT large(3亿参数)五倍的参数量,两倍的深度,这里体现出深层神经网络的强大表达能力
  5. 对transformer网络结构进行微调如下:调整layer-norm的位置,根据网络深度调整部分初始化,调整部分超参
  6. 如论文名称Language Models are Unsupervised Multitask Learners(无监督多任务学习器,这个标题非常好地解释了语言模型的本质),GPT-2更加强调了语言模型天生的无监督和多任务这两种特性,这也是当前NLP领域最显著的两个趋势。

参考: https://www.cnblogs.com/LittleHann/p/7200618.html#_label0

发布了28 篇原创文章 · 获赞 5 · 访问量 4329

猜你喜欢

转载自blog.csdn.net/m0_37531129/article/details/103442868