深度学习中的温度参数(Temperature Parameter)是什么?

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(aiT1)exp(aiT1)

当增大 T T T的值时,分布变得更加的平坦(较大的值变得更小,较小的值变得更大);当减小 T T T的值使,分布变得更加尖峰(较大的值变得更大,较小的值变得更小)。

这里的 T T T,就是温度参数(temperature parameter)。

3.Temperature是如何影响学习的?

通常,我们可以从较大的温度值开始,然后在训练过程中逐渐降低温度值,这个过程称为退火。由于一开始的温度 T 很高,概率分布中没有值接近于零,因此梯度更容易传播。

可以把 temperature 想象为学习率,设置正确的 temperature 并适当衰减有助于训练,完全不正确的学习率会抑制训练。temperature 是一个超参数

😃😃😃

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值