softmax exp( x )/ sum(exp( x
))实际上在数字上表现良好。它只有正数项,因此我们不必担心重要性下降,并且分母至少与分子一样大,因此可以保证结果介于0到1之间。
唯一可能发生的事故是指数溢出或溢出。 x 的单个元素的上溢或所有元素的下溢将使输出或多或少地无用。
但是很容易通过使用对任何标量c都成立的恒等式softmax( x* )= softmax( x + c)来防范这一点:从 x
减去max( x )会留下一个只有非正项的向量,排除上溢和至少一个为零的元素排除了消失的分母(某些但并非全部入口的下溢是无害的)。 *
脚注:从理论上说,在和灾难性事故是可能的,但你需要一个 荒谬的 条款数。例如,即使使用只能解析3个小数的16位浮点数(相比于“正常”
64位浮点数的15个小数点),我们也需要2 ^ 1431(〜6 x 10 ^ 431)和2 ^
1432得到的总和减少两倍
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)