原文地址:http://blog.csdn.net/hungryof/article/details/50395062
简介
其实吧,一般在神经网络中用的最多的是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)
对应的图形是:
,那么对应的对数图像是:
我们要做的是分类,因此当然是想知道,当输入x是,x分别属于每一个类的概率,概率最大的那个就是我们认为的属于的类。
让输出为一个向量,并且有k
维,分别代表属于i
类的概率。当然还要进行归一化,让输出的向量元素的值和为1.
这里的eθTix(i) 就是yi ,因此就是对输出进行归一化。
上面的公式真难打。。
可以看出,我们将hθ(x(i))
进行了变换,现在对于输入x(i)
,输出的是一个向量了,并不是像sigmoid的一个0~1的数。值得注意的是:θi∈Rn+1
是模型的参数。
softmax模型参数
softmax模型的参数是k个n+1维的θ
组成的矩阵,输出的是向量。
代价函数
1{⋅}
是indicator function,表示{}内的表达式正确为1,否则为0.
代价函数是:
可以这样理解,就是求另每个输入属于属于每一类的概率,再求平均。
对比logistic的J(θ)
可以看出,形式非常相似,只是在累的标记的k个可能值进行了累加。
将x分类到类别 j 的概率为:
经过求导,得到梯度公式:
∇θjJ(θ)
是一个向量,它的第l
个元素∂J(θ)∂θjl
是J(θ)
对θj
的第l
个分量的偏导。
每次更新:θj:=θj−α∇θjJ(θ)
,其中j∈[1,...,k]
权重衰减
虽然代价函数是上面形式,但是一般是添加一个权重衰减项λ2∑ki=1∑nj=0θ2ij
,衰减项主要是惩罚过大的参数。
此时:
,求导变成: