Long Short Term 网络(LSTM,由Hochreiter & Schmidhuber (1997)提出)是 RNN的一种特殊的类型,可以记住长期信息,学习长期依赖信息。
网络结构
符号解释
- [,]: 向量拼接
- *: 对应元素相乘
- +: 对应元素相加
- 上面框: 一个框就是一个细胞(cell)
数学公式
公式含义
每个细胞内部有三个阶段: 1. 忘记阶段(1)
- 对上一个节点传进来的输入c(t-1) 进行选择性忘记。“忘记不重要的,记住重要的”。
2. 选择记忆阶段(2)和(3)
- 对当前输入x(t) 进行选择记忆。哪些重要则着重记录下来,哪些不重要,则少记一些。
- 当前的输入内容由 (3) 计算其代表的信息。
- (2) 为门控信号,控制信息保留百分之多少。
(4) :将上面两步得到的结果相加,即可得到传输给下一个状态的c(t)。
3. 输出阶段(5)和(6)
- 这个阶段将决定哪些将会被当成当前状态输出。
- (5) 控制输出百分比。
- 对c(t) 进行了放缩(tanh激活函数实现)。
输出Y(t)是通过h(t)变化得到的。
操作实例
假如做文本分类,经过句子分割、分词、去停用词、给每个句子填补成相同的长度(可以用0填补),获取每个词语的词向量
- 设每个句子填补后都是28个词 - 词向量维数设为28 - 则每个句子都是一个28*28的矩阵,每一行代表一个词向量,一共28行(28个时间步骤,在网络上对应28个cell,即上面网络结构中需要画出28个框框),对应于网络结构中的x(1),x(2),…,x(28)的取值。
设每一个框的输出h是一个128维的向量,则对于每个样本(每个句子28*28):
一些细节
- cell权重共享
cell 的权重是共享的,这是什么意思呢?这是指网络结构有三个绿色的大框,代表三个 cell 对吧,但是实际上,它只是代表了一个 cell 在不同时序时候的状态,所有的数据只会通过一个 cell,然后不断更新它的权重。 - 一层的 LSTM 的参数个数
上面例子中参数个数一共:128X156X4(为啥不是128X156X4+128X1X4?) 以上参数不包括y(t)部分的参数。 - 长时记忆和短时记忆
cell 最上面的一条线的状态即 c(t) 代表了长时记忆,而下面的 h(t)则代表了工作记忆或短时记忆 - 源码
num_units:num_units这个参数的大小就是LSTM输出结果的维度。例如例子中num_units=128, 那么LSTM网络最后输出就是一个128维的向量。
参考资料 LSTM网络结构图来源 数学公式图来源 数学公式含义来源 操作示例资料来源 LSTM 的 cell 里面的 num_units 解释 LSTM cell结构的理解和计算
|