开篇Richard教授总结了深度学习如何应用于NLP领域,包括:
自然语言处理(NLP)是什么,语言的特点,NLP的难点;
深度学习(DL)和经典的机器学习(ML)相比有哪些优势,DL在工程中的应用发展历程;
NLP的几种应用场景
接下来,跟随Richard一起学习NLP之词向量模型,词向量模型是将词语表达为数值向量的过程,这是进行数值计算的前提,也是NLP工作开展的第一步。
one-hot
one-hot 数值表达单词的方法很直接,将此库单词数标记为向量的长度,每个词向量的分量只有一个为1,其余全为0,1的位置对应该词在词典的位置,比如:
adore 表示为[ 0,0,0,1,...,0,0 ]
respect 表示为[0,1,0,0,...,0,0]
这种表示方法的优点是简洁,每个词分配一个编号,比如 adore 编号为102,respect 编号为34214,配合最大熵,SVM等算法可以完成NLP的一些任务。但缺点也很明显:
维数灾难. 如果有10万单词,维数就是10万。
词汇鸿沟.不能很好地刻画词语与词语间的相似性,adore和respect的词向量是正交的,反映不出它们是同义词。
强稀疏性.
word vectors
一个单词的意思总是通过与它邻近的那些单词定义,这是NLP中最成功的idea之一。当一个单词 w 出现在文本中,w 的上下文就是在fixed-size窗口内的单词集合,例如 w 为 banking 时,它的语义可以通过以下三个句子的 banking 的上下文推断。
正是通过单词 w 的上下文确定 w 意思的想法,才有了下面的分布的、稠密的词向量表达,克服了 one-hot 表达的缺点。
基于此想法构建 w 的词向量,同 w 有相似上下文的那些单词,也会与 w 有相似的词向量,如 linguistics 表达为:[ 0.2860.792−0.177−0.1070.109−0.5420.3490.271 ],注意无特殊说明,向量一般都指列向量。
有时也称 word vectors 为 word embeddings, 或 word resprensentations.
Word2vec
Mikolov etal.2013利用单词的意思通过其上下文确定的思想,开源了一个学习词向量的框架:Word2vec模型。Word2vec 的主要思想:
基于超大的文本集
每一个单词都用向量表达
文本有单词 c 和 c 外的上下文单词集合 o组成,扫描文本中的每一个位置 t
利用单词 c 的向量 和其上下文 o 的向量之间的相似性,计算给定 c 时 o 的概率(或已知 o 时 c 的概率).
计算调整词向量使得上步的概率值最大
当文本扫描到位置 t 即单词 into 时,假定上下文窗口尺寸定义为 2 ,into 的上下文为前、后共 4 个位置,分别计算 4 个概率 : P(Wt+j | Wt)
下一个位置上的单词为 banking,同样计算 4 个概率:
更一般地,在已知中心词 wj 和 wj 的上下文窗口尺寸为 m 下,预测 wj 的上下文窗口的单词集合,即求窗口内几个单词都出现的概率,如下,T 为整个文本的单词个数,参数 theta 就是需要求解优化的参数:
目标函数中参数 theta 是待求解的,但是概率 P 是需要提前求解的,如何求解呢?
在这个模型中,处于文本中的每一个单词要么是中心词,要么是上下文,每个单词 w 用 2 个向量来表达:
当 w 是中心词,对应的向量为 Vw
当 w 是上下文词,对应的向量为 Uw
然后,对于中心词 c 和上下文词 o,给定 c 时 o 出现的概率可以表达为一个softmax函数:
分子中向量 Vw 和 Uw 相似性(相关性)越大,则分子越大;分母取e后,相当于对文本中的所有单词进行了正则处理。
More details
截止目前,我们都是已知中心词预测上下文单词,这就是Skip-grams (SG)模型;反过来,如果已知上下(bagof contextwords)预测中心词,称为ContinuousBagofWords(CBOW)
注意到词库单词数亿级时,求成本函数的梯度便是亿级的,迭代更新一次将会很慢! 解决办法是每次迭代时,选择一批窗口作为样本,更新样本的窗口参数,这种方法称为 Stochasticgradientdescent(SGD)
如果样本出现负样本噪声时,需要对目标函数适当做适当修正,可以参考 google 的DistributedRepresentationsofWordsandPhrasesandtheirCompositionality”(Mikolov etal.2013).
关于算法channel
算法channel是一个工程与学术相结合的原创笔记分享平台,提供包括基础算法,机器学习,深度学习,NLP,工具库使用等10余个频道,如果你对算法和人工智能感兴趣,欢迎在公众号后台点击「交流群」。