先来回顾一下Linner Regression和Logistic Regression,而Softmax Regression可以认为是多类别的Logistic Regression。
因为看过李宏毅老师的视频,这里就以他的讲解作为基础。
本文 从Linner Regression和Logistic Regression对比导入2分类问题的Logistic Regression
然后介绍多分类的Logistic Regression,实际上就是Softmax Regression,以及它们之间关系
最后说明什么情况下用Logistic Regression和Softmax Regression
Linner Regression和Logistic Regression对比
Linner Regression基础这里就不在赘述,我们先从 Linner Regression和Logistic Regression对比开始导入。
从机器学习3个步骤开始,即:需要拟合的函数表达式(Function Set)、拟合就需要损失函数来量化拟合的好不好Goodness of a Function (Loss Function)、拟合具体实现一般就是用梯度下降(Find the best function)
Step 1: Function Set
Linner Regression
熟知的线性模型:
f
w
,
b
(
x
)
=
∑
i
w
i
x
i
+
b
f_{w, b}(x)=\sum_{i} w_{i} x_{i}+b
fw,b(x)=i∑wixi+b
Logistic Regression
比较复杂了,详细可以参考下这里,这里简单过一下:
根据贝叶斯公式,x为C的概率表示如下。然后进行改写,转成sigmod函数形式。
P ( C 1 ∣ x ) = P ( x ∣ C 1 ) P ( C 1 ) P ( x ∣ C 1 ) P ( C 1 ) + P ( x ∣ C 2 ) P ( C 2 ) = 1 1 + P ( x ∣ C 2 ) P ( C 2 ) P ( x ∣ C 1 ) P ( C 1 ) = 1 1 + exp ( − z ) = σ ( z ) P\left(C_{1} \mid x\right)=\frac{P\left(x \mid C_{1}\right) P\left(C_{1}\right)}{P\left(x \mid C_{1}\right) P\left(C_{1}\right)+P\left(x \mid C_{2}\right) P\left(C_{2}\right)} \\\\ =\frac{1}{1+\frac{P\left(x \mid C_{2}\right) P\left(C_{2}\right)}{P\left(x \mid C_{1}\right) P\left(C_{1}\right)}}=\frac{1}{1+\exp (-z)}=\sigma(z) P(C1∣x)=P(x∣C1)P(C1)+P(x∣C2)P(C2)P(x∣C1)P(C1)=1+P(x∣C1)P(C1)P(x∣C2)P(C2)1=1+exp(−z)1=σ(z)
z = ln P ( x ∣ C 1 ) P ( C 1 ) P ( x ∣ C 2 ) P ( C 2 ) z=\ln \frac{P\left(x \mid C_{1}\right) P\left(C_{1}\right)}{P\left(x \mid C_{2}\right) P\left(C_{2}\right)} z=lnP(x∣C2)P(C2)P(x∣C1)P(C1)
然后z经过一系列推导可以装换成如下形式(推导过程可以看李宏毅视频,用极大似然求均值
μ
\mu
μ和方差
Σ
\Sigma
Σ的高斯分布,来拟合数据分布,从而进行划分):
当方差
Σ
1
=
Σ
2
=
Σ
\Sigma_{1}=\Sigma_{2}=\Sigma
Σ1=Σ2=Σ时,划分边界变成线性(至于为什么要变成线性,变成线性准确度怎么样?就不展开了)。即下面形式:
变成这个形式有个好处,就是可以用w和b来代替里面一大串均值
μ
\mu
μ和方差
Σ
\Sigma
Σ,而均值
μ
\mu
μ和方差
Σ
\Sigma
Σ是在假设数据是高斯分布的情况下才有的。从而导致人为的假设引入,而衰弱了数据原本的表达能力,这种称为Generative方法。
而用w和b来代替里面均值
μ
\mu
μ和方差
Σ
\Sigma
Σ,完全依据数据学习w和b,不关心均值
μ
\mu
μ和方差
Σ
\Sigma
Σ。这种称为Discriminative方法。
因此:
f
w
,
b
(
x
)
=
P
(
C
1
∣
x
)
=
σ
(
z
)
=
σ
(
w
⋅
x
+
b
)
=
1
1
+
exp
(
−
z
)
f_{w, b}(x)=P\left(C_{1} \mid x\right)=\sigma(z)=\sigma(w \cdot x+b)=\frac{1}{1+\exp (-z)}
fw,b(x)=P(C1∣x)=σ(z)=σ(w⋅x+b)=1+exp(−z)1
σ
(
z
)
\sigma(z)
σ(z)就是一个Sigmoid函数,输出也符合概率在0~1范围内。
小结
由此可以看到Logistic Regression中z其实就是一个线性模型,z = wx + b,与Linner Regression不同的是,z不是最终输出,z经过了sigmod才输出。
Step 2: Goodness of a Function (Loss Function)
Linner Regression
用平方误差做为损失函数求最好的拟合函数
L
(
f
)
=
1
2
∑
n
(
f
(
x
n
)
−
y
^
n
)
2
L(f)=\frac{1}{2} \sum_{n}\left(f\left(x^{n}\right)-\hat{y}^{n}\right)^{2}
L(f)=21n∑(f(xn)−y^n)2
其中,
y
^
n
:
\hat{y}^{n}:
y^n: a real number
Logistic Regression
如果训练数据如下:
x
1
x
2
x
3
x
N
C
1
C
1
C
2
⋯
⋯
C
1
\begin{array}{ccccc} x^{1} & x^{2} & x^{3} & & x^{N} \\ C_{1} & C_{1} & C_{2} & \cdots \cdots & C_{1} \end{array}
x1C1x2C1x3C2⋯⋯xNC1
定义一个函数L
L
(
w
,
b
)
=
f
w
,
b
(
x
1
)
f
w
,
b
(
x
2
)
(
1
−
f
w
,
b
(
x
3
)
)
⋯
f
w
,
b
(
x
N
)
L(w, b)=f_{w, b}\left(x^{1}\right) f_{w, b}\left(x^{2}\right)\left(1-f_{w, b}\left(x^{3}\right)\right) \cdots f_{w, b}\left(x^{N}\right)
L(w,b)=fw,b(x1)fw,b(x2)(1−fw,b(x3))⋯fw,b(xN)
其中
f
w
,
b
(
x
)
=
P
w
,
b
(
C
1
∣
x
)
f_{w, b}(x)=P_{w, b}\left(C_{1} \mid x\right)
fw,b(x)=Pw,b(C1∣x),需要求最大的L也就是当w、b使得L最大,就找到最好的函数
z
z
z,即:
w
∗
,
b
∗
=
arg
max
w
,
b
L
(
w
,
b
)
=
arg
min
w
,
b
−
ln
L
(
w
,
b
)
w^{*}, b^{*}=\arg \max _{w, b} L(w, b) = \arg \min _{w, b}-\ln L(w, b)
w∗,b∗=argw,bmaxL(w,b)=argw,bmin−lnL(w,b)
L
(
w
,
b
)
=
f
w
,
b
(
x
1
)
f
w
,
b
(
x
2
)
(
1
−
f
w
,
b
(
x
3
)
)
⋯
f
w
,
b
(
x
N
)
L(w, b)=f_{w, b}\left(x^{1}\right) f_{w, b}\left(x^{2}\right)\left(1-f_{w, b}\left(x^{3}\right)\right) \cdots f_{w, b}\left(x^{N}\right)
L(w,b)=fw,b(x1)fw,b(x2)(1−fw,b(x3))⋯fw,b(xN)
而:
−
ln
L
(
w
,
b
)
=
ln
f
w
,
b
(
x
1
)
+
ln
f
w
,
b
(
x
2
)
+
ln
(
1
−
f
w
,
b
(
x
3
)
)
⋯
=
∑
n
−
[
y
^
n
ln
f
w
,
b
(
x
n
)
+
(
1
−
y
^
n
)
ln
(
1
−
f
w
,
b
(
x
n
)
)
]
-\ln L(w, b)=\ln f_{w, b}\left(x^{1}\right)+\ln f_{w, b}\left(x^{2}\right)+\ln \left(1-f_{w, b}\left(x^{3}\right)\right) \cdots\\ =\sum_{n}-\left[\hat{y}^{n} \ln f_{w, b}\left(x^{n}\right)+\left(1-\hat{y}^{n}\right) \ln \left(1-f_{w, b}\left(x^{n}\right)\right)\right]
−lnL(w,b)=lnfw,b(x1)+lnfw,b(x2)+ln(1−fw,b(x3))⋯=n∑−[y^nlnfw,b(xn)+(1−y^n)ln(1−fw,b(xn))]
其中,
y
^
n
:
1
\hat{y}^{n}: 1
y^n:1 for class 1,0 for class 2,
推导过程:
−
ln
L
(
w
,
b
)
=
−
ln
f
w
,
b
(
x
1
)
−
ln
f
w
,
b
(
x
2
)
−
ln
(
1
−
f
w
,
b
(
x
3
)
)
\begin{array}{r} -\ln L(w, b) \\ =-\ln f_{w, b}\left(x^{1}\right) \\ -\ln f_{w, b}\left(x^{2}\right) \\ -\ln \left(1-f_{w, b}\left(x^{3}\right)\right) \end{array}
−lnL(w,b)=−lnfw,b(x1)−lnfw,b(x2)−ln(1−fw,b(x3))
转为(这一步这么做事什么公式推到的吗?个人认为是根据
y
^
n
\hat{y}^{n}
y^n的值刚和可以凑出下面形式,并且这种形式统一,便于表示):
·
−
[
y
^
1
ln
f
(
x
1
)
+
(
1
−
y
^
1
)
ln
(
1
−
f
(
x
1
)
)
]
−
[
y
^
2
ln
f
(
x
2
)
+
(
1
−
y
^
2
)
ln
(
1
−
f
(
x
2
)
)
]
−
[
y
^
3
ln
f
(
x
3
)
+
(
1
−
y
^
3
)
ln
(
1
−
f
(
x
3
)
)
]
\begin{array}{l} -\left[\hat{y}^{1} \ln f\left(x^{1}\right)+\left(1-\hat{y}^{1}\right) \ln \left(1-f\left(x^{1}\right)\right)\right] \\ -\left[\hat{y}^{2} \ln f\left(x^{2}\right)+\left(1-\hat{y}^{2}\right) \ln \left(1-f\left(x^{2}\right)\right)\right] \\ -\left[\hat{y}^{3} \ln f\left(x^{3}\right)+\left(1-\hat{y}^{3}\right) \ln \left(1-f\left(x^{3}\right)\right)\right] \end{array}
−[y^1lnf(x1)+(1−y^1)ln(1−f(x1))]−[y^2lnf(x2)+(1−y^2)ln(1−f(x2))]−[y^3lnf(x3)+(1−y^3)ln(1−f(x3))]
如果把
y
^
n
\hat{y}^{n}
y^n的值带入,刚好可以装换:
再回到上面:
∑
n
−
[
y
^
n
ln
f
w
,
b
(
x
n
)
+
(
1
−
y
^
n
)
ln
(
1
−
f
w
,
b
(
x
n
)
)
]
\sum_{n}-\left[\hat{y}^{n} \ln f_{w, b}\left(x^{n}\right)+\left(1-\hat{y}^{n}\right) \ln \left(1-f_{w, b}\left(x^{n}\right)\right)\right]
n∑−[y^nlnfw,b(xn)+(1−y^n)ln(1−fw,b(xn))]
就是交叉熵(Cross entropy)在伯努利分布中的表示
因此最终
L
(
f
)
=
∑
n
C
(
f
(
x
n
)
,
y
^
n
)
L(f)=\sum_{n} C\left(f\left(x^{n}\right), \hat{y}^{n}\right)
L(f)=n∑C(f(xn),y^n)
其中
y
^
n
:
1
\hat{y}^{n}: 1
y^n:1 for class 1,0 for class 2
C
(
f
(
x
n
)
,
y
^
n
)
=
−
[
y
^
n
ln
f
(
x
n
)
+
(
1
−
y
^
n
)
ln
(
1
−
f
(
x
n
)
)
]
C\left(f\left(x^{n}\right), \hat{y}^{n}\right)=-\left[\hat{y}^{n} \ln f\left(x^{n}\right)+\left(1-\hat{y}^{n}\right) \ln \left(1-f\left(x^{n}\right)\right)\right]
C(f(xn),y^n)=−[y^nlnf(xn)+(1−y^n)ln(1−f(xn))]
小结
交叉熵的具体含义可以看这里,即在Logistic Regression,损失函数描述为:其用来衡量在给定的真实分布下,使用非真实分布所指定的策略消除系统的不确定性所需要付出的努力的大小。所以付出努力越小,损失越小,说明越接近真实分布。而Linner Regression的损失不是基于分布这么概念,“就是一种朴素就求距离的概念”(个人理解)。
还有这里解释了用了sigmod后,为什么Logistic Regression不能用 Square Error。
Step 3: Find the best function
Linear Regression
对表达式对w求导就得到:
w
i
←
w
i
−
η
∑
n
(
y
^
n
−
f
w
,
b
(
x
n
)
)
x
i
n
w_{i} \leftarrow w_{i}-\eta \sum_{n}\left(\hat{y}^{n}-f_{w, b}\left(x^{n}\right)\right) x_{i}^{n}
wi←wi−ηn∑(y^n−fw,b(xn))xin
Logistic Regression
实际上就是去找到使loss function即交叉嫡之和最小的那组参数
w
∗
,
b
∗
w^{*}, b^{*}
w∗,b∗ 就行了,这里用gradient descent的方法进 行运算就ok
这里sigmoid function的微分可以直接作为公式记下来:
∂
σ
(
z
)
∂
z
=
σ
(
z
)
(
1
−
σ
(
z
)
)
,
\frac{\partial \sigma(z)}{\partial z}=\sigma(z)(1-\sigma(z)),
∂z∂σ(z)=σ(z)(1−σ(z)), sigmoid和它的微分的图像如下:
先计算 − ln L ( w , b ) = ∑ n − [ y ^ n ln f w , b ( x n ) + ( 1 − y ^ n ) ln ( 1 − f w , b ( x n ) ) ] -\ln L(w, b)=\sum_{n}-\left[\hat{y}^{n} \ln f_{w, b}\left(x^{n}\right)+\left(1-\hat{y}^{n}\right) \ln \left(1-f_{w, b}\left(x^{n}\right)\right)\right] −lnL(w,b)=∑n−[y^nlnfw,b(xn)+(1−y^n)ln(1−fw,b(xn))] 对 w i w_{i} wi 的偏微分,这里 y ^ n \hat{y}^{n} y^n 和1 − y ^ n -\hat{y}^{n} −y^n 是常数先不用管它,只需要分别求出 ln f w , b ( x n ) \ln f_{w, b}\left(x^{n}\right) lnfw,b(xn) 和 ln ( 1 − f w , b ( x n ) ) \ln \left(1-f_{w, b}\left(x^{n}\right)\right) ln(1−fw,b(xn)) 对 w i w_{i} wi 的偏微分即可,整体推导过程如下:
将得到的式子进行进一步化简,可得:
我们发现最终的结果竟然异常的简洁,gradient descent每次update只需要做:
w
i
←
w
i
−
η
∑
n
(
y
^
n
−
f
w
,
b
(
x
n
)
)
x
i
n
w_{i} \leftarrow w_{i}-\eta \sum_{n}\left(\hat{y}^{n}-f_{w, b}\left(x^{n}\right)\right) x_{i}^{n}
wi←wi−ηn∑(y^n−fw,b(xn))xin
既然和Linear Regression一样。
y ^ n − f w , b ( x n ) \hat{y}^{n}-f_{w, b}\left(x^{n}\right) y^n−fw,b(xn)代表function的output跟理想target的差距有多大,如果离目标越远,update的步伐就要越 大
小结
Linner Regression和Logistic Regression地图下降的参数更新方式是一样的。
Logistic Regression和Softmax Regression关系
Softmax Regression就是多类别的Logistic Regression
Softmax Regression
多组w、b参数求属于C1、C2、C3的概率:
C
1
:
w
1
,
b
1
z
1
=
w
1
⋅
x
+
b
1
C
2
:
w
2
,
b
2
z
2
=
w
2
⋅
x
+
b
2
C
3
:
w
3
,
b
3
z
3
=
w
3
⋅
x
+
b
3
\begin{array}{ll} \mathrm{C}_{1}: w^{1}, b_{1} & z_{1}=w^{1} \cdot x+b_{1} \\ \mathrm{C}_{2}: w^{2}, b_{2} & z_{2}=w^{2} \cdot x+b_{2} \\ \mathrm{C}_{3}: w^{3}, b_{3} & z_{3}=w^{3} \cdot x+b_{3} \end{array}
C1:w1,b1C2:w2,b2C3:w3,b3z1=w1⋅x+b1z2=w2⋅x+b2z3=w3⋅x+b3
下面解释softmax吧z->y:
很直观了,之前一直不理解为什么叫softmax,原来是想把大的值拉的更大,因为是做幂操作,所以就叫softmax,求完后
1
>
y
i
>
0
1>y_{i}>0
1>yi>0
∑
i
y
i
=
1
\sum_{i} y_{i}=1
∑iyi=1
y
i
=
P
(
C
i
∣
x
)
y_{i}=P\left(C_{i} \mid x\right)
yi=P(Ci∣x)
这一过程在很多博文中描述为:
h θ ( x i ) = [ p ( y i = 1 ∣ x i ; θ ) p ( y i = 2 ∣ x i ; θ ) ⋮ p ( y i = k ∣ x i ; θ ) ] = 1 ∑ j = 1 k e θ j x i [ e θ 1 x i e θ 2 x i ⋮ e θ k x i ] h_{\theta}\left(x_{i}\right)=\left[\begin{array}{c} p\left(y_{i}=1 \mid x_{i} ; \theta\right) \\ p\left(y_{i}=2 \mid x_{i} ; \theta\right) \\ \vdots \\ p\left(y_{i}=k \mid x_{i} ; \theta\right) \end{array}\right]=\frac{1}{\sum_{j=1}^{k} e^{\theta_{j} x_{i}}}\left[\begin{array}{c} e^{\theta_{1} x_{i}} \\ e^{\theta_{2} x_{i}} \\ \vdots \\ e^{\theta_{k} x_{i}} \end{array}\right] hθ(xi)=⎣⎢⎢⎢⎡p(yi=1∣xi;θ)p(yi=2∣xi;θ)⋮p(yi=k∣xi;θ)⎦⎥⎥⎥⎤=∑j=1keθjxi1⎣⎢⎢⎢⎡eθ1xieθ2xi⋮eθkxi⎦⎥⎥⎥⎤
怎么求误差(损失)呢?看下图:
还是用交叉熵,累加,目标值用one hot编码
这一过程在很多博文中描述为:
J
(
θ
)
=
−
1
m
[
∑
i
=
1
m
∑
j
=
1
k
1
{
y
i
=
j
}
log
e
θ
j
x
i
∑
l
=
1
k
e
θ
l
x
i
]
J(\theta)=-\frac{1}{m}\left[\sum_{i=1}^{m} \sum_{j=1}^{k} 1\left\{y_{i}=j\right\} \log \frac{e^{\theta_{j} x_{i}}}{\sum_{l=1}^{k} e^{\theta_{l} x_{i}}}\right]
J(θ)=−m1[i=1∑mj=1∑k1{yi=j}log∑l=1keθlxieθjxi]
其中,1{⋅}来代表事件发生与否,例如,1{1+2=3}=1,而1{1+3=3}=0。
细节
原文请看Logistic回归和Softmax回归理解,这是我看过最清楚得了。下面是自己对其的理解。
权重衰减
softmax,核心思想是把大的值拉的更大。那么假设上面数据3 1 -3
都减1,变成2 0 -4
后,再经过softmax后依旧是0.88 0 .12 0
实际算下来,有点误差,是因为原本的数值就是近似,即0.88是个近似值,这些不重要。这里表达的意思就是softmax它有一个“冗余”的参数集。为了便于阐述这一特点,假设我们从参数向量
θ
j
\theta_{j}
θj 中减去了 向量
ψ
\psi
ψ 这时,每一个
θ
j
\theta_{j}
θj 都变成了
θ
j
−
ψ
(
j
=
1
,
…
,
k
)
\theta_{j}-\psi(j=1, \ldots, k)
θj−ψ(j=1,…,k) 。此时假设函数变成了以下的式子:
p ( y i = j ∣ x i ; θ ) = e ( θ j − ψ ) x i ∑ l = 1 k e ( θ l − ψ ) x i = e θ j x i e − ψ x i ∑ l = 1 k e θ l x i e − ψ x i = e θ j x i ∑ l = 1 k e θ l x i \begin{aligned} p\left(y_{i}=j \mid x_{i} ; \theta\right) &=\frac{e^{\left(\theta_{j}-\psi\right) x_{i}}}{\sum_{l=1}^{k} e^{\left(\theta_{l}-\psi\right) x_{i}}} \\ &=\frac{e^{\theta_{j} x_{i}} e^{-\psi x_{i}}}{\sum_{l=1}^{k} e^{\theta_{l} x_{i}} e^{-\psi x_{i}}} \\ &=\frac{e^{\theta_{j} x_{i}}}{\sum_{l=1}^{k} e^{\theta_{l} x_{i}}} \end{aligned} p(yi=j∣xi;θ)=∑l=1ke(θl−ψ)xie(θj−ψ)xi=∑l=1keθlxie−ψxieθjxie−ψxi=∑l=1keθlxieθjxi
不想看这部分直接跳到后面
换句话说,从 θ j \theta_{j} θj 中减去 ψ \psi ψ完全不影响假设函数的预测结果!这表明前面的 Softmax 回归模型中存在冗余的参数。更正式一点来说,Softmax 模型被过度参数化了。对于任意一个用于拟合数据的假设函数,可以求出多组参数值,这些参数得到的是完全相同的假设函数 h θ h_{\theta} hθ。
进一步而言,如果参数 ( θ 1 , θ 2 , … , θ k ) \left(\theta_{1}, \theta_{2}, \ldots, \theta_{k}\right) (θ1,θ2,…,θk) 是代价函数 J ( θ ) J(\theta) J(θ) 的极小值点,那么 ( θ 1 − ψ , θ 2 − ψ , … , θ k − ψ ) \left(\theta_{1}-\psi, \theta_{2}-\psi, \ldots, \theta_{k}-\psi\right) (θ1−ψ,θ2−ψ,…,θk−ψ) 同样也是它的极小值点,其中 ψ \psi ψ 可以为任意向量。因此使 J ( θ ) J(\theta) J(θ) 最小化的解不是唯一的。 ( \quad( ( 有趣的是,由于 J ( θ ) J(\theta) J(θ) 仍然是一个凸函数,因此梯 度下降时不会遇到局部最优解的问题。但是 Hessian 矩阵是奇异的/不可逆的,这会直接导致采用牛顿法优化就遇到数值 计算的问题)
注意,当 ψ = θ 1 \psi=\theta_{1} ψ=θ1 时,我们总是可以将 θ 1 \theta_{1} θ1 替换为 θ 1 − ψ = 0 → \theta_{1}-\psi=\overrightarrow{0} θ1−ψ=0 (即替换为全零向量) ,并且这种变换不会影响假设函数。因 此我们可以去掉参数向量 θ 1 \theta_{1} \quad θ1 (或者其他 θ j \theta_{j} θj 中的任意一个) 而不影响假设函数的表达能力。实际上,与其优化全部的 k × ( n + 1 ) k \times(n+1) k×(n+1) 个参数 ( θ 1 , \left(\theta_{1},\right. (θ1, thet a 2 , … , θ k ) , \left.a_{2}, \ldots, \theta_{k}\right), a2,…,θk), 我们可以令 θ 1 = 0 → , \theta_{1}=\overrightarrow{0}, θ1=0, 只优化剩余的 ( k − 1 ) × ( n + 1 ) (k-1) \times(n+1) (k−1)×(n+1) 个参数,这样算法依然能够正常工作。
在实际应用中,为了使算法实现更简单清楚,往往保留所有参数 ( θ 1 , θ 2 , … , θ n ) , \left(\theta_{1}, \theta_{2}, \ldots, \theta_{n}\right), (θ1,θ2,…,θn), 而不任意地将某一参数设置为 0 ∘ 0_{\circ} 0∘ 但此 时我们需要对代价函数做一个改动:加入权重衰减。权重衰减可以解决Softmax回归的参数咒余所带来的数值问题。
上面总结就是softmax函数的特性(对总体数据加加减减不改变softmax输出),使得有很多解集。所以利用正则化思想,我们要求解集唯一,即
θ
i
j
2
\theta_{i j}^{2}
θij2越小越好,称为权重衰减:
J
(
θ
)
=
−
1
m
[
∑
i
=
1
m
∑
j
=
1
k
1
{
y
i
=
j
}
log
e
θ
j
x
i
∑
l
=
1
k
e
θ
i
x
i
]
+
λ
2
∑
i
=
1
k
∑
j
=
0
n
θ
i
j
2
J(\theta)=-\frac{1}{m}\left[\sum_{i=1}^{m} \sum_{j=1}^{k} 1\left\{y_{i}=j\right\} \log \frac{e^{\theta_{j} x_{i}}}{\sum_{l=1}^{k} e^{\theta_{i} x_{i}}}\right]+\frac{\lambda}{2} \sum_{i=1}^{k} \sum_{j=0}^{n} \theta_{i j}^{2}
J(θ)=−m1[i=1∑mj=1∑k1{yi=j}log∑l=1keθixieθjxi]+2λi=1∑kj=0∑nθij2
有了这个权重衰减约束,代价(损失)函数就变成了严格的凸函数,这样就可以保证得到唯一的解了。 此时的 Hessian矩阵变为可逆矩阵,并且因为
J
(
θ
)
J(\theta)
J(θ)是凸函数,梯度下降法和 L-BFGS 等算法可以保证收敛到全局最优解。
为了使用优化算法,我们需要求得这个新函数
J
(
θ
)
J(\theta)
J(θ)的导数,如下:
∇
θ
j
J
(
θ
)
=
−
1
m
∑
i
=
1
m
[
x
i
(
1
{
y
i
=
j
}
−
p
(
y
i
=
j
∣
x
i
;
θ
)
)
]
+
λ
θ
j
\nabla_{\theta_{j}} J(\theta)=-\frac{1}{m} \sum_{i=1}^{m}\left[x_{i}\left(1\left\{y_{i}=j\right\}-p\left(y_{i}=j \mid x_{i} ; \theta\right)\right)\right]+\lambda \theta_{j}
∇θjJ(θ)=−m1i=1∑m[xi(1{yi=j}−p(yi=j∣xi;θ))]+λθj
通过最小化
J
(
θ
)
J(\theta)
J(θ),我们就能实现一个可用的Softmax 回归模型。
这样做的好处:
(1)使得代价函数的Hessian矩阵可逆,保证算法收敛
(2)使得最后得到的参数θ尽可能趋向0,减少模型复杂度,这样增加算法鲁棒
Softmax 转为 Logstic
对于Softmax回归当分类数目k=2的时候,Softmax将会退化为Logistic回归,则其概率函数可以描述为:
h
θ
(
x
)
=
1
e
θ
1
x
+
e
θ
2
x
[
e
θ
1
x
,
e
θ
2
x
]
h_{\theta}(x)=\frac{1}{e^{\theta 1 x}+e^{\theta 2 x}}[e \theta 1 x, e \theta 2 x]
hθ(x)=eθ1x+eθ2x1[eθ1x,eθ2x]
则根据Softmax的参数冗余性质,可以令
θ
1
=
ψ
\theta 1=\psi
θ1=ψ,则上面的式子就可以转换为:
h
θ
(
x
)
=
1
e
0
⃗
x
+
e
(
θ
2
−
θ
1
)
x
[
e
0
⃗
x
,
e
θ
2
−
θ
1
)
x
]
=
[
1
1
+
e
(
θ
2
−
θ
1
)
x
,
e
(
θ
2
−
θ
1
)
x
1
+
e
(
θ
2
−
θ
1
)
x
]
=
[
1
1
+
e
(
θ
2
−
θ
1
)
x
,
1
−
1
1
+
e
(
θ
2
−
θ
1
)
x
]
h_\theta(x)=\frac{1}{e^{\vec0x}+e^{(\theta2−\theta1)x}}[e^{\vec0x},e^{\theta2-\theta1)x}]\\ =[\frac{1}{1+e^{(\theta2−\theta1)x}},\frac{e^{(\theta2−\theta1)x}}{1+e^{(\theta2−\theta1)x}}]\\ =[\frac{1}{1+e^{(\theta2−\theta1)x}},1−\frac{1}{1+e^{(\theta2−\theta1)x}}]
hθ(x)=e0x+e(θ2−θ1)x1[e0x,eθ2−θ1)x]=[1+e(θ2−θ1)x1,1+e(θ2−θ1)xe(θ2−θ1)x]=[1+e(θ2−θ1)x1,1−1+e(θ2−θ1)x1]
则使用
α
\alpha
α来代表上式中的
θ
2
−
θ
1
,
\theta 2-\theta 1,
θ2−θ1, 则就是逻辑回归的形式了。
Logistic Regression和Softmax Regression使用场景
简单将其描述为:
(1)对于分类中存在概念交叉的分类,使用多个Logistic回归
(2)对于分类中不存在概念交叉的分类,使用多分类的Softmax回归
觉得不错,又抄了别人的解释过来
如果你在开发一个音乐分类的应用,需要对k种类型的音乐进行识别,那么是选择使用 softmax 分类器呢,还是使用 logistic 回归算法建立 k 个独立的二元分类器呢?
这一选择取决于你的类别之间是否互斥,例如,如果你有四个类别的音乐,分别为:古典音乐、乡村音乐、摇滚乐和爵士乐,那么你可以假设每个训练样本只会被打上一个标签(即:一首歌只能属于这四种音乐类型的其中一种),此时你应该使用类别数 k = 4 的softmax回归。(如果在你的数据集中,有的歌曲不属于以上四类的其中任何一类,那么你可以添加一个“其他类”,并将类别数 k 设为5。)
如果你的四个类别如下:人声音乐、舞曲、影视原声、流行歌曲,那么这些类别之间并不是互斥的。例如:一首歌曲可以来源于影视原声,同时也包含人声 。这种情况下,使用4个二分类的 logistic 回归分类器更为合适。这样,对于每个新的音乐作品 ,我们的算法可以分别判断它是否属于各个类别。
现在我们来看一个计算视觉领域的例子,你的任务是将图像分到三个不同类别中。(i) 假设这三个类别分别是:室内场景、户外城区场景、户外荒野场景。你会使用sofmax回归还是 3个logistic 回归分类器呢? (ii) 现在假设这三个类别分别是室内场景、黑白图片、包含人物的图片,你又会选择 softmax 回归还是多个 logistic 回归分类器呢?
在第一个例子中,三个类别是互斥的,因此更适于选择softmax回归分类器 。而在第二个例子中,建立三个独立的 logistic回归分类器更加合适。
参考
Logistic回归和Softmax回归理解 推荐看原文
logistic和softmax原理、联系
笔记:ML-LHY-1 Regression Gradient Descent
笔记:ML-LHY-4 Classification
笔记:ML-LHY-5 Logistic Regression
【论文理解】yolov3损失函数
Logistic 函数 vs Softmax 函数
Logistic回归原理及公式推导