onehot和tensorflow中的embedding_lookup有什么关系,为什么词向量会在每一次训练迭代时更新

onehot和embedding_lookup的关系,可以参考这里

主要讲一下,为什么每一次训练迭代,词向量就会更新一次:embedding_lookup不是简单的查表,id对应的向量是可以训练的,训练参数个数应该是 category num*embedding size,也就是说lookup是一种全连接层。啥意思?

1.先解释一下onehot:

        onehot:onehot是通常用来处理文字的数据的方法,比如‘我喜欢你’(假设所有的训练数据就是这4个字)对应的onehot就是 [1000  0100 0010 0001],但是这样的矩阵丢进算法里会造成专家所说的数据太稀疏,因为训练数据肯定会有很多个,矩阵稀疏是我能想到的原因。

2. 如何解决onehot产生的矩阵过于稀疏的问题?——引出为什么词向量会在训练的每一次迭代时更新的原因:

        embedding_look_up来救场,我们用一个去全连接层去和onehot矩阵相乘,那么就会出现,下面的情况:

                     [W11 W12 W13

 

[1000             W21 W22 W23       [W11 W12 W13

0100]     X      W31  W32 W33  =  W21  W22  W23]       这样是很明显的全连接层的做法,而每一次训练,词向量会变化,是因为

                       W41  W42 W44]

我们将Wn1 Wn2 Wn3.......作为对应N词的词向量,当然全连接层的W在训练由于反向传播更新参数。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值