5分钟搞懂词嵌入向量的底层原理
大家好啊我是章鱼先生。现在大模型越来越火token 经济也早已起飞但是你知道 token 背后的词嵌入向量到底是什么吗今天我们来简单聊一个在自然语言处理NLP中非常有用的技术——Word2Vec。这个技术就是专门用来处理词嵌入向量的。之前曾经写过一些关于文本处理的基础知识包括判断两个文本是否相似可以使用余弦相似度但在此之前在计算两个文本相似度的时候需要把文本表示为词向量。那么问题来了一般情况下是如何将文本映射为词向量的呢今天就简单介绍一种方法它的作用就是可以把文本映射成向量从而使计算机具有理解人类语言的能力。1、什么是Word2Vec?简单来说Word2Vec 并不是一个具体的神经网络模型而是一个由很多生成词向量的模型算法组成的词向量生成框架或者词向量生成工具。通过它可以将文字或者词组映射成一个多维空间中的向量。这些向量的精妙之处在于他们包含了单词之间的语义关系比如两个文本如果非常相似那么对应的两个向量的余弦相似度就非常接近于1。比如有四个单词“猫”、“狗”、“鱼”、“跑”通过Word2Vec 生成的词向量可能为- 猫[0.2, 0.7]- 狗[0.3, 0.9]- 鱼[-0.5, 0.2]- 跑[0.8, -0.1]将上述四个向量画在坐标图上如下图。我们通过观察可以很轻松的看出来“猫”和“狗”的两个向量很相近“鱼”和“跑”代表的两个向量则相差很远。这是因为猫和狗都是动物而鱼和跑则没有什么关联性。实际中生成的向量并非上面表示的仅仅两个维度大部分都是512维或者1024维这里用两维仅仅是为了展示。可能你会问为什么我们需要将单词转换成向量这是因为在计算机看来所有的输入和处理的文字都是数字文本也是一样。如果不将文本转换成计算机能理解的形式那么计算机就像一个文盲一样处理不了它。传统的方法如 one-hot 编码虽然简单并且也可以将文字进行编码但它将每个单词都孤立了无法捕捉单词之间的关系。例如王’和’后’在棋盘游戏中有紧密的联系但在one-hot编码中它们就是两个完全无关的向量。关于one-hot 可以查看5分钟搞懂 one-hot 编码。2、Word2Vec 的工作原理Word2Vec 通过训练语料库可能由互联网上大量的文章组成中的单词来生成模型它主要有两种架构CBOW连续词袋模型和 Skip-gram模型。两者的区别在于训练时连续词袋模型基于文本的上下文来预测单词而Skip-gram 模型则反其道而行之它用一个单词来预测其周围的上下文。相同的是这两种方法都是让模型来学习大量的文本以及文本中单词的使用环境来生成高质量的词向量。举个例子如果在训练时模型看到了句子“猫喜欢吃鱼”在Skip-gram模型中如果选择“喜欢”作为输入单词模型便会试图预测它周围的“猫”和“吃鱼”。通过这种方式模型就学到了“喜欢”与“猫”、“吃鱼”之间在一定的语言环境下是存在关系的。从而在生成“喜欢”这个单词的向量时会将其与“猫”以及“吃鱼”之间的关系表示到向量中。3、Word2Vec有什么用使用Word2Vec的好处非常明显。首先它可以捕捉到单词的多种语义关系比如同义词、反义词这在许多NLP任务中都非常有用如情感分析、机器翻译和文本分类。例如在情感分析中词向量可以帮助模型正确地理解某些文字是否具有正面情绪还是具有负面情绪。更关键的是Word2Vec 就像是为计算机打开了一道大门使得计算机可以真正“读懂”人类的文字无论是汉字还是英文。不仅可以读懂而且还可以“理解”文字背后的深层含义这对于提升语言模型的理解能力来说是一个巨大的进步。因此可以认为经过 Word2Vec 之后生成的词向量是计算机的语言。就像是如果希望从中文翻译成英文的话我们可以先从中文翻译成俄语 再从俄语翻译成英文。一样的意思可以先讲中文翻译成词向量在将词向量翻译为英文这就完成了中译英的任务。好了今天关于Word2Vec的介绍就到这里。