word2vec之年:机器开始真正读懂词了

过去两年,人工智能这个词在公众视野里最出圈的爆点,是计算机在图像识别上突然开了窍。可在我这个长期和文字打交道的人看来,2013 年底真正值得细品的变化,发生在另一个角落里——机器开始真正”读得懂”词了。引爆这件事的,是谷歌几个工程师放出的一个叫 word2vec 的小工具。别看它轻,它悄悄改写了自然语言处理这个行当的底层假设。

一、机器以前是怎么”看”词的

要理解 word2vec 有多重要,得先知道老办法有多别扭。在它之前,计算机处理一个词,最常见的思路是”离散表示”:整个词典里有多少个词,就给每个词编一个独一无二的编号,或者用一个超长的向量——只有这个词对应的那一维是 1,其余全是 0。

这种表示有两个致命毛病。其一,向量太长了,几万个词就是几万维,稀疏得吓人。其二,也是更要命的——它把每个词都当成孤立的、毫无关系的符号。在这种编码里,”国王”和”王后”、”猫”和”狗”,彼此之间的距离和它俩与”冰箱”的距离一模一样。机器压根不知道”国王”和”王后”其实很接近。一个连词与词之间的关系都看不见的系统,你指望它真正理解语言,那是缘木求鱼。

二、word2vec 干了件什么事

词向量空间与神经网络概念图

word2vec 的思路,朴素到让人怀疑:一个词的含义,藏在它常和谁一起出现里。你不需要人工去定义词义,只要把海量文本喂给一个简单的神经网络,让它去做一件看似无聊的小事——根据上下文的词,猜中间这个词是什么;或者反过来,根据这个词,猜它周围大概会出现什么词。

在做这个预测游戏的过程中,网络会被逼着给每个词学出一个很短、很稠密的数字向量。神奇的事情发生了:意思相近的词,向量在空间里也彼此靠近。更妙的是,这些向量居然还能做加减——用”国王”的向量减去”男人”,加上”女人”,得到的向量竟然最接近”王后”。这意味着,机器不是在死记硬背,它真的从文本里把”性别””王权”这种抽象关系,学成了向量空间里的方向。

把词从离散的编号,变成了可以放在一张地图上、彼此有远近关系的点——这一步看似不大,却把自然语言处理从”规则和词典的手工活”,推向了”数据驱动的表示学习”。

三、为什么是 2013 年这个时间点

这个想法本身不是全新的,分布式表示在学术界酝酿了不少年。但它偏偏在 2013 年炸开,是几个条件凑齐了。第一,互联网上的文本数据终于多到足够喂饱一个模型。第二,GPU 让大规模矩阵运算变得便宜。第三,此前图像领域那波深度学习的成功,给了大家信心:原来那种不起眼的、多层的神经网络,真的能从数据里学到有用的东西。

还有一个很实际的原因:谷歌把这个工具开源了,还附带了在超大语料上预训练好的词向量。这意味着普通研究者和小公司,不用自己攒数据、不用烧钱买卡,直接下载一个几百兆的文件,就能在自己的小任务上跑出像样的结果。技术民主化,往往比技术本身更能点燃一个行业。

四、它改变了哪些具体活儿

对一线做文本的工程师,word2vec 几乎是立竿见影的。过去做文本分类,特征工程是苦差事——你得人工想办法把词变成可用的特征,效果还不稳定。现在,你可以直接拿预训练的词向量当起点,句子里每个词的向量平均一下,就是一个句子的表示。做相似度计算、做推荐、做聚类,立刻顺了一大截。

做搜索和广告的人更兴奋。用户搜一个词,系统过去只能做字面匹配;有了词向量,系统能明白”手机没电了”和”电池不耐用”其实在说同一件事。这种语义层面的对齐,正是过去搜索一直想做却做不好的事。可以说,从这一年开始,”理解用户在说什么”第一次有了一个可工程化的落脚点。

四点五、动手试一把:它比你想象的简单

如果你是个想动手的工程师,我建议别只读文章,真的去跑一遍。整个流程简单得出乎意料:找一份干净的语料,把句子切好词,丢进工具,几十分钟后你就能得到一个词向量文件。然后做一个最能说明问题的实验——拿几个词,算它们两两之间的相似度。

你会亲眼看到,”电脑”和”笔记本”靠得很近,”电脑”和”西红柿”离得很远;你还能找出跟某个词最相近的一串词。当屏幕上列出”国王”旁边站着”女王””皇帝””王后”时,那种感觉很奇妙——你会第一次直观地意识到,原来真有办法把抽象的语义,变成机器能算的数字。这个瞬间,比任何论文都更能说服你:这条路走对了。

我自己当时就是被这个小实验”招安”的。在此之前,我对深度学习在文字上能走多远一直半信半疑;做完这个实验,我老老实实把搁置多年的线性代数和概率论教材又翻了出来。

五、冷静一下:它不是万能的

我不想把 word2vec 吹成银弹。它有很明显的局限。同一个词有多个意思,它只能给出一个向量,”苹果”到底是水果还是那家公司,它分不清。它也吃不懂语序——”狗咬人”和”人咬狗”在它眼里,词一模一样,差别全丢了。后来这一方向之所以继续往前狂奔,正是因为人们发现了这些短板,才一步步造出更强的模型。

但站在 2013 年 12 月这个节点,你不需要知道后面的故事。你只需要意识到:机器看待语言的方式,从这一年开始变了。它不再把词当成一个个编号,而是开始在一片连续的语义空间里,给每个词找位置。这个小小的转变,是后来这一切自然语言进步的地基。

我还想提醒一句做产品的朋友。技术圈的风向变得快,但真正落地的节奏没那么快。word2vec 这样的工具从论文发表,到变成搜索、推荐、客服系统里真实在跑的能力,中间隔着大量的数据清洗、工程优化和效果调优。别指望一个新模型一夜之间颠覆你的业务,但也别对它视而不见。聪明的做法是:现在就动手在一两个小场景里试用起来,让团队里的人先对”词向量”这东西有手感。等到它真的变成行业标配的那天,你不会因为手生而掉队。

自然语言处理这个行当,等这一天已经等了太久。站在 2013 年的尾巴上,我愿意把 word2vec 称作那一年给整个行业的、一份迟到却格外厚重的礼物。它很小,却撬动了很大的一块地方。对从业者来说,2013 年底,是时候把”表示学习”这四个字,放进自己的学习清单最上面了。

赵久龙 站长

852 文章
0 粉丝
0 评论

0 条评论

还没有评论,快来抢沙发吧!

发表评论

客服