原作者的答案在知乎,由于答案中有大量公式计算符号,无法较好的迁移至CSDN。因此选择了粘贴图片的方式进行转载,这种方式可能会为大家的阅读增添不便,希望您能理解。同时如有需要,非常建议大家点击超链接,到知乎中查看原作者的回答,同时也能方便您将自己的疑问或见解评论给原作者,从而更方便地进行后续交流。
1. 为什么比较大的输入会使得softmax的梯度变得很小?
from math import exp
from matplotlib import pyplot as plt
import numpy as np
f = lambda x: exp(x * 2) / (exp(x) + exp(x) + exp(x * 2))
x = np.linspace(0, 100, 100)
y_3 = [f(x_i) for x_i in x]
plt.plot(x, y_3)
plt.show()
输出图像为:
也就是说,在输入的数量级很大时,梯度消失为0,造成参数更新困难。
注: softmax的梯度可以自行推导,网络上也有很多推导可以参考。
2. 维度与点积大小的关系是怎么样的,为什么使用维度的根号来放缩?
针对为什么维度会影响点积的大小,在论文的脚注中其实给出了一点解释
此处补充一下原链接评论区中,“予以初始”的回复评论:
方差越大,说明: