#Datawhale_NLP Task5 基于深度学习的文本分类2

文本表示方法Parts3

word2Vec模型

语言模型+训练算法

自然语言处理最细的粒度是词语,词语是人类的抽象总结,是一种符号,对计算机而言是无法识别的。因此,要先把词语表示成可以让计算机识别并处理的数字或向量,这个过程叫做词嵌入(word Embedding)方法。

word2Vec模型
语言模型 CBOW:预测目标单词 SG:预测上下文
训练算法 Hierachical Softmax Negtive Sampling
基本思想
word2vec模型背后的基本思想是出现在上下文环境里的词进行预测。对于每一条输入文本,选取一个上下文窗口和一个中心词,并基于中心词去预测窗口里其他词出现的概率。

两种常见的语言模型的网络结构:
在这里插入图片描述

符号说明:w(t)代表当前词语在句子中位置t,其他记号同理。在这两种语言模型的示意图中,窗口大小为5,除了当前词语之外的其他词语共同构成上下文。

Word2Vec模型实际上分为了两个部分,第一部分是建立模型,第二部分是通过模型获取嵌入词向量。
Word2Vector的整个建模过程实际上与自编码器的思想很相似,即先基于训练数据构建一个神经网络,当这个模型训练好以后,我们并不会以这个训练好的模型处理新的任务,我们真正需要的是这个模型通过训练数据所学的的参数,例如隐层的权重矩阵。后面我们将会看到这些权重在Word2Vec中实际上就是我们试图去学习的“word vectors”。
如果看不懂的话,还有更白话的解释,神仙指路。

语言模型
在统计自然语言处理中,语言模型指的是计算一个句子的概率模型。传统的语言模型中词的表示是原始的、面向字符串的、两个语义相似地词的字符串可能完全不同,比如“土豆”和“洋芋”。字符串本身无法储存语义信息。
神经概率语言模型(Neuaral Probabilistic Language
Model)中词的表示是向量形式、面向语义的。是一种有监督的机器学习模型。
语言模型CBOW
sample
{(Context(w),w)∣w∈C}
{(Context(w),w)∣w∈C}

model
y=f(x)
y=f(x)

goal: 基于训练集数据用机器学习算法得到语言模型f。这样做的好处是:利用这个f的模型参数得到输入x的某种向量化表示。

Input(输入层)是下文词语的词向量(什么!我们不是在训练词向量吗?不不不,我们是在训练CBOW模型,词向量只是个副产品,确切来说,是CBOW模型的一个参数。训练开始的时候,词向量是个随机值,随着训练的进行不断被更新)
Projection(投影层)对其求和,所谓求和,就是简单的向量加法。
Output(输出层)输出最可能的w。由于语料库中词汇量是固定的|C|个,所以上述过程其实可以看做一个多分类问题。给定特征,从|C|个分类中挑一个。
也就是说,softmax回归需要对语料库中每个词语(类)都计算一遍输出概率并进行归一化。(一个词一个类 ????这。。)因此,
为了避免要计算所有词的softmax概率,word2vec采样了霍夫曼树来代替从隐藏层到输出softmax层的映射。在这里插入图片描述
CBOW模型的网络输出层就是一个霍夫曼树。
二分类决策输出1或者0,分别代表向下左转或向下右转;每个叶子节点代表语料库中的一个词语,于是每个词语都可以被01唯一地编码,并且其编码序列对应一个事件序列,于是我们可以计算条件概率
P(w∣Context(w))
P(w∣Context(w))
具体的推算过程可见数学推导。

语言模型Skip-grams
举例说明Skip-grams过程:
假如我们有一个句子“The dog barked at the mailman”。
1、首先我们选句子中间的一个词作为我们的输入词,例如我们选取‘doa’作为input word,称其为中心词;
2、有了中心词,我们再设置一个skip_window
的参数,它代表着我们从当前input word的一侧(左边或者右边)选取词的数量,称其为窗口大小。如果我们设置skip_window = 2,那我们最终获得窗口的词就是[‘The’, ‘dog’,‘barked’,‘at’]。skip_window = 2代表着选取左input word左侧2个词和右侧2个词进入我们的窗口,所以整个窗口大小span = 2*2=4。中心词两侧的词称其为背景词。另一个参数叫做num_skips,它代表着我们从整个窗口中选取多少个不同的词作为我们的output word。语料库中的每一个词都有两种身份,中心词或者背景词。
3、神经网络基于这些训练数据将会输出一个概率分布,这个概率代表着我们的词典中每个词作为input word的ouput word 的可能性。

模型构建:
sample
{(w,Context(w))∣w∈C}
{(w,Context(w))∣w∈C}

model
y=f(x)
y=f(x)

goal: 基于训练集数据用机器学习算法得到语言模型f。这样做的好处是:利用这个f的模型参数得到输入x的某种向量化表示。

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页