C1 - week2 - part2 逻辑回归 Logistic Regression

Basics of Neural Network Programming-part2

1.逻辑回归(Logistic Regression)

对于二元分类问题,给定了输入特征X,你想要算法能够输出预测 y ^ \hat{y} y^ y ^ \hat{y} y^表示y等于1的概率。换句话说,如果X是我们之前例子中的一种图片,你想让 y ^ \hat{y} y^来判断这是一只猫的图片的概率有多大。

此时,X是一个nx维向量,我们用w和b来表示逻辑回归的参数,w是一个nx维向量(w实际上是特征权重,维度与特征向量相同),b是一个实数,表示偏差。在给出输入X以及参数w和b之后,我们如何计算出一个实数值 y ^ \hat{y} y^呢,我们可以让
y ^ = w t x + b \hat{y} = w^t x + b y^=wtx+b
这时候我们得到的是一个关于输入x的线性函数,但实际上你想让 y ^ \hat{y} y^ 表示实际值y等于1的概率的话

y ^ \hat{y} y^ 应该在0~1之间。现在的问题是,我们如何将一个线性函数映射到(0, 1)区间之内呢?这时候,就需要引入我们的逻辑归回函数sigmoid。下图是sigmoid函数的图像
s i g m o i d ( z ) = 1 1 + e − z sigmoid(z) = \frac{1}{1 + e^{-z}} sigmoid(z)=1+ez1

在这里插入图片描述

因此,当你实现逻辑回归时,你的工作就是去让机器学习参数w以及b,使得 y ^ \hat{y} y^能对y = 1这一情况的概率做出良好的估计。

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

此处可能会有疑惑,我们为什么要引入代价函数?代价函数又是什么?

为了训练逻辑回归模型的参数w和b,我们需要一个代价函数,通过训练代价函数来得到参数w和b。训练在此处可以理解为寻找最优值。我们先看一下逻辑回归的输出函数:
y ^ = σ ( w t x + b ) , w h e r e   σ ( z ) = 1 1 + e − z G i v e n { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) } , w a n t   y ^ ( i ) ≈ y ( i ) \hat{y} = \sigma(w^t x + b), where \ \sigma(z) = \frac{1}{1 + e^{-z}} \\ Given\{(x^{(1)}, y^{(1)}), (x^{(2)}, y^{(2)}), ...,(x^{(m)}, y^{(m)})\},want \ \hat{y}^{(i)} \approx y^{(i)} y^=σ(wtx+b),where σ(z)=1+ez1Given{(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},want y^(i)y(i)
为了让模型通过学习调整参数,你需要给予一个m个样本的训练集,这会让你在训练集上学习到参数w和b,来进行你之后的预测。

对于训练集的预测值,我们将其写成 y ^ \hat{y} y^,我们更希望它会更接近训练集中的真正的y值。对于训练样本来说,我们使用这些带有圆括号的上标来区分索引和样本。

  • 训练样本i所对应的预测值是y(i),是用训练样本的z = wtx + b, y ^ = σ ( z ) \hat{y} = \sigma{(z)} y^=σ(z)得到的
  • z(i) = wtx(i) + b,上标i表示x或者y或者z或者其他数据的第i个训练样本

损失函数

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

我们用L这个损失函数,来衡量预测输出值和实际值有多接近。一般我们用预测值和实际值的平方差或者其平方差的一半,但在逻辑回归中我们不这么做(数学原因,放在文末解释)。我们一般定义损失函数为:
L ( y ^ , y ) = − y log ⁡ ( y ^ ) − ( 1 − y ) log ⁡ ( 1 − y ^ ) L(\hat{y}, y) = -y\log(\hat{y}) - (1 - y)\log(1 - \hat{y}) L(y^,y)=ylog(y^)(1y)log(1y^)
当我们使用平方误差作为损失函数的时候,我们会让这个函数值尽可能小。对于这个逻辑回归函数,我们同样希望它尽量小。我们举两个例子来解释这个公式:

  • 当实际值y = 1的时候, L = − log ⁡ ( y ^ ) L = -\log(\hat{y}) L=log(y^),如果想要L尽可能小,那么 y ^ \hat{y} y^就要尽可能大,也就是无限趋近于1。

  • 当实际值y = 0的时候, L = − log ⁡ ( 1 − y ^ ) L = -\log(1 - \hat{y}) L=log(1y^),如果想想要L尽可能小,那么就要 y ^ \hat{y} y^尽可能小,也就是无限趋近于0。

    损失函数是在单个训练样本中定义的,它衡量的是算法在单个训练样本中表现如何,为了衡量算法在全部训练样本上的表现,我们需要定义一个算法的代价函数,即对m个样本的损失函数求和然后除以m:
    J ( w , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) = 1 m ∑ i = 1 m ( − y ( i ) log ⁡ ( y ^ ( i ) ) − ( 1 − y ( i ) ) log ⁡ ( 1 − y ^ ( i ) ) ) 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)})) J(w,b)=m1i=1mL(y^(i),y(i))=m1i=1m(y(i)log(y^(i))(1y(i))log(1y^(i)))
    损失函数只适用于单个样本,而代价函数是参数的总代价,在训练逻辑回归模型的时候,我们需要找到合适的w和b,来让代价函数 J 的的总代价降到最低。根据我们对逻辑回归算法、单个样本损失函数、针对所选参数总算法代价函数推导,结果表明逻辑回归可以看做是一个非常小的神经网络。

    那么,究竟如何训练神经网络?如果根据代价函数来“学习”参数,我们将在下一节揭晓。


前文中提到的数学原因

此处需要用到后续的梯度下降算法与微积分知识,课程原文如下:

“若使用平方差损失函数,当我们在学习逻辑回归参数的时候,会发现我们的优化目标不是凸优化,只能找到多个局部最优解,梯度下降算法很可能找不到全局最优值”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值