这篇文章整理自新闻纪实 | AI Challenger2018情感分析赛道亚军PPT分享,仅作个人笔记使用。
Dropwords和阈值调整。
1.问题建模
采用多任务学习主要是考虑了时间和空间上的效率;除此之外通过特征共享可以降低过拟合风险。分别训练20个分类模型可能能得到更好的模型,并且模型建立的过程会相对简洁一些。
2.模型基本架构
总体结构
共享层包含了词表示层和N-BiSRU;而独占层包含了特征抽取层和分类层。如果不使用多任务学习,则仅仅在词表示层共享了参数。
2.1词表示层
模型一共使用了4中词表示方法,包括词向量、字符级词表示、基于bert的词表示、伪朴素贝叶斯特征(词和类别的联合概率分布)。
下图主要说明了词向量和字符级词表示的关键参数。
训练词向量时仅仅使用了训练集并且词频阈值为5,维度为100维,训练过程中更新参数。除此之外,换成了腾讯开源词向量使得结果有小幅提升,但此时词向量为200维,很难说明是使用预训练词向量好还是自己训练好。
字符级词表示先使用训练集训练字向量,然后再使用BiSRU组成对应的词(每个词最长由3个字表示)。
BERT在此处的表现并不是很好,可能是由于BERT抽取的是高层特征,而我们却是从底层输入。除此之外,这个未选择BERT建立分类模型的原因写的很好。
值得一提的是,作者仅仅使用了训练集来训练词向量,这是考虑了真实的应用场景。而在比赛中,如果使用全部的语料来训练,是否会达到更好的效果?
2.2 上下文相关词表示
实验中采用的是多层(3-6层)双向SRU,并行性好,inference速度更快。
SRU(simple recurrent units)将运算量大的部分改为并行运算,仅仅将运算量小的部分进行串行运算。所谓计算量大的部分,其实就是门控单元计算过程中的矩阵相乘,而计算量小的部分则为门控单元计算过程中的矩阵点乘。我们知道在LSTM中,有
g
t
=
σ
(
W
f
x
t
+
R
f
h
t
−
1
+
b
f
)
g_t=\sigma (W_fx_t+R_fh_{t-1}+b_f)
gt=σ(Wfxt+Rfht−1+bf)
其中计算量最大的部分就是
R
f
h
t
−
1
R_fh_{t-1}
Rfht−1。而SRU的设计就是当前时间步的门控单元的计算仅仅取决于
x
t
x_t
xt,而不依赖于
h
t
−
1
,
c
t
−
1
h_{t-1}, c_{t-1}
ht−1,ct−1。
SRU的完整计算过程如下:
x
^
=
W
x
t
\hat x = Wx_t
x^=Wxt
f
t
=
σ
(
W
f
x
t
+
b
f
)
f_t=\sigma (W_fx_t+b_f)
ft=σ(Wfxt+bf)
r
t
=
σ
(
W
r
x
t
+
b
r
)
r_t=\sigma (W_rx_t+b_r)
rt=σ(Wrxt+br)
c
t
=
f
t
⨀
c
t
−
1
+
(
1
−
f
t
)
⨀
x
^
t
c_t=f_t \bigodot c_{t-1} + (1-f_t) \bigodot \hat x_t
ct=ft⨀ct−1+(1−ft)⨀x^t
h
t
=
r
t
⨀
g
(
c
t
−
1
)
+
(
1
−
r
t
)
⨀
x
^
t
h_t=r_t \bigodot g(c_{t-1})+(1-r_t)\bigodot \hat x_t
ht=rt⨀g(ct−1)+(1−rt)⨀x^t
其中,
c
t
c_t
ct是内部状态,
h
t
h_t
ht是输出状态,
g
(
)
g()
g()是激活函数。
2.3 特征提取层与分类层
这里的情感要素不必显示给出,在下面的注意力机制中
w
j
w^j
wj可以随机初始化。
特征提取层尝试:
2.3.1 Attention及其变种
- Vanilla attention
最常规的注意力机制,随机初始化
w
j
w^j
wj。
- 加入更多独占参数
先把N-BiSRU得到的输出经过非线性层再进行注意力加权。
-
Multi-head Attention
利用多个不同的 w j w^j wj来进行注意力权重的计算,最后将每个结果concat到一起。
-
Hard Attention
2.3.2 N-BiSRU多层输出后接入Attention
下面这两种思路有点类似于ELMO。只取最上面一层用于后面的计算可能不是最优解。
除此之外,作者还对Attention进行了分析。当类标为1时,可以很好的定位到关键词。
但是当标签为-2时,Attention的权重比较分散,大都在标点符号上,可解释性较差。考虑句末加入[not mention]标签,控制Attention权重分布。 这样会不会导致预测的时候不会给出-2类的预测?
总的而言,Attention能够关注到细粒度分类所需要的信息;除-2标签外、Attention具有较好的可解释性。
对多层的分析从侧面说明了每一层的倾向于的功能不一样。
2.3.3 建模情感要素之间的相关性
对于
h
^
i
\hat h^i
h^i来说,
h
i
h^i
hi为query,
h
j
,
j
∈
[
1
,
2
,
.
.
.
,
20
]
h^j,j \in [1, 2, ...,20]
hj,j∈[1,2,...,20]为key和value。
2.3.4 分类层
3.数据降噪与数据增强
3.1 数据降噪
3.1.1 降噪标准
人工检查验证集中分错的样本,观察是否出现标注错误。即使用预测类的概率值减去实际类的概率值,得到的值如果大于阈值,则认为标注错误;反之则认为标注无误。
3.1.2 降噪策略
标注错误的aspect的loss不参与训练,其他aspect的正常训练。
3.1.3 不平衡数据降噪策略
对小样本宽容一点,防止误删。因为本来召回率就很低。
3.1.4 数据降噪结果
实验证明,数据降噪后能够明显提升实验结果。此外,实验中采用了动态阈值,0-10epoch,阈值接近1;10-15epoch,阈值接近0.3;16-20epoch,阈值接近0.2;20-50epoch,阈值接近0.1。
3.2 数据增强
直觉上也是Drop words用处比较大;shuffle sentences可能要比shuffle words更合理。
4.模型集成
4.1 Base模型获取
每次训练的softmax输出概率都要保存下来,并且把验证集上的f1score值也保存下来用于最后的集成。
4.2 正则化的分类阈值调整
训练的过程中,模型力图正确预测每一个样本,其优化目标为准确率或
m
i
c
r
o
−
F
1
micro-F1
micro−F1。而如果采用准确率指标或者
m
i
c
r
o
−
F
1
micro-F1
micro−F1,可能会忽略掉小类别分类错误带来的影响。对于
m
i
c
r
o
−
F
1
micro-F1
micro−F1而言,也是只要大类别的
T
P
TP
TP足够大就可以了,小类别的几乎被忽略掉。但是对于
m
a
c
r
o
−
F
1
macro-F1
macro−F1而言,相当于对所有类别一视同仁,小类别也能得到足够关注。
调整分类阈值:找到使得
M
a
c
r
o
−
F
1
Macro-F1
Macro−F1值最大的偏置
b
b
b。为防止过拟合,加入了正则项和
E
n
s
e
m
b
l
e
Ensemble
Ensemble策略,前者通过加上一个正则项实现,后者通过多次对验证集随机采样得到多个偏置
b
b
b最后再进行平均。
这里我们简要回顾一下
F
1
s
c
o
r
e
F1 score
F1score和
m
i
c
r
o
−
F
1
micro-F1
micro−F1、
m
a
c
r
o
−
F
1
macro-F1
macro−F1.
F
1
=
2
⋅
p
r
e
c
i
s
i
o
n
⋅
r
e
c
a
l
l
p
r
e
c
i
s
i
o
n
+
r
e
c
a
l
l
F_1=2 \cdot \frac {precision \cdot recall} {precision+recall}
F1=2⋅precision+recallprecision⋅recall
此外还有
F
0.5
F0.5
F0.5和
F
2
F2
F2分数,在
F
2
F2
F2分数中,召回率的权重高于精确率;而在
F
0.5
F0.5
F0.5分数中,精确率的权重高于召回率。计算方法如下:
F
β
=
(
1
+
β
2
)
⋅
p
r
e
c
i
s
i
o
n
⋅
r
e
c
a
l
l
(
β
2
⋅
p
r
e
c
i
s
i
o
n
)
+
r
e
c
a
l
l
F_\beta=(1+\beta^2)\cdot \frac {precision\cdot recall}{(\beta^2\cdot precision)+recall}
Fβ=(1+β2)⋅(β2⋅precision)+recallprecision⋅recall
最后看
M
i
c
r
o
−
F
1
Micro-F1
Micro−F1和
M
a
c
r
o
−
F
1
Macro-F1
Macro−F1,在多标签任务中,可以对每个类计算
F
1
F1
F1,显然我们需要把所有类的
F
1
F1
F1合并起来考虑。这就是代表了两种不同的合并方式。
M
i
c
r
o
−
F
1
Micro-F1
Micro−F1(微平均):把所有类别的
T
P
TP
TP、
F
P
FP
FP、
F
N
FN
FN加起来计算
F
1
F1
F1的值;
M
a
c
r
o
−
F
1
Macro-F1
Macro−F1(宏平均):先分别计算每个类别的
F
1
F1
F1,最后将这些值平均起来。
4.3 模型选择
简单概率平均的方式比较常见,贪婪式模型选择以后也可以尝试一下。
5.总结与体会
5.1 模型改进策略
以后做比赛时每次提交都要记录下线上和线下得分的规律。
base:字向量+词向量+N-BiSRU+常规Attention,F1=0.710
集成模型提升较大。