下图是我看过对LSTM物理结构描述最清楚的图,参考自LSTM神经网络输入输出究竟是怎样的?(https://www.zhihu.com/question/41949741/answer/318977452)
答主在图中对三种架构有简要的说明,这里根据自己的理解,再对它做进一步的解释。
图中的第一部分是LSTM的时序结构版本,它是单个LSTM Cell在多个时间步上展开的形式,实际上是只有一个Cell,因此也可以理解为LSTM是神经网络在时序上的权重共享(CNN是在空间上的权重共享)。嗯,单个LSTM/RNN是下面这样的。
图中的第二部分是LSTM单个Cell的逻辑结构版本,每一个 $\sigma$ 对应一个 门,从左到右依次为遗忘门,输入门和输出门,时序的传递是在上下两条线中,上面的线对应较长的短时记忆「long short-term memory」,也即隐状态,下面的线对应短时记忆「short-term memory」,也即输出状态,在普通的RNN中,就只有输出状态会反馈到输入。
从控制的角度看,这种时序的传递,其实类似反馈「PS:看来控制没白学hhh」。看一下经典的反馈图:
在控制中,反馈即是把当前输出回传到输入项,和下一时刻的输入共同决定下一时刻的输出,这里输入和输出的组合方式是通过做差得到误差项,然后通过误差项来得到控制量。
在LSTM中,网络的隐状态和输出状态同样会传递到下一个时刻, 和系统下一刻的输入一起共同决定下一刻的输出,这种传递和循环与控制理论中的反馈有异曲同工之妙。这也使得LSTM区别于一般的前馈和卷积神经网络,它能保留历史输入中的重要信息,刻画复杂的历史依赖,和当前输入一起去决定下一个输出。
图中第三部分的物理架构才是这幅图的精髓,看到这部分,才能真正理解LSTM内部的神经网络结构。
LSTM中的每一个门实际上就是一个以sigmoid作为激活函数的全连接层,因为这些门输出都是(0,1)的,也就相当于一个滤波器,0为全部过滤,1为全部通过,以这种方式来保留神经网络认为重要的信息。
LSTM中 'X' 符号对应的是按位做乘法的操作,而不是矩阵的乘法,'+' 号也是按位的加法。
LSTM中一个非常关键的参数,num_units,它是每一个门的神经元个数,它也是输出的维度,在图中它是128。
LSTM的输入和上一时刻的输出是通过concat的形式组合在一起的,然后作为每一个门的输入。
如获至宝的一幅图,希望能帮助大家揭开LSTM的神秘面纱~
@知乎:海晨威
版权声明
本文版权归《海晨威》,转载请自行联系
历史文章推荐:
你正在看吗?👇