深度学习(Deep Learning)是机器学习(Machine Learning)的一大分支,深度学习的概念源于人工神经网络的研究,含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。
逻辑回归(Logistic Regression,也译作“对数几率回归”)是离散选择法模型之一,属于多重变量分析范畴,是社会学、生物统计学、临床、数量心理学、计量经济学、市场营销等统计实证分析的常用方法。常见的是二分类或二项分布问题,也可以处理多分类问题,它实际上是属于一种分类方法。可以使训练数据的标签值与预测出来的值之间的误差最小化。
举例:预测猫的分类器(属于二分类(Binary Classification)
在计算机中,图片是一类非结构化的数据,一张图片以RGB编码方式存储时,是将它以红、绿、蓝为三基色,以每个像素点上三种颜色的十六进制颜色码进行编码,形成一个包含三个信道(Channel),各信道大小和图片的大小相同的矩阵。例如图中的猫图大小为64×64,那么表示为矩阵后的每个信道大小即为64×64。
模式识别(Pattern Recognition)以及机器学习中,处理的各种类型的数据都需要用一些特征向量来表示。为了将上例中的图片表示为一个特征向量xx,将每三个信道中三种颜色的值进行拆分重塑,最终形成的特征向量xx的维数为nx=64×64×3=12288
实现一个猫分类器,需要准备大量的猫图及少量的非猫图,取其中大部分组成该分类器的训练样本,少部分组成测试样本。将这些样本都以上述的方式表示为特征向量的形式,则一个样本由一对(x,y)进行表示,其中x为nxnx维的特征向量,y是该特征向量的标签(Label),根据该特征向量表示的是猫或非猫,值为0或1。m个训练样本对将被表示为:
(
x
(
1
)
,
y
(
1
)
)
,
(
x
(
2
)
,
y
(
2
)
)
,
…
,
(
x
(
m
)
,
y
(
m
)
)
{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),…,(x^{(m)},y^{(m)})}
(x(1),y(1)),(x(2),y(2)),…,(x(m),y(m))
将训练集的中的特征向量
x
(
1
)
x^{(1)}
x(1),
x
(
2
)
x^{(2)}
x(2)…以及它们的标签
y
(
1
)
y^{(1)}
y(1),
y
(
2
)
y^{(2)}
y(2)…分别堆叠起来,组成两个矩阵X,Y。
X
=
[
x
(
1
)
,
x
(
2
)
,
…
,
x
(
m
)
]
{X = [x^{(1)},x^{(2)},…,x^{(m)}]}
X=[x(1),x(2),…,x(m)]
Y
=
[
y
(
1
)
,
y
(
2
)
,
…
,
y
(
m
)
]
{Y = [y^{(1)},y^{(2)},…,y^{(m)}]}
Y=[y(1),y(2),…,y(m)]
则X会是一个大小为
n
x
×
m
n_x \times m
nx×m的矩阵,Y是一个大小为
1
×
m
1 \times m
1×m的矩阵。
假设
y
^
\hat{y}
y^为图片是猫的概率,
x
x
x为
n
x
n_x
nx维度的特征向量,标签为
y
y
y的一张图片,猫图概率即为:
y
^
=
p
(
y
=
1
∣
x
)
,
0
≤
y
^
≤
1
\hat{y} = p(y = 1|x), 0 \le \hat{y} \le 1
y^=p(y=1∣x),0≤y^≤1
考虑到大量猫图数据X时候,规定一个
n
x
n_x
nx维向量
w
w
w和一个参数
b
b
b,然后采用线性拟合函数表示出
y
^
\hat{y}
y^,即
y
^
=
w
T
X
+
b
{\hat{y} = w^TX + b}
y^=wTX+b
因为
y
^
\hat{y}
y^为概率值,取值范围[0,1],通过线性拟合,得出
y
^
\hat{y}
y^的可能性很大且可能为负数,这时需要引进sigmoid函数的逻辑回归单元对其值域进行约束,sigmoid函数表达式为:
σ
(
z
)
=
1
1
+
e
−
z
\sigma{(z)} = \frac{1}{1+e^{-z}}
σ(z)=1+e−z1,函数图像为:
由函数图像可知,sigmoid函数有以下几个性质:
1.当Z趋向于正无穷大时,函数值趋向于1
2.当Z趋向于负无穷大时,函数值趋向于0
3.当Z趋向于0时,函数值趋向于0.5
综合以上公式猫图可能性 : y ^ = σ ( w T X + b ) = 1 1 + e − ( w T X + b ) { \hat{y} = σ(w^TX + b) = \frac{1}{1+e^{-(w^TX + b)}}} y^=σ(wTX+b)=1+e−(wTX+b)1
这时有2个参数w和b引起我们的注意,它们会影响我们的
y
^
\hat{y}
y^和
y
y
y的一致性,为了尽可能的使这2个参数准确,需要引进一个成本函数(Cost Function)作为w和b的衡量标准。
再引进一个损失函数(Loss Function)来计算单个训练样本
y
^
(
i
)
{\hat y}^{(i)}
y^(i)与
y
(
i
)
y^{(i)}
y(i)的误差。平方误差(Square Loss)是一种常用的损失函数:
L
(
y
^
,
y
)
=
1
2
(
y
^
−
y
)
2
{\mathcal{L}(\hat y,y)=\frac{1}{2}(\hat y-y)^2}
L(y^,y)=21(y^−y)2,但是在逻辑回归问题中,一般不使用它。因为在训练参数的过程中,使用平方误差函数将得到一个非凸函数,会存在很多局部的最优解,这种情况下使用梯度下降(Gradient Descent)将无法得到函数的最优解,所以对于逻辑回归的模型,希望满足概率:
p
(
y
∣
x
)
=
{
y
^
,
(
y
=
1
)
1
−
y
^
,
(
y
=
0
)
p(y|x) = \begin{cases} \hat{y}, & \text{$(y=1)$} \\ 1 - \hat{y}, & \text{$(y=0)$} \end{cases}
p(y∣x)={y^,1−y^,(y=1)(y=0)
将分段函数合并为:
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),
两边取对数,进一步化简:
l
o
g
p
(
y
∣
x
)
=
y
l
o
g
y
^
+
(
1
−
y
)
l
o
g
(
1
−
y
^
)
log\ p(y|x) = ylog\ \hat y+(1-y)log\ (1-\hat y)
log p(y∣x)=ylog y^+(1−y)log (1−y^)
目标让
p
(
y
∣
x
)
p(y|x)
p(y∣x)最大化,让损失函数最小化,所以让上式的右边加上负号,就推出了一个应用很广泛的交叉熵(Cross Entropy)损失函数 ,表达式为:
L
(
y
^
,
y
)
=
−
(
y
l
o
g
y
^
+
(
1
−
y
)
l
o
g
(
1
−
y
^
)
)
{\mathcal{L}(\hat y,y)=-(ylog\ \hat y+(1-y)log\ (1-\hat y))}
L(y^,y)=−(ylog y^+(1−y)log (1−y^))
交叉熵损失函数的性质:
当
y
(
i
)
=
1
y^{(i)}=1
y(i)=1时,
L
(
y
^
(
i
)
,
y
(
i
)
)
=
−
l
o
g
y
^
(
i
)
{\mathcal{L}({\hat y}^{(i)},y^{(i)})=-log\ {\hat y}^{(i)}}
L(y^(i),y(i))=−log y^(i)
当
y
(
i
)
=
0
y^{(i)}=0
y(i)=0时,
L
(
y
^
(
i
)
,
y
(
i
)
)
=
−
l
o
g
(
1
−
y
^
(
i
)
)
{\mathcal{L}({\hat y}^{(i)},y^{(i)})=-log\ (1-{\hat y}^{(i)})}
L(y^(i),y(i))=−log (1−y^(i))
最终模型
1.对m个训练样本整体的成本函数,可以使用数理统计中的**极大似然估计法(Maximum Likelihood Estimation)**推导出来
假设所有训练样本独立同分布,则联合概率为所有样本概率的乘积:
P
=
∏
i
=
1
m
p
(
y
(
i
)
∣
x
(
i
)
)
P = \prod_{i=1}^m p(y^{(i)}|x^{(i)})
P=∏i=1mp(y(i)∣x(i))
2.对上式进行极大似然估计法,两边取对数得:
l
o
g
P
=
∑
i
=
1
m
l
o
g
p
(
y
(
i
)
∣
x
(
i
)
)
=
−
∑
i
=
1
m
L
(
y
^
(
i
)
,
y
(
i
)
)
log\ P = \sum_{i=1}^m log\ p(y^{(i)}|x^{(i)}) = -\sum_{i=1}^m \mathcal{L}(\hat{y}^{(i)}, y^{(i)})
log P=∑i=1mlog p(y(i)∣x(i))=−∑i=1mL(y^(i),y(i))
3.对上式取平均值,得成本函数:
J
(
w
,
b
)
=
1
m
∑
i
=
1
m
L
(
y
^
(
i
)
,
y
(
i
)
)
{J(w,b) = \frac{1}{m} \sum_{i=1}^m \mathcal{L}({\hat y}^{(i)}, y^{(i)})}
J(w,b)=m1∑i=1mL(y^(i),y(i))
梯度下降:
想找到使成本函数的值最小的参数w和b的值,一般采用梯度下降法。
标量场中某一点上的梯度指向标量场增长最快的方向,梯度的长度是这个最大的变化率。
在空间坐标中以w,b为轴画出损失函数J(w,b)的三维图像,可知这个函数为一个凸函数。为了找到合适的参数,先将w和b赋一个初始值,正如图中的小红点。
在逻辑回归中,几乎任何初始化方法都有效,通常将参数初始化为零。随机初始化也起作用,但通常不会在逻辑回归中这样做,因为这个成本函数是凸的,无论初始化的值是多少,总会到达同一个点或大致相同的点。梯度下降就是从起始点开始,试图在最陡峭的下降方向下坡,以便尽可能快地下坡到达最低点,这个下坡的方向便是此点的梯度值。
在二维图像中来看,顺着导数的方向,下降速度最快,用数学公式表达即是:
w
:
=
w
−
α
∂
J
(
w
,
b
)
∂
w
{w:=w-\alpha\frac{\partial J(w,b)}{\partial w}}
w:=w−α∂w∂J(w,b)
b
:
=
b
−
α
∂
J
(
w
,
b
)
∂
b
{b:=b-\alpha\frac{\partial J(w,b)}{\partial b}}
b:=b−α∂b∂J(w,b)
其中的“:=”意思为赋值,αα为学习率,通常为一个小于1的数,用来控制梯度下降过程中每一次移动的规格,相当于迈的步子大小。αα的不宜太小也不宜过大:太小会使迭代次数增加,容易陷入局部最优解;太大容易错过最优解。