人工神经网络之激活函数 -softmax函数

来源:互联网 发布:网络设备管理规范 编辑:程序博客网 时间:2024/05/18 22:51

softmax 可以理解为归一化,如目前图片分类有一百种,那经过 softmax 层的输出就是一个一百维的向量。向量中的第一个值就是当前图片属于第一类的概率值,向量中的第二个值就是当前图片属于第二类的概率值...这一百维的向量之和为1.

softmax的输入层和输出层的维度是一样的,如果不一眼,就在输入至 softmax 层之前通过一层全连接层。

激活函数softmax和损失函数会一起使用。
激活函数会根据输入的参数(一个矢量,表示每个分类的可能性),计算每个分类的概率(0, 1)。
损失函数根据softmax的计算结果y^和期望结果y,根据交叉熵方法(cross entropy loss) 可得到损失L

softmax函数

softmax:yti^=softmax(oti)=eotikeotkyt^=softmax(zt)=[eotikeotk]softmax(zt)=ytzt={yti^(1yti^),yti^ytj^,if i=jif ij

证明

softmax(zt)=yt^ztif i=jyti^otiif ijytj^oti=(eotikeotk)=(1Skeotk) // set S=kieotk=(1SS+eoti)=Seoti(S+eoti)2=SS+eotieotiS+eoti=SS+eotieotiS+eoti=(1eotiS+eoti)eotiS+eoti=(1eotikeotk)eotikeotk=(1yti^)yti^=(eotjkeotk)=(eotjS+eoti) // set S=kieotk=eotjeoti(S+eoti)2=eotjS+eotieotiS+eoti=eotjkeotkeotikeotk=ytj^yti^(16)(17)(18)(19)(20)(21)(22)(23)(24)(25)(26)(27)(28)(29)(30)(31)

什么是归一化? 

       数据归一化,就是将数据映射到[0,1]或[-1,1]区间或更小的区间,比如(0.1,0.9) 。

为什么要归一化处理? 

<1>输入数据的单位不一样,有些数据的范围可能特别大,导致的结果是神经网络收敛慢、训练时间长。

<2>数据范围大的输入在模式分类中的作用可能会偏大,而数据范围小的输入作用就可能会偏小。

<3>由于神经网络输出层的激活函数的值域是有限制的,因此需要将网络训练的目标数据映射到激活函数的值域。例如神经网络的输出层若采用S形激活函数,由于S形函数的值域限制在(0,1),也就是说神经网络的输出只能限制在(0,1),所以训练数据的输出就要归一化到[0,1]区间。

<4>S形激活函数在(0,1)区间以外区域很平缓,区分度太小。例如S形函数f(X)在参数a=1时,f(100)与f(5)只相差0.0067。


原创粉丝点击