【NLP训练营】 第二周

本周任务

学课程

学习cs224n第3讲和第4讲

高级词向量表示:word2vec 2

Word Window分类与神经网络

读论文

论文导读:词语义项的线性代数结构与词义消歧

写作业


关于softmax与word2vec,一定要看的两篇好文章:

《word2vec中的数学原理》 : https://www.cnblogs.com/peghoty/p/3857839.html

《谈Softmax激活函数以及Softmax回归和Logistic回归关系》 : https://mp.weixin.qq.com/s/n1alXwE1psus2GK3cfEnpQ

 

第三课笔记

每次更新矩阵时(随机梯度下降的方法更新

),每个窗口就那么点词,所以矩阵会非常稀疏。所以每次只更新W矩阵中的少数列,或者为每个词语建立到词向量的哈希映射(怎么只更新W中的少数列?)

因为归一化因子的计算代价很大。可以用负样本减少计算时间。用在skip-gram里面就是取不是中心词上下文词的词,和中心词组成一对.

这是目标函数,k是我们用的负样本的个数。我们想最大化中心词和上下文词一起出现的概率,再加一个SIGMOD函数,取对数,就是上式的第一项。然后最小化随机与中心词匹配的负样本,就是第二项。U(w)是unigram分布,就是一个词出现的

这个幂使得更少频率的词能够被更经常用到。这是一种平滑策略,可以理解为劫富济贫

任何采样算法应该保证频次越高的样本越容易被采样出来,负采样可以看这篇文章(http://www.hankcs.com/nlp/word2vec.html#h3-12

 负采样和Hierarchical Softmax都是用近似的思想来降低模型的复杂度的。

word2vec将窗口视作训练单位,每个窗口或者几个窗口都要进行一次参数更新。要知道,很多词串出现的频次是很高的。能不能遍历一遍语料,迅速得到结果呢?用共现矩阵可以。

但是共现矩阵:1 出现新词的时候,旧向量的维度都要改变, 2 纬度太高 , 3 高稀疏性。

解决办法:降维

用svd,可以,还能加一些改进:限制高频词,或者用停用词;根据与中心词的距离衰减词频权重;用皮尔逊相关系数代替词频。但是存在的问题:计算复杂度高,n*m的矩阵时O(mn^2)

基于计数的和直接预测的两种模型的优点,我们得到了Glove模型

目标函数是

(关于glove的目标函数没懂?)

 

第四课笔记

对每个训练样本来说,我们的任务就是最大化争取分类y的概率。可以变成最小化它的负对数。

又由于是onehot,所以y中只有一个元素是1,其他都是0。所以这个损失函数等于交叉熵。

H(yhat,y) = -yi * log(yhat i)

若训练集为

那么最终的损失函数就是

 

在词向量的学习中,需要更新的参数有权值矩阵和词向量 参数太多

xi是d维的,是词的embedding表示形式,比如是用了一个300维的向量表示了zebra这个单词。在单词表里一共有V个单词,所以y是一个V维的onehot,每个单词的词向量表示要更新,就是V*d个参数,权重矩阵也要更新,权重矩阵就是乘以词向量x后再进行softmax就是输出的那一个矩阵。(这里C好像是等于V的?)

小常识:如果任务语料非常小,则不必在任务语料上重新训练词向量,否则会导致单词过拟合 。

 

一个现实中的分类任务:window classification

有一个张这样子的向量,可看作是列向量,每一个元素是d维词向量来表示的。可以还用softmax来做。但是!效果并不好。softmax等价于逻辑回归,是单层的网络,没有办法拟合非线性,课程里举得这个例子是为了引出后面的神经网络,对于窗口分类的用softmax的推导我就不写在这了。

一些note:在softmax中有两个费力的运算:W与x的乘法和求exp;for循环是非常没有效率的,要用矩阵乘法一次性做完。

 

神经网络:

神经网络的一般样式

神经网络同时运行多个逻辑回归,但不需要提前指定他们具体预测什么。这一层的多个逻辑回归同事进行,得到的结果继续向下传递到第二层,第二层也是有多个逻辑回归,这样一层层传下去就得到了一个多层网络。

这个f是激活函数,可以用SIGMOD:f(x) = 1 / (1 + exp(-x))

接下来要间隔最大化目标函数,就是怎么把两类分的更准确呢,就要把样本点与分界线之间的距离最大化,这时分的是最合理的。

这实际上是将函数间隔转换为几何间隔,参考SVM:http://www.hankcs.com/ml/support-vector-machine.html#h3-3

U是隐藏层到class的权值矩阵。

然后就可以继续算反向传播了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值