首页 文章

TensorFlow梯度是否计算对决策变量具有未知依赖性的函数的导数

提问于
浏览
1

如果您能回答我的问题或为我提供有用的资源,我将不胜感激 .

目前,我正在研究一个需要进行交替优化的问题 . 所以,考虑我们有两个决策变量x和y . 在第一步中,我采用损失函数的导数wrt . x(对于固定的y)并更新x . 在第二步,我需要采取衍生工具 . 年 . 问题是x隐含地依赖于y并且以显示x对y的依赖性的方式找到成本函数的闭合形式是不可行的,因此成本函数的梯度wrt . 你不知道 .

1)我的第一个问题是TensorFlow中使用的反向模式中的“autodiff”方法是否适用于这些问题,即我们没有一个显式的成本函数形式和一个变量,我们需要衍生物?实际上,成本函数的 Value 是已知的,但是通过数学对决策变量的依赖性是未知的 .

2)从一般的角度来看,如果我将节点定义为“tf.Variable”并且具有通过代码执行演变的变量的任意难以处理的函数(通过手工计算难以处理),是否可以通过“计算渐变” tf.gradients“?如果是,我怎样才能确保它正确实施?我可以使用TensorBoard检查吗?


我的模型太复杂了,但是可以用这种方式考虑简化形式:假设我的模型的损失函数是L(x) . 我可以在张量流的构造阶段将L(x)编码为“x”的函数 . 但是,我还有另一个变量“k”,它被初始化为零 . 当代码运行时L(x)对“k”形状的依赖性,所以我的损失函数实际上是L(x,k) . 更重要的是,“x”是隐含的“k”的函数 . (所有优化都使用GradientDescent完成) . 问题是我没有L(x,k)作为闭合形式函数,但我在每一步都有L(x,k)的值 . 我可以使用像FDSA / SPSA这样的“数字”方法,但它们并不精确 . 我只需要确保你所说的“k”和L(x,k)之间有一条路径,但我不知道怎么做!

1 回答

  • 0

    TensorFlow渐变仅在您计算dy / dx时连接x和y的图形具有至少一个仅包含可微操作的路径时才起作用 . 一般来说,如果tf给你一个渐变它是正确的(否则提出一个错误,但梯度错误是罕见的,因为所有可微分算术的梯度都经过了充分测试,链规则相当容易应用) .

    您能更具体地了解您的模型是什么样的吗?如果前向并发症过于奇怪而无法表达为固定数据流图,您可能还希望使用急切执行 .

相关问题