机器学习面试必知:简单易懂的逻辑回归

本文深入探讨了逻辑回归在二分类与多分类任务中的应用,解析了sigmoid和softmax函数的作用,以及它们如何被用于预测概率。通过似然函数和交叉熵损失函数,详细讲解了参数更新的过程,包括随机梯度下降和批量梯度下降的方法。

假设有数据集{(x1,t1),...,(xn,tn)}\left \{ (x_{1},t_{1}),...,(x_{n},t_{n}) \right \}{(x1,t1),...,(xn,tn)} ϕn=ϕ(xn)\phi _{n}=\phi \left ( x_{n}\right )ϕn=ϕ(xn) 其中ϕ\phiϕ是基函数 y(ϕ)=σ(wTϕ)y\left (\phi \right )=\sigma \left ( w^{T}\phi \right )y(ϕ)=σ(wTϕ)
sigmoid函数(为什么要用它下面会提到)σ(a)=11+e−a\sigma \left ( a \right )=\frac{1}{1+e^{-a}}σ(a)=1+ea1 导数dσda=σ(1−σ)\frac{d\sigma }{da}=\sigma\left ( 1-\sigma \right )dadσ=σ(1σ)

LR 损失函数为什么用极大似然函数?
LR由于使用sigmoid函数作为激活函数,最后的输出在(0,1),所以可以将它看成是一个概率预测问题。我们想要让 每一个 样本的预测都要得到最大的概率, 即将所有的样本预测后的概率进行相乘都最大,也就是极大似然函数.

我们先考虑二类逻辑回归的情况,那么tn∈{0,1}t_{n}\in \left \{ 0,1 \right \}tn{0,1} 似然函数可以如下表示p(t∣w)=∏n=1Nyntn{1−yn}1−tnp\left ( \textbf{t}|w \right )=\prod_{n=1}^{N}y_{n}^{t_{n}}\left \{ 1- y_{n}\right \}^{1-t_{n}}p(tw)=n=1Nyntn{1yn}1tn其中t={t1,...,tN}T\textbf{t}=\left \{ t_{1}, ...,t_{N}\right \}^{T}t={t1,...,tN}Tyn=y(ϕn)y_{n}=y\left (\phi_{n} \right )yn=y(ϕn)
接下来定义误差函数,取似然函数的负对数形式即交叉熵的形式E(w)=−lnp(t∣w)=−∑n=1N{tnlnyn+(1−tn)ln(1−yn)}E(w)=-\mathrm{ln}p\left ( \textbf{t}|w \right )=-\sum_{n=1}^{N}\left \{ t_{n}\mathrm{ln}y_{n}+ (1- t_{n} )\mathrm{ln}(1-y_{n}) \right \}E(w)=lnp(tw)=n=1N{tnlnyn+(1tn)ln(1yn)}两侧取误差函数的梯度,得到▽E(w)=−∑n=1N{tnynyn′−1−tn1−ynyn′}=∑n=1N(yn−tn)ϕn\bigtriangledown E(w)=-\sum_{n=1}^{N}\left \{ \frac{t_{n}}{y_{n}}y_{n}^{'} -\frac{1-t_{n}}{1-y_{n}}y_{n}^{'} \right \}=\sum_{n=1}^{N}\left ( y_{n}-t_{n} \right )\phi _{n}E(w)=n=1N{yntnyn1yn1tnyn}=n=1N(yntn)ϕn可以看到最右侧的形式与线性回归的平方和误差的梯度函数形式相同,这也是用sigmoid函数的一个原因

那么多分类逻辑回归呢? 首先激活函数换成softmax形式(为什么多分类用softmax下面会提到),t用1-K(one-hot编码)形式

softmax:

yk(ak)=eak∑j=1Neajy_{k}(a_{k})=\frac{e^{a_{k}}}{\sum_{j=1}^{N}e^{a_{j}}}yk(ak)=j=1Neajeak其中ak=wkTϕa_{k}=w_{k}^{T}\phiak=wkTϕ导数推导:∂yk∂aj=eak∑−eajeak∑2,k=j \frac{\partial y_{k}}{\partial a_{j}}=\frac{e^{a_{k}}\sum -e^{a_{j}}e^{a_{k}}}{\sum ^{2}}, k=jajyk=2eakeajeak,k=j∂yk∂aj=−eajeak∑2,k≠j\frac{\partial y_{k}}{\partial a_{j}}=\frac{-e^{a_{j}}e^{a_{k}}}{\sum ^{2}}, k\neq jajyk=2eajeak,k̸=j 合并得到(Ikj\mathrm{I}_{kj}Ikj是单位矩阵)∂yk∂aj=yk(Ikj−yj)\frac{\partial y_{k}}{\partial a_{j}}=y_{k}(\mathrm{I}_{kj}-y_{j})ajyk=yk(Ikjyj)

跟二分类一样先取似然函数
p(T∣w1,...,wk)=∏n=1N∏k=1Kynktnkp(\textbf{T}|w_{1},...,w_{k})=\prod_{n=1}^{N}\prod_{k=1}^{K}y_{nk}^{t_{nk}}p(Tw1,...,wk)=n=1Nk=1Kynktnk
其中T是目标变量的N*K的矩阵,元素为tnkt_{nk}tnk, ynk=yk(ϕn)y_{nk}=y_{k}(\phi_{n})ynk=yk(ϕn)
然后取负对数E(w1,...,wk)=−lnp(T∣w1,...,wk)=−∑n=1N∑k=1KtnklnynkE(w_{1},...,w_{k})=-\textrm{ln}p(\textbf{T}|w_{1},...,w_{k})=-\sum_{n=1}^{N}\sum_{k=1}^{K}t_{nk}\textrm{ln}y_{nk}E(w1,...,wk)=lnp(Tw1,...,wk)=n=1Nk=1Ktnklnynk
取误差函数关于wjw_{j}wj的梯度▽wjE(w1,...,wk)=−∑n=1N∑k=1K(tnkynk(ynk(Ikj−ynj)))=∑n=1N(ynj−tnj)ϕn\bigtriangledown_{w_{j}} E(w_{1},...,w_{k})=-\sum_{n=1}^{N}\sum_{k=1}^{K}\left ( \frac{t_{nk}}{y_{nk}}(y_{nk}(\mathrm{I}_{kj}-y_{nj})) \right )=\sum_{n=1}^{N}(y_{nj}-t_{nj})\phi_{n}wjE(w1,...,wk)=n=1Nk=1K(ynktnk(ynk(Ikjynj)))=n=1N(ynjtnj)ϕn
可以看到又得到了相似的结果即与线性回归的平方和误差的梯度函数形式相同。

那我们顺便看看线性回归的平方和误差的梯度函数形式(也能高斯噪声下说明最大似然和最小平方的关系)

y=wTϕ(x)y=w^{T}\phi(x)y=wTϕ(x)t=y(x,w)+ϵ,ϵ∈N(0,β−1)t=y(x,w)+\epsilon,\epsilon \in N(0,\beta^{-1})t=y(x,w)+ϵ,ϵN(0,β1) tϵN(y(x,w),β−1)t\epsilon N(y(x,w),\beta^{-1})tϵN(y(x,w),β1)
似然函数p(t∣x,w,β)=∏n=1NN(tn∣wTϕ(x),β−1)p(\mathrm{t}|x,w,\beta)=\prod_{n=1}^{N}N(t_{n}|w^{T}\phi(x),\beta^{-1})p(tx,w,β)=n=1NN(tnwTϕ(x),β1) 取负对数E(w,β)=lnp=−0.5∗β∗∑n=1N(tn−wTϕ(x))2+0.5∗N(lnβ−ln2π)E(w,\beta)=\mathrm{ln}p=-0.5*\beta*\sum_{n=1}^{N}(t_{n}-w^{T}\phi(x))^{2}+0.5*N(\mathrm{ln}\beta-\mathrm{ln}2\pi)E(w,β)=lnp=0.5βn=1N(tnwTϕ(x))2+0.5N(lnβln2π)
可以看到如果对w求梯度也会得到∑n=1N(yn−tn)ϕn\sum_{n=1}^{N}\left ( y_{n}-t_{n} \right )\phi _{n}n=1N(yntn)ϕn这种形式。

下面说说二分类和多分类激活函数的选取

二分类考虑伯努利分布p(x∣u)=Bern(x∣u)=ux(1−u)1−x=(1−u)exp(lnu1−ux)p(x|u)=Bern(x|u)=u^{x}(1-u)^{1-x}=(1-u)exp(\mathrm{ln}\frac{u}{1-u}x)p(xu)=Bern(xu)=ux(1u)1x=(1u)exp(ln1uux)

这里有个知识点,标准的指数分布p(x∣η)=h(x)g(η)exp(ηTϕ(x))p(x|\eta)=h(x)g(\eta)exp(\eta^{T}\phi(x))p(xη)=h(x)g(η)exp(ηTϕ(x))
在给定xxxwww后,yyy的条件概率P(y∣x;w)P(y|x;w)P(yx;w)服从指数分布。在给定x去预测y的期望值h(x)=E(y∣x)h(x)=E(y|x)h(x)=E(yx),h(x)是预测函数,满足η=wTx\eta=w^{T}xη=wTx

转换为指数分布的形式有η=lnu1−u\eta=\mathrm{ln}\frac{u}{1-u}η=ln1uu---->exp(η)=u1−uexp(\eta)=\frac{u}{1-u}exp(η)=1uu---->u=exp(η)1+exp(η)u=\frac{exp(\eta)}{1+exp(\eta)}u=1+exp(η)exp(η)---->u=σ(η)=11+exp(−η)u=\sigma(\eta)=\frac{1}{1+exp(-\eta)}u=σ(η)=1+exp(η)1

考虑到伯努利分布E(x∣u)=uE(x|u)=uE(xu)=u,由上可得u=σ(η)=11+exp(−η)=11+exp(−wTx)u=\sigma(\eta)=\frac{1}{1+exp(-\eta)}=\frac{1}{1+exp(-w^{T}x)}u=σ(η)=1+exp(η)1=1+exp(wTx)1这就是预测函数h(x),这也就解释了激活函数为什么要用sigmoid。

多分类考虑多项式分布(同理可得)
p(x∣u)=∏k=1Kukxk=exp(∑k=1Kxklnuk)p(x|u)=\prod_{k=1}^{K}u_{k}^{x_{k}}=exp(\sum_{k=1}^{K}x_{k}\mathrm{ln}u_{k})p(xu)=k=1Kukxk=exp(k=1Kxklnuk)所以ηk=lnuk\eta_{k}=\mathrm{ln}u_{k}ηk=lnuk
h(x)=E(x∣u)=(u1,...,uK)T=(exp(η1),...,exp(ηK))Th(x)=E(x|u)=(u_{1},...,u_{K})^{T}=(exp(\eta_{1}),...,exp(\eta_{K}))^{T}h(x)=E(xu)=(u1,...,uK)T=(exp(η1),...,exp(ηK))T
还有限制条件∑k=1Kuk=1\sum_{k=1}^{K}u_{k}=1k=1Kuk=1所以最后的h(x)为(exp(w1Tx),...,exp(wKTx))T∑j=1Kexp(wjTx)\frac{(exp(w_{1}^{T}x),...,exp(w_{K}^{T}x))^{T}}{\sum_{j=1}^{K}exp(w_{j}^{T}x)}j=1Kexp(wjTx)(exp(w1Tx),...,exp(wKTx))T

最后再考虑softmax函数中K=2即二分类

(exp(w1Tx),exp(w2Tx))T(exp(w1Tx)+exp(w2Tx)\frac{(exp(w_{1}^{T}x),exp(w_{2}^{T}x))^{T}}{(exp(w_{1}^{T}x)+exp(w_{2}^{T}x)}(exp(w1Tx)+exp(w2Tx)(exp(w1Tx),exp(w2Tx))T
上下同时乘以exp(−w2Tx)exp(-w_{2}^{T}x)exp(w2Tx)得到((exp(w1T−w2T)x),1)T(exp(w1T−w2T)x)+1\frac{((exp(w_{1}^{T}-w_{2}^{T})x),1)^{T}}{(exp(w_{1}^{T}-w_{2}^{T})x)+1}(exp(w1Tw2T)x)+1((exp(w1Tw2T)x),1)T可以看到变成了sigmoid形式。在工程上实现时,让了防止譬如exp(1e8)这样的数值过大,通常也需要同乘exp(−max(wkT)x)exp(-max(w_{k}^{T})x)exp(max(wkT)x)

我们接下来看看如何更新模型中的参数。

  1. 顺序学习:用随机梯度法,每次更新使用一个数据w(τ+1)=w(τ)−η▽Enw^{(\tau+1)}=w^{(\tau)}-\eta\bigtriangledown E_{n}w(τ+1)=w(τ)ηEn
  2. 批量梯度法:用一组m个数据来更新▽∑j=1mEj\bigtriangledown \sum_{j=1}^{m}E_{j}j=1mEj
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值