假设有数据集
{(x1,t1),...,(xn,tn)}
ϕn=ϕ(xn) 其中
ϕ是基函数
y(ϕ)=σ(wTϕ)
sigmoid函数(为什么要用它下面会提到)
σ(a)=1+e−a1 导数
dadσ=σ(1−σ)
LR 损失函数为什么用极大似然函数?
LR由于使用sigmoid函数作为激活函数,最后的输出在(0,1),所以可以将它看成是一个概率预测问题。我们想要让 每一个 样本的预测都要得到最大的概率, 即将所有的样本预测后的概率进行相乘都最大,也就是极大似然函数.
我们先考虑二类逻辑回归的情况,那么
tn∈{0,1} 似然函数可以如下表示
p(t∣w)=n=1∏Nyntn{1−yn}1−tn其中
t={t1,...,tN}T,
yn=y(ϕn)
接下来定义误差函数,取似然函数的负对数形式即交叉熵的形式
E(w)=−lnp(t∣w)=−n=1∑N{tnlnyn+(1−tn)ln(1−yn)}两侧取误差函数的梯度,得到
▽E(w)=−n=1∑N{yntnyn′−1−yn1−tnyn′}=n=1∑N(yn−tn)ϕn可以看到最右侧的形式与线性回归的平方和误差的梯度函数形式相同,这也是用sigmoid函数的一个原因
那么多分类逻辑回归呢?
首先激活函数换成softmax形式(为什么多分类用softmax下面会提到),t用1-K(one-hot编码)形式
softmax:
yk(ak)=∑j=1Neajeak其中
ak=wkTϕ导数推导:
∂aj∂yk=∑2eak∑−eajeak,k=j
∂aj∂yk=∑2−eajeak,k̸=j 合并得到(
Ikj是单位矩阵)
∂aj∂yk=yk(Ikj−yj) 跟二分类一样先取似然函数
p(T∣w1,...,wk)=n=1∏Nk=1∏Kynktnk
其中T是目标变量的N*K的矩阵,元素为
tnk,
ynk=yk(ϕn)
然后取负对数
E(w1,...,wk)=−lnp(T∣w1,...,wk)=−n=1∑Nk=1∑Ktnklnynk
取误差函数关于
wj的梯度
▽wjE(w1,...,wk)=−n=1∑Nk=1∑K(ynktnk(ynk(Ikj−ynj)))=n=1∑N(ynj−tnj)ϕn
可以看到又得到了相似的结果即与线性回归的平方和误差的梯度函数形式相同。
那我们顺便看看线性回归的平方和误差的梯度函数形式(也能高斯噪声下说明最大似然和最小平方的关系)
y=wTϕ(x)
t=y(x,w)+ϵ,ϵ∈N(0,β−1)
tϵN(y(x,w),β−1)
似然函数
p(t∣x,w,β)=∏n=1NN(tn∣wTϕ(x),β−1) 取负对数
E(w,β)=lnp=−0.5∗β∗n=1∑N(tn−wTϕ(x))2+0.5∗N(lnβ−ln2π)
可以看到如果对w求梯度也会得到
∑n=1N(yn−tn)ϕn这种形式。
下面说说二分类和多分类激活函数的选取
二分类考虑伯努利分布
p(x∣u)=Bern(x∣u)=ux(1−u)1−x=(1−u)exp(ln1−uux)
标准的指数分布
p(x∣η)=h(x)g(η)exp(ηTϕ(x))
所以
η=ln1−uu---->
exp(η)=1−uu---->
u=1+exp(η)exp(η)---->
u=σ(η)=1+exp(−η)1
使用广义线性模型,满足符合指数分布的条件下,在给定x去预测y的期望值
h(x)=E(y∣x),h(x)是预测函数,满足
η=wTx
考虑到伯努利分布
E(x∣u)=u,由上可得
u=σ(η)=1+exp(−η)1=1+exp(−wTx)1这就是预测函数h(x),这也就解释了激活函数为什么要用sigmoid。
多分类考虑多项式分布(同理可得)
p(x∣u)=∏k=1Kukxk=exp(∑k=1Kxklnuk)所以
ηk=lnuk
h(x)=E(x∣u)=(u1,...,uK)T=(exp(η1),...,exp(ηK))T
还有限制条件
∑k=1Kuk=1所以最后的h(x)为
∑j=1Kexp(wjTx)(exp(w1Tx),...,exp(wKTx))T
最后再考虑softmax函数中K=2即二分类
(exp(w1Tx)+exp(w2Tx)(exp(w1Tx),exp(w2Tx))T
上下同时乘以
exp(−w2Tx)得到
(exp(w1T−w2T)x)+1((exp(w1T−w2T)x),1)T可以看到变成了sigmoid形式。在工程上实现时,让了防止譬如exp(1e8)这样的数值过大,通常也需要同乘
exp(−max(wkT)x)
我们接下来看看如何更新模型中的参数。
- 顺序学习:用随机梯度法,每次更新使用一个数据
w(τ+1)=w(τ)−η▽En
- 批量梯度法:用一组m个数据来更新
▽∑j=1mEj