吴恩达深度学习笔记:神经网络的编程基础2.9-2.14

目录

  • 第一门课:神经网络和深度学习 (Neural Networks and Deep Learning)
    • 第二周:神经网络的编程基础 (Basics of Neural Network programming)
      • 2.9 逻辑回归中的梯度下降(Logistic Regression Gradient Descent)

第一门课:神经网络和深度学习 (Neural Networks and Deep Learning)

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

2.9 逻辑回归中的梯度下降(Logistic Regression Gradient Descent)

本节我们讨论怎样通过计算偏导数来实现逻辑回归的梯度下降算法。它的关键点是几个重要公式,其作用是用来实现逻辑回归中梯度下降算法。但是在本节视频中,我将使用计算图对梯度下降算法进行计算。我必须要承认的是,使用计算图来计算逻辑回归的梯度下降算法有点大材小用了。但是,我认为以这个例子作为开始来讲解,可以使你更好的理解背后的思想。从而在讨论神经网络时,你可以更深刻而全面地理解神经网络。接下来让我们开始学习逻辑回归的梯度下降算法。

假设样本只有两个特征 x 1 x_1 x1 x 2 x_2 x2,为了计算𝑧,我们需要输入参数 w 1 、 w 2 w_1、w_2 w1w2 和𝑏,除此之外还有特征值 x 1 x_1 x1 x 2 x_2 x2。因此𝑧的计算公式为: z = w 1 x 1 + w 2 x 2 + b z = w_1x_1 + w_2x_2 + b z=w1x1+w2x2+b

回想一下逻辑回归的公式定义如下:

y ^ = a = σ ( z ) 其中 z = w T x + b , σ ( z ) = 1 1 + e − z \hat{y}= a = σ(z) 其中 z= w^Tx + b, σ(z) =\frac{1}{1+e^{-z}} y^=a=σ(z)其中z=wTx+bσ(z)=1+ez1
损失函数: L ( y ^ ( i ) , y ( i ) ) = − y ( i ) log ⁡ ( y ^ ( i ) ) − ( 1 − y ( i ) ) log ⁡ ( 1 − y ^ ( i ) ) L( \hat{y}^{(i)},y^{(i)}) = -y^{(i)} \log(\hat{y}^{(i)}) - (1-y^{(i)}) \log(1-\hat{y}^{(i)}) L(y^(i),y(i))=y(i)log(y^(i))(1y(i))log(1y^(i))
代价函数: J ( w , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) J(w,b) = \frac{1}{m} \sum_{i=1}^{m} L( \hat{y}^{(i)},y^{(i)}) J(w,b)=m1i=1mL(y^(i),y(i))

假设现在只考虑单个样本的情况,单个样本的代价函数定义如下:
L ( a , y ) = − ( y log ⁡ ( a ) + ( 1 − y ) log ⁡ ( 1 − a ) ) L( a,y) = -(y \log(a) + (1-y) \log(1-a)) L(a,y)=(ylog(a)+(1y)log(1a))
其中𝑎是逻辑回归的输出,𝑦是样本的标签值。现在让我们画出表示这个计算的计算图。
这里先复习下梯度下降法,𝑤和𝑏的修正量可以表达如下:

在这里插入图片描述
如图:在这个公式的外侧画上长方形。然后计算: 𝑦^ = 𝑎 = 𝜎(𝑧) 也就是计算图的下一步。最后计算损失函数𝐿(𝑎, 𝑦)。 有了计算图,我就不需要再写出公式了。因此,为了使得逻辑回归中最小化代价函数𝐿(𝑎, 𝑦),我们需要做的仅仅是修改参数𝑤和𝑏的值。前面我们已经讲解了如何在单个训练样本上计算代价函数的前向步骤。现在让我们来讨论通过反向计算出导数。 因为我们想要计算出的代价函数𝐿(𝑎, 𝑦)的导数,首先我们需要反向计算出代价函数𝐿(𝑎, 𝑦)关于𝑎的导数,在编写代码时,你只需要用𝑑𝑎 来表示 d L ( a , y ) d a \frac{dL(a,y)}{da} dadL(a,y)

通过微积分得到: d L ( a , y ) d a = − y a + 1 − y 1 − a \frac{dL(a,y)}{da}=\frac{-y}{a}+\frac{1-y}{1-a} dadL(a,y)=ay+1a1y

如果你不熟悉微积分,也不必太担心,我们会列出本课程涉及的所有求导公式。那么如果你非常熟悉微积分,我们鼓励你主动推导前面介绍的代价函数的求导公式,使用微积分直接求出𝐿(𝑎, 𝑦)关于变量𝑎的导数。如果你不太了解微积分,也不用太担心。现在我们已经计算出𝑑𝑎,也就是最终输出结果的导数。 现在可以再反向一步,在编写 Python 代码时,你只需要用𝑑𝑧来表示代价函数𝐿关于𝑧 的导数 d L d z \frac{dL}{dz} dzdL,也可以写成 d L ( a , y ) d z \frac{dL(a,y)}{dz} dzdL(a,y),这两种写法都是正确的。 d L d z = a − y \frac{dL}{dz} = a-y dzdL=ay
因为 d L ( a , y ) d z = d L d z = ( d L d a ) ∗ ( d a d z ) \frac{dL(a,y)}{dz} =\frac{dL}{dz}=(\frac{dL}{da})*(\frac{da}{dz}) dzdL(a,y)=dzdL=(dadL)(dzda),并且 d a d z = a ∗ ( 1 − a ) \frac{da}{dz} =a*(1-a) dzda=a(1a),而 d L d a = ( − y a + 1 − y 1 − a ) \frac{dL}{da}= (\frac{-y}{a}+ \frac{1-y}{1-a}) dadL=(ay+1a1y),因此将这两项相乘,得到:

d z = d L ( a , y ) d z = d L d z = d L d a ∗ d a d z = ( − y a + 1 − y 1 − a ) ∗ a ( 1 − a ) = a − y dz=\frac{dL(a,y)}{dz} =\frac{dL}{dz}=\frac{dL}{da}*\frac{da}{dz}=(\frac{-y}{a}+\frac{1-y}{1-a})*a(1-a) =a-y dz=dzdL(a,y)=dzdL=dadLdzda=(ay+1a1y)a(1a)=ay

视频中为了简化推导过程,假设𝑛𝑥这个推导的过程就是我之前提到过的链式法则。如果你对微积分熟悉,放心地去推导整个求导过程,如果不熟悉微积分,你只需要知道𝑑𝑧 = (𝑎 −𝑦)已经计算好了。

现在进行最后一步反向推导,也就是计算𝑤和𝑏变化对代价函数𝐿的影响,特别地,可以用:
d w 1 = 1 m ∑ n = i m x 1 ( i ) ( a ( i ) − y ( i ) ) dw_1=\frac{1}{m}\sum_{n=i}^mx_1^{(i)}(a^{(i)} -y^{(i)}) dw1=m1n=imx1(i)(a(i)y(i))
d w 2 = 1 m ∑ n = i m x 2 ( i ) ( a ( i ) − y ( i ) ) dw_2=\frac{1}{m}\sum_{n=i}^mx_2^{(i)}(a^{(i)} -y^{(i)}) dw2=m1n=imx2(i)(a(i)y(i))
d b = 1 m ∑ n = i m ( a ( i ) − y ( i ) ) db=\frac{1}{m}\sum_{n=i}^m(a^{(i)} -y^{(i)}) db=m1n=im(a(i)y(i))

视频中, 𝑑𝑤1 表示 ∂ L ∂ w 1 = x 1 ⋅ d z ∂L ∂w_1= x_1 ⋅ dz Lw1=x1dz, 𝑑𝑤2 表示 ∂ L ∂ w 2 = x 2 ⋅ d z ∂L∂w_2= x_2 ⋅ dz Lw2=x2dz d b = d z db = dz db=dz
因此,关于单个样本的梯度下降算法,你所需要做的就是如下的事情:
使用公式 d z = ( a − y ) dz = (a − y) dz=(ay)计算𝑑𝑧,
使用 d w 1 = x 1 ⋅ d z dw_1 = x_1 ⋅ dz dw1=x1dz 计算𝑑𝑤1, d w 2 = x 2 ⋅ d z dw_2 = x_2 ⋅ dz dw2=x2dz计算𝑑𝑤2, d b = d z db= dz db=dz 来计算𝑑𝑏,
然后: 更新 w 1 = w 1 − α d w 1 w_1 = w_1 − αdw_1 w1=w1αdw1, 更新 w 2 = w 2 − α d w 2 w_2 = w_2 − αdw_2 w2=w2αdw2, 更新 b = b − α d b b = b − αdb b=bαdb
这就是关于单个样本实例的梯度下降算法中参数更新一次的步骤。
在这里插入图片描述

现在你已经知道了怎样计算导数,并且实现针对单个训练样本的逻辑回归的梯度下降算法。但是,训练逻辑回归模型不仅仅只有一个训练样本,而是有𝑚个训练样本的整个训练集。因此在下一节视频中,我们将这些思想应用到整个训练样本集中,而不仅仅只是单个样本上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/539215.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ 模拟实现【五】:网络通信设计

文章目录 网络通信设计基于 TCP 自定义应用层协议channel参数服务器实现客户端实现 网络通信设计 基于 TCP 自定义应用层协议 Type 希望客户端能远程调用服务器的核心API,type就是描述调用哪一个API的Length 表示接下来的Payload的长度Payload 是真正需要用到的数据…

人工智能|机器学习——CURE聚类算法(层次聚类)

1.CURE聚类概述 绝大多数聚类算法或者擅长处理球形和相似大小的聚类.或者在存在孤立点时变得比较脆弱。CURE采用了一种新颖的层次聚类算法.该算法选择基于质心和基于代表对象方法之间的中间策略。它不同于单个质心或对象来代表一个类,而是选择…

【Jenkins】data stream error|Error cloning remote repo ‘origin‘ 错误解决【亲测有效】

错误构建日志 17:39:09 ERROR: Error cloning remote repo origin 17:39:09 hudson.plugins.git.GitException: Command "git fetch --tags --progress http://domain/xxx.git refs/heads/*:refs/remotes/origin/*" returned status code 128: 17:39:09 stdout: 17…

粒子群算法对pi控制器进行参数优化,随时优化pi参数以控制直流无刷电机转速。

粒子群算法对pi控制器进行参数优化,随时优化pi参数以取得设定直流无刷电机转速。 PSO优化PID,用于BLDC速度控制 仿真平台为:MATLAB 采用的是Simulinkm程序相配合 仿真结果以及程序示例:

Python数据分析-4

1.对于一组电影数据,呈现出rating,runtime的分布情况: #encodingutf-8 import pandas as pd import numpy as np from matplotlib import pyplot as plt file_path "./youtube_video_data/IMDB-Movie-Data.csv" df pd.read_csv(file_path) …

若依Vue3图片预览大图遮罩层和表格的border css层级冲突

样式层级出现问题,表格的层级高于图片的层级 1.解决方式一:设置此文件的该属性(z-index)为继承,则显示正常 .el-table .el-table__cell { z-index: inherit; } 2.解决方式二:将此属性设置为true(本人试了…

数字生活的未来:探索Web3的全新世界

随着科技的飞速发展,我们正迈向一个数字化的未来。而在这个数字化的时代,Web3技术的崛起正引领着我们进入一个全新的世界。本文将深入探讨Web3技术的特点以及它给我们带来的全新体验。 1. 去中心化的特点 Web3的去中心化是其最显著的特点之一&#xff0…

【图论】计算图的n-hop邻居个数,并绘制频率分布直方图

计算图的n-hop邻居个数,并绘制频率分布直方图 在图论中,n-hop邻居(或称为K-hop邻居)是指从某个顶点出发,通过最短路径(即最少的边数)可以到达的所有顶点的集合,其中n(或…

Jmeter扩展开发--自定义java取样器

简介 jmeter内置了包括:http、https、tcp等各种协议的支持,通常情况只需要做简单的参数配置即可使用。但在某些特殊情况下,还是希望能做自定义压测处理,此时就涉及Jmeter的扩展开发自定义Java取样器,如下图所示&#…

给电脑加硬件的办法 先找电脑支持的接口,再买相同接口的

需求:我硬盘太小,换或加一个大硬盘 结论:接口是NVMe PCIe 3.0 x4 1.找到硬盘型号 主硬盘 三星 MZALQ512HALU-000L2 (512 GB / 固态硬盘) 2.上官网查 或用bing查 非官方渠道信息,不确定。

linux安全--Nginx与Tomcat实现负载均衡

目录 1.实验拓扑原理图,前提实现全网互通 2.找到nginx的conf目录中的nginx.conf文件 3.实验效果 1.实验拓扑原理图,前提实现全网互通 搭建全网互通可以看https://blog.csdn.net/m0_74313947/article/details/136008513?spm1001.2014.3001.5501 搭建N…

微信小程序 uniapp奶茶点单系统r4112

系统功能有:信点单小程序分为小程序部分和后台管理两部分,小程序部分的主要功能包含:用户注册登录,查看商品信息,加入购物车,结算并生成订单,订单管理,资讯管理,个人中心…