cs224n 2019春季学习笔记 01 word2vec

参考资料:https://www.bilibili.com/video/av61620135/?p=2&t=2024

 

word2vec的核心思想在于,定义一个词的意思,取决于这个词的邻居。这是word2vec的核心思想。

基于这个概念,提出两个模型,其中一个skip模型,其核心思想在于,由中心词推断中心词c附近k个单位词u_{k}

在给定的所有样本文本中,文本单词长度为T,总文本数为W。按文本中顺序每一个词逐一将作为中心词,进行附近词的推断,则进行T词中心词推断。

对每一个中心词而言,衡量其与另一个词作为邻居关系的公式为V_{c}\cdot U_{o}。作为备选附近词的U_{o},共有W个,为了比较备选词成为附近的可能性,用softmax公式,来表示最终的每个候选词成为V_{c}附近词的可能性。

对一个备选词而言的计算公式:P(o\mid c)=\frac{e^{U_{o}\cdot {V_{c}}}}{\sum{e^{U_{w}\cdot {V_{c}}}}}

对一个中心词而言,只需要其实际的附近词计算的P(o\mid c),尽可能大即可。

 

以上为word2vec核心总结。

 

1,训练采用mini batch采用32或者64 计算更快,因为GPU更偏爱整个

2,训练采用随机梯度下降 stochastic gradients with word vectors

讲完完整的word2vec skip,模型后,需要解决训练速度问题,故引出下一个概念——负采样。

目标是中心词实际附近词对应的概率越高越好,但在计算P(o\mid c)时,我们计算了所有词共计W和中心词的距离。计算量大,为了减小计算量,加快速度。采用了负采样的方法,不计算W个词,而是从非实际腹肌词中随机采样n-k个词进行计算。将W换为n

提出的采样方法,根据频率去采样,将频率去3/4对数,减小高频词的采样,增加低频词的采样。

 

补充对采样的理解:

 

在python中的实现采样的代码为

 

df.sample(n=None, frac=None, replace=False, weights=None, random_state=None,axis=None)

n:指定抽取的样本量,(这里我设定的是小类数据的1.05,即 n = N*(1+0.05))

frac:指定抽取的样本比例;

replace:是否有放回抽样,默认无放回。(对于不平衡数据欠抽样时,将replace=False)

weights:指定样本抽中的概率,默认等概论抽样;

random_state:指定抽样的随机种子,可以使得每次抽样的种子一样,每次抽样结果一样

axis:是选择抽取数据的行还是列。axis=0的时是抽取行,axis=1时是抽取列

 

 

 

 

 

你可能感兴趣的:(cs224n,深度学习,学习笔记)