Binary Classification
逻辑回归模型一般用来解决二分类问题,就是输出y只有两个离散值{0,1},例如判断图片中是否有猫,0表示nocat,1表示cat。通过这个例子简要介绍神经网络模型中一些标准化的、有效率的处理方法和notations。
图片包含三个RGB通道,设描述一张图片尺寸(64,64,3)。对这样一张图片要将x(64,64,3)转化为一维向量,方法是每个通道一行行取,在连接起来。64x64x3=12288,转化后的向量维度位(12288,1),为列向量,一般记为nx。
如果有m张图片,那么整个训练样本X组成矩阵,维度是(nx,m)。这里矩阵X的行nx代表了每个样本x(i)特征个数,列m代表了样本个数。这里,Andrew解释了X的维度之所以是(nx,m)而不是(m,nx)的原因是为了之后矩阵运算的方便。算是Andrew给我们的一个小小的经验吧。而所有训练样本的输出Y也组成了一维的行向量,写成矩阵的形式后,它的维度就是(1,m)。
Logistic Regression
如何使用逻辑回归解决二分类问题预测值h^=P(y=1|x),取值[0,1],这是与二分类有所区别。
使用线性模型,引入参数w和b。权重w的维度是(nx,1),b是一个常数项。(w和b都是未知参数,需要后续反复训练优化得到)这样,逻辑回归的线性预测输出可以写成:
逻辑回归要求输出在[0,1],此处引入sigmoid函数 ,预测输出函数就为
Sigmoid函数是一种非线性的S型函数,输出被限定在[0,1]之间,通常被用在神经网络中当作**函数(Activation function)使用。Sigmoid函数的表达式和曲线如下所示:
还有一点值得注意的是,Sigmoid函数的一阶导数可以用其自身表示:
Logistic Regression Cost Function
逻辑回归中,w和b都是未知参数,需要反复训练优化得到。因此,我们需要定义一个cost function(代价函数,也叫损失函数,表示与实际的误差),包含了参数w和b。通过优化cost function,当cost function取值最小时,得到对应的w和b。
如何得到cost function呢?
先从y^函数开始。我们把单个样本的cost function用Loss function来表示,根据以往经验,如果使用平方错误(squared error)来衡量,如下所示:
但是,对于逻辑回归,我们一般不使用平方错误来作为Loss function。原因是这种Loss function一般是non-convex的。non-convex函数在使用梯度下降算法时,容易得到局部最小值(local minumum) ,即局部最优化。而我们最优化的目标是计算得到全局最优化(Global optimization) 。因此,我们一般选择的Loss function应该是convex的。
Loss function的原则和目的就是要衡量预测输出y^与真实样本输出y的接近程度。构建另一种loss function
上面介绍的Loss function是针对单个样本的。那对于m个样本,我们定义Cost function,Cost function是m个样本的Loss function的平均值,反映了m个样本的预测输出y^与真实样本输出y的平均接近程度。Cost function可表示为:
Cost function推导出来以后,需要求出使得J最小得w和b,使其尽可能接近于零。
Gradient function
利用梯度下降算法来计算最合适得w和b。
梯度下降算法是先随机选择一组参数w和b值,然后每次迭代的过程中分别沿着w和b的梯度(偏导数 )的反方向前进一小步,不断修正w和b。每次迭代更新w和b后,都能让J(w,b)更接近全局最小值。梯度下降的过程如下图所示。
梯度下降算法每次迭代更新,w和b的修正表达式为:
数学原理是运用泰勒一阶展开来证明
学习笔记10