吴恩达《深度学习》第五门课(2)自然语言处理与词嵌入 (2)

(1)使用Skip-Gram模型,其做法首先是上下文c进行采样,然后目标词就会在上下文c的正负10个词距内进行采样。换言之,在句子“I want a glass of orange juice to go alone with my cereal”,这时选择上下文c假设是orange,然后再距离orange10以内的词出现某个词的概率,比如选中glass,这时glass就是相当于(输出的标签)y,而orange是x

(2)Skip-Gram可以理解为取一个词,然后在这个词周围出现什么词的概率比较大,用这样来构造一个监督学习,其目的就是为了学习嵌入矩阵。

(3)网络示意图和代价函数如下所示(其中y,y帽都是用one-hot表示的,y是上下文orange在一定词距范围内随机取到的一个词):

吴恩达《深度学习》第五门课(2)自然语言处理与词嵌入

吴恩达《深度学习》第五门课(2)自然语言处理与词嵌入

吴恩达《深度学习》第五门课(2)自然语言处理与词嵌入

(4)采用上述的算法有一个问题就是计算量非常大,因为根据损失函数来看,其求和操作很慢因为词汇量非常大可能达到百万。解决的办法有分级(hierarchical)的softmax分类器和负采样(Negative Sampling)。

(5)分级的思路是(以10000个词汇为例),第一个分类器先告诉你目标词在前5000还是后5000,然后第二个分类器告诉你是前2500还是后2500,这样计算复杂度是词汇输取对数,而不是线性的。另外所形成的树一般常见的词在比较浅的地方,少见的词在更深的地方,如下图所示。

吴恩达《深度学习》第五门课(2)自然语言处理与词嵌入

2.7负采样

(1)负采样可以将上面的sotfmax变成一个二分类问题,这样可以大大减小计算量。

(2)负采样的做法是在选定上下文词,然后在上下文词限定的范围内(如10个词内)选取一个目标词,然后网络的输出为1,再在字典随机选取K个词当成负样本(即使选的词在上下文的限定范围内的词也没关系),然后网络的输出为0。如下图所示:

吴恩达《深度学习》第五门课(2)自然语言处理与词嵌入

(3)一个样本对对应了一个二分类器(即输出只有一个神经元(实质上是只看softmax10000维中对应target词汇的那个维度),计算非常之简单),与之前的sotfmax(输出有10000个神经元)对比如下:

吴恩达《深度学习》第五门课(2)自然语言处理与词嵌入

吴恩达《深度学习》第五门课(2)自然语言处理与词嵌入

(4)如何选取样本按照以下的方式,其中f(wi)是观测到的在语料库中的某个英语词的词频率。

吴恩达《深度学习》第五门课(2)自然语言处理与词嵌入

2.8GloVe词向量

(1)Xij表示单词i在单词j上下文中出现的次数,所以这里的i和j就和target和context的功能一样,所以可以认为Xij等于Xji。

(2)目标函数是最小化下面的式子(约定Xij为0时,f(Xij)也为0,约定0log0=0,f(Xij)是一个权重):

吴恩达《深度学习》第五门课(2)自然语言处理与词嵌入

2.9情感分类

(1)案例1:输入x是一段文字,而输出y是你要预测的相应情感,比如说是对一个餐馆的评价的星级,分数为1-5。

吴恩达《深度学习》第五门课(2)自然语言处理与词嵌入

(2)直接下载使用别人用非常大数据集训练好的嵌入矩阵即可。

(3)方法一使用以下的网络,每个单词one-hot之后经过嵌入矩阵,形成词嵌入,然后将所有单词的特征进行平均,再将平均值送入到softmax中得到最终的评分。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwfdxg.html