Logistic regression 与二分类
假设我们有一个二分类问题,输入是一张图像,我们需要判断这张图像是否为猫的图像。也就是说我们需要一个输出,输出为0则代表不是猫的图像,输出为1则代表是猫的图像。
对于线性回归而言,我们有
y
=
θ
x
y=\theta x
y=θx,但是线性回归并没有办法将输出的结果控制在0和1之间,logistic回归则可以帮助我们解决这个问题。我们先来看一下logistic回归的表达式
y
=
1
1
+
e
−
z
y = \frac{1}{1+e^{-z}}
y=1+e−z1
其中
z
=
ω
T
x
+
b
z=\omega^Tx+b
z=ωTx+b, 从表达式我们可以看出来当z趋近于无穷的时候y趋近于1,当z趋近于负无穷的时候z趋近于0,y的范围在(0,1)。而观察z的表达式其实就是线性回归的表达式,所以logistic回归是建立在线性回归之上的。
有了logistic回归的y的表达式之后我们需要确定一个方法来判断我们计算出来的y的好坏,这就需要用到loss function了。在线性回归中我们也有用到loss function,那时我们采用的是平方差,但是假如在logistic回归中仍然用这个则会导致我们的loss function不是凸函数(凸函数的判别和简单证明可参照:凸优化之凸函数的判别。
在logistic回归中我们采用了新的loss function
L
(
y
^
,
y
)
=
−
y
log
(
y
^
)
−
(
1
−
y
)
log
(
1
−
y
^
)
L(\hat{y}, y)=-y \log (\hat{y})-(1-y) \log (1-\hat{y})
L(y^,y)=−ylog(y^)−(1−y)log(1−y^)
- 当 y = 1 y=1 y=1的时候, ( 1 − y ) log ( 1 − y ^ ) (1-y) \log (1-\hat{y}) (1−y)log(1−y^)为0,此时 L ( y ^ , y ) = − log ( y ^ ) L(\hat{y}, y)=- \log (\hat{y}) L(y^,y)=−log(y^),为了让 L L L尽量小 y ^ \hat{y} y^需要尽量大。
- 当 y = 0 y=0 y=0的时候, − y log ( y ^ ) -y \log (\hat{y}) −ylog(y^)为0,此时 L ( y ^ , y ) = − log ( 1 − y ^ ) L(\hat{y}, y)=-\log (1-\hat{y}) L(y^,y)=−log(1−y^),为了让 L L L尽量小 y ^ \hat{y} y^需要尽量小。
有趣的是,在logistic回归中的loss function和伯努利分布的极大似然估计中的最大似然估计表达式其实是非常相近的,具体可以参照逻辑回归为什么使用对数损失函数。将loss function加起来我们可以得到cost function。
J
(
w
,
b
)
=
1
m
∑
i
=
1
m
L
(
y
^
(
i
)
,
y
(
i
)
)
=
1
m
∑
i
=
1
m
(
−
y
(
i
)
log
y
^
(
i
)
−
(
1
−
y
(
i
)
)
log
(
1
−
y
^
(
i
)
)
)
J(w, b)=\frac{1}{m} \sum_{i=1}^{m} L\left(\hat{y}^{(i)}, y^{(i)}\right)=\frac{1}{m} \sum_{i=1}^{m}\left(-y^{(i)} \log \hat{y}^{(i)}-\left(1-y^{(i)}\right) \log \left(1-\hat{y}^{(i)}\right)\right)
J(w,b)=m1i=1∑mL(y^(i),y(i))=m1i=1∑m(−y(i)logy^(i)−(1−y(i))log(1−y^(i)))
有了cost function之后我们需要需要一个方法来减小它,这时就需要用梯度下降了。我们需要调整
ω
\omega
ω和
b
b
b的参数来使得cost function尽量小。
w
:
=
w
−
a
∂
J
(
w
,
b
)
∂
w
,
b
:
=
b
−
a
∂
J
(
w
,
b
)
∂
b
w:=w-a \frac{\partial J(w, b)}{\partial w}, b:=b-a \frac{\partial J(w, b)}{\partial b}
w:=w−a∂w∂J(w,b),b:=b−a∂b∂J(w,b)
logistic 回归也可以看作一个简单的神经网络,现在我们的思路大致上已经比较明确了。
- 初始化 ω \omega ω和 b b b
- 计算cost function
- 根据cost function,使用梯度下降来优化参数的值
- 一直重复上面两个步骤
经过上面的步骤我们就能够训练出一个logistic回归的神经网络。