从 Word2Vec 到 BERT:AI 不止是词向量,更是语言理解
一、前言
在上篇文章中,我们介绍了Word2Vec以及它的作用,总的来说:
-
Word2Vec是我们理解NLP的第一站
-
Word2Vec将词变成了“向量”—— 终于可以用机器理解词语的相似度
-
我们获得了例如“国王 - 男人 + 女人 ≈ 女王” 的类比能力
-
我们可以将Word2Vec这种算法能力,应用到各种创新场景,例如基于Graph的推荐系统,后续如果小伙伴有需要,可以一起深入交流。
但同时也指出了它的不足:
-
一个词=一个固定向量(静态词向量)
-
上下文无感知:“苹果”无论是手机还是水果,向量相同
-
是词的映射,不是对语言的理解
那如果让我们来设计下一代的算法,什么最重要?
——我们需要“能读懂句子”的模型。
接下来我们一步步实现,直至引出bert。
二、Word2Vec是怎么工作的?
在上文,我们介绍到Word2Vec使用周围词预测中间词来获取词向量能力,这个被称为CBOW,同理也可以用中间词预测周围词,这个称为Skip-Gram。本质来讲,Word2Vec是一个浅层神经网络,结构如下:
from torch import nn
class Word2VecModel(nn.Module):def __init__(self, vocab_size,