赞
踩
1.初始化一个embedding权重矩阵W1(N*D)→
2.根据输入单词直接挑出W1矩阵中对应的行向量→
3.相加并求平均得一个向量(1*D)→
4.和W2矩阵(D*N)相乘得最终预测置信度(1*N)→
5.经过softmax得概率(1*N)(注:N为词典大小,D为词向量维度)。
优化【word2vec的训练流程】的第4、5步的计算效率。由于softmax计算分母要求和,在上文第4步时,每预测一个单词,都要进行一次计算,可以看出计算量和词典大小有关(W2矩阵为D“*N)。那我不用softmax函数(虽然叫层次softmax,但并没有用到softmax函数)不就得了;
第二个优化就是减少W2权重矩阵的个数。
1. 先构造一棵哈夫曼树,这棵树在词典确定好之后就可以构建了:把词频作为权重去构造哈夫曼二叉树,导致权重大的,即经常出现的词更靠近根节点(具体构造方法网上有很多资料)。构造好之后,叶节点涵盖了词典内所有的词,而每个非叶节点上的词频权重可以扔掉了,这些节点在下一步会被赋予新的需要计算的权重,每个节点上的权重形状为D*1。
2. 在【word2vec的训练流程】的第4步,W2不再是一个D*N的矩阵,而是D维度不变,N维度对应哈夫曼树从根节点到预测叶节点走过的节点数,比如我预测一个深
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。