原文
Zhang, M.-L., & Zhou, Z.-H. (2006). Multi-label neural networks with applications to functional genomics and text categorization. IEEE Transactions on Knowledge and Data Engineering, 18, 1338–1351.
符号系统
符号 | 含义 | 说明 |
---|---|---|
X = R d \mathcal{X}=\mathbb{R}^d X=Rd | d d d 维特征空间 | |
Y = { 1 , 2. ⋯ , Q } \mathcal{Y}=\{1,2.\cdots,Q\} Y={1,2.⋯,Q} | 标签空间大小为 Q Q Q | |
f : X × Y → R f:\mathcal{X\times Y}\rightarrow \mathbb R f:X×Y→R | 回归器 | 为每个标签预测一个概率 |
h : X → 2 Y h:\mathcal{X\rightarrow 2^Y} h:X→2Y | 分类器 | 通过设置阈值对标签进行分类 |
学习过程
将训练数据输入神经网络,神经网络通过损失函数进行训练得到参数,输出的数据是神经网络经过计算之后预测每个标签在该输入数据中出现的可能性,最后通过与设置的阈值进行比较,得出结果。
如下图是作者给出的含有一层隐藏层的BP-MLL结构:
其中,
a
i
(
i
∈
[
1
,
d
]
)
a_i(i\in[1,d])
ai(i∈[1,d])是输入的数据;
a
0
,
b
0
a_0,b_0
a0,b0为偏置数据,初始值均为1,设置偏置可以提高激活函数的灵活性(控制其左右移动),以提高模型的拟合性;
V
,
W
\mathnormal {V,W}
V,W是各层之间设置的权重值;
c
i
(
i
∈
[
1
,
Q
]
)
c_i(i\in [1,Q])
ci(i∈[1,Q])是模型针对每个标签计算的概率。
关键——损失函数的设计
全局的损失函数表示为:
E
=
∑
i
=
1
m
E
i
(1)
E=\sum\limits_{i=1}^mE_i \tag{1}
E=i=1∑mEi(1)
其中
E
i
E_i
Ei是每个样本的平均损失值。
在多标签问题中,针对每个样本使用普通的损失和函数,则表示为:
E
i
=
∑
j
=
1
Q
(
c
j
i
−
d
j
i
)
2
(2)
E_i=\sum\limits_{j=1}^Q(c_j^i-d_j^i)^2 \tag{2}
Ei=j=1∑Q(cji−dji)2(2)
在式(2)中的
c
j
i
c_j^i
cji表示第
j
j
j个样本经过神经网络计算后,第
i
i
i标签的可能性;
d
j
i
d_j^i
dji表示实际标签值,若该标签属于该样本已有的标签集,则
d
j
i
=
+
1
d_j^i=+1
dji=+1,否则
d
j
i
=
−
1
d_j^i=-1
dji=−1。通过式(2),我们发现,当预测值越接近真时值时,损失越小,说明该方法是可行的,但也不难发现,该损失函数并没有考虑标签的相关性。
作者改进后的损失函数:
E
=
∑
i
=
1
m
E
i
=
∑
i
=
1
m
1
∣
Y
i
∣
∣
Y
i
‾
∣
∑
(
k
,
l
)
∈
Y
i
×
Y
i
‾
exp
(
−
(
c
k
i
−
c
l
i
)
)
(3)
E=\sum\limits_{i=1}^mE_i=\sum\limits_{i=1}^m\frac{1}{|Y_i||\overline{Y_i}|}\sum\limits_{(k,l)\in Y_i\times \overline{Y_i}}\exp ^{(-(c_k^i-c_l^i))}\tag{3}
E=i=1∑mEi=i=1∑m∣Yi∣∣Yi∣1(k,l)∈Yi×Yi∑exp(−(cki−cli))(3)
其中,
k
∈
Y
i
,
l
∈
Y
‾
i
k\in Y_i,l\in \overline Y_i
k∈Yi,l∈Yi,
Y
‾
i
\overline Y_i
Yi是
Y
i
Y_i
Yi的补集,表示第
i
i
i个样本中所有不被包含的标签集合。当
c
k
i
−
c
l
i
c_k^i-c_l^i
cki−cli 越大时,对其惩罚就越小,意味着
c
k
i
c_k^i
cki越应该接近1,
c
l
i
c_l^i
cli越接近0。乘以
1
∣
Y
i
∣
∣
Y
i
‾
∣
\frac{1}{|Y_i||\overline{Y_i}|}
∣Yi∣∣Yi∣1是因为
Y
i
Y_i
Yi与
Y
‾
i
\overline Y_i
Yi笛卡尔积后一共有
∣
Y
i
∣
∣
Y
i
‾
∣
|Y_i||\overline{Y_i}|
∣Yi∣∣Yi∣个元素,除以它获得当前样本的损失均值。观察式(3),我们不难发现它不仅关注能否正确给样本打标签还期望正确标签与样本中不含有标签的差值更大。所以与式(2)相比,式(3)还注重了
Y
i
Y_i
Yi与
Y
‾
i
\overline Y_i
Yi的差异性。
小结
本篇论文主要设计了一个全局损失函数用在神经网路中解决多标签问题。这个新的损失函数与传统的一些损失函数比较,关注了标签之间的差异性。启发:设计损失函数能调整一个算法在训练过程中的侧重点。