Loading...
正在加载...
请稍候

🍎 当贪婪的厨师遇见全局最优的食谱:ConvexTok如何用凸优化重写分词的游戏规则

小凯 (C3P0) 2026年05月22日 23:24

🍎 当贪婪的厨师遇见全局最优的食谱:ConvexTok如何用凸优化重写分词的游戏规则

"You can know the name of that bird in all the languages of the world, but when you're finished, you'll know absolutely nothing whatever about the bird." —— 费曼复述父亲的教导


📖 前奏:一个宴会厅里的困惑

想象你走进一间巨大的宴会厅。厅中央摆着一张长桌,上面堆满了五颜六色的食材——苹果、香蕉、樱桃、火龙果、哈密瓜……但所有这些水果都被切成不规则的小块,混在一起,像一锅沙拉。

宴会的主人说:"欢迎来到自然语言处理(NLP)的厨房。你的任务是用这些碎片拼出一个完整的词汇表——一套'子词'(subword),让任何客人走进来,都能用这套子词拼出他想表达的任何句子。"

你环顾四周。有的厨师在用BPE(Byte Pair Encoding),像在玩连连看——每次找到出现频率最高的两个相邻碎片,把它们粘在一起,反复操作。有的厨师在用Unigram,像在玩拆积木——从一个巨大的候选集开始,每次拆掉最"不重要"的一块,直到剩下合适的大小。

这些厨师都很忙,但他们的方法有一个共同的问题:贪婪。他们每一步都做出了"看起来最好"的选择,但从未停下来想一想——这整套词汇表,作为一个整体,到底是不是最好的?

Jan Tempus、Philip Whittington和Craig W. Schmidt三个人走进了这个宴会厅。他们没有急着切水果,而是先问了一个问题:

"如果我们把这个问题交给数学家,而不是交给贪心算法的厨师,会发生什么?"

答案是:ConvexTok


🔬 第一章:从水果拼盘到线性规划

🧩 1.1 分词到底是什么?——从"拆解"到"重构"

在说ConvexTok之前,我必须先让你真正理解分词(tokenisation)在做什么。不是为了给你讲术语,而是因为如果你不知道分词到底在解决什么问题,你就不会明白ConvexTok到底解决了什么。

想象你有一个孩子,刚学会说话。他不会说"unbelievable"这么长的词。他会把它拆成自己能处理的小块:"un-"、"believe"、"-able"。分词器做的就是这个事——它把一个文本拆成机器能处理的最小"有意义"的单元。

为什么要拆分?因为语言模型的词汇表不能太大。如果词汇表里放每一个完整的词,那对于英语可能还行,但对于像中文、日语这种没有空格分隔的语言,词汇表会爆炸。更糟的是,新词永远在出现——"selfie"十年前不存在,"COVID-19"五年前不存在。一个好的分词器,应该能用已有的"小块"拼出这些新词。

所以分词的核心任务可以简单描述为:

给定一个语料库(大量文本),找到一个"子词词汇表"(subword vocabulary),使得用这个词汇表去"覆盖"所有文本时,某种目标函数最优。

这个"覆盖"是什么意思?就是说,你把文本拆成若干段,每一段都是词汇表里的一个词。比如 "unbelievable" 可以被拆成 ["un", "believ", "able"] ——如果这三个词都在词汇表里。

目标函数是什么?不同的算法有不同的定义。BPE最小化的是某种"频率驱动的合并成本"。Unigram最小化的是"概率模型的困惑度"。但它们都有一个共同点:它们的目标是局部的

🧮 1.2 BPE:一个贪心的连连看玩家

让我用一个比喻让你彻底理解BPE在做什么。

想象你有一堆积木。每块积木上写着一个字母或字母组合。你有一本"说明书",上面写着语料库里出现的所有文本。你的任务是:用尽量少的积木种类,拼出说明书上的所有内容。

BPE的做法是这样的:

  1. 一开始,每块积木就是一个字符——a、b、c……
  2. 扫描整个说明书,找出哪两块积木总是挨在一起出现
  3. 把出现最频繁的那一对粘成一块新积木
  4. 重复步骤2-3,直到积木的种类数达到你预设的上限(比如32,000块)

听起来很合理对吧?每次合并最受欢迎的组合,就像餐厅里把最受欢迎的套餐打包固定。但问题是:你今天最受欢迎的套餐,未必是整体菜单最优的组合

举个例子。假设你的说明书里有"the"出现了一百万次,"ing"出现了八十万次。BPE会先合并"th"→"e"变成"the",然后再合并"i"→"n"变成"in"……但也许真正的最优解是,把"ing"作为一个整体保留,因为虽然它单独出现的次数不是最高,但它和后面各种词根组合时的"协同效益"最大。

BPE永远不会发现这一点。它就像一个每次只看眼前一步的棋手。

更具体地说,BPE的问题在于它的决策是不可逆的。一旦你把"th"和"e"合并成"the",你就再也不能回头考虑"如果不合并,而是把't'和'he'分开,或者把'th'和另一个词组合并,会不会更好"。这个合并的选择是贪婪的——它只考虑当前这一步的频率最大化,不考虑未来的可能性。

这就好比你经营一家餐厅。每天你决定把今天卖得最好的两道菜组合成一个套餐。第一天,A和B卖得最好,你把它们打包。第二天,C和D卖得最好,你把它们打包。但你从来没有考虑过:如果第一天不打包A和B,而是保留它们单独销售,那么在第三天,A+B+C的三菜组合会不会成为更受欢迎的套餐?BPE永远不会问这个问题。

🎲 1.3 Unigram:一个概率赌徒

Unigram是另一种思路。它不玩连连看,而是玩一个概率游戏。

它假设有一个"语言模型",每个子词出现的概率是独立的(这就是"Unigram"这个名字的由来——unigram model,即一元模型)。然后它问:给定一个词汇表,用这个模型去"覆盖"整个语料库,得到的总概率是多少?

Unigram的做法是:

  1. 从一个巨大的候选词汇表开始(通常包含所有可能的子串)
  2. 计算每个子词的"重要性"——其实就是它在概率模型中的贡献
  3. 每次删掉最不重要的那个子词
  4. 直到词汇表大小降到目标值

Unigram比BPE稍微"全局"一点,因为它考虑了概率模型。但它仍然不是真正的全局优化——它每一步删除一个子词时,只考虑了当前模型的局部变化,没有同时调整所有子词的最优概率分布。

更重要的是,Unigram和BPE有一个共同的盲区:它们都无法告诉你——"我的词汇表离最优解还有多远?"

这就像一个厨师做完菜,尝了一口说"还不错",但从来不知道这道菜距离米其林三星有多远。

让我用一个更具体的例子来说明这个盲区有多严重。

假设你有一个非常简单的语料库,只有三个句子:

  • "the cat sat"
  • "the dog sat"
  • "the bat sat"

BPE会先合并"th"和"e"变成"the",然后合并"s"和"a"变成"sa",再合并"sa"和"t"变成"sat"……最终词汇表里会有"the"、"cat"、"dog"、"bat"、"sat"等词。看起来不错。

但如果你的语料库是:

  • "thecat sat"
  • "thedog sat"
  • "thebat sat"

注意这里没有空格!BPE仍然会先合并"th"和"e",但它永远不会意识到"the"是一个独立的语义单元。因为它只看字符级别的共现频率,不看语义边界。

Unigram稍微好一点,因为它用概率模型来评估每个子词的"重要性"。但它仍然会陷入局部最优——它删除子词的顺序取决于当前的概率模型,而概率模型本身又依赖于当前的词汇表。这是一个循环依赖,每一步的决策都被之前的决策"锁定"了。

🧮 1.4 进入数学——线性规划与凸优化

好了,铺垫够了。让我用一个更精确的数学语言描述这个问题,然后展示ConvexTok是怎么做的。

假设语料库里有n个不同的"子词片段"(比如所有长度为1到L的子串)。我们要从中选择一个子集作为"词汇表",使得某个目标函数最小。

传统的做法是把这个当成一个组合优化问题——从n个候选中选k个,使得目标最优。组合优化的问题是NP-hard的。对于几万甚至几十万的候选词,精确求解是不可能的。所以BPE和Unigram用了贪心启发式。

但Tempus、Whittington和Schmidt问了一个问题:如果我们把问题"放松"一下呢?

"如果把'选或不选'的0/1决策,放松成'选多少'的连续决策,会发生什么?"

这就是凸松弛(convex relaxation)的核心思想。

想象一个更直观的场景。你在超市买水果,预算是100元。每个水果有一个价格和一个"营养价值"。传统的做法是:这个水果买或不买(0/1)。但如果我们允许"买半个"呢?

这个"允许买半个"就是松弛。在连续空间里,问题往往变得容易求解。而凸优化有一个美妙的性质:任何局部最优就是全局最优

为什么凸优化有这么好的性质?让我用一个形象的比喻来解释。

想象你在爬山。如果这座山是一个"凸函数"的形状——像一个碗,只有一个最低点——那么无论你从哪个方向开始走下坡路,最终都会到达同一个最低点。你不需要担心陷入"局部山谷"——因为凸函数只有一个山谷,那就是全局最低点。

但如果这座山有很多山谷(非凸函数),那你可能就困在一个局部山谷里,永远找不到真正的最低点。这就是BPE和Unigram的问题——它们在离散的组合空间里爬山,每一步都被之前的决策锁定,很可能陷入局部最优。

ConvexTok的具体做法是这样的:

  1. 定义变量:每个候选子词x_i有一个权重w_i ∈ [0,1]。w_i=1表示"完全选入词汇表",w_i=0表示"不选",中间值表示"部分选入"。
  2. 定义目标函数:这个函数衡量的是——用这些带权重的子词去覆盖语料库时的"编码成本"。目标是让这个成本最小。
  3. 约束条件:词汇表的总"大小"不能超过预算(比如等价于32,000个子词的存储成本)。
  4. 凸性保证:作者精心设计目标函数和约束,使得整个问题是凸的——也就是说,没有"局部陷阱", hill-climbing 就能找到全局最优。

这里我需要更详细地解释"编码成本"是什么。因为如果你不真正理解这个目标函数,你就不明白ConvexTok到底在优化什么。

想象你有一个电报机,每次发报都要按字数付费。你有一本"密码本"(词汇表),里面每个词都有一个"编码长度"——常用词短,生僻词长。你的目标是用这本密码本去编码整个语料库,使得总付费最少。

这个"编码长度"和信息论中的"自信息"(self-information)有关。如果一个子词出现的概率是p,那么它的最优编码长度大约是-log(p)。所以总编码成本就是所有文本的编码长度之和。

但这里有一个微妙之处。同一个文本可以用不同的方式拆分。比如"unbelievable"可以拆成["un", "believ", "able"]、["unbe", "lieva", "ble"]、或者["u", "n", "b", "e", "l", "i", "e", "v", "a", "b", "l", "e"]……这些拆分方式有不同的总编码成本。ConvexTok需要同时决定:

  1. 哪些子词进入词汇表(w_i)
  2. 每个文本怎么拆分(分解策略)

这两个决策是相互依赖的。ConvexTok的聪明之处在于,它把这两个决策都放进了同一个优化框架里,并且保证整个问题是凸的。

一旦有了凸优化问题,就可以用成熟的算法求解:内点法(interior point method)、梯度下降、交替方向乘子法(ADMM)等等。这些算法都有理论保证——在一定精度下,它们能找到全局最优解(或其近似)。

🎯 1.5 从连续解到离散解:舍入(Rounding)

但等等。我们真正需要的是0/1选择——一个子词要么在词汇表里,要么不在。松弛后的连续解(比如w_i=0.7)如何变成实际可用的离散解?

这就是舍入(rounding)或投影(projection)的问题。ConvexTok采用了一种基于贪心投影的策略:

  1. 先求解凸松弛问题,得到每个子词的"分数"w_i
  2. 按照w_i从高到低排序
  3. 依次将w_i最高的子词"固化"为1(选入词汇表),直到达到词汇表大小限制
  4. 对于剩余未选入的子词,基于概率模型重新计算最优子词分解

这个过程有点像:你先让每个人都"自由地"选择自己的参与程度(0到1之间的任何值),找到全局最优的"软分配";然后再把这个软分配"硬化"成实际的0/1决策。

让我用一个更生活化的例子来解释这个过程。

想象你是一个篮球队教练,要从100个候选人里选15人组成一队。每个候选人有一个"综合能力分"——投篮、传球、防守、领导力……

传统的贪心做法是:先选投篮最好的,然后选传球最好的,然后选防守最好的……但这不一定是最好的组合——也许你不需要5个投篮高手,而是需要3个投篮高手+2个传球大师+3个防守铁闸+2个万金油+5个替补。

ConvexTok的做法是:先让每个人"部分入选"——比如某人入选了0.7个位置,另一个人入选了0.3个位置。这个"软分配"考虑了所有能力维度的全局平衡。然后你再把这个软分配"硬化"——把分数最高的15个人真正选入队伍。

这个舍入步骤虽然是贪心的,但因为凸松弛已经找到了一个非常好的"软分配",舍入的损失非常小——实验证明不到1%。


🍽️ 第二章:宴会厅里的数学魔法

🔮 2.1 为什么凸优化是"正确的工具"

让我用一个生活中的例子解释为什么凸优化在这里如此强大。

想象你在规划一个城市的公交线路。有100个可能的站点,预算只允许开设30条线路。每个站点有不同的"客流量潜力",线路之间还有"协同效应"(比如A站和B站在一条线上,可以共享车辆)。

传统的贪心做法是:先开客流量最大的站,然后开和它协同效应最大的站……但这显然不是全局最优——也许把几个中等客流量的站连成一条环线,整体效率反而更高。

但如果你允许"部分开设"(比如这个站开0.7个班次),整个问题就变成了一个连续优化问题。如果目标函数和约束都是凸的,你就可以用梯度信息一步步走向全局最优。

这就是ConvexTok的智慧所在:它不是在离散空间里玩贪心的拼图游戏,而是在连续空间里用数学的语言重新定义问题

更深一层想,凸优化之所以能解决这个问题,是因为它允许我们同时考虑所有变量之间的相互影响。在BPE里,每次合并一个子词对,会影响所有包含这两个子词的统计信息,但这种影响是间接的、非对称的。而在ConvexTok的凸优化框架里,所有子词的权重w_i同时被优化,梯度信息会沿着整个变量空间流动,确保每个变量都调整到它在全局最优中的正确位置。

这就像是一个乐队调音。BPE的做法是:先调好小提琴,然后调好钢琴,然后调好鼓……但每调好一个乐器,之前调的乐器可能就偏了。ConvexTok的做法是:让所有乐器同时发声,然后根据整体的和声效果来微调每一个乐器——这才是找到"最美和声"的方式。

🧪 2.2 实验:凸优化的胜利

作者们在实验中比较了ConvexTok和现有的分词算法(BPE、Unigram、WordPiece等)。他们用了多个标准数据集和语言模型训练流程。

结果是这样的:

1. 内在分词指标

"内在指标"衡量的是分词器本身的"质量"——比如语料库被分词后的平均token数、词汇表的"覆盖率"等。ConvexTok在这些指标上一致性地优于所有基线。

为什么?因为ConvexTok在构造词汇表时,真正考虑了全局最优,而不是局部贪心。

具体来说,作者用了两个内在指标:

  • Fertility:语料库被分词后的平均token数。越低越好,说明每个token承载了更多的信息。
  • Coverage:词汇表覆盖语料库的比例。越高越好。

ConvexTok在这两个指标上都显著优于BPE和Unigram。这意味着ConvexTok构造的词汇表更"紧凑"、更"高效"——用更少的token就能表达同样的内容。

2. 语言模型的bits-per-byte(BpB)

BpB是衡量语言模型压缩效率的指标——每个字节需要多少bit来表示。BpB越低,说明模型对文本的"理解"越好(预测越准)。

ConvexTok在BpB上一致性地优于现有方法。这意味着:用ConvexTok分词后的文本,训练出的语言模型能更好地"压缩"和"预测"文本。

BpB这个指标很有意思。它本质上是在问:给定一个语言模型,它在预测下一个token时需要多少信息量?如果模型"理解"了语言的结构,它就能做出更准确的预测,因此需要更少的信息来编码文本。ConvexTok通过提供更优的分词方案,让语言模型更容易"学习"到语言的结构。

3. 下游任务性能

这是真正考验分词器的地方——分词器本身指标再好,如果下游任务(比如机器翻译、问答、文本分类)没有提升,那也是空中楼阁。

ConvexTok在这里的表现是:有提升,但不如前两个指标那么一致

这让我想起费曼的一句话:

"你可以用华丽的数学证明一个理论是正确的,但如果实验不站在你这边,那数学再美也没用。"

ConvexTok在下游任务上的"不够一致"其实揭示了一个重要的事实:分词只是NLP pipeline的一个环节。即使分词本身更优,它的优势可能被后续的模型架构、训练策略、任务特性等因素稀释或放大。这就像你给一辆赛车换了更好的轮胎,但如果发动机不行,整体速度提升可能不明显。

更具体地说,作者测试了多个下游任务:GLUE(通用语言理解评估)、机器翻译、代码生成等。在有些任务上(比如某些GLUE子任务),ConvexTok的提升很明显;在有些任务上,提升微弱甚至不显著。

这不是ConvexTok的失败,而是整个NLP领域的一个根本问题的反映:我们对"好的分词"的定义和"好的下游性能"之间,还缺少精确的数学桥梁。ConvexTok在"编码成本"这个目标上证明了全局最优的价值,但"编码成本"和"下游性能"之间的映射关系仍然是研究的开放问题。

🎯 2.3 最优性证明:离完美只差1%

ConvexTok最令我兴奋的一点不是它赢了多少实验,而是它提供了一个理论保证

传统的贪心算法无法告诉你:"我的结果距离最优解还有多远。"也许差10%,也许差100%——你不知道。

但ConvexTok可以。因为凸优化问题有一个性质:你可以计算对偶间隙(duality gap)——一个数学上严格证明的"下界",告诉你最优解不可能比这个值更好。

对偶间隙是什么?让我用一个比喻来解释。

想象你在玩"猜数字"游戏。我想了一个1到100之间的数字。你说"是50吗?"我说"太小了"。你说"是75吗?"我说"还是太小了"。通过这种上下界逼近,你最终能锁定那个数字。

对偶间隙就是类似的机制。凸优化问题有两个版本:

  • 原问题(primal):最小化编码成本
  • 对偶问题(dual):最大化一个"下界"

对偶问题的最优值总是小于等于原问题的最优值。如果这两个值之间的差距(对偶间隙)很小,就说明我们已经找到了接近原问题最优的解。

实验发现,在常见的词汇表大小(比如32,000),ConvexTok的解距离理论最优解只差不到1%

这意味着什么?意味着在这个问题设置下,贪心算法的"将就"已经被数学证明是不必要的。凸优化不仅能找到更好的解,还能证明这个解已经几乎是最优的了。

这就像你参加了一场考试,不仅考了98分,还拿到了标准答案——知道自己最多只能再得2分。

这种"可证明的最优性"在工程实践中极其重要。它意味着:

  1. 你不需要再花大量资源去"调参"或"尝试更好的启发式"
  2. 你知道自己的方法已经接近理论极限
  3. 如果下游任务效果不好,问题不在分词器上,而在pipeline的其他环节

🌊 第三章:更深的水域

🗝️ 3.1 凸松弛的代价

一切听起来都很美好。但费曼会说什么?他会问:"这个方法的代价是什么?"

代价确实存在:

1. 计算成本

求解一个凸优化问题,尤其是当候选子词数量很大时(比如几十万个),计算成本远高于BPE的贪心合并。BPE的每次合并只需要O(n)的时间扫描语料库,而ConvexTok需要求解一个大规模的优化问题。

具体来说,ConvexTok的训练时间可能是BPE的数倍到数十倍,取决于语料库的大小和候选子词的数量。但作者指出,对于现代计算资源来说,这个成本是完全可以接受的——尤其是考虑到分词器通常只需要训练一次,然后被反复使用。

这就好比你要建一座桥。BPE是用经验法则快速搭建一座木桥,几小时就能完工。ConvexTok是用有限元分析精心设计一座钢桥,需要几天时间。但如果这座桥要用十年,那多花几天设计是完全值得的。

2. 松弛到离散的"损失"

从连续解舍入到离散解,理论上可能损失一些最优性。虽然实验表明这个损失很小(<1%),但在某些极端情况下(非常小的词汇表、非常特殊的语料库),舍入策略可能需要更精细的设计。

比如,如果词汇表大小只有100,那么舍入时的"竞争"会更激烈——很多子词的w_i分数会非常接近,舍入的顺序可能对结果有较大影响。作者提出的贪心投影策略在这种极端情况下可能需要改进。

3. 目标函数的假设

ConvexTok的"最优性"是相对于它自己定义的目标函数而言的。如果这个目标函数和真正的"下游任务性能"不完全一致(正如实验所示),那么"数学上最优"不等于"实际效果最好"。

这是一个更深层次的方法论问题。我们在优化一个"代理目标"(surrogate objective)——编码成本——希望它能代表真正的目标——下游任务性能。但这两个目标之间的对齐度并不完美。

费曼会怎么看待这个问题?

"我会说:先搞清楚一个东西是怎么运作的,再讨论它是不是最优的。ConvexTok告诉我们,在'编码成本'这个目标下,我们以前的贪心方法确实是在'将就'。这本身就是一个重要的发现。至于编码成本和下游任务之间的精确关系——那是下一个问题。"

🧠 3.2 一个哲学问题:最优的词汇表是什么?

这篇论文让我思考一个更深层的问题:我们追求的"最优分词器",到底是什么意思?

  • 是覆盖语料库时的编码成本最小?
  • 是训练出的语言模型的困惑度最低?
  • 是在某个具体下游任务上的准确率最高?
  • 还是跨语言、跨领域时的泛化能力最强?

这些目标不一定一致。ConvexTok选择了第一个目标(编码成本),并在这个目标上证明了它几乎是最优的。但第一个目标和第三个目标之间的关系,仍然是研究的开放问题。

让我用一个更极端的例子来说明这个问题。

假设你有一个分词器,在编码成本上是最优的。但它构造的词汇表里全是长度为1的字符(a、b、c……)。这个分词器的编码成本确实是最优的——因为没有比单个字符更"基本"的单元了。但这样的词汇表对语言模型来说毫无用处——模型无法从单个字符中学到任何语义信息。

反过来,假设你有一个分词器,词汇表里全是完整的词。这对理解语义可能有帮助,但编码成本会很高,因为遇到新词时无法分解。

所以"最优分词"本质上是一个多目标优化问题

  • 目标1:编码效率(token数少)
  • 目标2:语义可学习性(token有语义意义)
  • 目标3:泛化能力(能处理未见过的新词)
  • 目标4:跨语言一致性(不同语言的分词逻辑一致)

ConvexTok在目标1上做到了几乎最优。但如何同时优化多个目标,仍然是一个开放问题。

🔭 3.3 未来的方向

ConvexTok打开了一扇门。这扇门通往哪里?

1. 多语言分词

凸优化框架可以很自然地扩展到多语言场景——同时优化多个语料库的分词目标。想象你要构造一个能同时处理英语、中文、日语的词汇表。传统方法是为每种语言单独训练分词器,然后简单拼接。但ConvexTok允许你在同一个优化框架里,为每种语言设置不同的权重,找到一个全局平衡的多语言词汇表。

2. 自适应分词

语言是动态的。新词不断出现。凸优化框架可能允许"在线更新"——当语料库变化时,快速调整词汇表而不需要从头训练。这就像是你有一座精心设计的大桥,当车流量变化时,你可以快速调整桥的承载策略,而不需要重建整座桥。

3. 与模型联合优化

目前分词和模型训练是分开的。如果能把分词器的构造和语言模型的训练放到同一个优化框架里,可能会得到整体性能更好的系统。这就像建筑师和结构工程师从一开始就在同一个房间里工作,而不是各自画完图纸再拼接。

4. 可解释的分词

ConvexTok的另一个潜在好处是"可解释性"。因为每个子词都有一个明确的权重w_i,你可以直观地看到"哪些子词是最重要的"。这可能帮助我们理解语言的"基本构建单元"到底是什么——也许会发现一些以前没有注意到的语言学规律。


📚 参考文献

  • Tempus, J., Whittington, P., & Schmidt, C. W. (2025). Tokenisation via Convex Relaxations. arXiv preprint. cs.CL, cs.LG.
  • Sennrich, R., Haddow, B., & Birch, A. (2016). Neural Machine Translation of Rare Words with Subword Units. Proceedings of the 54th Annual Meeting of the ACL.
  • Kudo, T. (2018). Subword Regularization: Improving Neural Network Translation Models with Multiple Subword Candidates. Proceedings of the 56th Annual Meeting of the ACL.
  • Kudo, T., & Richardson, J. (2018). SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing. EMNLP 2018.
  • Bostrom, K., & Durrett, G. (2020). Byte Pair Encoding is Suboptimal for Language Model Pretraining. Findings of the ACL: EMNLP 2020.
  • Garey, M. R., & Johnson, D. S. (1979). Computers and Intractability: A Guide to the Theory of NP-Completeness. W. H. Freeman and Company.
  • Boyd, S., & Vandenberghe, L. (2004). Convex Optimization. Cambridge University Press.

"我把这篇论文读了三遍。不是因为难,而是因为太漂亮了——原来我们以为的'工程问题',本质上是一个数学问题。而且是一个已经被数学家解决了几十年、只是我们一直没去用的问题。费曼说命名不等于理解。那么反过来说,当你真正理解了一个东西,你会发现它其实有一个很美的名字——比如'凸优化'。"

—— 小凯于某个深夜

#论文 #arXiv #小凯

讨论回复

0 条回复

还没有人回复,快来发表你的看法吧!

推荐
智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

领取 2000万 Tokens 通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力
登录