一、如何处理输入数据?
1、训练集的处理
对图片进行读取,得到相应的像素矩阵,假设为
m
×
n
m\times n
m×n大小,如果为彩色图片则一张图片有
m
×
n
×
3
m\times n\times 3
m×n×3个特征用一个列向量表示:
x
(
1
)
x^{(1)}
x(1)
例如,某张图片的像素矩阵为:
[
1
2
3
4
5
6
7
8
9
]
\left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{matrix} \right]
⎣⎡147258369⎦⎤
那么,用列向量表示则为:
(
x
(
1
)
)
T
=
[
1
2
3
4
5
6
7
8
9
]
(x^{(1)})^T=[1\ 2\ 3\ 4\ 5\ 6\ 7\ 8\ 9]
(x(1))T=[1 2 3 4 5 6 7 8 9]
彩色图片的像素,按照RGB的顺序依次排列
因此对于给出的训练集,可以表示为:
(
x
(
1
)
,
y
(
1
)
)
,
(
x
(
2
)
,
y
(
2
)
)
,
.
.
.
.
(x^{(1)},\ y^{(1)}),\ (x^{(2)},\ y^{(2)}),....
(x(1), y(1)), (x(2), y(2)),....
假设一张图片有
n
x
n_x
nx个特征,训练集中有
M
t
r
a
i
n
M_{train}
Mtrain个样本,输入可以表示为一个矩阵:
X
=
[
x
(
1
)
,
x
(
2
)
,
.
.
.
,
x
(
M
t
r
a
i
n
)
]
(
X
ϵ
R
n
x
×
M
t
r
a
i
n
)
Y
=
[
y
(
1
)
,
y
(
2
)
,
.
.
.
,
y
(
M
t
r
a
i
n
)
]
(
Y
ϵ
R
1
×
M
t
r
a
i
n
)
X=[x^{(1)},\ x^{(2)},...,x^{(M_{train})}]\\ (X \epsilon R^{n_x\times M_{train}}) \\\\ Y=[y^{(1)},\ y^{(2)},...,y^{(M_{train})}]\\ (Y \epsilon R^{1\times M_{train}})
X=[x(1), x(2),...,x(Mtrain)](XϵRnx×Mtrain)Y=[y(1), y(2),...,y(Mtrain)](YϵR1×Mtrain)
2、测试集的处理
对测试图片的处理与训练集基本一样,将其转化为向量形式,只是缺少标签(即 y y y),需要使用推理模型去预测
二、Logistic回归
1、基本流程
-
使用训练集,优化参数,得到参数: w w w和 b b b( w ϵ R n x w\epsilon R^{n_x} wϵRnx并且$ b\epsilon R$)
-
对于输入的测试图片,按照(一)中的处理得到: x x x( x ϵ R n x x\epsilon R^{n_x} xϵRnx)
-
预测概率(输出): y ^ = σ ( w T ∗ x + b ) \hat y=\sigma (w^T*x+b) y^=σ(wT∗x+b)
sigmod函数: σ ( z ) = 1 1 + e − z \sigma (z)=\frac {1}{1+e^{-z}} σ(z)=1+e−z1
sigmod函数图像:
这里可以看出当 z z z很大时, σ ( z ) ≈ 1 \sigma (z)\approx 1 σ(z)≈1
当 z z z很小时, σ ( z ) ≈ 0 \sigma (z)\approx 0 σ(z)≈0
所以主要的工作是想办法优化参数 w 和 b w 和 b w和b
2、损失函数
为了得到更好的参数,需要定义损失函数
在训练集里面:
(
x
(
1
)
,
y
(
1
)
)
,
(
x
(
2
)
,
y
(
2
)
)
,
.
.
.
.
(x^{(1)},\ y^{(1)}),\ (x^{(2)},\ y^{(2)}),....
(x(1), y(1)), (x(2), y(2)),....给出了标记
理论上来说,通过推理模型:
y
=
σ
(
w
T
x
+
b
)
y=\sigma (w^Tx+b)
y=σ(wTx+b)计算出
y
^
\hat y
y^
越接近标准的标签 y y y,这个推理模型就被认为越有效(实际上不需要完全一样,否则容易出现过拟合问题,导致对新数据的预测能力大大降低)
- 在线性回归里,一般定义损失函数: L ( y ^ , y ) = 1 2 ( y ^ − y ) 2 L(\hat y,\ y)=\frac{1}{2}(\hat y-\ y)^2 L(y^, y)=21(y^− y)2
但是在Logistic回归里,一般不采用,因为这个损失函数是非凸,这样会有多个局部最优解,梯度下降算法可能不能找到全局最优解
- Logistic回归的单个样本的损失函数(Loss Function):** L ( y ^ , y ) = − ( y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) ) L(\hat y,\ y)=-(ylog\hat y+(1-y)log(1-\hat y)) L(y^, y)=−(ylogy^+(1−y)log(1−y^)),下面解释一下这个损失函数为何有效
由于 y y y的取值只有0或1,而 y ^ \hat y y^的取值在0~1之间,因此可以分情况讨论:
- 当
y
=
1
y=1
y=1时,损失函数简化为:
L
(
y
^
,
y
)
=
−
l
o
g
y
^
L(\hat y,\ y)=-log\hat y
L(y^, y)=−logy^
和线性回归里所做的一样,我们希望损失函数的值越小,这样表明所预测的值(即 y ^ \hat y y^)越接近标准值( y y y)
画出函数图像:
可以看出如果希望损失函数越小,那么 y ^ \hat y y^应该越接近1
- 当 y = 0 y=0 y=0时,损失函数简化为: L ( y ^ , y ) = − l o g ( 1 − y ^ ) L(\hat y,\ y)=-log(1-\hat y) L(y^, y)=−log(1−y^)
函数图像为:
可以看出如果希望损失函数越小,那么 y ^ \hat y y^应该越接近0
通过对单个样本的损失进行求和,得到整个训练集上的损失函数(成本函数,Cost Function):
J ( w , b ) = 1 M ∑ i = 1 M L ( y ^ ( i ) ) , y ( i ) ) J(w,b)=\frac {1}{M}\sum_{i=1}^M L(\hat y^{(i))},\ y^{(i)}) J(w,b)=M1∑i=1ML(y^(i)), y(i))
我们需要找到合适的 w 和 b w和b w和b,来使成本函数 J ( w , b ) J(w,b) J(w,b)尽可能的小
3、深入理解Logistic回归
(1)推理模型
推理模型的函数: p ( y = 1 ∣ x ) = y ^ p(y=1|x)=\hat y p(y=1∣x)=y^
这个函数解释起来就是,在已知 x x x(图像特征)的前提下,这个图像的标签是1( y = 1 y=1 y=1)的概率为: y ^ \hat y y^,因此 y ^ \hat y y^就是计算图像与目标(所谓目标就是指标签为1)相似的概率
由概率论的知识可知: p ( y = 0 ∣ x ) = 1 − p ( y = 1 ∣ x ) = 1 − y ^ p(y=0|x)=1-p(y=1|x)=1-\hat y p(y=0∣x)=1−p(y=1∣x)=1−y^
以上公式可以用一个统一的公式表示: p ( y ∣ x ) = y ^ y ( 1 − y ^ ) ( 1 − y ) p(y|x)=\hat y^y (1-\hat y)^{(1-y)} p(y∣x)=y^y(1−y^)(1−y)
-
当 y = 0 y=0 y=0时,上述公式变为: p ( y ∣ x ) = 1 − y ^ p(y|x)= 1-\hat y p(y∣x)=1−y^
-
当 y = 1 y=1 y=1时,上述公式变为: p ( y ∣ x ) = y ^ p(y|x)= \hat y p(y∣x)=y^
(2)损失函数
上述推理模型的公式中,涉及到了指数,不方便进行计算和求导,因此引入 l o g log log函数,其原因:
-
可以去掉指数,方便求导
-
l o g log log函数是严格单调递增的
我们的目标是尽可能的将计算出来的 y ^ \hat y y^接近标签 y y y,以提高模型的准确率
损失函数: L ( y ^ , y ) = − ( y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) ) = − l o g ( p ( y ∣ x ) ) = − l o g ( y ^ y ( 1 − y ^ ) ( 1 − y ) ) L(\hat y,\ y)=-(ylog\hat y+(1-y)log(1-\hat y)) =-log(p(y|x))=-log(\hat y^y (1-\hat y)^{(1-y)}) L(y^, y)=−(ylogy^+(1−y)log(1−y^))=−log(p(y∣x))=−log(y^y(1−y^)(1−y))
至此,可以看出单个样本的损失函数实际上是概率计算公式取对数之后再取反的出来,之所以取反是因为损失函数反映的是损失的情况,我们希望损失越小越好
(3)最大似然估计
最大似然估计:利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。
由定义可知,最大似然估计用在这里再适合不过了。训练样本的结果(标签)已经知道,推理模型(函数)也是已知的,只有参数未定。
这里,我们希望找到一组参数,使得模型对给定样本的观测值的准确概率最大,对下面的公式取对数,再取反
p ( w 1 , w 2 , . . . . . . ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ) p(w_1,w_2,......)=\prod_{i=1}^mp(y^{(i)}|x^{(i)}) p(w1,w2,......)=i=1∏mp(y(i)∣x(i))
就可以得到在训练集上的损失函数:
J ( w , b ) = 1 M ∑ i = 1 M L ( y ^ ( i ) ) , y ( i ) ) J(w,b)=\frac {1}{M}\sum_{i=1}^M L(\hat y^{(i))},\ y^{(i)}) J(w,b)=M1∑i=1ML(y^(i)), y(i))
这里的 1 M \frac {1}{M} M1是一个常数,对最后的结果没有影响