了解分层softmax

时间:2018-11-04 13:46:11

标签: python machine-learning softmax

我是机器学习的新手,所以我花了大约一个星期的时间来了解分层softmax的工作原理,但是我仍然不清楚。如果您帮助我阐明一些细节,将非常有帮助。

我有用X表示的(具有特征的)输入向量和相应的标签y

我实现了霍夫曼树,然后将y(标签)传递给函数(get_huffman_tree),它给了我树,即每个节点都拥有权重的向量(它们如何看起来像吗?就像1个暗矢量,对吗?),它是数字。见下文:

print(get_tree(tree))
print(path_to_leaf(tree,'1'))

[(1240, 1.0, 0), (32, 0.457, 1), (10, 0.503, 4), (3, 0.248, 2), (2, 0.249, 3), (1, 0.25, 5), (0, 0.253, 6)]
[(0, 1), (4, -1), ('0', -1)]

之后,我们可以计算log pi_k = - sum_i(log(1+exp(-delta * w_i * x_j)

此刻,我需要一个大的W矩阵,它由v_i行组成(其中v_i是树中每个节点的向量),我将其与x_j矩阵中的特定X(功能)

此刻,我不知道如何实现它,以及如何使用霍夫曼树中的路径。

然后我们可以计算损失函数=> loss = lambda/2 * ||V||^2 - sum_j(log pi_k_j) -> min (v),并找到其grad(loss),这为我们的权重转移提供了矩阵。

0 个答案:

没有答案