深度学习入门与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3 逻辑回归的代价函数

代价函数是为了训练逻辑回归模型的参数,即参数w和参数b。先看一下逻辑回归的输出函数:

y(i)=σ(wTx(i)+b

给出{(x(1),y(1)),…,(x(m),y(m))},想要

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

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

损失函数

损失函数又叫作误差函数,用来衡量算法的运行情况。

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

在逻辑回归中用到的损失函数是

为什么要用这个函数作为逻辑损失函数?当使用二次方差作为损失函数时,会想要让这个误差尽可能地小,为了更好地理解这个损失函数是怎么起作用的,接下来举两个例子:

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

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

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

损失函数只适用于像这样的单个训练样本,而代价函数是参数的总代价,所以在训练逻辑回归模型时,需要找到合适的wb,来让代价函数J的总代价降到最低。逻辑回归可以看作是一个非常小的神经网络。