文章目录
- Temperature Parameter
- 1.背景知识
- 2.引入Temperature Parameter
- 3.Temperature是如何影响学习的?
Temperature Parameter
1.背景知识
标准的深度学习模型具有一堆卷积、池化、全连接层,然后是最终的全连接层。最后的全连接层输出一个与类数大小相同的向量。因此如果有 3 个类,最终的全连接层将输出一个 3 维向量。
一般来说,该向量可以包含任意实数,例如 [ − 1 , 3 , 2 ] [-1,3,2] [−1,3,2]。由此,需要计算损失。最常用的方法是使用softmax_with_cross_entropy
层(本质是一个Softmax层,后面跟着一个交叉熵损失准则)。
Softmax 层对给定向量的每个元素应用以下操作:
b i = exp ( a i ) ∑ i exp ( a i ) b_i=\frac{\exp(a_i)}{\sum_i\exp(a_i)} bi=∑iexp(ai)exp(ai)
a i a_i ai代表输入向量, b i b_i bi代表输出向量。故通过 Softmax 层后的每个元素为:
b 1 = exp ( a 1 ) exp ( a 1 ) + exp ( a 2 ) + exp ( a 3 ) = 0.01 b 2 = exp ( a 2 ) exp ( a 1 ) + exp ( a 2 ) + exp ( a 3 ) = 0.72 b 3 = exp ( a 3 ) exp ( a 1 ) + exp ( a 2 ) + exp ( a 3 ) = 0.27 \begin{aligned}b_1&=\frac{\exp(a_1)}{\exp(a_1)+\exp(a_2)+\exp(a_3)}=0.01\\\\b_2&=\frac{\exp(a_2)}{\exp(a_1)+\exp(a_2)+\exp(a_3)}=0.72\\\\b_3&=\frac{\exp(a_3)}{\exp(a_1)+\exp(a_2)+\exp(a_3)}=0.27\end{aligned} b1b2b3=exp(a1)+exp(a2)+exp(a3)exp(a1)=0.01=exp(a1)+exp(a2)+exp(a3)exp(a2)=0.72=exp(a1)+exp(a2)+exp(a3)exp(a3)=0.27
上面实际做的是对每个值 a i a_i ai求幂,然后将每个结果除以所有结果的总和。因为求幂给出的是一个非负数,然后将结果除以总和,得到的数字都是正数,而且总和为1。这就是各个类别的概率分布。
b 1 , b 2 , b 3 > 0 and b 1 + b 2 + b 3 = 1. b_1,b_2,b_3>0\text{ and }b_1+b_2+b_3=1. b1,b2,b3>0 and b1+b2+b3=1.
现在,交叉熵损失主要看真实类别的负概率。也就是说,如果真实类别为 3 ,那么损失将为 − log 0.27 -\log0.27 −log0.27。当我们最小化损失时,就是将真实类别的概率推向 1。
2.引入Temperature Parameter
在知道了上述背景后,就可以很容易的看出温度系数是如何引入的。
b i = exp ( k a i ) ∑ i exp ( k a i ) b_i=\frac{\exp(ka_i)}{\sum_i\exp(ka_i)} bi=∑iexp(kai)exp(kai)
在指数函数中加入一个因子, b 1 , b 2 , b 3 > 0 and b 1 + b 2 + b 3 = 1 b_1,b_2,b_3>0\text{ and }b_1+b_2+b_3=1 b1,b2,b3>0 and b1+b2+b3=1依旧是正确的,成立的。这是因为乘幂的结果任然是正数,而且分母确保它们的总和任然为 1,所以这任然是一个有效的概率分布。如果我们将 k = 2 k=2 k=2,那么 b = [ 0.003 , 0.880 , 0.119 ] b=[0.003,0.880,0.119] b=[0.003,0.880,0.119],如果将 k = 0.5 k=0.5 k=0.5,那么 b = [ 0.08 , 0.57 , 0.35 ] b=[0.08,0.57,0.35] b=[0.08,0.57,0.35],这两个都是有效的分布。
当我们增大 k k k的值时,分布变得更加尖峰(较大的值变得更大,较小的值变得更小)。当我们减小 k k k的值时,分布变得更加的平坦(较大的值变得更小,较小的值变得更大)。
现在,在指数中,我们不相乘 k k k,而是除以 T T T。
b i = exp ( a i ⋅ 1 T ) ∑ i exp ( a i ⋅ 1 T ) b_i=\frac{\exp(a_i \cdot \frac{1}{T})}{\sum_i\exp(a_i \cdot \frac{1}{T})} bi=∑iexp(ai⋅T1)exp(ai⋅T1)
当增大 T T T的值时,分布变得更加的平坦(较大的值变得更小,较小的值变得更大);当减小 T T T的值使,分布变得更加尖峰(较大的值变得更大,较小的值变得更小)。
这里的 T T T,就是温度参数(temperature parameter)。
3.Temperature是如何影响学习的?
通常,我们可以从较大的温度值开始,然后在训练过程中逐渐降低温度值,这个过程称为退火。由于一开始的温度 T 很高,概率分布中没有值接近于零,因此梯度更容易传播。
可以把 temperature 想象为学习率,设置正确的 temperature 并适当衰减有助于训练,完全不正确的学习率会抑制训练。temperature 是一个超参数。
😃😃😃