这节课主要介绍 逻辑回归(Logistic Regression)以及多类别的逻辑回归(Softmax Regression)
Logistic Regression和Linear Regression关系以及为什么Logistic Regression不能用Squared Error
Logistic Regression是一种Discriminative 方法和上节课假设高斯分布求概率的Generative 做比较
Multi-class Classification问题,即Softmax Regression
从Logistic Regression的限制到Logistic Regression的连接,再到Neural Network
pdf 视频
Step 1: Function Set
Logistic Regression
上节课最后waring部分:
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)
中间推导过程省略…
因此:
P
(
C
1
∣
x
)
=
σ
(
z
)
=
σ
(
w
⋅
x
+
b
)
=
1
1
+
exp
(
−
z
)
P\left(C_{1} \mid x\right)=\sigma(z)=\sigma(w \cdot x+b)=\frac{1}{1+\exp (-z)}
P(C1∣x)=σ(z)=σ(w⋅x+b)=1+exp(−z)1
σ
(
z
)
\sigma(z)
σ(z)就是一个Sigmoid函数,输出也符合概率在0~1范围内。
最终定义这么一个函数:
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)
Linear Regression
而Linear 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
输出可以是任何值
Step 2: Goodness of a Function (Loss Function)
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))]
Linear 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
Step 3: Find the best function
Logistic Regression
具体步骤就不写了,也是求梯度,最后:
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
也是
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 + Square Error
最后解释下为什么Logistic Regression不能用 Square Error;
可以看到这么做的后果就是在很容易出现梯度为0的情况,不管距离极值多远。下图更直观:
Generative v.s . Discriminative
Logistic Regression是Discriminative方法
用概率分布(例如高斯、伯努利)来描述后验概率(属于哪个类的概率)是Generative方法
一般来说Discriminative 方准确度大于Generative方法,因为Generative引入了假设,比如假设数据是高斯分布,而这个假设就削弱了对数据的敏感程度。
举个例子:
求[1, 1]为c1的概率。自觉认为[1,1]应该为c1.
如果用朴素贝叶斯(x1, x2独立):
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
)
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)}
P(C1∣x)=P(x∣C1)P(C1)+P(x∣C2)P(C2)P(x∣C1)P(C1)
P
(
C
1
)
=
∣
1
13
P
(
x
1
=
1
∣
C
1
)
=
1
P
(
x
2
=
1
∣
C
1
)
=
1
P
(
C
2
)
=
12
13
P
(
x
1
=
1
∣
C
2
)
=
1
3
P
(
x
2
=
1
∣
C
2
)
=
1
3
\begin{array}{lll} P\left(C_{1}\right)=\mid \frac{1}{13} & P\left(x_{1}=1 \mid C_{1}\right)=1 & P\left(x_{2}=1 \mid C_{1}\right)=1 \\ P\left(C_{2}\right)=\frac{12}{13} & P\left(x_{1}=1 \mid C_{2}\right)=\frac{1}{3} & P\left(x_{2}=1 \mid C_{2}\right)=\frac{1}{3} \end{array}
P(C1)=∣131P(C2)=1312P(x1=1∣C1)=1P(x1=1∣C2)=31P(x2=1∣C1)=1P(x2=1∣C2)=31
于是:
发现[1, 1]为c1的概率 < 0.5,是因为朴素贝叶斯没有考虑x1和x2的相关性,而我们自觉认为的时候考虑了相关性,这里只是拿朴素贝叶斯做个例子,如果使用高斯Generative的方法也是会有这种情况出现,而Discriminative 没有引入这种假设,完全是由数据算出来的,因此在数据量大时候,Discriminative 更能反应数据的分布、拟合函数而Generative方法适合数据量少时,引入的假设也许对拟合数据有帮助。
总结使用Generative的情况:
- 在训练数据比较少时,概率分布的假设是有必要的
- 概率分布的假设,能更好处理噪音
- 先验(假设概率分布)和类相关概率是可以的,来自不同来源的估计(比如语音识别,是一句话被说出的概率(先验概率\Generative)+识别模型(Discriminative )概率共同产生)
Multi-class Classification
多组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)
怎么求误差呢:
还是用交叉熵,目标值用one hot编码
单个Logistic Regression的限制
考虑以下数据:
Logistic Regression是线性边界,所以没法直接分开红和绿所代表的2类,但是可以先做一个变换:
x
1
′
:
distance to
[
0
0
]
x
2
′
:
distance to
[
1
1
]
\begin{aligned} &x_{1}^{\prime}: \text { distance to }\left[\begin{array}{l} 0 \\ 0 \end{array}\right]\\ &x_{2}^{\prime}: \text { distance to }\left[\begin{array}{l} 1 \\ 1 \end{array}\right] \end{aligned}
x1′: distance to [00]x2′: distance to [11]
于是就有:
因此可以一刀切,但是不能每次都做这种转换,那样就不够智能
所以这个转换可以用Logistic Regression来做
x
1
x_1
x1和
x
2
x_2
x2通过一组参数(2个w和b)输出
x
1
′
x_{1}^{\prime}
x1′,而
x
1
′
x_{1}^{\prime}
x1′的值代表的情况如右上,这就是一种装换,同理还可以用不同的一组参数(2个w和b)输出
x
2
′
x_{2}^{\prime}
x2′,用转换好的
x
1
′
,
x
2
′
x_{1}^{\prime},x_{2}^{\prime}
x1′,x2′再进行分类,就可以划分开了
而这种多个Logistic Regression实际就Neural Network吧单个Logistic Regression看做Neuron
以上参考李宏毅老师视频和ppt,仅作为学习笔记交流使用