词向量、预训练词向量、Word2Vec、Word Embedding概述

最近在做序列标注项目的时候涉及到了Word Embedding和预训练词向量,发现对这三者的概念不清晰,以前实习用到的Word2Vec也忘的差不多了,故在这里简述三者之间的区别和联系,若有不正确之处还望大家不吝赐教,谢谢!

文章目录

  • 一、词向量
    • (一) 概述
    • (二)表示方法
      • 1. One-Hot
      • 2. Dristributed representation
  • 二、预训练词向量
    • (一) 目的
    • (二) 使用与未使用预训练词向量的区别
  • 三、WordEmbedding
    • (一) 概述
    • (二) Embedding方式
  • 四、Word2Vec

一、词向量

(一) 概述

  1. 词向量:以一定长度的向量形式表示一个字/词。
  2. 使用词向量的原因:将自然语言(Natural Language)转换为计算机可以识别的数字化形式,从而进行机器学习等高阶任务。

(二)表示方法

1. One-Hot

俗称“独热编码”,用0/1的方式表征词语,用于将自然语言转换为计算机可以理解的向量形式的一种转换方法。这种编码方式能够唯一地表示每一个字/词,这个one-hot向量的维度是所有不重复出现的字/词的字典,当前字/词只在某一个维度上向量表示为1,其余维度都为0,例如:

["中国", "美国", "日本", "美国"]--->[[1,0,0], [0,1,0], [0,0,1], [0,1,0]]
“人类”可以被表示为 [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0]的形式,向量长度=词表大小
  1. 实现方法:One-hot Representation可以通过Hash表实现由每个词的index与one-hot向量的映射,例如“花朵”对应在词表中的位置为8,“祖国”在词表中的位置为12,则可以直接映射为one-hot向量中“1”所在的位置。
  2. 特点:实现了数据离散化;词与词间没有语义联系,创建它所需的向量空间大且特征分散,易造成维度爆炸(curse of dimension)。

2. Dristributed representation

一种低维稠密的词向量形式,与one-hot相反,通过词向量模型的训练,使得每个词映射成较短的词向量,词向量之间可以通过统计学方法计算出其相似度,常见的衡量方法有向量cos夹角、欧式距离、曼哈顿距离、信息熵、汉明距离等。例如:

一个词可以表示为类似[0.824,0.256,0.024, 0.271,0.592,]的向量形式
词向量的维度可自定义,例如50100128
  1. 特点:能够通过计算向量间距离和夹角表征词与词之间的语义联系,向量维度低。
  2. 词向量训练模型:Word2Vec、fastText、GloVe、BERT等。

二、预训练词向量

对于训练数据较少的情况下,使用预先训练好的词向量可以使一些目前可解释或不可解释的先验词语信息嵌入到词向量中,而这些先验知识对于下游词向量训练任务,尤其是小数据集来讲很有帮助。预训练词向量的选择主要考虑两个因素:语料和维度

  1. 语料选择需要与训练数据的文本类型保持一致,例如英文对应英文预训练集,中文对应中文预训练集,新闻文本最好对应新闻文本的预训练集。
  2. 预训练词向量的维度要和自定义的词向量维度保持一致。

(一) 目的

通过已训练好的词与词/字与字之间的相关性特征(上下文语言结构)来适用于与之类似的上下文特征,弥补训练数据不足以学习出该语言结构的一般特点。

(二) 使用与未使用预训练词向量的区别

  • 使用预训练词向量将表征具有该预训练词与词关系的语义信息;
  • 随机生成初始化词向量不能通过特定上下文单词的出现来预测target词;
    • 也就是说,如果训练数据中出现该预训练集中存在上下文单词,就可以在之后的神经网络训练后生成一个准确的tag,不需要再反向传播更新传入的权重值,否则需要不断更新权重参数来实现梯度下降到最低点找到最优值。(实际上预训练词向量可以简化梯度下降<模型收敛>的过程,个人理解

三、WordEmbedding

(一) 概述

Word Embedding就是一种词映射关系,将一个词/字X映射到向量空间Y,形成一个多维向量。简单总结,Word Embedding就是生成词向量的一个专有名词。

例如,将一句话 I have an apple映射为向量形式,首先就需要创建这句话对应的字典dic,[“I”, “have”, “an”, “apple”],每个单词对应一个字典id,放入embedding layer进行嵌入训练。

(二) Embedding方式

词嵌入的方式和上述词向量生成方式一致,可以分为:

  1. Frequency based embedding
    - TF-IDF
    - Word Count:根据每个词在字典中出现的频率构建词向量
  2. Prediction based embedding
    - Word2Vec
    - BERT等

四、Word2Vec

  1. 背景介绍:Word2Vec是Google于2013年开发的获取词向量的工具包。
  2. 概述及作用:
    - 用于将自然语言转换为计算机可以理解的向量形式的一种转换方法。
    - Word2Vec可以通过一个词的上下文词语信息计算该词的向量值,使得向量空间具有上下文语义,词和词的向量之间可以通过夹角和距离表征词语的联系。
    - Word2Vec是一种Distributed Representation,生成的向量是低维且稠密的。
  3. 模型训练:Word2Vec是一个简单的神经网络模型,通过输入one-hot词向量,进入神经网络中映射成为更稠密的词向量。通过神经网络训练得到每一个词语的权重,即向量化表示这个词语,生成词向量。Word2Vec有两个训练模型:CBOW(Continuous Bag-of-Words Model)和Skip-gram模型。
    - CBOW:给定上下文预测target word。e.g.: (‘I’, ‘miss’, ‘target word’, ‘very’, ‘much’)
    - Skip-gram:给定一个词预测上下文。e.g.: you→I miss you very much
    词向量、预训练词向量、Word2Vec、Word Embedding概述_第1张图片
  4. 数学原理:参考文献1对于Word2Vec的数学原理介绍较为清晰,可直接点击链接学习。下图是我自己整理的CBOW模型结构及计算方法,Skip-gram原理类似。Stanford CS224D:Deep Learning for NLP中详细解释了有关词向量及其训练方法
    词向量、预训练词向量、Word2Vec、Word Embedding概述_第2张图片
  5. 应用场景:将Word2Vec词向量作为文本特征进行文本分类。

参考文献如下,前人的经验就是我学习路上的奠基石!十分感谢!
参考文献1 Word2Vec数学原理参考书
参考文献2
参考文献3
参考文献4

你可能感兴趣的:(NLP,机器学习,深度学习,自然语言处理)