©PaperWeekly 原创 · 作者 | 苏剑林

单位 | 追一科技

研究方向 | NLP、神经网络

众所周知,分类模型通常都是先得到编码向量,然后接一个 Dense 层预测每个类别的概率,而预测时则是输出概率最大的类别。但大家是否想过这样一种可能:训练好的分类模型可能存在“无法预测的类别”,即不管输入是什么,都不可能预测出某个类别 k,类别 k 永远不可能成为概率最大的那个。

当然,这种情况一般只出现在类别数远远超过编码向量维度的场景,常规的分类问题很少这么极端的。然而,我们知道语言模型本质上也是一个分类模型,它的类别数也就是词表的总大小,往往是远超过向量维度的,那么我们的语言模型是否有“无法预测的词”?(只考虑 Greedy 解码)

是否存在

ACL 2022 的论文《Low-Rank Softmax Can Have Unargmaxable Classes in Theory but Rarely in Practice》[1] 首先探究了这个问题,正如其标题所言,答案是“理论上存在但实际出现概率很小”。

首先我们来看“理论上存在”。为了证明其存在性,我们只需要具体地构建一个例子。设各个类别向量分为 ,偏置项为 ,假设类别 k 是可预测的,那么就存在 ,同时满足:

反过来,如果类别 k 不可预测,那么对于任意 ,必须存在某个 ,满足:

由于现在我们只需要举例子,所以简单起见我们先考虑无偏置项的情况,并设 k=n,此时条件为 ,也就是说,任意向量 必然能找到向量 与之夹角小于等于 90 度。不难想象,当向量数大于空间维度、向量均匀分布在空间中时,这是有可能出现的,比如二维平面上的任意向量,就必然与 之一的夹角小于 90 度,从而我们可以构造出例子:

在这个例子中,类别 5 就是不可预测的了,不信大家可以代入一些 试试。

怎么判断

现在我们已经确认了“无法预测的类别”是可能存在的,那么一个很自然的问题就是,对于一个训练好的模型,也就是给定 和 ,怎么判断其中是否存在不可预测的类别呢?

根据前一节的描述,从解不等式的角度来看,如果类别k是可预测的,那么下述不等式组的解集就会非空:

不失一般性,我们同样设 k=n,并且记 ,留意到:

所以,只要我们尽量最大化 ,如果最终结果是正的,那么类别n就是可预测的,否则就是不可预测的。如果之前读过《多任务学习漫谈:行梯度之事》的读者,就会发现该问题“似曾相识”,特别是如果没有偏置项的情况下,它跟多任务学习中寻找“帕累托最优”的过程是几乎一致的。

现在问题变为:

为了避免发散到无穷,我们可以加个约束 :

其中r是一个常数,只要r取得足够大,它就能跟实际情况足够吻合,因为神经网络的输出通常来说也是有界的。接下来的过程就跟多任务学习漫谈:行梯度之事的几乎一样了,首先引入:

那么问题变成:

根据冯·诺依曼的 Minimax 定理 [2],可以交换 和 的顺序:

很显然, 这一步在 且 跟 同向时取到,结果为:

当 r 足够大时,偏置项的影响就非常小了,所以这几乎就等价于没有偏置项的情形:

最后的 的求解过程已经在多任务学习漫谈:行梯度之事中讨论过了,主要用到了 Frank-Wolfe 算法,不再重复。

注:以上判别过程是笔者自己给出的,跟论文《Low-Rank Softmax Can Have Unargmaxable Classes in Theory but Rarely in Practice》[1] 中的方法并不相同。

实践如何

前面的讨论都是理论上的,那么实际的语言模型出现“无法预测的词”的概率大不大呢?原论文对一些训练好的语言模型和生成模型进行了检验,发现实际上出现的概率很小,比如下表中的机器翻译模型检验结果:

▲ 机器翻译模型的检验结果

其实这不难理解,从前面的讨论中我们知道“无法预测的词”一般只出现在类别数远远大于向量维度的情况,也就是原论文标题中的“Low-Rank”。但由于“维度灾难”的原因,“远远大于”这个概念其实并非我们直观所想的那样,比如对于 2 维空间来说,类别数为 4 就可以称得上“远远大于”,但如果是 200 维空间,那么即便是类别数为 40000 也算不上“远远大于”。常见的语言模型向量维度基本上都有几百维,而词表顶多也就是数十万的级别,因此其实还是算不上“远远大于”,因此出现“无法预测的词”的概率就很小了。

另外,我们还可以证明,如果所有的 互不相同但是模长都相等,那么是绝对不会出现“无法预测的词”,因此这种不可预测的情况只出现在 模长差异较大的情况,而在当前主流的深度模型中,由于各种 Normalization 技术的应用, 模长差异较大的情况很少出现了,这进一步降低了“无法预测的词”的出现概率了。

当然,还是文章开头说了,本文的“无法预测的词”指的是最大化预测,也就是 Greedy Search,如果用 Beam Search 或者随机采样,那么即便存在“无法预测的词”,也依然是可能生成出来的。这个“无法预测的词”,更多是一个好玩但实用价值不大的理论概念了。

最后小结

本文向大家介绍了一个没什么实用价值但是颇为有意思的现象:你的语言模型可能存在一些“无法预测的词”,它永远不可能成为概率最大者。

参考文献

[1] https://arxiv.org/abs/2203.06462

[2] https://en.wikipedia.org/wiki/Minimax_theorem

更多阅读

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

你的语言模型有没有“无法预测的词”?相关推荐

  1. 学习NLP的第14天——语言模型的训练与预测

    Day14 : 语言模型的训练与预测 作者:长行 时间:2020.05.08 简单来说,语言模型就是通过统计已经分词的语料库中一元语法和二元语法出现的频次,实现对句子的分词. 下面我们使用HanLP的 ...

  2. 【Pytorch神经网络实战案例】11 循环神经网络结构训练语言模型并进行简单预测

    1 语言模型步骤 简单概述:根据输入内容,继续输出后面的句子. 1.1 根据需求拆分任务 (1)先对模型输入一段文字,令模型输出之后的一个文字. (2)将模型预测出来的文字当成输入,再放到模型里,使模 ...

  3. NNLM神经网络语言模型简单实现词语预测(含python代码详解)

    文章目录 一.NNLM简单介绍 二.NNLM词语预测代码 1. 导入包 2. 文本数据处理 3. 自定义mini-batch迭代器 4. 定义NNLM模型 1. 定义模型结构 2. NNLM参数设置 ...

  4. 【NLP】XLnet:GPT和BERT的合体,博采众长,所以更强

    前面介绍过BERT,作为一种非常成功的预训练模型,取得了非常不错的成绩,那么,他还有改进的空间吗? 本文介绍BERT的改进版,XLnet.看看它用了什么方法,改进了BERT的哪些弱点. 作者& ...

  5. 这些深度学习模型不会还有人不知道吧,不会吧不会吧

    这里写目录标题 1 TF-IDF 文本挖掘预处理 2 word2vec word2vec 对比模型 1.NNLM 2.RNNLM 1.Skip-gram模型 2.CBOW模型 Word2vec关键技术 ...

  6. 【语音识别】自动语音识别(ASR)研究综述

    自动语音识别(ASR)研究综述 Note: 正文内容绝大部分取自 语音识别研究综述 WeNet的部署参考该Blog WeNet平台搭建 文章目录 自动语音识别(ASR)研究综述 零.参考资料 1.参考 ...

  7. 语言模型 实现 下一单词预测(next-word prediction)

    文章目录 0. 前言 语言模型 next-word prediction 1. 数据集 2. 生成单词表 3. 实例化 Dataset 和 DataLoader 4. 模型 4.1 NNLM 4.2 ...

  8. 赠书 | 一文了解预训练语言模型

    来源 | 博文视点 头图 | 下载于视觉中国 近年来,在深度学习和大数据的支撑下,自然语言处理技术迅猛发展.而预训练语言模型把自然语言处理带入了一个新的阶段,也得到了工业界的广泛关注. 通过大数据预训 ...

  9. DeepMind一键三连,强推「地鼠」语言模型!只要2800亿参数就能刷SOTA

      视学算法报道   编辑:好困 LRS [新智元导读]最近,跨界交流.交叉研究特流行.这不,深度学习大佬DeepMind也来插手语言模型了,论文直接一键三连.全新「地鼠」大模型,只要2800亿参数就 ...

最新文章

  1. react native native module
  2. SSM项目的数据库密码加密方案
  3. 访问远程数据库,把远程数据库当做本地库来用
  4. 一次家庭作业意外搞定40年前的数学猜想,牛津小哥:我只研究了几个礼拜
  5. Java之String,StringBuffer,StringBuilder
  6. Objective-C之category
  7. Pytorch——对应点相乘和矩阵相乘
  8. node获取服务器cpu信息,听说你不知道如何监控Node服务的内存?
  9. Gateway与后端系统连接详细配置
  10. eplan 电箱布局_Eplan 的从头到尾完成3D布局步骤说明
  11. python爬虫爬取网易云音乐歌手信息
  12. 计算机桌面的文件拒绝访问,win10系统桌面文件无法重命名提示访问被拒绝的设置办法...
  13. 人眼中的光 —— 光强,光通量,光照度,光亮度是什么
  14. 传奇登陆器 link.html 网页无法显示,打开登陆器后无法显示游戏各区列表的问题...
  15. 观影《超时空接触》有感
  16. pythongui库推荐_八款常用的 Python GUI 开发框架推荐
  17. 【转】校招优秀简历和普通简历的区别
  18. Problem O: 笨熊的盒子
  19. 南邮 OJ 1567 Suspicious Stocks
  20. html5与ccs网页制作,HTML5CCS3(1) 网页的构造块

热门文章

  1. PHP associate with Flash or micromedia
  2. 面试后说hold什么意思_面试快结束时,如果面试官对你说这几句话,说明你被淘汰了!...
  3. 色彩敏感度测试 l 据说只有1%的设计师能全对,不服来战!
  4. 计算机设置u盘启动,bios设置u盘启动_如何进入bios_bios设置图解教程 - u大师
  5. 豆瓣电台WP7客户端 开发记录3
  6. mysql_connect函数怎么调用,PHP连接MySQL数据库的连接函数mysql_connect的第三个参数是( )。...
  7. 在编程语言中提到的“字面量”是什么意思啊?
  8. 甲骨文java培训怎么样,Java岗
  9. 要想成为一个开发组长,我个人认为要注意一下几点
  10. 第十章 集合类 总结