吴恩达深度学习课程笔记-神经网络编程基础-逻辑回归损失函数

吴恩达深度学习课程笔记-神经网络编程基础-逻辑回归损失函数

吴恩达深度学习课程笔记

第二周:神经网络编程基础(Basics of Neural Network programming)

2.3 逻辑回归损失函数(Logistic Regression cost function)

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

\hat{y} = \sigma(w^{T}x + b), where \sigma(z)=\frac {1}{1+e^{-z}}

Given \lbrace (x^{(1)},y^{(1)}),...,(x^{(m)},y^{(m)}) \rbrace, want \hat{y}^{(i)} \approx y^{(i)}.

为了让模型通过学习调整参数,你需要提供一个具有 m 个样本的训练集,然后在训练集上找到参数 w 和参数 b,来得到你的输出。对训练集的预测值,我们将它写成 \hat{y},我们希望它会接近于训练集中的 y 值。

损失函数又叫做误差函数,用来衡量算法的运行情况,Loss function: L(\hat{y},y)

我们将 L 称为损失函数,来衡量预测输出值和实际值有多接近。一种常用的损失函数为平方差: L(\hat{y},y) = \frac {1}{2} (\hat{y}-y)^{2},但是在逻辑回归中我们不这么做,因为如果采用平方差作为损失函数,当我们在学习逻辑回归参数的时候,会发现我们的优化目标不是凸优化,只能找到多个局部最优值,梯度下降法很可能找不到全局最优值。

我们在逻辑回归模型用到的损失函数是这样的:

    \[L(\hat{y},y) = -(ylog(\hat{y}) + (1-y)log(1-\hat{y}))\]

为什么要用这个函数作为逻辑回归的损失函数?对于损失函数,我们想让它尽可能地小,我们举两个例子就容易理解了:

y=1 时,L = -log(\hat{y}),如果想要 L 尽可能小,那么 \hat{y} 就要尽可能大,因为 sigmoid 函数取值范围在 0 到 1 之间,所以 \hat{y} 需要无限接近于 1。

y=0 时,L = -log(1-\hat{y}),如果想要 L 尽可能小,那么 \hat{y} 就要尽可能小,因为 sigmoid 函数取值范围在 0 到 1 之间,所以 \hat{y} 需要无限接近于 0。

可以看到当 \hat{y}y 越接近时,损失函数越小,这是符合我们预期的。

损失函数是对单个训练样本定义的,它衡量的是算法在单个训练样本中的表现如何,为了衡量算法在全部训练样本上的表现,我们需要定义一个算法的代价函数,算法的代价函数是对 m 个样本的损失函数求和然后除以 m

    \[J(w,b) = \frac {1}{m} \sum_{i=1}^{m} L(\hat{y}^{(i)},y^{(i)}) = -\frac {1}{m} \sum_{i=1}^{m}(y^{(i)}log(\hat{y}^{(i)}) + (1-y^{(i)})log(1-\hat{y}^{(i)}))\]

在训练逻辑回归模型时候,我们需要找到合适的 wb,来让代价函数 J 降到最低。

上一篇:吴恩达深度学习课程笔记-神经网络编程基础-逻辑回归

下一篇:吴恩达深度学习课程笔记-神经网络编程基础-梯度下降法

发表评论

电子邮件地址不会被公开。 必填项已用*标注