Processing math: 100%

Deep Learning Note: 1-1 逻辑回归和梯度下降

  Deep Learning Note 系列是我学习 deepLearning.ai 所开设深度学习课程的笔记,包含关键概念、模型和部分推导,方便随时查阅。假设读者已初步了解机器学习基础知识,并具有相应的数学基础。

0. 符号说明

  本文及后续内容使用符号定义如下:

  使用 (x,y) 表示单个样本,其中 xRnx,即一个 nx 维的特征向量(Feature Vector);y{0,1},为标签(Label)。

  使用 m 表示样本数量,在样本上使用圆括号和数字的角标表示该样本在样本集中的序号,整个样本集合为 {(x(1),y(1)),(x(2),y(2)),,(x(m),y(m))}。使用 mtrain 表示训练集(Training Set)中样本的个数,使用 mtest 表示测试集(Test Set)中样本的个数。

  定义 X=[x(1)x(2)x(m)],即各个样本的特征向量水平叠加后的结果,故有 XRnx×m,即 X 是一个 nx×m 的实数矩阵。

  定义 Y=[y(1)y(2)y(m)],即各个样本的标签水平叠加后的结果,故有 YR1×m,即 Y 是一个 1×m 的实数矩阵。

1. 二分类

  对于二分类(Binary Classification)问题,我们的目标是习得一个分类器,使它对于给定样本的特征向量 x,可以预测该样本的标签 yy 的取值只有两种,分别对应真和假两种情况,如取值 0 或 1。

2. 逻辑回归

  逻辑回归(Logistic Regression)是一种监督学习算法,算法输出的标签只可能是 0 或者 1,适用于二分类问题。

  对于给定输入特征矢量 xxRnx,我们希望得到其标签 y 的估计 ˆy,即在给定输入 x 的条件下 y1 的概率:

ˆy=P(y=1|x)

  逻辑归回的参数有:

wRnxbR

其中 w 为权重(Weight),是一个 nx×1 的向量;b 为偏置(Bias),或称为截距(Intercept Term),是一个实数。

  由此,逻辑归回的模型可以表述为:

ˆy=σ(wTx+b)

  这里的 wTx+b 只是一个线性模型:wTw 的转置,是一个 1×nx 的向量,它与 nx×1 的向量 x 相乘得到一个实数,然后再加上实数 b。前面提到,我们希望模型的输出 ˆy 是一个概率,有 ˆy[0,1],这是通过 Sigmoid 函数 σ 达成的,其形式为:

σ(z)=11+ez

  Sigmoid 函数是一个可微的有界函数,在各点均有非负的导数。当 z 时,σ(z)1;当 z 时,σ(z)0。Sigmoid 函数常用于二元分类问题,以及用作神经网络的激活函数(Activation Function)(把线性的输入转换为非线性的输出)。

  对于逻辑回归,我们的任务是要学习参数 wb,使得对于给定(输入)样本的特征向量 xˆy 能够很好地估计该样本的真实标签 y1 的概率。

  逻辑回归的训练过程可以简单表述为给定包含 m 个样本的训练集 {(x(1),y(1)),(x(2),y(2)),,(x(m),y(m))},希望找到合适的参数 wb,使得 ˆy(i)y(i)。这里带圆括号的角标表示样本序号,x(i) 表示第 i 个样本的特征向量,y(i) 表示第 i 个样本的真实标签,ˆy(i) 表示对第 i 个样本的预测。

3. 逻辑回归的代价函数

  代价函数(Cost Function)用于定量地衡量模型在的在特定参数上的性能,这通常是通过计算模型在当前参数和样本集合上给出的预测值 ˆy 与真实值 y 之间的差距来得到的。代价函数的值越大,表示模型给出的预测与真实值之间的差距越大,模型(参数)越差;反之,代价函数的值越小,表示预测与真实值之间的差距越小,模型(参数)越好。通过最小化代价函数,我们可以得到最佳的模型参数,使得预测与真实值之间的差距最小。

  在定义代价函数前,需要先确定一个损失函数(Loss Function)。损失函数用于计算单个样本的预测值与实际值之间的差异。例如,可以定义损失函数为预测值 ˆy 和真实值 y 之间的平方误差的一半:

L(ˆy,y)=12(ˆyy)2

  上式实际计算的是 ˆyy 之间距离的平方的一半,通过衡量 ˆyy 之间的距离,定义了二者之间的差异程度。但在逻辑回归中,通常不会使用上式作为损失函数,因为它会导致优化问题变为非凸(Non-Convex)的,具有多个局部最佳(Local Optima),导致后面提到的梯度下降(Gradient Descent)算法可能无法找到全局最佳(Global Optima)。

  逻辑回归实际使用的损失函数为:

L(ˆy,y)=[ylogˆy+(1y)log(1ˆy)]

  可以这样来简单地理解这个代价函数:

  首先将 y=1 带入式 (5),得到 L(ˆy,y)=logˆy,此时我们希望 L(ˆy,y) 最小化,即希望 logˆy 最大化,即希望 ˆy 最大化(对数函数是严格单调递增的)。又因为 ˆy 是一个概率,有 ˆy[0,1],则 y=1 时最小化代价函数相当于让 ˆy 趋近于 1。

  再将 y=0 带入式 (5),得到 L(ˆy,y)=log(1ˆy),同理,此时我们希望 L(ˆy,y) 最小化,即希望 ˆy 最小化,则 y=0 时最小化代价函数相当于让 ˆy 趋近于 0。

  有了衡量单个样本的损失函数,就可以进一步定义针对整个样本集合的代价函数,为所有样本代价的平均值:

J(w,b)=1mmi=1L(ˆy(i),y(i))=1mmi=1[y(i)logˆy(i)+(1y(i))log(1ˆy(i))]

  上式中的 ˆy 是逻辑回归算法在参数 wb 下输出的预测值。

  注意区分损失函数和代价函数的区别:损失函数作用于单个样本,衡量单个样本预测值和真实值之间的差异;而代价函数作用于样本集合,用于衡量当前参数在样本集合上的代价。逻辑回归算法的训练,就是找到合适的参数 wb,使得代价函数 J(w,b) 最小化的过程。

4. 逻辑回归梯度下降

  梯度下降(Gradient Descent)是机器学习中最常用的一种最优化算法,相关资料有很多,这里不再详细展开。概括来说,梯度下降算法通过计算目标函数的各个参数在特定位置的偏导数(Partial Derivative),找到梯度最陡、也就是让目标函数的值下降速度最快的方向,沿这个方向略微调整各个参数的值,使得目标函数的值下降一小步,如此反复迭代,直到目标函数达到或足够接近一个极小值。如果目标函数是凸函数,则梯度下降算法可以达到全局最佳;如果目标函数非凸,则有可能陷入局部最佳。

  对于逻辑回归,其代价函数如式 (6) 所示,有两个参数 wb,则其梯度下降算法的过程就是不断地重复:

w=wαJ(w,b)w

b=bαJ(w,b)b

  式(7)、(8) 中的 α 为学习速率(Learning Rate),用于控制每次迭代时更新 wb 的步长。学习速率可以看做是是参数(wb)的参数,此类参数称为超参数(Hyper Parameter)。