LSTM的训练过程
首先要保证训练集的顺序是有意义的(比如语义训练)
优化器也是用梯度下降,但是为了计算方便,发明了BP算法的进阶版本—BPTT
但是这里没有细讲,反正到时候都是直接调用的,大致和BP差不多
RNN的训练和一般网络不太一样,RNN的损失值对于参数的变化是非常陡峭的。
那么在训练时会有两种情况发生:踩在平原上 or 踩在悬崖上
踩在平原上,梯度很小,只能盲目Update,如果凑巧跨过悬崖的话Loss会剧烈变化
踩在悬崖上,梯度很大,很可能步子太大扯到蛋
那么要怎么解决这个问题呢?—Clipping 就是给梯度一个上限,防止它步子太大
为什么RNN会有这种特性呢?
上图中可以看到,由于循环的特性导致参数对输出的影响极大。
且在1左侧梯度小,在1右侧梯度大。