目录
前言
一、词嵌入(Embedding)
1.传统自然语言处理问题
2.什么是词嵌入
3.主要特点
二、Word2vec模型
1.连续词袋模型(CBOW)
2.跳字模型(Skip-gram)
三、CBOW模型训练过程
前言
在机器学习里的自然语言处理,是将语料库中的词语转换成词向量矩阵,再使用朴素贝叶斯算法对其进行预测。这篇文章要讲的是深度学习里关于自然语言处理的一些概念
一、词嵌入(Embedding)
1.传统自然语言处理问题
- 早期的模型没有考虑到词序和上下文关系,使得模型无法捕捉句子中词之间更复杂的语义联系
- 某些传统算法可能需要大量的计算和存储资源,影响其可扩展性
例如:
- 一个语料库有4960个词语
- 每个词语的独热编码都是4959个0和1个1按顺序组成
- 第一个词语就是[000000...0001],第二个[0000...0010],依此类推
- 将其转换成词向量矩阵就是(4960*4960)
- 每一行数据就是一个词
- 如果语料库很大,那么就会出现维度灾难
- 使用词嵌入解决这种情况
2.什么是词嵌入
- 词嵌入(Word Embedding)是一种将词语转换为固定长度的向量表示的技术。这种表示方式能够捕捉词语之间的语义关系和上下文信息,使得计算机能够更好地理解自然语言。
- 例如将一个词向量为(1*4960)的词语乘以一个(4960*300)的矩阵,将其变成(1*300)的词向量矩阵,从而达到降维的目的,解决了维度灾难。
- Word2vec模型就是一种词嵌入方法
3.主要特点
- 低维表示:词嵌入将高维的词汇表转换为固定长度的稠密向量,通常在几十到几百维之间。
- 语义相似性:在嵌入空间中,语义相近的词会被映射到相近的向量位置。例如,“king”和“queen”会在向量空间中距离较近。
- 捕捉上下文:词嵌入能够通过上下文信息捕捉词的多义性和用法变化。
二、Word2vec模型
- Word2Vec是由Google的研究团队提出的一种用于词嵌入的模型,旨在将单词转换为向量,以便于计算机理解和处理自然语言。
- 它能够捕捉词与词之间的语义关系,并在许多自然语言处理任务中得到了广泛应用。
1.连续词袋模型(CBOW)
- 目标是在给定上下文(周围词)的情况下预测中心词。
- 例如,在句子“我喜欢学习”中,如果上下文是“我”和“学习”,模型的目标是预测“喜欢”。
- 即输入“我”和“学习”的独热编码,预测“喜欢”的独热编码
2.跳字模型(Skip-gram)
- 目标是根据中心词预测其上下文。
- 例如,在句子“我喜欢学习”中,如果中心词是“喜欢”,模型的目标是预测“我”和“学习”。
- 输入“喜欢”的独热编码,预测“我”和“学习”的独热编码
三、CBOW模型训练过程
- 当前词的上下文词语的one-hot编码输入到输入层。
- 这些词分别乘以同一个矩阵W(V*N)后分别得到各自的1*N 向量。
- 将多个这些1*N 向量取平均为一个1*N 向量。
- 将这个1*N 向量乘矩阵 W'(N*V) ,变成一个1*V 向量。
- 将1*V 向量softmax归一化后输出取每个词的概率向量1*V
- 将概率值最大的数对应的词作为预测词。
- 将预测的结果1*V 向量和真实标签1*V 向量(真实标签中的V个值中有一个是1,其他是0)计算误差
- 在每次向前传播之后反向传播误差,不断调整 W(V*N)和 W'(N*V)矩阵的值。
拿一个词语为4960个的语料库来举例,使用CBOW模型完成词嵌入:
- 假设选取上下各选两个词语,输入层每一个神经元接收一个词语的独热编码,然后将其乘以第一个权重w1(4960*300)的矩阵,将结果(1*300)的矩阵传入中间层
- 中间层将输入层传入的四个结果组合成一个(4*300)的矩阵,然后再对每一列进行求和得到(1*300)的矩阵,将该矩阵传入输出层
- 输出层接收到中间层传入的(1*300)的矩阵,将其乘以第二个权重w2(300*4960)的矩阵,得到(1*4960)的矩阵,每一列就是每个词语的预测结果
- 对矩阵进行归一化,得到的每一列都是一个词语的概率值
- 概率值最大的即为预测词
- 然后将该词的预测结果与真实标签进行误差计算
- 在每次向前传播之后反向传播误差,不断调整w1和w2的值