这篇想法源于之前看到 Hutter 奖( http://prize.hutter1.net/ )的更新信息,该奖主要由 AGI 研究人员 Marcus Hutter 赞助,奖金 50 万欧,目的是尽可能地压缩一个文件 (enwiki9,维基百科的前 1GB,人类知识象征)。
而之所以奖励一个压缩任务,是因为 Hutter 认为,压缩是通往真正人工智能的必经之路,而且现在智能度量标准也还很模糊,所以与其去搞那些虚的,不如直接上简单粗暴的压缩。
当然不光 Hutter 一人认为压缩和智能有很大关系,很多其他研究也都支持了这个观点,包括 J. Gerard Wolff 很早一篇 Language Acquisition, Data Compression (语言获得,数据压缩),现在也在看 Wolff 的最近一篇长文。
当然压缩不光和智能有关,本来也是一个充满应用场景的任务,所以美剧《硅谷》都给 PP 专门挑了压缩算法起家,扯远了...
实际上从信息论角度看语言模型训练,会发现其实它就是一个类似压缩的过程。
先来简单说说信息论。
信息论中最重要的概念,信息熵,一个随机变量 , 对应取值 ,以及概率质量函数为 P(X),那么它的信息熵就为
这个信息熵是什么意思呢,香农定义它为,如果给从分布 中抽样的数据编码,那么至少也需要 个 nats 来对每个数据进行编码。nat 可能大家听得少,但它的小兄弟 bit 大家应该是耳熟能详。
两个区别只是对数底不同,
如果从概率角度来理解,对于每个自信息 ,在 越小时自信息就越大,这也是香农想传达的主要思想,一个概率越小的事情一旦出现,那就表示其中的信息量越大,也越会让我们惊讶。
比如说明天太阳从东方升起,和最近原油跌到负数,哪个会让你更惊讶呢,哪个信息量更大呢,不言而喻。
因此从这个角度来看信息熵的话,其实就是在度量一个随机变量的平均信息量,或者说平均让人惊讶程度。
而一旦说到惊讶,就又会和一个概念联系起来。那就是预测。
对于任何事物只有当没有预测到时,才会产生惊讶,也就是万万没想到。如果一个东西,能够很容易预料到第一步第二步第三步只会让你觉得无聊,就像校长又臭又长的讲话。
而提到预测,自然就和下一个话题联系起来了,它主要根据当前已有词预测下一个词。
它就是,语言模型。
简单来说就是用来计算某段语言出现概率的模型(更广泛可定义为捕捉语言中结构),而一般计算方法是以字符为单位进行预测,计算概率,放一起就是一句话概率。
而计算时一般用交叉熵损失,对每个字符,假设 是真实概率分布,而 是模型输出的
便于讲解可以重写上面公式
还是真实概率,但此时假设我们就是模型,那么 就是作为观察者的主观概率。于是上面的模型就可以理解成,作为观察者的我们,在主观概率 的情况下,看到分布概率为 的数据时获得的期望惊讶值,也可以理解成信息量。
之后观察者可以根据此来调整自己输出的主观概率,在机器学习模型中就是学习到新参数,获得新预测结果。
而通过学习训练,交叉熵的最小值,会在当主观概率 与实际概率 相同时达到,而此时交叉熵的值就是 也就是 的信息熵
也就是实际概率分布 的编码极限。
一个有意思的视角,如果将人看作是语言模型,那么 就是母语者,因为实际数据本身就是从母语者采样出来的。而 可以看作是非母语者学习这门语言,理论上学习的极限就是成为母语者 . 此外如果是相同语系,比如意大利语到西班牙语,那么首先 和 分布接近,那么学习者也更轻松,学习过程更短,而如果 和 分布相差很大,那么整个学习过程也会比较难。
而想要压缩文本的话,只需要能根据当前已有字符预测下一个字符就行,这正是语言模型干地。
为什么压缩和预测相关呢?举一个简单的例子。
假如说我们有一句话,只有一个字,而且不停重复
哈哈哈哈哈哈哈哈哈哈哈哈哈哈....(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 ,看来是没戏了,害。
推荐阅读
百度PaddleHub NLP模型全面升级,推理性能提升50%以上
斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用
数学之美中盛赞的 Michael Collins 教授,他的NLP课程要不要收藏?
From Word Embeddings To Document Distances 阅读笔记
模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法
可解释性论文阅读笔记1-Tree Regularization
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。