Softmax

来源:互联网 发布:吉利知豆d1和d2的区别 编辑:程序博客网 时间:2024/06/06 14:21

简介

其实吧,一般在神经网络中用的最多的是sigmoid和tanh,当然也有用relu的。这是针对“是”和“否”的分类,但当进行多分类时,就要用到softmax 。

在logistic回归中,训练样本是:{(x(1),y(1)),...,(x(m),y(m))},值得注意是,每个样本x(i)R(n+1),当然了,其中x0=1是对应的截距项。也就是说,每个样本都是具有n+1维的向量,并且第1维都是为1(方便与参数θ的第0维偏置b相乘)。

在logistic回归中,激活函数是:

hθ(x)=11+exp(θTx)

训练θ的最小化代价函数是:
J(θ)=1m[i=1my(i)loghθ(x(i))+(1y(i))log(1hθ(x(x)))]

其中,hθ(x)=11+exp(θTx)对应的图形是:
这里写图片描述
,那么对应的对数图像是:
这里写图片描述

我们要做的是分类,因此当然是想知道,当输入x是,x分别属于每一个类的概率,概率最大的那个就是我们认为的属于的类
让输出为一个向量,并且有k维,分别代表属于i类的概率。当然还要进行归一化,让输出的向量元素的值和为1.

hθ(x(i))=p(y(i)=1x(i);θ)p(y(i)=2x(i);θ)p(y(i)=kx(i);θ)=1kj=1eθTjx(i)eθT1x(i)eθT2x(i)eθTkx(i)

这里的eθTix(i)就是yi,因此就是对输出进行归一化。

上面的公式真难打。。
可以看出,我们将hθ(x(i))进行了变换,现在对于输入x(i),输出的是一个向量了,并不是像sigmoid的一个0~1的数。值得注意的是:θiRn+1是模型的参数。

softmax模型参数
softmax模型的参数是k个n+1维的θ组成的矩阵,输出的是向量。

θ=θT1θT2θTk

代价函数

1{}是indicator function,表示{}内的表达式正确为1,否则为0.
代价函数是:

J(θ)=1mi=1mj=1k1{y(i)=j}logeθTjx(i)kl=1eθTlx(i)

可以这样理解,就是求另每个输入属于属于每一类的概率,再求平均。
对比logistic的J(θ)
J(θ)=1m[i=1m(1y(i))log(1hθ(x(i)))+y(i)loghθ(x(i))]=1mi=1mj=011{y(i)=j}logp(y(i)=j|x(i);θ)

可以看出,形式非常相似,只是在累的标记的k个可能值进行了累加。
将x分类到类别 j 的概率为:
p(y(i)=j|x(i);θ)=eθTjx(i)kl=1eθTlx(i)

经过求导,得到梯度公式:
θjJ(θ)=1mi=1m[x(i)(1{y(i)=j}p(y(i)=j|x(i);θ))]

θjJ(θ) 是一个向量,它的第l个元素J(θ)θjlJ(θ)θj的第l个分量的偏导。
每次更新:θj:=θjαθjJ(θ),其中j[1,...,k]

权重衰减

虽然代价函数是上面形式,但是一般是添加一个权重衰减项λ2ki=1nj=0θ2ij,衰减项主要是惩罚过大的参数。
此时:

J(θ)=1mi=1mj=1k1{y(i)=j}logeθTjx(i)kl=1eθTlx(i)+λ2i=1kj=0nθ2ij

,求导变成:
θjJ(θ)=1mi=1m[x(i)(1{y(i)=j}p(y(i)=j|x(i);θ))]+λθj

1 0