gpt4 book ai didi

python - 最大似然线性回归 tensorflow

转载 作者:行者123 更新时间:2023-11-28 22:30:53 28 4
gpt4 key购买 nike

在我为一个简单的线性回归问题实现了梯度下降的 LS 估计后,我现在正尝试对最大似然法执行相同的操作。 我使用了 wikipedia 中的这个方程式.必须找到最大值。

train_X = np.random.rand(100, 1) # all values [0-1)
train_Y = train_X
X = tf.placeholder("float", None)
Y = tf.placeholder("float", None)
theta_0 = tf.Variable(np.random.randn())
theta_1 = tf.Variable(np.random.randn())
var = tf.Variable(0.5)

hypothesis = tf.add(theta_0, tf.mul(X, theta_1))
lhf = 1 * (50 * np.log(2*np.pi) + 50 * tf.log(var) + (1/(2*var)) * tf.reduce_sum(tf.pow(hypothesis - Y, 2)))
op = tf.train.GradientDescentOptimizer(0.01).minimize(lhf)

此代码有效,但我对此仍有一些疑问:

  • 如果我将 lhf 函数从 1 * 更改为 -1 * 并最小化 -lhf(根据等式),它确实不行。但是为什么?
  • lhf 的值在优化过程中上下波动。不应该只朝一个方向改变吗?
  • 在优化过程中,lhf 的值有时是 NaN。我怎样才能避免这种情况?
  • 在等式中,σ² 是误差的方差(对吗?)。我的值(value)观完全一致。为什么我得到的 var 值大于 100?

最佳答案

您问题中的症状表明存在一个常见问题:学习率或步长对于该问题而言可能过高。

当学习率过高时,锯齿形行为(其中要最大化的函数上下波动)很常见。特别是当你得到 NaN 时。

最简单的解决方案是降低学习率,方法是将当前学习率除以 10,直到学习曲线平滑并且没有 NaN 或上下行为。

当您使用 TensorFlow 时,您还可以尝试 AdamOptimizer,因为它会在您训练时动态调整学习率。

关于python - 最大似然线性回归 tensorflow ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41885665/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com