本文受到IndRNN的启发,在此基础上提出了一种更加通用的新的LSTM:IndyLSTMs。与传统LSTM相比循环权重不再是全矩阵而是对角矩阵;在IndyLSTM的每一层中,参数数量与节点个数呈现线性关系而传统的LSTM则为二次,此特性使模型更小更快。与传统的LSTM相比,尽管IndyLSTMs的尺寸较小,但在每个参数的精确度和总体精度方面,它始终优于常规LSTMs。作者将这种性能的改进归功于IndyLSTMs不太容易过度拟合。在速度方面,作者使用IAM-OnDB数据集训练的模型进行对比,结果为使用IndyLSTMs的模型的预测速度平均大约要快20%。
论文地址:
https://arxiv.org/abs/1903.08023
引言
当手写体识别系统运行在用户个人终端时,内存消耗与计算资源占用将会一个重要的影响因素。由于IndyLSTM易训练及不易过拟合的特性,其模型不仅小而快,并且可以获取更好是识别效果。
IndyLSTMs
原始的LSTM
f
t
=
σ
(
W
f
[
h
t
−
1
,
x
t
]
+
b
f
)
f_t=\sigma(W_f[h_{t-1},x_t]+b_f)
ft=σ(Wf[ht−1,xt]+bf)
i
t
=
σ
(
W
i
[
h
t
−
1
,
x
t
]
+
b
i
)
i_t=\sigma(W_i[h_{t-1},x_t]+b_i)
it=σ(Wi[ht−1,xt]+bi)
C
t
^
=
t
a
n
h
(
W
C
[
h
t
−
1
,
x
t
]
+
b
C
)
\hat{C_t}=tanh(W_C[h_{t-1},x_t]+b_C)
Ct^=tanh(WC[ht−1,xt]+bC)
C
t
=
f
t
∗
C
t
−
1
+
i
t
∗
C
t
^
C_t=f_t*C_{t-1}+i_t*\hat{C_t}
Ct=ft∗Ct−1+it∗Ct^
o
t
=
σ
(
W
o
[
h
t
−
1
,
x
t
]
+
b
o
)
o_t=\sigma(W_o[h_{t-1},x_t]+b_o)
ot=σ(Wo[ht−1,xt]+bo)
h
t
=
o
t
∗
t
a
n
h
(
C
t
)
h_t=o_t*tanh(C_t)
ht=ot∗tanh(Ct)
更新的LSTM单元
首先将LSTM单元更新为如下所示:
其中
c
t
c_t
ct为细胞状态,
f
t
、
i
t
、
o
t
f_t、i_t、o_t
ft、it、ot分别为遗忘门、输入门、输出门,
h
t
h_t
ht为隐藏状态。
输入维度为
n
n
n,隐藏层为
m
m
m,矩阵
W
[
f
∣
i
∣
o
∣
c
]
]
W_{[f|i|o|c]]}
W[f∣i∣o∣c]]尺寸为
m
×
n
m \times n
m×n,矩阵
U
[
f
∣
i
∣
o
∣
c
]
U_{[f|i|o|c]}
U[f∣i∣o∣c]的尺寸为
m
×
m
m \times m
m×m,偏置
b
[
f
∣
i
∣
o
∣
c
]
b_{[f|i|o|c]}
b[f∣i∣o∣c]的维度为
m
m
m。
输出/隐藏状态的每个元素的取决于输入向量 x t x_t xt的所有元素,以及 o t − 1 、 h t − 1 o_{t-1}、h_{t-1} ot−1、ht−1的所有元素。
IndyLStm
现在将式(3)重写为:
使用
u
[
f
∣
i
∣
o
∣
c
]
⊙
h
t
−
1
u_{[f|i|o|c]} \odot h_{t-1}
u[f∣i∣o∣c]⊙ht−1代替
U
[
f
∣
i
∣
o
∣
c
]
h
t
−
1
U_{[f|i|o|c]}h_{t-1}
U[f∣i∣o∣c]ht−1即用element-wise乘法代替matrix-vector乘法,
u
[
f
∣
i
∣
o
∣
c
]
u_{[f|i|o|c]}
u[f∣i∣o∣c]的维度为
m
m
m。
输出/隐藏状态的每个元素取决于输入向量
x
t
x_t
xt的所有元素,以及
h
t
−
1
h_{t-1}
ht−1和
c
t
−
1
c_{t-1}
ct−1相应位置的元素。
公式(4)即为IndyLSTM。
参数数量对比
假设输入为 n n n维向量,输出为 m m m维向量,LSTM的参数个数为 4 m n + 4 m 2 + 4 m = 4 m ( n + m + 1 ) 4mn+4m^2+4m=4m(n+m+1) 4mn+4m2+4m=4m(n+m+1),分别表示 W [ f ∣ i ∣ o ∣ c ] ] W_{[f|i|o|c]]} W[f∣i∣o∣c]]、 U [ f ∣ i ∣ o ∣ c ] U_{[f|i|o|c]} U[f∣i∣o∣c]和 b [ f ∣ i ∣ o ∣ c ] b_{[f|i|o|c]} b[f∣i∣o∣c]的尺寸;而IndyLSTM的参数个数为 4 m n + 4 m + 4 m = 4 m ( n + 2 ) 4mn+4m+4m=4m(n+2) 4mn+4m+4m=4m(n+2),分别表示 W [ f ∣ i ∣ o ∣ c ] ] W_{[f|i|o|c]]} W[f∣i∣o∣c]]、 u [ f ∣ i ∣ o ∣ c ] u_{[f|i|o|c]} u[f∣i∣o∣c]和 b [ f ∣ i ∣ o ∣ c ] b_{[f|i|o|c]} b[f∣i∣o∣c]的尺寸。理论上,IndyLSTM的每一步的计算成本大约是LSTM的 n n + m \frac{n}{n+m} n+mn。
Tensorflow实现
在TensorFlow 1.10.0版本中,IndyLSTMs的实现可以通过tf.contrib.rnn.IndyLSTMCell获取。
实验模型
使用在线手写识别作为模型问题,在对比IndyLSTMs和常规LSTMs。
模型采用一层或多层的端到端双向循环结构。
数据集
作者使用3个数据集进行实验:IAM-OnDB、CASIA以及In-house。
IAM-OnDB数据集是目前最常用的在线手写识别数据集。
CASIA是一个中文手写数据集。
In-house数据集为实验内部数据集。
实验结果
CER表示字符错误率。图表中 5 × 224 5 \times 224 5×224表示深度layers和宽度nodes。
IAM-OnDB数据集
CASIA 数据集
In-house数据集及模型
训练与预测速度
####训练速度
在IAM-OnDB数据集上,当模型的深度和宽度相同时,IndyLSTM模型与LSTM模型相比,大约需要多训练1.8个epoch。而另外两个数据集则基本相同。
预测速度
使用IAM-OnDB数据集训练的模型进行对比,结果为使用IndyLSTMs的模型的预测速度平均大约要快20%。
过拟合
基于LSTM的模型,在training loss消失之后,test的错误率开始上升。而基于IndyLSTM的模型,test的错误率是平稳和趋于收敛的
结论
1)IndyLSTM模型更小更快更适合安装在资源受限的个人设备上。
2)IndyLSTM模型的准确度大多数情况下要优于LSTM模型。
3)LSTM模型更容易过拟合。
扫码识别关注,获取更多论文解读