软版最大功能?

机器算法验证 软最大
2022-03-29 10:35:51

在《深度学习》一书中,它说 softmax 函数实际上是一个软 argmax 函数,最大函数的对应软版本是

softmax(z)Tz

后者如何理解?

3个回答

考虑函数

hardmax(z)Tz

对于z=[1,2,3,4,5]

其中 hardmax 是 softmax 的硬版本,它为最大分量返回 1,为所有其他分量返回 0。

然后我们会有

[0,0,0,0,1]T[1,2,3,4,5]=5

另一方面,的 softmax将为z[0.01,0.03,0.09,0.23,0.64]

所以[0.01,0.03,0.09,0.23,0.64]T[1,2,3,4,5]=4.46

如您所见,softmax 会在较大组件的权重更大的组件上产生加权平均值。

正如您书中的表达式所暗示的,您可以使用 softmax 函数构建更平滑的 max 函数版本。

考虑 max 函数的以下公式: 函数 argmax 返回一个包含 0 和 1 的向量。因此它产生了一个粗略的最大函数。从某种意义上说,它的参数的一阶导数是不连续的:它不是 0 就是 1。每当时,一阶导数在 0 和 1 之间跳跃。

max(z1,,zn)=argmax(z)×zT
zi=zj

通过将 argmax 替换为机器学习人们所说的 softmax,您也可以得到一个平滑版本的 max 函数,正如您书中所建议的那样。这里有几个图表来证明这一点。下面是一个普通的函数的表面。 max(x1,x2)在此处输入图像描述

使用教科书中的表达式将其与版本进行比较: softmax(x1,x2)T×(x1,x2)在此处输入图像描述

更平滑的 max 版本可以更容易分析处理。

softmaxargmax函数的平滑近似,* 取一个向量并返回一个向量:

softmax(x)=eβxeβxargmax(x)

这将向量作为输入并返回向量作为输出(最大值索引的单热编码,而不是序数位置)。

为了获得max函数的平滑逼近,它返回向量中的最大值(不是它的索引),可以将softmax与原始向量的点积:

softmax(x)Txargmax(x)Tx=max(x)


* 请注意softmax,在多个相同的最大值的情况下,将返回一个在最大值的参数位置中的向量,而不是多个s。1/n1

* 在softmax,当它接近无穷大时,函数接近β=1argmax