吴恩达机器学习笔记:第5周-9 神经网络的学习1(Neural Networks: Learning)

news2025/1/13 7:53:06

目录

  • 9.1 代价函数
  • 9.2 反向传播算法
  • 9.3 反向传播算法的直观理解

9.1 代价函数

首先引入一些便于稍后讨论的新标记方法:

假设神经网络的训练样本有𝑚个,每个包含一组输入𝑥和一组输出信号𝑦,𝐿表示神经网络层数,𝑆𝐼表示每层的 neuron 个数(𝑆𝑙表示输出层神经元个数),𝑆𝐿代表最后一层中处理单元的个数。

将神经网络的分类定义为两种情况:二类分类和多类分类,
二类分类:𝑆𝐿 = 0, 𝑦 = 0 𝑜𝑟 1 表示哪一类;
𝐾类分类:𝑆𝐿 = 𝑘, 𝑦𝑖 = 1表示分到第 i 类;(𝑘 > 2)
在这里插入图片描述
我们回顾逻辑回归问题中我们的代价函数为:

J ( θ ) = − 1 m [ ∑ j = 1 n y ( i ) l o g h θ ( x ( i ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ] + λ 2 m ∑ j = 1 n θ j 2 J(θ) = -\frac{1}{m}[ \sum_{j=1}^n {y^{(i)}logh_θ (x^{(i)}) + (1-y^{(i)})log(1-h_θ (x^{(i)}))}] +\frac{λ}{2m}\sum_{j=1}^n {θ_j^{2}} J(θ)=m1[j=1ny(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]+2mλj=1nθj2

在逻辑回归中,我们只有一个输出变量,又称标量(scalar),也只有一个因变量𝑦,但是在神经网络中,我们可以有很多输出变量,我们的ℎ𝜃(𝑥)是一个维度为𝐾的向量,并且我们训练集中的因变量也是同样维度的一个向量,因此我们的代价函数会比逻辑回归更加复杂一些,为:
h θ ( x ) ∈ R k , ( h θ ( x ) ) i = i t h o u t p u t h_θ(x)∈ℝ^k,(h_θ(x))_i =i^{th}output hθ(x)Rk,(hθ(x))i=ithoutput

在这里插入图片描述
这个看起来复杂很多的代价函数背后的思想还是一样的,我们希望通过代价函数来观察算法预测的结果与真实情况的误差有多大,唯一不同的是,对于每一行特征,我们都会给出𝐾个预测,基本上我们可以利用循环,对每一行特征都预测𝐾个不同结果,然后在利用循环在𝐾个预测中选择可能性最高的一个,将其与𝑦中的实际数据进行比较。

正则化的那一项只是排除了每一层 θ 0 θ_0 θ0后,每一层的𝜃 矩阵的和。最里层的循环𝑗循环所有的行(由𝑠𝑙 +1 层的激活单元数决定),循环𝑖则循环所有的列,由该层(𝑠𝑙层)的激活单元数所决定。即:ℎ𝜃(𝑥)与真实值之间的距离为每个样本-每个类输出的加和,对参数进行regularization 的 bias 项处理所有参数的平方和。

9.2 反向传播算法

之前我们在计算神经网络预测结果的时候我们采用了一种正向传播方法,我们从第一层开始正向一层一层进行计算,直到最后一层的ℎ𝜃(𝑥)。

现在,为了计算代价函数的偏导数 ∂ ∂ θ i j ( l ) J ( θ ) \frac{ ∂}{∂θ_{ij}^{(l)}}J(θ) θij(l)J(θ)

我们需要采用一种反向传播算法,也就是首先计算最后一层的误差,然后再一层一层反向求出各层的误差,直到倒数第二层。 以一个例子来说明反向传播算法。

假设我们的训练集只有一个实例( x ( 1 ) x^{(1)} x(1), y ( 1 ) y^{(1)} y(1)),我们的神经网络是一个四层的神经网络,其中K = 4, S L S_L SL = 4,L= 4:

前向传播算法:
在这里插入图片描述

在这里插入图片描述
我们从最后一层的误差开始计算,误差是激活单元的预测( a k ( 4 ) a_k^{(4)} ak(4))与实际值( y k y^k yk)之间的误差,(𝑘 = 1: 𝑘)。

我们用𝛿来表示误差,则: δ ( 4 ) = a ( 4 ) − y δ(4) = a(4) − y δ(4)=a(4)y;

我们利用这个误差值来计算前一层的误差: δ ( 3 ) = ( θ ( 3 ) ) T δ ( 4 ) ∗ g ′ ( z ( 3 ) ) δ(3) = (θ^{(3)})^Tδ(4)∗ g'(z^{(3)}) δ(3)=(θ(3))Tδ(4)g(z(3)),其中 g’(z^{(3)})是 s形函数的导数, g ′ ( z ( 3 ) ) = a ( 3 ) ∗ ( 1 − a ( 3 ) ) g'(z^{(3)}) = a^{(3)}∗ (1-a^{(3)}) g(z(3))=a(3)(1a(3))。而 ( θ ( 3 ) ) T δ ( 4 ) (θ^{(3)})^Tδ(4) (θ(3))Tδ(4)则是权重导致的误差的和。
下一步是继续计算第二层的误差: δ ( 2 ) = ( θ ( 2 ) ) T δ ( 3 ) ∗ g ′ ( z ( 2 ) ) δ(2) = (θ^{(2)})^Tδ(3)∗ g'(z^{(2)}) δ(2)=(θ(2))Tδ(3)g(z(2))

因为第一层是输入变量,不存在误差。我们有了所有的误差的表达式后,便可以计算代价函数的偏导数了,假设𝜆 = 0,即我们不做任何正则化处理时有:
∂ ∂ θ i j ( l ) J ( θ ) = a j ( l ) δ i ( l + 1 ) \frac{ ∂}{∂θ_{ij}^{(l)}}J(θ) = a_j^{(l)}δ_i^{(l+1)} θij(l)J(θ)=aj(l)δi(l+1)

重要的是清楚地知道上面式子中上下标的含义:
𝑙 代表目前所计算的是第几层。
𝑗 代表目前计算层中的激活单元的下标,也将是下一层的第𝑗个输入变量的下标。
𝑖 代表下一层中误差单元的下标,是受到权重矩阵中第𝑖行影响的下一层中的误差单元的下标。

如果我们考虑正则化处理,并且我们的训练集是一个特征矩阵而非向量。在上面的特殊情况中,我们需要计算每一层的误差单元来计算代价函数的偏导数。在更为一般的情况中,我们同样需要计算每一层的误差单元,但是我们需要为整个训练集计算误差单元,此时的误差单元也是一个矩阵,我们用 △ i j ( l ) △ij^{(l)} ij(l)来表示这个误差矩阵。第 𝑙 层的第 𝑖 个激活单元受到第 𝑗个参数影响而导致的误差。

我们的算法表示为:
在这里插入图片描述
即首先用正向传播方法计算出每一层的激活单元,利用训练集的结果与神经网络预测的结果求出最后一层的误差,然后利用该误差运用反向传播法计算出直至第二层的所有误差。

在求出了𝛥𝑖𝑗(𝑙)之后,我们便可以计算代价函数的偏导数了,计算方法如下:
在这里插入图片描述
在 Octave 中,如果我们要使用 fminuc 这样的优化算法来求解求出权重矩阵,我们需要将矩阵首先展开成为向量,在利用算法求出最优解后再重新转换回矩阵。

假设我们有三个权重矩阵,Theta1,Theta2 和 Theta3,尺寸分别为 1011,1011 和1*11, 下面的代码可以实现这样的转换:
在这里插入图片描述

9.3 反向传播算法的直观理解

在上一段视频中,我们介绍了反向传播算法,对很多人来说,当第一次看到这种算法时,第一印象通常是,这个算法需要那么多繁杂的步骤,简直是太复杂了,实在不知道这些步骤,到底应该如何合在一起使用。就好像一个黑箱,里面充满了复杂的步骤。如果你对反向传播
算法也有这种感受的话,这其实是正常的,相比于线性回归算法和逻辑回归算法而言,从数学的角度上讲,反向传播算法似乎并不简洁,对于反向传播这种算法,其实我已经使用了很多年了,但即便如此,即使是现在,我也经常感觉自己对反向传播算法的理解并不是十分深入,对于反向传播算法究竟是如何执行的,并没有一个很直观的理解。做过编程练习的同学应该可以感受到这些练习或多或少能帮助你,将这些复杂的步骤梳理了一遍,巩固了反向传播算法具体是如何实现的,这样你才能自己掌握这种算法。

在这段视频中,我想更加深入地讨论一下反向传播算法的这些复杂的步骤,并且希望给你一个更加全面直观的感受,理解这些步骤究竟是在做什么,也希望通过这段视频,你能理解,它至少还是一个合理的算法。但可能你即使看了这段视频,你还是觉得反向传播依然很复杂,依然像一个黑箱,太多复杂的步骤,依然感到有点神奇,这也是没关系的。即使是我接触反向传播这么多年了,有时候仍然觉得这是一个难以理解的算法,但还是希望这段视频能有些许帮助,为了更好地理解反向传播算法,我们再来仔细研究一下前向传播的原理:

前向传播算法:

在这里插入图片描述
在这里插入图片描述
反向传播算法做的是:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据存储】大端存储||小端存储(超详细解析,小白一看就懂!!!)

目录 一、前言 二、什么是低地址、高地址 ? 三、什么是数据的高位和低位 ? 四、什么是大小端存储? 🍉 小端存储详解 🍒 大端存储详解 五、为什么会有大小端存储? 🍍大端存储的优点 &#…

保护模式笔记九 中断门和IDT(中断描述符表)

段选择子: 先直观认识一下GDT和段选择子在逻辑地址转换为线性地址中的作用,例如: 给出逻辑地址:21h:12345678h,需要将其转换为线性地址 a. 选择子SEL21h0000000000100 0 01b,他代表的意思是&#xff1a…

H3C 路由过滤路由引入实验

H3C 路由过滤&路由引入实验 实验拓扑 ​​ 实验需求 按照图示配置 IP 地址,R1,R3,R4 上使用 loopback 口模拟业务网段R1 和 R2 运行 RIPv2,R2,R3 和 R4 运行 OSPF,各自协议内部互通在 RIP 和 OSPF …

OpenAI划时代大模型——文本生成视频模型Sora作品欣赏(十五)

Sora介绍 Sora是一个能以文本描述生成视频的人工智能模型,由美国人工智能研究机构OpenAI开发。 Sora这一名称源于日文“空”(そら sora),即天空之意,以示其无限的创造潜力。其背后的技术是在OpenAI的文本到图像生成模…

Gemma模型一些细节讲解

Gemma模型报告中提到的几个点进行代码细节解读一下: (1)Embedding层共享参数 (2)输入输出层均进行RMSNorm Embedding层共享参数 共享embedding的权重给最后的llm_head层。是词嵌入层的共享,与旋转位置编码…

低密度奇偶校验码LDPC(七)——SPA和积译码算法的简化

往期博文 低密度奇偶校验码LDPC(一)——概述_什么是gallager构造-CSDN博客 低密度奇偶校验码LDPC(二)——LDPC编码方法-CSDN博客 低密度奇偶校验码LDPC(三)——QC-LDPC码概述-CSDN博客 低密度奇偶校验码…

CNAN知识图谱辅助推荐系统

CNAN知识图谱辅助推荐系统 文章介绍了一个基于KG的推荐系统模型,代码也已开源,可以看出主要follow了KGNN-LS 。算法流程大致如下: 1. 算法介绍 算法除去attention机制外,主要的思想在于:user由交互过的item来表示、i…

前端小案例——登录界面(正则验证, 附源码)

一、前言 实现功能: 提供用户名和密码输入框。当用户提交表单时,阻止默认提交行为。使用正则表达式验证用户输入的内容,判断输入的是有效的邮箱地址还是身份证号码。根据验证结果,在输入框下方显示相应的提示信息。 实现逻辑&a…

【C++庖丁解牛】初始化列表 | Static对象 | 友元函数

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 1. 再谈构造函数1.1 …

mininet虚拟网络中的主机与宿主Ubuntu及因特网互通实现

环境: Win10(物理机),Vmware workstation ,Ubuntu(vm中的虚拟机),mininet 构建的虚拟网络环境说明: 在一win10的物理机中安装了vm平台,在vm中加载了一ubuntun系统,在改ubuntu系统中安装了mininet。 目标: 通过mininet 构建虚拟网络环境(使用python代码构建一个交换…

【开源】SpringBoot框架开发用户画像活动推荐系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 兴趣标签模块2.3 活动档案模块2.4 活动报名模块2.5 活动留言模块 三、系统设计3.1 用例设计3.2 业务流程设计3.3 数据流程设计3.4 E-R图设计 四、系统展示五、核心代码5.1 查询兴趣标签5.2 查询活动推荐…

mysql 同一条排序语句查询出来的结果某几条没按照排序查询

1501这个机床order 1 2 3 1 2 3 1 2 3 1502这个机床order 2 3 1 2 3 1 2 3 1 原因是order存在一致的 第一个123 第二个也有123 所以存在随机情况 正常应该是123456 但是需求是123 123 所以再按照id重新排序一下 原sql :select bindType.id, bindType.process_num as…

大模型学习笔记五:RAG

文章目录 一、RAG介绍1)局限性2)通过检索增强生成二、RAG系统的基本搭建流程1)搭建流程简介2)文档的加载和切割3)检索引擎4)LLM接口封装5)prompt模板6)RAG Pipeline初探7)关键字检索局限性三、向量检索1)文本向量2)向量相似度计算3)向量数据库4)基于向量检索的RAG…

一本书讲透ChatGPT,实现从理论到实践的跨越!大模型技术工程师必读书籍【送书活动】

目录 前言一、内容简介二、作者简介三、专家推荐四、读者对象五、目录福利总结 前言 OpenAI 在 2022 年 11 月推出了人工智能聊天应用—ChatGPT。它具有广泛的应用场景,在多项专业和学术基准测试中表现出的智力水平,不仅接近甚至有时超越了人类的平均水平…

40个Python字符串实例

Python 字符串是 Python 编程语言中最常用的数据类型之一,它可以表示文本或一组字符。Python 中的字符串是不可变的序列,意味着一旦创建,其值就不能被修改。下面是一些关于 Python 字符串的介绍。 概述 创建字符串:可以使用单引…

HI3516DV300 HI3516DRBCV300 海思安防监控芯片

Hi3516D V300是专为行业专用智能高清网络摄像机设计的新一代SoC。引入新一代ISP、最新H.265视频压缩编码器、高性能NNIE引擎,使Hi3516D V300在低码率、高图像质量、智能处理分析、低功耗等方面领先业界。能量消耗。Hi3516D V300集成了POR、RTC、音频编解码器和待机唤…

AI大模型的预训练、迁移和中间件编程

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

测试用例术语5.0

一、软件测试中术语 1.动态测试(dynamic testing):通过运行软件的组件或 系统来测试软件 例如:一辆汽车发动并行使测试 2.静态测试(static testing):对组件的规格说明书进行 评审&#xff0c…

Linux——自写一个简易的shell

目录 前言 一、打印提示信息 二、分割字符串 三、替换程序 前言 之前学习了很多进程相关的知识,包括环境变量、进程的创建与退出、进程等待、进程替换。现在可以用所学的作一个小总结,手撕一个shell解释器,大致的思路是先通过环境变量获…

【轮式平衡机器人】——TMS320F28069片内外设之Timer_IT(补:CCS程序烧录方法)

引入 Timer_IT 指的是 TMS320F28069 的定时器中断功能。在微控制器或数字信号控制器中,定时器是一个非常重要的外设,它可以用来产生固定时间间隔的中断,或者用来精确计算时间。 Timer_IT 的主要特点如下: 定时功能:…