为什么回归 LSTM 学习从高到低的输入明显优于从低到高的学习?

人工智能 神经网络 长短期记忆
2021-11-17 01:01:17

我遇到的具体问题是学习关系x2. 我有一个 0 到 19 的数组(输入值)和一个 0、1、4、9、16、25、36 等的目标数组,一直到192=361。

我有以下 LSTM 架构:

1 input node
1 output node
32 hidden units

现在,有趣的是,我不小心错误地训练了我的网络,因为我在训练时忘记了反转预期的输出列表。所以我训练了网络:

0361132422893256...174181190

从学习率 1 开始,每 400 个 epoch 减半,在 3000 个 epoch 之后,我的错误(从数百万开始)是 0.2。

但是,当我去纠正这个错误时,我的错误几乎不会低于 100,000。测试网络表明它在低输入时表现良好,但一旦开始达到162从那以后,它真的很难将输出值提高到 250 以上。

我只是想知道是否有人对此有解释,至于为什么 LSTM 努力学习以指数方式增加,但似乎能够学会以指数方式减少就好了。

用代码编辑:

a = np.array([i for i in range(20)])
b = np.array([i**2 for i in range(20)])
np.random.seed(5)
ls = LSTM(1, 1, 32, learning_rate=1, regression=1)
# Input size = 1, output size = 1, hidden units = 32
if 1:
    for k in range(3000):
        total = 0
        for i in range(20):
            ls * a[i]
        for i in range(20):
            total += ls / b[i]
        if k % 400 == 0:
            ls.learning_rate *= 0.5
        print(k, ":", total)
        ls.update_params()
for i in a:
    print(i, ls*i)
#ls.save_state('1.trainstate')
for i in range(20,30):
    print(ls*i)

请注意,此代码使用我使用 numpy 编写的类。如果需要,我也会包含此代码,只是大约 300 行,我不希望任何人经历所有这些

0个回答
没有发现任何回复~