【逻辑回归与梯度下降算法】吴恩达深度学习笔记

本文详细解释了逻辑回归函数、损失函数(如LogisticRegressionLossFunction和LogisticRegressionCostFunction)、梯度下降算法在二元分类中的应用,包括Sigmoid函数的作用,以及代价函数的计算过程。通过实例说明了如何使用梯度下降法调整参数,优化模型以解决实际问题如猫狗图像识别。
摘要由CSDN通过智能技术生成

一、是什么、有什么作用?

当我们寻求几个事物之间的联系的时候,比如学习时间和考试成绩、房子尺寸和房价,都需要找到一个对应关系F(x)。逻辑回归函数就是这个对应关系函数,梯度下降算法就是求得逻辑回归函数的过程。
请添加图片描述
有了逻辑回归与梯度下降算法,我们可以很好地解决二元分类问题(0或1的问题)。例如:对猫训练数据集进行标注并训练模型后,输入一张图片,模型可以得出图片中是否存在猫。

二、逻辑回归

对于二元分类问题来讲,给定一个输入特征向量𝑋,它可能对应一张图片,你想识别这张图片识别看它是否是一只猫或者不是一只猫的图片,你想要一个算法能够输出预测,结果称之为𝑦^,也就是你对实际值 𝑦 的估计或理解为是猫的概率。
为了让模型通过学习调整参数,你需要给予一个𝑚样本的训练集,这会让你在训练集上找到参数𝑤和参数𝑏,,来得到你的输出。

2.1逻辑回归函数

y ^ = σ ( w T x + b ) = σ ( z )其中 σ = 1 1 + e − z \hat{y}=\sigma (w^{T}x+b )=\sigma(z)其中\sigma =\frac{1}{1+e^{-z} } y^=σwTx+b=σz)其中σ=1+ez1

  • 𝑦^:预测的结果,界于0-1之间,表示事情发生的概率。
  • x:输入,例如输入的是一张64x64的图片,那么x就是64x64x3(RGB)=12288的一维向量(相当于有𝑛𝑥个特征的特征向量)。
    在这里插入图片描述
  • w:所要求的逻辑回归参数,是一个与x同维的向量(12288,1)。因为𝑤实际上是特征权重,维度与特征向量相同
  • b:实数,表示偏差。b和w是我们最终要求得的值
  • Sigmoid函数:z=w^{T}x+b是两个向量的乘积+偏差,其大小并不可控。那么自然而然就需要一个函数,将最终结果限制到0-1之间

2.2损失函数(Logistic Regression Loss Function)

损失函数又叫做误差函数,用来衡量算法的运行情况,Loss function:𝐿(𝑦^ , 𝑦)

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} )} } ) Ly^,y=(ylogy^+(1y)log(1y^))

2.2.1解析:为什么长这样?

一般我们用预测值和实际值的平方差或者它们平方差的一半,但是通常在逻辑回归中我们不这么做,因为
当我们在学习逻辑回归参数的时候,会发现我们的优化目标不是凸优化,只能找到多个局部最优值,梯度下降法很可能找不到全局最优值,虽然平方差是一个不错的损失函数。
更直观一点:
在这里插入图片描述

2.2.2如何理解

最终我们期待y和𝑦^应该尽可能接近。
举个例子:
当𝑦 = 1时损失函数𝐿 = −log(𝑦^ ),如果想要损失函数𝐿尽可能得小,那么𝑦^ 就要尽可能大,因为 sigmoid 函数取值[0,1],所以𝑦^会无限接近于 1。
当𝑦 = 0时损失函数𝐿 = −log(1 − 𝑦^ ),如果想要损失函数𝐿尽可能得小,那么𝑦^就要尽可能小,因为 sigmoid 函数取值[0,1],所以𝑦^会无限接近于 0。

2.3代价函数(Logistic Regression Cost Function)

J ( w , b ) = 1 m ∑ m i = 1 L ( y ^ , y ) = − 1 m ∑ m i = 1 ( y ( i ) log ⁡ y ^ ( i ) + ( 1 − y ( i ) ) log ⁡ ( 1 − y ^ ( i ) ) ) J(w,b)=\frac{1}{m}\sum_{m}^{i=1} L(\hat{y} ,y)=-\frac{1}{m}\sum_{m}^{i=1} (y^{(i)} \log_{}{\hat{y}^{(i)} +(1-y^{(i)})\log_{}{(1-\hat{y}^{(i)} )} } ) J(w,b)=m1mi=1Ly^,y=m1mi=1(y(i)logy^(i)+(1y(i))log(1y^(i)))
看似复杂,实际就是把损失函数的值求和。
那么最终就是要求:代价函数值最小的情况下w和b的值

三、梯度下降算法

梯度下降就是求w和b的方法

w = w − α ∂ J ( w , b ) ∂ w w=w-\alpha \frac{\partial J(w,b)}{\partial w} w=wαwJ(w,b)
b = b − α ∂ J ( w , b ) ∂ b b=b-\alpha \frac{\partial J(w,b)}{\partial b} b=bαbJ(w,b)

  • 𝑎: 表示学习率(learning rate),用来控制步长(step),即向下走一步的长度。可以看做一个用于微调的用户可控参数。
  • 𝑑𝐽(𝑤)/𝑑𝑤:就是函数𝐽(𝑤)对𝑤 求偏导(derivative)。b同理

3.1如何理解

因为代价函数是一个“碗型",每一次计算w都会更接近最低点,导数(斜率)>0时w减小,导数小于0是w增大。多次迭代后w和b的值使得损失函数的值下降到最低点,就得出了最终结果。
在这里插入图片描述

公式理解比较简单,相对困难的是理解这个偏导数的求导过程。 接下来需要一些高数知识:其实就是链式求导法则

对w求偏导过程实际上是三步:
在这里插入图片描述
∂ L ( a , y ) ∂ a = − y a + 1 − y 1 − a \frac{\partial L(a,y)}{\partial a}=-\frac{y}{a}+\frac{1-y}{1-a} aL(a,y)=ay+1a1y
d a d z = a ( 1 − a ) \frac{\mathrm{d} a}{\mathrm{d} z}=a(1-a) dzda=a(1a)
d z d w ( i ) = x ( i ) \frac{\mathrm{d} z}{\mathrm{d} w^{(i)} }=x^{(i)} dw(i)dz=x(i)
得到偏导结果后就可以用梯度下降公式得到一轮迭代后新的w(i)和b,完成一轮迭代。多次迭代后就能得到最终结果。
在这里插入图片描述

注意w的脚标代表的是维度,即之前提到的[12288,1]格式中12288的数量,并非图片总数m,对w1求偏导时w2…看做常数。.

四、完整代码

吴恩达视频中m个图片样本一轮迭代的过程:
在这里插入图片描述

4.1过程详解

整个过程后序可以用向量优化,但是理解起来for循环更直观

m张图片每张图片需要进行的操作有:

  1. 计算z(i):w转和x(i)做内积,结果z(i)应该是一个具体数
  2. 计算a(i)和J(i):将已知量套层函数,结果同样是具体数
  3. 计算dz(i):即
    ∂ L ( a , y ) ∂ a ∗ ∂ a ∂ z = ( − y a + 1 − y 1 − a ) ∗ a ( 1 − a ) = a − y \frac{\partial L(a,y)}{\partial a}*\frac{\partial a}{\partial z}=(-\frac{y}{a}+\frac{1-y}{1-a}) *a(1-a) =a-y aL(a,y)za=ay+1a1ya(1a)=ay
    也是一个具体数
  4. 累加dw(i)和db:dw的维度和x相同(12288,1),b是一个具体的数。
  5. 遍历完m张图片后,本轮结束,得到cost的值并可以利用梯度下降函数计算dw

清楚每一步计算后的结果是矩阵还是数以及清楚矩阵的形状很重要,在后序向量化优化算法的时候逻辑会清晰很多。

  • 26
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值