- 深度学习中的softmax
在进行最优化的求解过程中:从隐藏层到输出的Softmax层的计算量很大,因为要计算所有词的Softmax概率,再去找概率最大的值,所以计算时间会比较久;
- FastText所用的分层softmax:Hierarchical Softmax(层次Softmax)
- 层次softmax存储使用哈夫曼树。
哈夫曼树是一种带权路径长度最短的二叉树,也称为最优二叉树
- 加下来比较下最优二叉树和普通二叉树的区别:
如上图所示:
- 图a中的数字表示权重,图a是常见的二叉树,图b就是图a转换过的最优二叉树。
- 图a中权重表示重要程度,可以看出,D是最重要的,那么有这样一个规则:最重要的放在最前面,由此构造了图b的哈夫曼树。
它们的带权路径长度分别为:
图a:WPL = 5 * 2 + 7 * 2 + 2 * 2 +13 * 2 = 54
图b:WPL = 5 * 3 + 2 * 3 + 7 * 2 + 13 * 1 = 48
可见,图b的带权路径长度较小,我们可以证明图b就是哈夫曼树。
哈夫曼树的构造
例子:
有A B C D 四个词,数字表示词频,构造过程如下:
- 哈夫曼树编码
左子树为0,右子树为1
那么D编码为0,B编码为10,C编码为110,A编码为111。