【问题标题】:Is tensorflow embedding_lookup differentiable?tensorflow embedding_lookup 是否可微分?
【发布时间】:2018-06-18 09:38:05
【问题描述】:

我遇到的一些教程描述了使用随机初始化的嵌入矩阵,然后使用tf.nn.embedding_lookup 函数来获取整数序列的嵌入。我的印象是,由于embedding_matrix 是通过tf.get_variable 获得的,优化器会添加适当的 ops 来更新它。

我不明白的是,反向传播是如何通过查找功能发生的,这似乎是硬而不是软。这个操作的梯度是多少?它的输入 ID 之一?

【问题讨论】:

    标签: tensorflow nlp deep-learning word-embedding sequence-to-sequence


    【解决方案1】:

    嵌入矩阵查找在数学上等效于单热编码矩阵的点积(请参阅this question),这是一种平滑的线性运算。

    例如,下面是对索引3 的查找:

    这是渐变的公式:

    ... 其中左侧是负对数似然的导数(即目标函数),x 是输入词,W 是嵌入矩阵,delta 是误差信号.

    tf.nn.embedding_lookup 已经过优化,因此不会发生 one-hot 编码转换,但反向传播根据相同的公式工作。

    【讨论】:

    猜你喜欢
    • 2016-05-19
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    • 2020-02-04
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    相关资源
    最近更新 更多