【NLP】word2vec哈夫曼编码/层次softmax

本文回顾了word2vec的训练流程,并详细解释了为何要使用哈夫曼编码和层次softmax来优化计算效率,尤其是减少了与词典大小相关的计算量和权重矩阵的个数。通过构建哈夫曼树,将原来的全词典softmax转换为针对路径的二分类问题,从而加速训练过程。
摘要由CSDN通过智能技术生成

一、回顾word2vec的训练流程:

1.初始化一个embedding权重矩阵W1(N*D)→

2.根据输入单词直接挑出W1矩阵中对应的行向量→

3.相加并求平均得一个向量(1*D)→

4.和W2矩阵(D*N)相乘得最终预测置信度(1*N)→

5.经过softmax得概率(1*N)(注:N为词典大小,D为词向量维度)。

二、为什么要进行哈夫曼编码/层次softmax?

优化【word2vec的训练流程】的第4、5步的计算效率。由于softmax计算分母要求和,在上文第4步时,每预测一个单词,都要进行一次计算,可以看出计算量和词典大小有关(W2矩阵为D“*N)。那我不用softmax函数(虽然叫层次softmax,但并没有用到softmax函数)不就得了;

第二个优化就是减少W2权重矩阵的个数。

三、如何进行哈夫曼编码/层次softmax?

1. 先构造一棵哈夫曼树,这棵树在词典确定好之后就可以构建了:把词频作为权重去构造哈夫曼二叉树,导致权重大的,即经常出现的词更靠近根节点(具体构造方法网上有很多资料)。构造好之后,叶节点涵盖了词典内所有的词,而每个非叶节点上的词频权重可以扔掉了,这些节点在下一步会被赋予新的需要计算的权重,每个节点上的权重形状为D*1。

2. 在【word2vec的训练流程】的第4步,W2不再是一个D*N的矩阵,而是D维度不变,N维度对应哈夫曼树从根节点到预测叶节点走过的节点数,比如我预测一个深

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值