Press "Enter" to skip to content

[BTTB] 信息论,语言模型,压缩闲谈

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

这篇想法源于之前看到 Hutter 奖 ( http://prize.hutter1.net/ )的更新信息,该奖主要由 AGI 研究人员 Marcus Hutter 赞助, 奖金 50 万欧 ,目的是尽可能地压缩一个文件 (enwiki9,维基百科的前 1GB,人类知识象征)。

而之所以奖励一个压缩任务,是因为 Hutter 认为, 压缩是通往真正人工智能的必经之路 ,而且现在智能度量标准也还很模糊,所以与其去搞那些虚的,不如直接上简单粗暴的压缩。

 

当然不光 Hutter 一人认为压缩和智能有很大关系,很多其他研究也都支持了这个观点,包括 J. Gerard Wolff 很早一篇 Language Acquisition, Data Compression (语言获得,数据压缩) ,现在也在看 Wolff 的最近一篇长文。

当然压缩不光和智能有关,本来也是一个充满应用场景的任务,所以美剧《硅谷》都给 PP 专门挑了压缩算法起家,扯远了…

 

实际上从信息论角度看语言模型训练,会发现其实它就是一个类似压缩的过程。

 

Information Theory 101

 

先来简单说说信息论。

 

信息论中最重要的概念,信息熵,一个随机变量, 对应取值 ,以及概率质量函数为 P(X),那幺它的信息熵就为

 

这个信息熵是什幺意思呢,香农定义它为,如果给从分布中抽样的数据编码,那幺至少也需要 个 nats 来对每个数据进行编码。 nat 可能大家听得少,但它的小兄弟 bit 大家应该是耳熟能详。

 

两个区别只是对数底不同,

 

如果从概率角度来理解,对于每个自信息,在 越小时自信息就越大,这也是香农想传达的主要思想, 一个概率越小的事情一旦出现,那就表示其中的信息量越大 ,也越会让我们惊讶。

 

比如说明天太阳从东方升起,和最近原油跌到负数,哪个会让你更惊讶呢,哪个信息量更大呢,不言而喻。

 

因此从这个角度来看信息熵的话,其实就是在 度量一个随机变量的平均信息量 ,或者说 平均让人惊讶程度 。

 

而一旦说到惊讶,就又会和一个概念联系起来。那就是 预测 。

对于任何事物只有当没有预测到时,才会产生惊讶,也就是万万没想到。如果一个东西,能够很容易预料到第一步第二步第三步只会让你觉得无聊,就像校长又臭又长的讲话。

 

而提到预测,自然就和下一个话题联系起来了,它主要根据当前已有词预测下一个词。

 

它就是, 语言模型 。

 

Language Model 101

 

简单来说就是用来 计算某段语言出现概率的模型 (更广泛可定义为捕捉语言中结构),而一般计算方法是以字符为单位进行预测,计算概率,放一起就是一句话概率。

 

而计算时一般用交叉熵损失,对每个字符,假设是真实概率分布,而 是模型输出的

 

便于讲解可以重写上面公式

 

还是真实概率,但此时假设我们就是模型,那幺 就是作为观察者的主观概率。于是上面的模型就可以理解成,作为观察者的我们, 在主观概率 的情况下,看到分布概率为 的数据时获得的期望惊讶值 ,也可以理解成信息量。

 

之后观察者可以根据此来调整自己输出的主观概率,在机器学习模型中就是学习到新参数,获得新预测结果。

 

而通过学习训练,交叉熵的最小值,会在当主观概率与实际概率 相同时达到,而此时交叉熵的值就是 也就是 的信息熵

 

也就是实际概率分布的编码极限。

一个有意思的视角,如果将人看作是语言模型,那幺就是母语者,因为实际数据本身就是从母语者采样出来的。而 可以看作是非母语者学习这门语言,理论上学习的极限就是成为母语者 . 此外如果是相同语系,比如意大利语到西班牙语,那幺首先 和 分布接近,那幺学习者也更轻松,学习过程更短,而如果 和 分布相差很大,那幺整个学习过程也会比较难。

 

Compression 101

 

而想要压缩文本的话,只需要能根据当前已有字符预测下一个字符就行,这正是语言模型干地。

 

为什幺压缩和预测相关呢?举一个简单的例子。

 

假如说我们有一句话,只有一个字,而且不停重复

 

哈哈哈哈哈哈哈哈哈哈哈哈哈哈….(n次)

 

怎幺压缩?“哈 x n” 就可以简单表示,只需要每次百分百预测 “哈” 就行。

 

然后另一句话,我用脸滚出来的

 

欸额日俄覅个瑞软规格热和给i个瑞哥尔贵…

 

假设完全随机,那幺这个基本上无法压缩,只能用原句来表示,而此时要预测的话,也不知道每一步要预测什幺字,因为是随机生成出来的。

 

而语言模型就是一个根据当前字符预测下一个字符

 

于是根据信息论,也意味着对于每次预测结果编码最少需要用的 bit 数是

 

一个好的语言模型意味者每次预测都比较准确,因此需要的 bit 数也就少。而这个极限也在之前说了,由这个语言本身概率分布的性质决定。

 

既然知道了一个字符压缩需要 bit 数,那幺对于一句话

 

就意味着对于这句话中每个字的平均所需 bit 数。

 

熟悉语言模型的同学这时应该已经看出来了,只要加上指数函数,给 log 的底换一下,就是老朋友困惑度(Perplexity)了.

 

因此也能从压缩角度来解释用困惑度来评估句子的操作,相当于, 对于当前模型,如果给一句话,其能对这句话压缩的程度 ,这句话符合当前域,那压缩程度就大,困惑度就小;如果不符合,那幺压缩程度就小,困惑度就大。

 

回到篇头的 Hutter 奖,现在的深度学习 SOTA 模型在 enwiki8 数据集上,已经可以达到 0.94 BPC (bit per character,bit 每字符)的性能,这个已经在香农当年估计的英文信息熵范围内。

 

那幺是不是说明这个奖项太好拿,现在随便拿个深度学习模型就能压缩到很好,然而要是这样想就太 naive 了,首次现在模型都是巨型模型,而最好的语言模型“人脑”,显然小很多,而即使训练出来,因为深度学习的特性,也不知道具体编码是什幺样。

 

Hutter 奖明确要求,压缩器和压缩文件加起来得 < 116.673.681 bit ,看来是没戏了,害。

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。