网站开发欠款,composer 发布wordpress,昆明网站开发推广公司,店名注册查询官网Self-Attention和RNN、LSTM的区别
RNN的缺点#xff1a;无法做长序列#xff0c;当输入很长时#xff0c;最后面的输出很难参考前面的输入#xff0c;即长序列会缺失上文信息#xff0c;如下#xff1a; 可能一段话超过50个字#xff0c;输出效果就会很差了 LSTM通过忘…Self-Attention和RNN、LSTM的区别
RNN的缺点无法做长序列当输入很长时最后面的输出很难参考前面的输入即长序列会缺失上文信息如下 可能一段话超过50个字输出效果就会很差了 LSTM通过忘记门、输入门、输出门、记忆单元来有选择性的记忆之前的信息如下 可能一段话超过200个字输出效果才会很差 总结RNN和LSTM无法解决长序列依赖问题而且它们都是序列模型必须上一个做完了才能做下一个无法做并行Self-Attention针对以上的两个问题有以下解决 1、由于集合中的每一个词都会和其他的词做相似度计算所以即使序列再长两个词之间的联系都能通过相似度存储到它们的词向量上保留下来。 2、由于我们将集合中的每一个词都要得到它的Q、K、V并要做相似度计算以及乘和操作所以不需要等前一个词做完了才能做下一个词而是可以很多个词一起做可以做并行如下 而且通过Self-Attention得到的新的词向量具有句法特征和语义特征词向量的表征更完善但是Self-Attention的计算量特别大集合中的每一个单词和其他所有单词都要计算相似度所以在文本量为50个单词左右模型的效果最好。而LSTM虽然没有解决长序列依赖但是它在处理长文本任务时文本量在200个单词左右模型的效果最好
RNN循环神经网络
RNN当前的输出 o t o_t ot取决于上一个的输出 o t − 1 o_{t-1} ot−1作为当前的输入 x t − 1 x_{t-1} xt−1和当前状态下前一时间的隐变量 h t h_t ht隐变量和隐变量的权重 W h h W_hh Whh存储当前状态下前一段时间的历史信息如果我们去掉 W h h ∗ h t − 1 W_{hh} * h_{t-1} Whh∗ht−1RNN就退化为MLP在RNN中我们根据前一个的输出和当前的隐变量就可以预测当前的输出。当前的隐变量也是由上一个隐变量和前一个输出 即当前的输入所决定的 所以RNN其实就是MLP多了一个时间轴能存储前一段时间的历史信息并根据这个历史信息来更新层的参数 同时由于RNN会不加选择的存储前一段时间的历史信息所以如果序列太长即句子太长隐变量会存储太多信息那么RNN就不容易提取很早之前的信。
GRU门控神经网络
为了解决RNN处理不了很长的序列我们可以有选择的存储历史信息通过更新门和重置门来只关注有变化的重点信息 GRU引入了 R t R_t Rt、 Z t Z_t Zt、 H ~ t \widetilde{H}_t H t 其中 R t R_t Rt、 Z t Z_t Zt为控制单元是可以学习的参数由于最后用了sigmoid函数所以范围在(0,1)表示要不要进行Reset和Update操作 其中 H ~ t \widetilde{H}_t H t为候选隐变量跟 R t R_t Rt有关 R t ∗ H t − 1 R_t * H_{t-1} Rt∗Ht−1表示候选隐变量要使用多少过去隐变量的信息 而 H t H_t Ht为真正的新的隐变量跟 Z t Z_t Zt有关 ( 1 − Z t ) ⊙ H ~ t (1 - Z_t)\odot\widetilde{H}_t (1−Zt)⊙H t表示新的隐变量要使用多少当前输入的信息通常情况下GRU会在以下极端情况中进行可学习的调整来决定是多去看当前的输入信息还是多去看前一次的隐变量极端情况如下 当 Z t Z_t Zt为0 R t R_t Rt为1时 H t H_t Ht H ~ t \widetilde{H}_t H t不遗忘前一次的隐变量GRU就退化为RNN当 Z t Z_t Zt为1时不考虑候选隐变量 H t H_t Ht H t − 1 H_{t-1} Ht−1即不使用 X t X_t Xt更新隐变量当前隐变量和上一次的隐变量相同当 R t R_t Rt为0 Z t Z_t Zt为0时 H t H_t Ht H ~ t \widetilde{H}_t H t不使用前一次的隐变量只用 X t X_t Xt来更新隐变量
LSTM长短期记忆网络
LSTM和GRU都是实现这个效果是要多去看现在的输入信息还是要多去看前一次的隐变量即过去的信息但是LSTM可以多实现一个效果什么都不看直接重置清零LSTM中的状态有两个 C t C_t Ct记忆单元、 H t H_t Ht隐变量 注意LSTM额外引入的 C t C_t Ct记忆单元 C t C_t Ct的范围无法保证可以用来增加模型复杂度多存储信息。但是最终仍然需要让 H t H_t Ht的范围仍在(-1,1)之间防止梯度爆炸。注意LSTM中的忘记门、输入门、输出门的具体公式和GRU的更新门、重置门一样 C ~ t \widetilde{C}_t C t候选记忆单元LSTM中的候选记忆单元和RNN中的 H t H_t Ht的计算公式一样没有用到任何门但是由于最后用了tanh()所以范围在(-1,1)之间 C t C_t Ct记忆单元LSTM中的记忆单元和GRU中的 H t H_t Ht不一样记忆单元可以既多看上一个的记忆单元又多看当前的候选记忆单元当前的输入信息 X t X_t Xt。记忆单元也可以即不要上一个的记忆单元又不要当前的候选记忆单元。但是GRU中的 H t H_t Ht为 Z T Z_T ZT和 1 − Z t 1-Z_t 1−Zt所以要么多看上一个的隐变量要么多看当前的候选隐变量 H t H_t Ht隐变量由于 F t F_t Ft和 I t I_t It都是(0,1)而 C ~ t \widetilde{C}_t C t在(-1,1)但是 C t − 1 C_{t-1} Ct−1可以特别大跟 C C C的初始值有关所以上一步的 C t C_t Ct的范围无法保证那么为了防止梯度爆炸我们需要再做一次tanh()变换。 注意此时的 O t O_t Ot来控制要不要输出当前的输入信息和前一次的隐变量当 O t O_t Ot为0时表示重置清零 总结通过引入记忆单元LSTM比GRU更灵活即可以既多看当前的候补记忆单元当前的输入信息 X t X_t Xt又可以多看前一个的记忆单元也可以两者都不看都忘掉。通过引入记忆单元还可以多存储信息。同时保留 H t H_t Ht防止梯度爆炸还能重置清零隐变量
参考文献
11 Self-Attention相比较 RNN和LSTM的优缺点