NLP中的词嵌入,一文讲透NLP中的词嵌入到底是什么(下篇)
词嵌入有哪些类型类型1基于统计的嵌入老派但经典不靠神经网络纯靠统计词和词在文本里一起出现的频率。代表GloVe全局向量、LSA潜在语义分析原理很简单如果你统计海量文本会发现“猫”和“狗”经常出现在相似的上下文里比如都出现在“____ 在睡觉”、“喂 ____”这样的环境里。那就说明它们意思相近。GloVe 用矩阵分解的方法把这种共现信息压缩成向量。优点训练快可解释性相对好。缺点无法根据上下文改变词义“苹果”是水果还是公司它只有一个向量。类型2基于神经网络的嵌入现在的主力用神经网络来学这个向量。代表Word2Vec谷歌2013、FastTextFacebookWord2Vec 有两种玩法CBOW给你上下文比如“今天 ____ 真好吃”猜中间这个词“苹果”还是“米饭”。训练过程中模型被迫学会好的词向量。Skip-gram反过来给你中间这个词猜它周围的上下文。训练出来的词向量神奇的事情出现了国王 - 男人 女人 ≈ 王后。这就是词嵌入最著名的“语义算术”能力。FastText 更进一步它把一个词拆成子词比如“苹果”拆成“苹”、“果”、“苹果”能处理生僻词和拼写错误。类型3上下文词嵌入Contextual Embedding——解决“一词多义”的终极武器前面讲的 Word2Vec 有个硬伤一个词只有一个向量。“苹果”这个词在“我喜欢吃苹果”和“我买了苹果手机”里意思完全不同。但 Word2Vec 只能把两种意思混在一起变成一个四不像的向量。怎么办呢上下文词嵌入来了。它不看词本身而是看这个词在句子里的上下文动态决定它的向量。代表ELMo、BERT、GPT 系列举个例子句子A“他咬了一口苹果。”句子B“苹果发布了新手机。”BERT 会把“苹果”在两个句子里的向量算得不一样。第一个更接近“水果”类的词第二个更接近“科技公司”类的词。这就是上下文词嵌入的威力。现在主流的预训练模型BERT、GPT用的都是这种。它们已经不叫“词嵌入”了更准确地说是“上下文表示”但底层思想一脉相承。类型4多语言词嵌入把不同语言的词映射到同一个向量空间。比如“猫”的中文向量和“cat”的英文向量在空间里离得很近。有什么用跨语言搜索、机器翻译、零样本迁移你用中文训练的情感分析模型直接拿去分析英文文本效果还不错。代表MUSE、LASER、XLM-R类型5多模态嵌入不局限于文字。把图片、声音、文字都放到同一个向量空间里。比如CLIP模型你给它一张狗的图片它算出图片向量给它“一只狗”的文字算出文字向量。这两个向量很接近。这样你就可以用文字搜图片或者用图片搜文字。词嵌入到底能干什么——6个离不开它的地方说了这么多类型你可能觉得有点抽象。下面直接讲应用。作用1文本分类垃圾邮件识别、情感分析这个电影评论是好评还是差评。把词嵌入向量输入分类器模型能根据向量位置判断类别。因为“失望”“糟糕”“无聊”的向量都聚在一坨很容易学。作用2信息检索和推荐你搜“好看的恐怖片”。搜索引擎把你的查询转成向量去文章库或电影库里找向量相近的内容。本质上就是在向量空间里做“最近邻搜索”。作用3机器翻译编码器把“我爱你”变成一系列向量解码器再根据这些向量生成“I love you”。中间传递的就是词嵌入或者更高级的上下文表示。作用4问答系统你问“姚明多高”系统需要把“姚明”和“身高”这两个概念关联起来。如果“姚明”的向量和“身高”向量在空间里有某种关系比如距离近或者有固定的偏移就能推理出答案。作用5词类比和推理前面说的“国王-男人女人≈王后”这个能力可以用于知识补全。比如你知道“北京”是“中国”的首都那“东京”对应的国家是谁向量计算北京 - 中国 ? 东京找最接近的向量得到“日本”。虽然不是百分百准但很惊艳。作用6迁移学习预训练 微调这是现在NLP能火起来的关键原因之一。Google、OpenAI 先用海量文本整个维基百科、书籍、网页训练出通用的词嵌入或上下文表示。你拿来之后只需要用你的少量数据“微调”一下就能在具体任务比如法律文书分析、病历识别上取得好效果。不用从零开始训练省了天量的计算资源和数据。词嵌入的本质就是把人类语言里的“意思”翻译成计算机能算的“数字”。从最开始的独热编码到 Word2Vec 的语义算术再到 BERT 的动态上下文一路进化下来NLP 的能力边界被极大地拓宽了。你现在用的智能客服、翻译软件、语音助手、内容推荐背后几乎都有词嵌入的影子。它不是什么遥远的学术概念就是现代 AI 理解语言的那块地基。