这篇博客是上篇博客的后续,主要是原文5章。
目录
5. Analysis of Loss Functions for Energy-Based Models
这个章节讨论损失函数必须满足的条件,这样它的最小化才能使得模型产生正确答案。为了直观的了解问题,我们首先描述简单的实验,我们首先描述了简单的实验,其中使用某些结构和损失函数的组合来学习一个简单的数据集,结果不同。更正式的解释在5.2节。
5.1 “Good” and “Bad” Loss Functions
考虑学习一个函数,来计算数的平方:
Y
=
f
(
X
)
Y=f(X)
Y=f(X),其中
f
(
X
)
=
X
2
f(X)=X^2
f(X)=X2。尽管这是一个很小的问题,但它对于演示设计能量函数和共同工作的损失函数所涉及的问题是有用的。对于下面的实验,我们使用包含200个样本
(
X
i
,
Y
i
)
(X^i,Y^i)
(Xi,Yi)的训练集,其中
Y
i
=
X
i
2
Y^i=X^{i^2}
Yi=Xi2,
X
i
X^i
Xi在-1到+1之间随机采样。
首先,我们使用Figure9(a)所示的框架,
X
X
X输入到参数化的函数
G
W
G_W
GW,将会产生一个标量输出,这个输出将会和期望的答案进行比对,通过使用绝对误差值计算(L1 范式):
E
(
W
,
Y
,
X
)
=
∣
∣
G
W
(
X
)
−
Y
∣
∣
1
E(W,Y,X)=||G_W(X)-Y||_1
E(W,Y,X)=∣∣GW(X)−Y∣∣1任何合理的参数化函数簇都可用于
G
W
G_W
GW。对于这些实验,我们选择一个二层神经网络,包含1个输入单元,20个隐藏单元和一个输出单元。Figure 10(a)展示了在变量
X
X
X和
Y
Y
Y空间能量函数的原始形状,使用随机初始参数
W
W
W。黑色的球体是少量的训练样本。
首先,直接用能量损失简单的训练:
这对应一个标准的回归形式。学习过程可以看成拉低训练样本处的能量表面,但没有考虑其他位置的能量表面。对于任意一个
X
X
X,能量表面是
Y
Y
Y的函数,具有
V
V
V形状。通过改变函数
G
W
(
X
)
G_W(X)
GW(X),每个
X
X
X对应的
V
V
V形状的顶尖可以移动。对于X的任何值,通过将V的顶点放置在Y=X2的位置来最小化损失,这会使所有其他答案的能量变大,因为
V
V
V只有一个最小值。图10显示了在简单随机梯度下降的训练过程中,能量表面在固定间隔的形状。通过训练集进行几次迭代之后,能量曲面就形成了正确的形状。使用更复杂的损耗函数,如NLL损耗或感知器损耗,将产生与能量损耗完全相同的结果,因为在这种简单的结构中,它们的对比项是恒定的。
考虑一个更复杂的情况,如Figure 9(b),同样学习相同的数据集。在这个架构中,
X
X
X输入
G
1
W
1
G_{1W_1}
G1W1,
Y
Y
Y输入
G
2
W
2
G_{2W_2}
G2W2。实验中,这两个网络结构都是二层神经网络,包含1个输入单元,20个隐藏单元和10个输出单元。能量是它们10维的输出之间的差异:
E
(
W
,
X
,
Y
)
=
∣
∣
G
1
W
1
−
G
2
W
2
∣
∣
1
E(W,X,Y)=||G_{1W_1}-G_{2W_2}||_1
E(W,X,Y)=∣∣G1W1−G2W2∣∣1,
W
=
[
W
1
W
2
]
W=[W_1 W_2]
W=[W1W2],用能量损失训练这个架构将会导致能量表面的崩溃,Figure 11展示了训练过程的能量表面。
发生了什么?给定
X
X
X的能量表面作为
Y
Y
Y的函数,将不再固定(这是啥意思…)。用能量损失的这个架构没有机制防止
G
1
G_1
G1和
G
2
G_2
G2忽略他们的输入且产生唯一的输出值。这导致最后崩溃的输出:能量表面平坦且每个位置都是0。
现在我们考虑相同的架构,但使用square-square损失:
这里
m
m
m是一个正的边际,并且
Y
‾
i
\overline Y^i
Yi是能量值最低的错误答案。损失中的第二项明确地阻止了能量的崩溃,通过向上推那些能量可能低于期望答案的点。Figure 12展示了训练过程中的能量表面,这个表面成功的获得了想要的形状。
另一个损失函数也可以和这个架构很好的运作,那就是负对数似然函数:
第一项拉低正确答案对应的能量值,后面一项拉高所有答案的能量值,特别是那些有着低能量值的。注意,正确答案对应的能量值也会出现在第二项中。Figure 13展示了使用NNL的能量函数的形状。这个训练比使用square-square损失更快。最小值更深,因为与平方损失不同,使用NNL的训练能够将不正确答案的能量被推到无穷大(尽管力减小)。
然而,NNL的每次迭代将需要更多的工作,因为拉高每个不正确的答案的计算代价很大,因为当第二项的导数不存在解析表达式时,拉高每一个错误的答案在计算上是昂贵的。在这个实验中,使用了一个简单的采样方法:积分是由在Y方向上间隔在-1和+1之间的20个点的和来近似的。因此,每次学习迭代都需要计算20个位置的能量梯度,而在平方损失的情况下需要计算2个位置的能量梯度。然而,在平方损失中,必须考虑定位最冒犯的错误答案的成本。
NLL损失的一个重要方面是它对能量值的整体位移是不变的,并且只取决于给定 X X X的不同 Y Y Y的能量之间的差异。因此,对于不同的X,期望的答案可能具有不同的能量,并且可能不是零。这有一个重要的结果:不能在不考虑所有其他答案的能量的情况下,直接用某个答案的能量来衡量该答案的质量。
在本节中,我们看到了对四种体系结构和损失函数组合的培训结果。在第一种情况下,我们使用了一个简单的架构和一个简单的能量损失,这是令人满意的。系统架构中的约束会自动导致不期望答案的能量增加,而期望答案的能量会降低。在第二种情况下,使用了更复杂的结构和简单的能量损失,并且由于损失中缺少对比项,机器崩溃。在第三种和第四种情况下,使用与第二种情况相同的架构,但损失函数包含明确的对比术语。在这些情况下,机器按预期运行,没有崩溃。
5.2 Sufficient Conditions for Good Loss Functions
在上一节中,我们通过示例性实验提供了关于哪些损失函数是好的哪些是坏的一些直觉。在接下来几节中,我们将对该主题进行更正式的处理。首先,给出了一组充分条件。能量函数和损失函数必须满足这些条件才能保证在基于能量的环境中工作。然后我们从这些条件的角度讨论了前面介绍的损失函数的性质。
5.3 Conditions on the Energy
一般在基于能量的学习中,推理方法选择能量最小的答案。因此,对样本 ( X i , Y i ) ( X_i,Y_i) (Xi,Yi)进行正确推断的条件如下。
Condition 1 对于样本
(
X
i
,
Y
i
)
(X^i,Y^i)
(Xi,Yi),机器将会给出
X
i
X^i
Xi的正确的答案,如果:
E
(
W
,
X
i
,
Y
i
)
<
E
(
W
,
Y
,
X
i
)
,
∀
Y
∈
Y
a
n
d
Y
≠
Y
i
E(W,X^i,Y^i)<E(W,Y,X^i),\forall Y\in \mathcal{Y} and Y\neq Y^i
E(W,Xi,Yi)<E(W,Y,Xi),∀Y∈YandY=Yi
换一句话说,如果
Y
i
Y^i
Yi的能量低于所有其他答案的能量,推理算法将会给出正确答案。
为了保证正确答案鲁棒地稳定,我们也许选择加上一个条件:让正确答案的能量值比非正确的值低至少
m
m
m。如果
Y
‾
i
\overline Y^i
Yi表示最冒犯的答案,这个条件将表示成:
Condition 2 对于样本
(
X
i
,
Y
i
)
(X^i,Y^i)
(Xi,Yi),机器将会给出
X
i
X^i
Xi的正确的答案,如果:
E
(
W
,
X
i
,
Y
i
)
<
E
(
W
,
Y
,
X
i
)
−
m
,
∀
Y
∈
Y
a
n
d
Y
≠
Y
i
E(W,X^i,Y^i)<E(W,Y,X^i)-m,\forall Y\in \mathcal{Y} and Y\neq Y^i
E(W,Xi,Yi)<E(W,Y,Xi)−m,∀Y∈YandY=Yi
5.4 Suffient Conditions on the Loss Functional
如果系统要产生正确的答案,则损失函数应设计成这样的方式:使其最小化将使
E
(
W
,
Y
i
,
X
i
)
E ( W,Y^i,X^i )
E(W,Yi,Xi)比
E
(
W
,
Y
‾
i
,
X
i
)
E ( W,\overline{Y}^i,X^i )
E(W,Yi,Xi)低一些阈值m。由于只有这两种能量的相对值重要,我们只需要考虑这两种能量的二维空间中损失函数的片的形状。例如,在Y是从1到k的整数集合的情况下,损失函数可以写成:
这种损失在
E
(
W
,
Y
i
,
X
i
)
E ( W,Y^i,X^i )
E(W,Yi,Xi)和
E
(
W
,
Y
‾
i
,
X
i
)
E ( W,\overline{Y}^i,X^i )
E(W,Yi,Xi)空间的投影可以看作是由其他
k
−
2
k-2
k−2能量参数化的函数Q:
其中参数
[
E
y
]
[E_y]
[Ey]包含除了
Y
i
Y^i
Yi和
Y
‾
i
\overline Y^i
Yi的所有
Y
Y
Y值的能量向量。
对于一个训练样本
(
X
i
,
Y
i
)
(X_i,Y_i)
(Xi,Yi),我们假设至少有一组参数W满足条件2。显然,如果这样的W不存在,就不可能存在任何损失函数,其最小化将导致条件2。为了符号简单起见,让我们用EC(如“正确能量”)表示与训练样本(Xi,Yi)相关的能量
E
(
W
,
Y
i
,
X
i
)
E ( W,Y^i,X^i )
E(W,Yi,Xi),用
E
I
EI
EI表示
E
(
W
,
Y
‾
i
,
X
i
)
E ( W,\overline{Y}^i,X^i )
E(W,Yi,Xi)(如“不正确的能量”)。考虑由EC和EI形成的平面。作为说明,图17(a)显示了平方损失函数的三维图,其中横坐标为EC,纵坐标为EI。第三个轴给出了EC和EI对应值的损失值。
一般来说,损失函数是这个三维空间中的一系列二维曲面,其中每个曲面对应于除EC和EI之外的所有能量的一个特定构型。图中的红色实线对应于二维平面上EC=EI的点。蓝色虚线对应于边线EC+m=EI。两个半平面EC+m<EI和EC+m≥ EI分别用
H
P
1
HP_1
HP1和
H
P
2
HP_2
HP2表示。
假设
R
R
R是一个区域,定义为与W的所有可能值相对应的一组值
(
E
C
,
E
I
)
∈
W
(EC,EI)\in W
(EC,EI)∈W。该区域可以是非凸的、不连续的、开放的或一维的,并且可以位于平面中的任何位置。如图14所示的阴影部分。由于我们假设存在满足条件2的解,R必须与半平面HP1相交。
假设两个点
(
e
1
,
e
2
)
(e_1,e_2)
(e1,e2)和
(
e
1
′
,
e
2
′
)
(e_1',e_2')
(e1′,e2′)属于这个区域
R
R
R,
(
e
1
,
e
2
)
∈
H
P
1
(e_1,e_2)\in HP_1
(e1,e2)∈HP1也就是
e
1
+
m
<
e
2
e_1+m<e_2
e1+m<e2,
(
e
1
′
,
e
2
′
)
∈
H
P
2
(e_1',e_2')\in HP_2
(e1′,e2′)∈HP2也就是
e
1
′
+
m
≥
e
2
e_1'+m≥e_2
e1′+m≥e2。我们接下来介绍这个损失函数上的充分条件。
Condition 3
(
X
i
,
Y
i
)
(X^i,Y^i)
(Xi,Yi)是第
i
i
i个样本,
m
m
m是一个正的边缘,最小化损失函数
L
L
L将满足条件1或条件2,如果至少有一个点
(
e
1
,
e
2
)
(e_1,e_2)
(e1,e2),
e
1
+
m
<
e
2
e_1+m<e_2
e1+m<e2,这样对于所有点
(
e
1
′
,
e
2
′
)
(e_1',e_2')
(e1′,e2′),
e
1
′
+
m
≥
e
2
e_1'+m≥e_2
e1′+m≥e2,我们有:
其中
Q
[
E
y
]
Q_{[E_y]}
Q[Ey]由下式给定:
换句话说,在EC和EI空间中的损失函数的表面应该是:
R
R
R区域中至少存在一个点,在
R
R
R和
H
P
1
HP_1
HP1的交叉区域。该点的损失值小于
R
R
R和
H
P
2
HP_2
HP2交叉区域中的点的损失值。
注意这只是一个充分条件,而不是必要条件。也许有很多损失函数不满意这个条件,但其最小化仍然满足条件2。
5.5 Which Loss are Good or Bad
表1列出了几种损失函数,以及它们满足条件3的边缘值。能量损失标记为“无”,因为它不满足一般架构的条件3。感知器损耗和LVQ2损耗满足它的阈值为零。所有其他的都满足条件3,并且边缘值严格为正值。
5.5.1 Energy Loss
能量损失通常是坏的损失函数,但存在特定的形式的能量,对于这个能量,能量损失损失是一个好损失函数。考虑一个能量形式:
该能量通过K个径向基函数(每个类对应一个)传递函数
G
W
G_W
GW的输出,径向基函数的中心是向量
U
k
U^k
Uk。如果中心
U
k
U^k
Uk是固定的和不同的,那么能量损失满足条件3,因此是一个很好的损失函数。
为了证实这个,考虑一个二分类情况,系统的结构如Figure 15所示。
设
d
=
∣
∣
U
1
−
U
2
∣
∣
2
d=||U^1-U^2||^2
d=∣∣U1−U2∣∣2,
d
1
=
∣
∣
U
1
−
G
W
(
X
i
)
∣
∣
2
d_1=||U^1-G_W(X^i)||^2
d1=∣∣U1−GW(Xi)∣∣2,且
d
2
=
∣
∣
U
2
−
G
W
(
X
i
)
∣
∣
2
d_2=||U^2-G_W(X^i)||^2
d2=∣∣U2−GW(Xi)∣∣2。由于
U
1
U^1
U1和
U
2
U^2
U2是固定的且不同的,因此对于每个
G
W
G_W
GW,
d
1
+
d
2
d_1+d_2
d1+d2都有一个严格的上界。作为一个两类问题,EC和EI直接对应于这两个类别的能量。在
(
E
C
,
E
I
)
(E_C,E_I)
(EC,EI)平面上,EC+EI不存在损失函数的任何部分≤ d。
定义损失函数的区域如图16(a)所示。损失函数的确切形状如图16(b)所示。从图中可以看出只要d≥ m, 损失函数满足条件3。我们得出结论,这是一个很好的损失函数。
然而,当RBF中心
U
1
U^1
U1和
U
2
U^2
U2不是固定的,且允许学习得到,那么不能保证
d
1
+
d
2
≥
d
d_1+d_2≥d
d1+d2≥d。然后RBF中心可以是相同的,所有输入的能量将会变成0,最终导致一个崩溃的能量表面。这样的情况可以通过在损失函数中添加contrastive term来避免。
5.5.2 Generalized Perceptron Loss
广义感知机损失的阈值(margin)是0。因此,它可以导致一个崩溃的能量表面,通常不适合训练基于能量的模型。然而,缺乏阈值并不总是致命的。首先,崩溃的答案集合是参数空间的很小的一部分。第二,尽管没有什么能避免到达崩溃的答案,但也没什么能驱动系统到达该崩溃的答案。因此选中崩溃的答案的概率是很小的。
5.5.3 Generalized Margin Loss
我们现在考虑square-square和square-exponential损失。对于二分类情形,在EC和EI空间中的损失函数的表面在Figure 17中可以看到(这个图在比较靠前的位置)。我们可以发现至少存在一个点
(
e
1
,
e
2
)
(e_1,e_2)
(e1,e2)在
H
P
1
HP_1
HP1,导致:
Q
[
E
y
]
(
e
1
,
e
2
)
<
Q
[
E
y
]
(
e
1
′
,
e
2
′
)
Q_{[E_y]}(e_1,e_2)<Q_{[E_y]}(e_1',e_2')
Q[Ey](e1,e2)<Q[Ey](e1′,e2′)
对于所有在
H
P
2
HP_2
HP2中的
(
e
1
′
,
e
2
′
)
(e_1',e_2')
(e1′,e2′),这些损失函数满足条件3。
5.5.4 Negative Log-Likelihood Loss
对于任何固定的参数
W
W
W和一个样本
(
X
i
,
Y
i
)
(X^i,Y^i)
(Xi,Yi),考虑损失函数关于
E
C
E_C
EC和
E
I
E_I
EI的梯度,我们有:
显然,对于任何能量值,
g
C
>
0
g_C>0
gC>0且
g
I
<
0
g_I<0
gI<0。在
E
C
E_C
EC和
E
I
E_I
EI空间的任何点的梯度的总体方向可以在Figure 18看到。我们可以得出结论:当从
H
P
2
HP_2
HP2到
H
P
1
HP_1
HP1,损失值是单调减少的。
现在我们需要证明,在HP1中至少有一个点,在这个点上损失小于HP2中的所有点。设
A
=
(
E
C
∗
,
E
C
∗
+
m
)
A=(E^*_C,E^*_C+m)
A=(EC∗,EC∗+m)是在保证损失值最小的那条margin line上的一个点。
E
C
∗
E_C^*
EC∗是这个点的正确能量值。
E
C
∗
=
a
r
g
m
i
n
{
Q
[
E
y
]
(
E
C
,
E
C
+
m
)
}
E_C^*=argmin\{Q_{[E_y]}(E_C,E_C+m)\}
EC∗=argmin{Q[Ey](EC,EC+m)}基于上面的讨论,损失
Q
[
E
y
]
Q_{[E_y]}
Q[Ey]在所有点(尤其是在margin line上)的梯度的负数都是在HP1内的方向,通过损失的单调性,我们可以得出结论:
其中,
E
C
+
m
>
E
I
E_C+m>E_I
EC+m>EI。
考虑一个点
B
B
B与点
A
=
(
E
C
∗
,
E
C
∗
+
m
)
A=(E^*_C,E^*_C+m)
A=(EC∗,EC∗+m)的距离是
ϵ
\epsilon
ϵ,且在
H
P
1
HP_1
HP1内,那就是这个点:
(
E
C
∗
−
ϵ
,
E
C
∗
+
m
+
ϵ
)
(E^*_C-\epsilon,E^*_C+m+\epsilon)
(EC∗−ϵ,EC∗+m+ϵ)。
利用此时损失值的一阶泰勒展开式,我们得到:
从前面的讨论知道,等式右边的第二项是负的。所以对于足够小的
ϵ
\epsilon
ϵ,我们有:
因此我们总结:存在至少一个点在
H
P
1
HP_1
HP1中,损失值小于所有在
H
P
2
HP_2
HP2的点的损失值。
请注意,最具冒犯性的错误答案 E I E_I EI的能量在被下一个最具冒犯性的错误答案的能量值限定了上界。所以我们只需要考虑 E I E_I EI的有限范围,点B不能在无穷远处。