设想一台机器读过“猫吃鱼”“猫喜欢鱼”“狗喜欢肉”,现在要补全“狗吃——”。这几句话是我们自拟的教学材料,不是一份足够训练实际模型的数据集。
如果机器只查“狗吃”后面接过什么,它会发现这一栏空着。上篇的平滑方法可以给没出现过的答案留一点机会,但还有一个更诱人的问题:读“猫吃鱼”时积累的经验,能不能帮“狗吃肉”一点忙?
困难在于,电脑里的“猫”和“狗”,起初可以只是两个不同的编号。编号挨得近,不代表动物亲近。把猫编成7、狗编成8、拖拉机编成9,拖拉机也不会因此获得参加宠物聚会的资格。
先把编号换成一组可以调整的数
我们给每个词配上一组数字。这样的数字列表叫向量;与词对应的,就是词向量。机器用它参与计算,而不只是凭编号查一张孤立的次数表。
这里容易发生一个误会:是不是第一格写“是不是动物”,第二格写“爱不爱吃鱼”?通常不是。数字的初值可以没有这些明确含义,它们是在训练中一起调整出来的。一项特征可能分散在多个数字里,同一个数字也可能参与表达多种关系。
为了看清作用,再设想一个人为缩小的例子:猫的表示是两格数字,狗也是两格;两组数越接近,后面的计算就越可能给出接近的反应。这只是演示“相似输入可以共享处理经验”,并非真实模型里猫狗坐标的测量结果。
2003年,Bengio及合作者发表的神经概率语言模型,把学习词的数字表示和预测下一个词放在同一个训练任务中。向量表示与神经语言模型此前已有研究;这篇论文的重要位置,是展示它们怎样联合学习,缓解词组合太多、许多组合没有出现过的困难。1
这时的变化不是给词典加了一栏百科知识,而是让原本各管一摊的词,开始共用计算办法。
“训练”到底动了什么?
仍用“猫吃鱼”。训练时先把“猫吃”交给模型,要求它为词表里的候选答案分配概率。假设这一轮它把“鱼”分到一成,“椅子”分到八成,其余候选合计一成。数字是设想,作用是暴露问题:模型相当自信地建议猫改善一下家具库存。
原文接下来实际是“鱼”,因此训练程序知道这一轮应该提高哪个答案的概率。它用一个误差指标衡量预测与真实后续的差距;这个指标通常叫损失。把正确词的概率压得越低,这类损失就越大。
然后程序计算:参与预测的那些数字,朝哪个方向微调,能让这一批例子的总损失下降?这种局部变化方向叫梯度。沿着计算过程把影响逐层传回去,叫反向传播。它不是让模型写检讨,而是算出哪些数字该怎样动一点。
能被训练调整、会影响输出的数字统称参数。词向量里的数字是参数,负责组合信息、计算候选分数的数字也是参数。它们共同决定预测。更新一次,不等于永远记住“猫吃鱼”,更不保证每个例子都同时变好;训练反复处理许多批材料,是在共享参数之间寻找更合适的折中。1
与上篇直接数词频相比,这里多了一层可以学习的计算。机器不必为每一种完整组合单独攒够次数,但也因此可能把某处学到的联系错误地带到别处。
为什么猫的作业能帮到狗?
把教学材料扩展一下。设想实际训练资料里,猫和狗都反复出现在“喂”“喜欢”“饿了”等相似语境中,而“鱼”和“肉”也常出现在食物相关语境中。
不同句子经过同一套预测计算。为了让这些预测一起变好,训练可能把承担相似作用的词调整到能触发相近反应的位置。这样,“猫吃”所影响的共享计算,也能影响“狗吃”的结果。这就是泛化:把训练中得到的规律用到未见过的输入上。
请留意这个“可能”。我们并没有输入三句话,就在数学上强迫机器推出“狗吃肉”。结果取决于资料、模型、训练过程,以及其他候选的竞争。“狗吃作业”如果在材料里出现很多次,机器也会认真吸取这条教育经验。
2013年的word2vec研究提供了两种高效学习词表示的任务。一种用周围的词预测中间的词,叫连续词袋模型,简称CBOW;另一种用当前词预测附近的词,叫Skip-gram。它们都利用语境关系,但任务方向不同,也不等于完成了一个通用聊天系统。2
在自拟句子“这只猫正在吃鱼”里,前一种任务可以遮住“猫”,用附近内容猜它;后一种则从“猫”出发预测附近可能有哪些词。反复训练后,词表示能留下语境关系。所谓“词义”,在这里先以“怎样参与预测才有用”的方式进入了数字。
相似不是相等,更不是常识全书
设想材料里“热”和“冷”都经常出现在“水很——”中。它们语境相近,却意思相反。又如“苹果”,可以指水果,也可以出现在手机新闻里;给每个词固定一份表示,必然要把不同用法挤在一起。
因此,看见词向量接近,不能立即翻译成“这两个词意思完全一样”。表示保存的是训练任务认为有用的联系,里面也可能包括偏见、混杂和错误关联。一个擅长预测菜单用词的系统,并不因此知道这道菜是否真的熟了。
Bengio的语言模型还使用有限长度的前文。它让相似组合互相帮助,却没有自动解决“句子很长,重要信息很早出现”的问题。后面我们会换一种信息传递办法,让机器一边读,一边更新状态。1
开篇的答案现在可以说得更准确:机器能猜没见过的句子,是因为训练改变了共享参数,让见过的语境影响新的组合。它获得的不是一张永远正确的答案表,而是一套能迁移、也会迁移错的预测办法。
猫终于不用顿顿吃椅子了。至于狗会不会又吃到作业,还得看它究竟读过什么。