提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
本文主要记录对数几率回归模型的学习和推导过程。
提示:以下是本篇文章正文内容,下面案例可供参考
一、对数几率回归模型
示例:对数几率回归模型又叫逻辑回归(LogisticRegression)。
在分类任务中,在给定输入x的情况下,概率密度函数为:
p ( y ∣ x ; μ ) = μ ( x ) y ( 1 − μ ( x ) ) 1 − y p(y|x;\mu)=\mu(x)^y(1-\mu(x))^{1-y} p(y∣x;μ)=μ(x)y(1−μ(x))1−y
期望 μ ( x ) \mu(x) μ(x) 如何表示? 最简单的模型: 线性模型
μ ( x ) = w T x \mu(x)=w^\mathrm{T}x μ(x)=wTx
但是
μ
(
x
)
\mu(x)
μ(x)表示给定
x
x
x的情况下,
y
=
1
y=1
y=1的概率,取值为区间[0,1]。
所以,将
w
T
x
w^\mathrm{T}x
wTx的输出范围转换到[0,1]:
利用 sigmoid函数 (S形函数)可以实现该转换:
Sigmoid函数为:
d
σ
(
z
)
d
z
=
σ
(
z
)
(
1
−
σ
(
z
)
)
\frac{d\sigma(z)}{dz}=\sigma(z)(1-\sigma(z))
dzdσ(z)=σ(z)(1−σ(z))
二、损失函数
1.交叉熵损失
对数几率模型:
y
∣
x
∼
B
e
r
n
o
u
l
l
i
(
μ
(
x
)
)
,
p
(
y
∣
x
;
μ
(
x
)
)
=
μ
(
x
)
y
(
1
−
μ
(
x
)
)
(
1
−
y
)
,其中
μ
(
x
)
=
σ
(
w
T
x
)
y|x\thicksim\mathrm{Bernoulli}(\mu(x)), p(y|x;\mu(x))=\mu(x)^y(1-\mu(x))^{(1-y)} ,其中 \mu(x)=\sigma(w^\mathrm{T}x^\mathrm{~})
y∣x∼Bernoulli(μ(x)),p(y∣x;μ(x))=μ(x)y(1−μ(x))(1−y),其中μ(x)=σ(wTx )
log似然:
ℓ
(
μ
)
=
ln
p
(
D
)
=
∑
i
=
1
N
ln
p
(
y
i
∣
x
i
)
=
∑
i
=
1
N
ln
(
μ
(
x
i
)
y
i
(
1
−
μ
(
x
i
)
)
(
1
−
y
i
)
)
\begin{aligned}\ell(\mu)&=\ln p(\mathcal{D})=\sum_{i=1}^N\ln p(y_i|x_i)\\&=\sum_{i=1}^N\ln\bigl(\mu(x_i)^{y_i}(1-\mu(x_i))^{(1-y_i)}\bigr)\end{aligned}
ℓ(μ)=lnp(D)=i=1∑Nlnp(yi∣xi)=i=1∑Nln(μ(xi)yi(1−μ(xi))(1−yi))
交叉熵损失:
定义负log似然损失又叫交叉熵损失为:
L
(
y
,
μ
(
x
)
)
=
−
y
ln
(
μ
(
x
)
)
−
(
1
−
y
)
ln
(
1
−
μ
(
x
)
)
L\bigl(y,\mu(x)\bigr)=-y\ln\bigl(\mu(x)\bigr)-(1-y)\ln\bigl(1-\mu(x)\bigr)
L(y,μ(x))=−yln(μ(x))−(1−y)ln(1−μ(x))
对数几率回归的损失函数采用交叉熵损失
L ( y , μ ( x ) ) = − y ln ( μ ( x ) ) − ( 1 − y ) ln ( 1 − μ ( x ) ) L\big(y,\mu(x)\big)=-y\ln\big(\mu(x)\big)-(1-y)\ln\big(1-\mu(x)\big) L(y,μ(x))=−yln(μ(x))−(1−y)ln(1−μ(x))
其中
y
y
y为真值,
μ
(
x
)
=
σ
(
w
T
x
)
\mu(x)=\sigma(w^\mathrm{T}x^\mathrm{~})
μ(x)=σ(wTx )为预测值为1的概率。
N个样本上的目标函数如下:
J
(
w
,
b
)
=
1
N
∑
i
=
1
N
L
(
y
i
^
,
y
i
)
=
−
1
N
∑
i
=
1
N
[
y
i
l
n
(
y
i
^
)
+
(
1
−
y
i
)
l
n
(
1
−
y
i
^
)
]
J(w,b)=\frac1N\sum_{i=1}^NL(\hat{y_i},y_i)=-\frac1N\sum_{i=1}^N[y_iln(\hat{y_i})+(1-y_i)ln(1-\hat{y_i})]
J(w,b)=N1i=1∑NL(yi^,yi)=−N1i=1∑N[yiln(yi^)+(1−yi)ln(1−yi^)]
2.加入正则项的目标函数
J
(
w
,
b
)
=
1
N
∑
i
=
1
N
L
(
y
i
^
,
y
i
)
=
−
1
N
∑
i
=
1
N
[
y
i
l
n
(
y
i
^
)
+
(
1
−
y
i
)
l
n
(
1
−
y
i
^
)
]
J(w,b)=\frac1N\sum_{i=1}^NL(\hat{y_i},y_i)=-\frac1N\sum_{i=1}^N[y_iln(\hat{y_i})+(1-y_i)ln(1-\hat{y_i})]
J(w,b)=N1i=1∑NL(yi^,yi)=−N1i=1∑N[yiln(yi^)+(1−yi)ln(1−yi^)]
加入正则项:
实现的目标函数为
J
(
w
,
b
,
λ
)
=
C
∑
i
=
1
N
L
(
y
i
,
μ
(
x
i
;
w
)
)
+
λ
R
(
w
)
J(w,b,\lambda)=C\sum_{i=1}^N L\bigl(y_i,\mu(x_i;w)\bigr)+\lambda R(w)
J(w,b,λ)=Ci=1∑NL(yi,μ(xi;w))+λR(w)
正则项
R
(
w
)
可为L1正则、L2正则、L1正则+L2正则
\text{正则项}R(\mathbf{w})\text{可为L1正则、L2正则、L1正则+L2正则}
正则项R(w)可为L1正则、L2正则、L1正则+L2正则正则越少。 其中超参数
C
C
C起到正则作用,
C
C
C越大,正则越少。
3.求梯度
以L2正则为例:
正则项取L2正则
:
R
(
w
)
=
∑
j
=
1
D
w
j
2
=
w
T
w
\text{正则项取L2正则}:R(\mathbf{w})=\sum_{j=1}^Dw_j^2=w^Tw
正则项取L2正则:R(w)=j=1∑Dwj2=wTw
对于单个样本:
目标函数为
J
(
w
,
b
,
λ
)
=
−
y
ln
(
μ
(
x
)
)
−
(
1
−
y
)
ln
(
1
−
μ
(
x
)
)
+
λ
∑
j
=
1
D
w
j
2
J(w,b,\lambda)=-y\ln\bigl(\mu(x)\bigr)-(1-y)\ln\bigl(1-\mu(x)\bigr)+\lambda \sum_{j=1}^Dw_j^2
J(w,b,λ)=−yln(μ(x))−(1−y)ln(1−μ(x))+λj=1∑Dwj2
首先给出预备知识:
μ
(
x
,
w
)
=
σ
(
w
T
x
+
b
)
σ
(
z
)
=
1
1
+
e
−
z
d
σ
(
z
)
d
z
=
σ
(
z
)
(
1
−
σ
(
z
)
)
∂
(
w
T
x
+
b
)
∂
w
=
x
∂
(
w
T
x
+
b
)
∂
b
=
1
\begin{gathered} \mu(x,w)=\sigma(w^{\mathrm{T}}x+b) \\ \sigma(z)=\frac{1}{1+e^{-z}} \\ \frac{d\sigma(z)}{dz}=\sigma(z)(1-\sigma(z)) \\ \frac{\partial\left(\boldsymbol{w}^\mathrm{T}\boldsymbol{x +b}\right)}{\partial\boldsymbol{w}}=x \\ \frac{\partial\left(\boldsymbol{w}^\mathrm{T}\boldsymbol{x +b}\right)}{\partial\boldsymbol{b}}=1 \end{gathered}
μ(x,w)=σ(wTx+b)σ(z)=1+e−z1dzdσ(z)=σ(z)(1−σ(z))∂w∂(wTx+b)=x∂b∂(wTx+b)=1
第一步:
∂
J
∂
u
(
x
)
=
−
∂
∂
u
(
x
)
[
y
l
o
g
u
(
w
,
x
)
+
(
1
−
y
)
l
o
g
(
1
−
u
(
x
)
)
]
=
−
y
u
(
x
)
+
1
−
y
1
−
u
(
x
)
\begin{aligned} \frac{\partial J}{\partial u(x)}& =-\frac\partial{\partial u(x)}[ylogu(w,x)+(1-y)log(1-u(x))] & \\ &=-\frac y{u(x)}+\frac{1-y}{1-u(x)} \end{aligned}
∂u(x)∂J=−∂u(x)∂[ylogu(w,x)+(1−y)log(1−u(x))]=−u(x)y+1−u(x)1−y
其次:
d
σ
(
z
)
d
z
=
u
(
x
)
(
1
−
u
(
x
)
)
∂
z
(
w
,
b
)
∂
w
=
−
∂
∂
w
(
w
T
x
+
b
)
=
x
∂
z
(
w
,
b
)
∂
b
=
−
∂
∂
b
(
w
T
x
+
b
)
=
1
\begin{gathered} \begin{aligned}\frac{d\sigma(z)}{dz}=u(x)(1-u(x))\end{aligned} \\ \begin{aligned}\frac{\partial z(w,b)}{\partial w}=-\frac\partial{\partial w}(w^Tx+b)=x\end{aligned} \\ \frac{\partial z(w,b)}{\partial b}=-\frac\partial{\partial b}(w^Tx+b)=1 \end{gathered}
dzdσ(z)=u(x)(1−u(x))∂w∂z(w,b)=−∂w∂(wTx+b)=x∂b∂z(w,b)=−∂b∂(wTx+b)=1
又:
∂
R
(
w
)
∂
w
=
2
w
∂
R
(
w
)
∂
b
=
0
ω
\begin{aligned}\frac{\partial R(w)}{\partial w}&=2w\\\frac{\partial R(w)}{\partial b}&=0\end{aligned}^{\omega}
∂w∂R(w)∂b∂R(w)=2w=0ω
根据求导链式法则得到:
∂
J
∂
w
=
∂
J
∂
u
(
x
)
d
σ
(
z
)
d
z
∂
z
(
w
,
b
)
∂
w
=
(
u
(
x
)
−
y
)
x
+
2
λ
w
∂
J
∂
b
=
∂
J
∂
u
(
x
)
d
σ
(
z
)
d
z
∂
z
(
w
,
b
)
∂
b
=
u
(
x
)
−
y
\begin{aligned}\frac{\partial J}{\partial w}&=\frac{\partial J}{\partial u(x)}\frac{d\sigma(z)}{dz}\frac{\partial z(w,b)}{\partial w}=(u(x)-y)x+2\lambda w\\\frac{\partial J}{\partial b}&=\frac{\partial J}{\partial u(x)}\frac{d\sigma(z)}{dz}\frac{\partial z(w,b)}{\partial b}={}^{}u(x)-y\end{aligned}
∂w∂J∂b∂J=∂u(x)∂Jdzdσ(z)∂w∂z(w,b)=(u(x)−y)x+2λw=∂u(x)∂Jdzdσ(z)∂b∂z(w,b)=u(x)−y
综上:
当提供学习率时就可以进行梯度下将求解;
1. 初始化
w
(
0
)
w^{(0)}
w(0) ( 上标括号中的数字表示迭代次数 ) ; 2. 计算函数
J
(
w
)
J_{(w)}
J(w)在当前位置
w
(
t
)
w^{(t)}
w(t)处的梯度
∇
w
J
∣
w
(
t
)
\color{red}{\nabla_w}\color{red}{J|_{w^{(t)}}}
∇wJ∣w(t)
- 根据当前学习率η,更新参数
w ( t + 1 ) = w ( t ) − η ∇ w J ∣ w ( t ) w^{(t+1)}=w^{(t)}-\eta\left.\nabla_wJ\right|_{w^{(t)}} w(t+1)=w(t)−η∇wJ∣w(t)
4.若 J ( w ( t ) ) − J ( w ( t + 1 ) ) < ε J(w^{(t)})-J(w^{(t+1)})<\varepsilon J(w(t))−J(w(t+1))<ε,返回 w ( t ) w^{(t)} w(t)为最佳参数 ; 否则 t = t + 1 t=t+1 t=t+1,转第2步。
总结
主要是进行一个逻辑回归梯度得一个求解。