手机网站建设论文,怎么做网络推广营销,wordpress管理后台,做视频点播网站要多少带宽高赞回答讲得已经非常通俗易懂#xff0c;不过由于自然语言处理的发展#xff0c;出现了许多不同类型的模型#xff0c;对困惑度这个指标的计算方法颇有不同(包括前面的高赞回答也只是展开了一个子集)#xff0c;常常让人摸不着头脑。所以这个回答旨在尽量全面地梳理不同语…高赞回答讲得已经非常通俗易懂不过由于自然语言处理的发展出现了许多不同类型的模型对困惑度这个指标的计算方法颇有不同(包括前面的高赞回答也只是展开了一个子集)常常让人摸不着头脑。所以这个回答旨在尽量全面地梳理不同语境下的perplexity的计算帮助解决因为这些历史原因造成的困惑。润风困惑度(perplexity)的基本概念及多种模型下的计算(N-gram, 主题模型, 神经网络)zhuanlan.zhihu.com让人困惑的困惑度发现网络上的关于困惑度(perplexity)大多数都是利用了N-gram或者主题模型的例子来阐述的。但是现在这个年代来学习这个指标的人多半都是想研究神经网络的而两者对困惑度的计算方法又很不同这就不能不让人对“困惑度”感到“困惑”了。本人虽然才疏学浅还是斗胆在这里尝试写一篇文章试图用简洁的方式来梳理清楚其中的困惑。困惑度的基本定义首先困惑度是用来评价语言模型好坏的指标。语言模型是衡量句子好坏的模型本质上是计算句子的概率对于句子s(词语w的序列)它的概率为【公式1】公式1困惑度与测试集上的句子概率相关其基本思想是给测试集的句子赋予较高概率值的语言模型较好,当语言模型训练完之后测试集中的句子都是正常的句子那么训练好的模型就是在测试集上的概率越高越好[1]公式如下这里想补充一下参考资料里没有强调的一些点根号内是句子概率的倒数所以显然 句子越好(概率大)困惑度越小也就是模型对句子越不困惑。 这样我们也就理解了这个指标的名字。开N次根号(N为句子长度)意味着几何平均数(把句子概率拆成字符概率的连乘)需要平均的原因是因为每个字符的概率必然小于1所以越长的句子的概率在连乘的情况下必然越小所以为了对长短句公平需要平均一下是几何平均的原因是因为其的特点是如果有其中的一个概率是很小的那么最终的结果就不可能很大从而要求好的句子的每个字符都要有基本让人满意的概率 [2]机器翻译常用指标BLEU也使用了几何平均还有机器学习常用的F score使用的调和平均数 也有类似的效果在不同具体模型下的计算不同模型的困惑度计算的差别实际上都是来源于对句子概率的计算方式的不同所以主要围绕句子概率展开N-gram(uni-gram, bi-gram, tri-gram)网络上常见的例子:对uni-gram语言模型(一元语言模型)其采用了单个词语概率独立的简化假设。用词袋模型(Bag Of Words)这个名字来解释它可能更形象。把一个词语看做一种颜色的小球句子的产生就是从一个装有所有词语的袋子里面有放回地抽出小球的过程。抽到每类小球(词语)的概率互相独立。故句子的概率不使用【公式1】而是用每个词语(uni-gram)的概率相乘【公式2】对于bi-gram语言模型(二元语言模型)其采用马尔科夫假设一个词的出现仅依赖于它前面出现的一个词。故句子的概率就是每个词语(bi-gram)的概率相乘tri-gram类似实际上都是把句子概率拆分成了N-gram的小单元概率计算。注意马上我们就要迎来第一个困惑点这些小单元的概率如何计算第一类、统计语言模型采用的是从数据集中的N-gram出现频率直接统计得到概率的方法。如uni-gram就是单个词语的出现频率(词频/语料库中所有的词语数量)而例如tri-gram则是主题模型第二类使用主题模型(LDA等)来作为语言模型。实际上这种模型也采用了词袋模型的假设所以句子概率的计算同【公式2】。只是对于其中的uni-gram的概率计算并不再来自于频率统计而是采用了融合主题的更复杂的建模提升了模型的泛化性能是一种进步想了解具体原理的我推荐 [3]。神经网络神经网络(这里我主要指RNN/LSTM/GRU)在主题模型的基础上又跨出了一大步。计算句子概率不再需要做出简化假设分解为N-gram计算而是可以使用最上面写的最根本的【公式1】来计算LSTM示意图[4]LSTM的具体原理我推荐看 [4] 来了解。这里我只简单说一下由于LSTM的序列性其每一步预测的词语概率自然而然就是以前面所有的上下文为条件的条件概率即这点与前面提到的两类模型都有根本不同。从而让我们可以利用【公式1】来计算句子概率取得更好的效果。另外神经网络中的困惑度常常不是直接使用句子概率来计算的而是使用了cross entropy(或者negative log likelihood二者实际上是等价的)(图源[5])这是因为现在的深度学习框架对它们有现成的计算函数用起来很方便。并且把上面的公式展开推导一下可以得到与【公式1】实际上等价的结果(上图中还对语料库所有句子求了个算数平均)。因为perplexity可以从cross entropy中得到而cross entropy又是除了语言模型以外的文本生成任务(如机器翻译摘要生成等)也常用的loss所以我们也可以把perplexity拓展到语言模型外用cross entropy来计算文本生成里的困惑度。机器翻译的框架OpenNMT就使用了困惑度作为一个指标。[6]另语言模型常使用BPC(Bits-per-character)来衡量其好坏实际上它就是平均cross entropy(log以2为底)也就是PPL计算公式里的2的指数上面的部分。其信息论解释可见[7]基本概念到此为止下面还有一些新方向的延伸。GPT/BERT/XLnet顺便提一下近年来流行的GPT/BERT/XLnet它们又代表了语言模型的新方向对上述方法又做出了改动因而在此一并梳理。这里主要引用XLNet的论述GPT是Auto-regressive模型其句子概率计算方法同【公式1】BERT自称为(Masked Language Model, MLM)在XLNet中被称为denoising auto-encoding。一般只是用来预测MASK位置的词语概率而不是句子概率所以也有说它不算是一种语言模型的。它的概率计算方法即以被MASK处理后的整句话的上下文为条件计算所有被mask位置的词语的概率之和。XLnet用的则是Permutation Language Modeling说来话长具体详见论文吧。本文涉及概念较多也许难免还会有些小问题如果发现问题欢迎指正。本文参考资料并且都是继续深入理解的很好资料