【发布时间】:2017-01-27 11:20:40
【问题描述】:
在我为简单的线性回归问题实施了梯度下降的 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。我怎样才能避免这种情况?
- 在等式中,σ² 是误差的方差(对吗?)。我的价值观完全一致。为什么我的 var 值大于 100?
【问题讨论】:
标签: python machine-learning tensorflow