最近看一些基于LSTM网络的NLP案例代码,其中涉及到一些input_size, num_hidden等变量的时候,可能容易搞混,首先是参照了知乎上的一个有关LSTM网络的回答https://www.zhihu.com/question/41949741, 以及github上对于LSTM比较清晰的推导公式http://arunmallya.github.io/writeups/nn/lstm/index.html#/3, 对于lstm cell中各个门处理,以及隐含层的实际物理实现有了更深刻的认识,前期一些理解上还模糊的点 也在不断的分析中逐渐清晰。
首先给出LSTM网络的三种不同的架构图:
![c8be45f4e3bbb5ade7fb1cc0d57cacfc.png](https://img-blog.csdnimg.cn/img_convert/c8be45f4e3bbb5ade7fb1cc0d57cacfc.png)
其中前两种是网上最常见的,图二相对图一,进一步解释了cell内各个门的作用,但是在实际的神经网络中,各个门处理函数 其实是由一定数量的隐含层神经元来处理,在RNN中,M个神经元组成的隐含层,实际的功能应该是f(wx + b), 这里实现了两部,首先M个隐含层神经元与输入向量X之间全连接,通过w参数矩阵对x向量进行加权求和,其实就是对x向量各个维度上进行筛选,加上bias偏置矩阵后,通过f激励函数, 得到隐含层的输出。而在LSTM Cell中,一个cell 包含了若干个门处理函数,假如每个门的物理实现,我们都可以看做是由num_hidden个神经元来实现该门函数功能, 那么每个