1. 概述
随着神经网络,尤其是深度学习算法的发展,神经网络在文本分类任务中取得了很大的发展,提出了各种解决方案,如CNN在文本分类中的应用,RNN,LSTM等等,相比较于CNN以及RNN方法,LSTM可以学习长距离的语义信息。Attention-Based BiLSTM结合双向的LSTM(Bidirectional LSTM)以及Attention机制处理文本分类的相关问题,通过attention机制,该方法可以聚焦到最重要的词,从而捕获到句子中最重要的语义信息。
2. 算法思想
2.1 算法的组成部分
Attention-Based BiLSTM算法的网络结构如下所示:
在Attention-Based BiLSTM网络中,主要由5个部分组成:
- 输入层(Input layer):指的是输入的句子,对于中文,指的是对句子分好的词;
- Embedding层:将句子中的每一个词映射成固定长度的向量;
- LSTM层:利用双向的LSTM对embedding向量计算,实际上是双向LSTM通过对词向量的计算,从而得到更高级别的句子的向量;
- Attention层:对双向LSTM的结果使用Attention加权;
- 输出层(Output layer):输出层,输出具体的结果。
注意点:
- Embedding通常有两种处理方法,一个是静态embedding,即通过事先训练好的词向量,另一种是动态embedding,即伴随着网络一起训练;
- 双向LSTM的网络结构会在其他的文章中做进一步的介绍,这里就不详细展开。
2.2. BiLSTM层的输出
假设句子通过分词算法后,得到的 T T T个词为: { x 1 , x 2 , ⋯ , x T } \left \{ x_1,x_2,\cdots ,x_T \right \} {x1,x2,⋯,xT},每一个词 x i x_i xi经过词向量的映射得到对应的词向量 e i e_i ei,假设经过LSTM后正向的输出为 → h i \underset{h_i}{\rightarrow} hi→,逆向的输出为 ← h i \underset{h_i}{\leftarrow} hi←,则第 i i i个词经过BiLSTM后得到的向量为:
h i = [ → h i ⨁ ← h i ] h_i=\left [ \underset{h_i}{\rightarrow}\bigoplus \underset{h_i}{\leftarrow} \right ] hi=[hi→⨁hi←]
其中, ⨁ \bigoplus ⨁表示的是对应元素相加。
2.3. Attention机制
假设
H
H
H是所有
T
T
T个词经过BiLSTM后得到的向量的集合:
[
h
1
,
h
2
,
⋯
h
T
]
\left [ h_1,h_2,\cdots h_T \right ]
[h1,h2,⋯hT],那么Attention的计算方法如下:
M
=
t
a
n
h
(
H
)
M=tanh\left ( H \right )
M=tanh(H)
其中,
H
∈
R
d
w
×
T
H\in \mathbb{R}^{d^w\times T}
H∈Rdw×T,
d
w
d^w
dw表示的是向量的维度,对应的,
M
M
M的维度为:
d
w
×
T
d^w\times T
dw×T。
α
=
s
o
f
t
m
a
x
(
w
T
M
)
\alpha =softmax\left ( w^TM \right )
α=softmax(wTM)
其中,
w
T
w^T
wT表示的是需要学习的参数,
w
w
w的维度为
d
w
×
1
d^w\times 1
dw×1,
α
\alpha
α的维度为
1
×
T
1\times T
1×T。
r
=
H
α
T
r=H\alpha ^T
r=HαT
其中,
r
r
r的维度为
d
w
×
1
d^w\times 1
dw×1。
最终用于分类的向量表示为:
h
∗
=
t
a
n
h
(
r
)
h^{\ast }=tanh\left ( r \right )
h∗=tanh(r)。
2.4. 分类
针对句子 S S S,通过上述的BiLSTM以及Attention机制,得到了对应的表示矩阵: h ∗ h^{\ast } h∗,其维度为 d w × 1 d^w\times 1 dw×1。分类器以 h ∗ h^{\ast } h∗为输入:
p ^ ( y ∣ S ) = s o f t m a x ( W ( S ) h ∗ + b ( S ) ) \hat{p}\left ( y\mid S \right )=softmax\left ( W^{\left ( S \right )}h^{\ast }+b^{\left ( S \right )} \right ) p^(y∣S)=softmax(W(S)h∗+b(S))