网易课程DeepLearning.ai 吴恩达深度学习课程笔记:第二周②:逻辑回归方程、逻辑回归的代价函数

逻辑回归(Logistic Regression)

对于二元分类问题来讲,给定一个输入特征向量X ,它可能对应一张图片,你想识别这张图片识别看它是否是一只猫或者不是一只猫的图片,你想要一个算法能够输出预测,你只能称之为y ,也就是你对实际值 y  的估计。更正式地来说,你想让 y  表示 y  等于1的一种可能性或者是机会,前提条件是给定了输入特征X 。换句话来说,如果X 是我们在上个视频看到的图片,你想让 y  来告诉你这是一只猫的图片的机率有多大。在之前的视频中所说的,X 是一个nx 维的向量(相当于有nx 个特征的特征向量)。我们用w 来表示逻辑回归的参数,这也是一个nx 维向量(因为w 实际上是特征权重,维度与特征向量相同),参数里面还有b ,这是一个实数(表示偏差)。所以给出输入x 以及参数wb 之后,我们怎样产生输出预测值y ,一件你可以尝试却不可行的事是让y=wTx+b

这时候我们得到的是一个关于输入x 的线性函数,实际上这是你在做线性回归时所用到的,但是这对于二元分类问题来讲不是一个非常好的算法,因为你想让y 表示实际值y 等于1的机率的话,y  应该在0到1之间。这是一个需要解决的问题,因为wTx+b 可能比1要大得多,或者甚至为一个负值。对于你想要的在0和1之间的概率来说它是没有意义的,因此在逻辑回归中,我们的输出应该是y 等于由上面得到的线性函数式子作为自变量的sigmoid函数中,公式如上图最下面所示,将线性函数转换为非线性函数。

下图是sigmoid函数的图像,如果我把水平轴作为z 轴,那么关于zsigmoid函数是这样的,它是平滑地从0走向1,让我在这里标记纵轴,这是0,曲线与纵轴相交的截距是0.5,这就是关于zsigmoid函数的图像。我们通常都使用z 来表示wTx+b 的值。

关于sigmoid函数的公式是这样的,σz=11+e-z ,在这里z 是一个实数,这里要说明一些要注意的事情,如果z 非常大那么e-z 将会接近于0,关于zsigmoid函数将会近似等于1除以1加上某个非常接近于0的项,因为e  的指数如果是个绝对值很大的负数的话,这项将会接近于0,所以如果z 很大的话那么关于zsigmoid函数会非常接近1。相反地,如果z 非常小或者说是一个绝对值很大的负数,那么关于e-z 这项会变成一个很大的数,你可以认为这是1除以1加上一个非常非常大的数,所以这个就接近于0。实际上你看到当z 变成一个绝对值很大的负数,关于zsigmoid函数就会非常接近于0,因此当你实现逻辑回归时,你的工作就是去让机器学习参数w 以及b 这样才使得y 成为对y=1 这一情况的概率的一个很好的估计。

在继续进行下一步之前,介绍一种符号惯例,可以让参数w 和参数b 分开。在符号上要注意的一点是当我们对神经网络进行编程时经常会让参数w 和参数b 分开,在这里参数b 对应的是一种偏置。在之前的机器学习课程里,你可能已经见过处理这个问题时的其他符号表示。比如在某些例子里,你定义一个额外的特征称之为x0 ,并且使它等于1,那么现在X 就是一个nx 加1维的变量,然后你定义yθTxsigmoid函数。在这个备选的符号惯例里,你有一个参数向量θ0,θ1,θ2,...,θnx ,这样θ0 就充当了b ,这是一个实数,而剩下的θ1  直到θnx 充当了w ,结果就是当你实现你的神经网络时,有一个比较简单的方法是保持bw 分开。但是在这节课里我们不会使用任何这类符号惯例,所以不用去担心。 现在你已经知道逻辑回归模型是什么样子了,下一步要做的是训练参数w 和参数b ,你需要定义一个代价函数。

逻辑回归的代价函数(Logistic Regression Cost Function)

在上个视频中,我们讲了逻辑回归模型,这个视频里,我们讲逻辑回归的代价函数(也翻译作成本函数)。

为什么需要代价函数:

为了训练逻辑回归模型的参数参数w 和参数b 我们,需要一个代价函数,通过训练代价函数来得到参数w 和参数b 。先看一下逻辑回归的输出函数:

为了让模型通过学习调整参数,你需要给予一个m 样本的训练集,这会让你在训练集上找到参数w 和参数b ,,来得到你的输出。

对训练集的预测值,我们将它写成y ,我们更希望它会接近于训练集中的y 值,为了对上面的公式更详细的介绍,我们需要说明上面的定义是对一个训练样本来说的,这种形式也使用于每个训练样本,我们使用这些带有圆括号的上标来区分索引和样本,训练样本i 所对应的预测值是y(i) ,是用训练样本的wTx(i)+b 然后通过sigmoid函数来得到,也可以把z 定义为z(i)=wTx(i)+b ,我们将使用这个符号(i) 注解,上标(i) 来指明数据表示x 或者y 或者z 或者其他数据的第i 个训练样本,这就是上标(i) 的含义。

损失函数:

损失函数又叫做误差函数,用来衡量算法的运行情况,Loss function:Ly,y.

我们通过这个L 称为的损失函数,来衡量预测输出值和实际值有多接近。一般我们用预测值和实际值的平方差或者它们平方差的一半,但是通常在逻辑回归中我们不这么做,因为当我们在学习逻辑回归参数的时候,会发现我们的优化目标不是凸优化,只能找到多个局部最优值,梯度下降法很可能找不到全局最优值,虽然平方差是一个不错的损失函数,但是我们在逻辑回归模型中会定义另外一个损失函数。

我们在逻辑回归中用到的损失函数是:Ly,y=-ylog(y)-(1-y)log(1-y)

为什么要用这个函数作为逻辑损失函数?当我们使用平方误差作为损失函数的时候,你会想要让这个误差尽可能地小,对于这个逻辑回归损失函数,我们也想让它尽可能地小,为了更好地理解这个损失函数怎么起作用,我们举两个例子:

y=1 时损失函数L=-log(y) ,如果想要损失函数L 尽可能得小,那么y 就要尽可能大,因为sigmoid函数取值[0,1] ,所以y 会无限接近于1。

y=0 时损失函数L=-log(1-y) ,如果想要损失函数L 尽可能得小,那么y 就要尽可能小,因为sigmoid函数取值[0,1] ,所以y 会无限接近于0。

在这门课中有很多的函数效果和现在这个类似,就是如果y等于1,我们就尽可能让y变大,如果y等于0,我们就尽可能让 y 变小。 损失函数是在单个训练样本中定义的,它衡量的是算法在单个训练样本中表现如何,为了衡量算法在全部训练样本上的表现如何,我们需要定义一个算法的代价函数,算法的代价函数是对m 个样本的损失函数求和然后除以m :

Jw,b=1mi=1mLy(i),y(i)=1mi=1m-y(i)logy(i)-(1-y(i))log(1-y(i))  

损失函数只适用于像这样的单个训练样本,而代价函数是参数的总代价,所以在训练逻辑回归模型时候,我们需要找到合适的wb ,来让代价函数 J  的总代价降到最低。 根据我们对逻辑回归算法的推导及对单个样本的损失函数的推导和针对算法所选用参数的总代价函数的推导,结果表明逻辑回归可以看做是一个非常小的神经网络,在下一个视频中,我们会看到神经网络会做什么。

猜你喜欢

转载自blog.csdn.net/qq_36552489/article/details/93309752