word2vec学习

本文深入解析了语言模型、n-gram、词向量、word2vec及CRF的关系,阐述了word2vec的工作原理,包括CBoW和Skip-gram模型,以及Hierarchical Softmax和Negative Sampling的使用。同时,对比了word2vec与n-gram、HMM等方法的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        今天看了@皮果提word2vec中的数学原理详解,受益匪浅,终于搞清楚了一直以来零零散散看的语言模型、n-gram、词向量、word2vec、CRF之间的关系,并且对word2vec的理解深入了一个level,用本篇博文来对要点总结,详细了解请移步原博文word2vec中的数学原理详解

一、语言模型与n-gram、词向量、word2vec、HMM、CRF之间的关系

  • 语言模型一般是指统计语言模型,是用来计算一个句子的概率的概率模型:
    p\left ( W \right )=p\left ( w_{1}^{T} \right )=p\left ( w_{1}, w_{2},...,w_{T}\right )
  • 语言模型通常基于语料库来构建,通过Bayes公式来链式分解成多个语言模型参数的乘积:
    p\left ( W \right )=p\left ( w_{1}^{T} \right )=p\left ( w_{1}, w_{2},...,w_{T}\right )=p\left ( w_{1} \right )p\left ( w_{2}|w_{1} \right )p\left ( w_{3}|w_{1}^{2} \right )...p(w_{T}|w_{1}^{T-1})
  • 链式分解后的语言模型参数可以通过n-gram模型、决策树、最大熵模型、最大熵马尔科夫链、条件随机场、神经概率语言模型等方法来计算得到。
    > n-gram假设一个词的出现概率仅与它之前的n-1个词有关系,将概率值计算好存储下来,下次计算只需要找到相关的概率参数连乘
    p\left ( w_{k} |w_1^{k-1}\right )\approx p\left ( w_{k} |w_{k-n+1}^{k-1}\right )
    > 神经概率语言模型构造含参数的(对数)似然函数,并将其最大化来得到相应的训练好的参数,不同的神经网络方法就不同在对于似然函数构造的不同
    L=\sum_{w\in C}log~p\left ( w|Context\left ( w \right ) \right )
    神经概率语言模型相比于n-gram的优势在于:1.在用的时候不需要存储相关的概率参数,直接计算似然函数即可;2.词语之间的相似性可以通过词向量体现;3.自带平滑化功能,不需要像n-gram那样额外平滑处理。
  • 在训练语言模型的过程中通常会得到副产品——词向量。
  • 词向量有one-hot representation和distributed representation两种,其中distributed representation由Hinton在1986年提出,与one-hot representation相比的优势在于:短向量、在词向量空间中有距离的概念能够引入相似性。
  • 词向量可以由LSA、LDA、神经网络算法等得到,其中基于神经网络的方法由百度IDL的徐伟提出、最经典的是Bengio在2003年的论文"A Neural Probabilistic Language Model"(这也是word2vec的前身)、现在最常用的是谷歌Tomas Mikolov团队的word2vec。word2vec是目前最常用的一种词向量,但并不是唯一的一种词向量。

二、word2vec

        word2vec由谷歌Tomas Mikolov团队在“Exploiting Similarities among Languages for Machine Translation"中提出,是目前最常用的一种词向量,但并不是唯一的一种词向量。word2vec有CBoW(Continuous Bag-of-Words Model)和Skip-gram(Continous Skip-gram Model)两种模型,其中CBoW是两边推中间p\left ( w|Context\left ( w \right ) \right )、Skip-gram是中间推两边p\left ( Context\left ( w \right ) \right |w);每种模型又可由Hierarchical Softmax和Negative Sampling两种结构导出,其中Hierarchical Softmax采用Huffman树将Bengio输出层的softmax计算简化为多层二分类、Negative Sampling采用随机负采样来得到负样本(也即不想要预测得到的词)进行训练。

1. Bengio在2003年的论文"A Neural Probabilistic Language Model"(word2vec的前身)

p\left ( w|Context(w) \right )=\frac{e^{y_{w,i_{w}}}}{\sum_{i=1}^{N}e^{y_{w,i}}}

2. CBoW + Hierarchical Softmax

p\left ( w|Context(w) \right )=\prod_{j=2}^{l^{w}}p\left ( d_{j}^{w}|x_w,\theta _{j-1}^{w} \right )

其中,p\left ( d_{j}^{w}|x_w,\theta _{j-1}^{w} \right )=\left [ \sigma \left ( x_{w}^{T} \theta _{j-1}^{w}\right ) \right ]^{1-d_j^w}\cdot \left [ 1-\sigma \left ( x_{w}^{T} \theta _{j-1}^{w}\right ) \right ]^{d_j^w}

3. Skip-gram + Hierarchical Softmax

p\left ( Context(w) | w\right )=\prod_{j=2}^{l^{u}}p\left ( d_{j}^{u}|v(w),\theta _{j-1}^{u} \right )

其中,p\left ( d_{j}^{u}|v(w),\theta _{j-1}^{u} \right )=\left [ \sigma \left ( v(w)^{T} \theta _{j-1}^{u}\right ) \right ]^{1-d_j^u}\cdot \left [ 1-\sigma \left ( v(w)^{T} \theta _{j-1}^{u}\right ) \right ]^{d_j^u}

4. CBoW + Negative Sampling

g\left ( w \right ) = \sigma \left ( x_w^T\theta ^w \right )\prod_{u\in NEG\left ( w \right )}\left [ 1-\sigma \left ( x_w^T\theta ^u \right ) \right ]

5. Skip-gram + Negative Sampling

三、fastText

        fastText是由Facebook开源的工具包,网址在:https://fasttext.cc/,代码在:https://github.com/facebookresearch/fastText。fastText主要有两个功能(摘自https://jepsonwong.github.io/2018/05/02/fastText/):

  • 训练词向量,相对于word2vec来说,增加了subwords特性。subwords其实就是一个词的character-level的n-gram。比如单词”hello”,长度至少为3的char-level的ngram有”hel”,”ell”,”llo”,”hell”,”ello”以及本身”hello”。
  • 文本分类,一层word embedding的隐层+输出层。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值