【深度学习】4-3 误差反向传播法 - Affine/Softmax层的实现

news2024/11/25 13:48:52

Affine层

神经网络的正向传播中进行的矩阵的乘积运算(也就是Y = np.dot(X, W) + B)在几何学领域被称为“仿射变换”。因此,这里将进行仿射变换的处理实现为“Affine层”。

几何中,仿射变换包括一次线性变换和一次平移,分别对应神经网络的加权和运算与加偏置运算。

在这里插入图片描述

下面考虑上面计算图的反向传播,可以得到下面的式子:
在这里插入图片描述

根据上面的式子,尝试画出计算图的反向传播
在这里插入图片描述

这里要特别注意矩阵的形状,因为矩阵的乘积运算要求对应维度的元素数保持一致,通过确认一致性。
因此这个特点可以推导出矩阵的乘积的反向传播

批版本的Affine层
前面介绍的Affine层的输入X是以单个数据为对象的。现在我们考虑N个数据一起进行正向传播的情况,也就是批版本的Affine层
下面是计算图
在这里插入图片描述

加上偏置时,需要特别注意。正向传播时,偏置被加到X·W的各个数据上。
正向传播时,偏置会被加到每一个数据(第1个、第2个…)上。因此反向传播时,各个数据的反向传播的值需要汇总为偏置的元素。用代码显示如下:

>>> dY = np.array([[12,3,],[456]])
>>> dY
array([[123],[456]])
>>>
>>> dB = np.sum(dY,axis=0)
>>> dB
array([579])

这个例子中,假定数据有2个(N=2)。偏置的反向传播会对这2个数据的导数按元素进行求和。因此,这里使用了np.sum()对第0轴方向上的元素进行求和

综上所述,Affine的实现如下所示:

class Affine:
	def __init__(self,W,b):
		self.W = W
		self.b = b
		self.x = None
		self.dW = None
		self.db = None

	def forward(self,x):
		self.x = x
		out = np.dot(x, self.W) + self.b
		return out

	def backward(self, dout):
		dx = np.dot(dout, sellf.W.T)
		self.dW = np.dot(self.x.T, dout)
		self.db = np.sum(dout, axis = 0)

Softmax-with-Loss 层

手写数字识别时,Softmax 层的输出如图:
在这里插入图片描述
输入图像通过 Affine 层和 ReLU 层进行转换,10 个输入通过 Softmax 层进行正规化。在这个例子中,“0”的得分是 5.3,这个值经过 Softmax 层转换为 0.008(0.8%);“2”的得分是 10.1,被转换为 0.991(99.1%)
在上图中,Softmax 层将输入值正规化(将输出值的和调整为 1)之后再输出。另外,因为手写数字识别要进行 10 类分类,所以向Softmax 层的输入也有 10 个。

下面来实现 Softmax 层。考虑到这里也包含作为损失函数的交叉熵误差(cross entropy error),所以称为“Softmax-with-Loss 层”。
在这里插入图片描述
可以看到,Softmax-with-Loss 层有些复杂。这里只给出了最终结果
鉴于上面的计算图过于复杂,将其简化为如下图:
在这里插入图片描述
softmax 函数记为 Softmax 层,交叉熵误差记为 Cross Entropy Error 层。这里假设要进行 3 类分类,从前面的层接收 3 个输入(得分)。如图所示,Softmax 层将输入 正规化,Cross Entropy Error 层接收 Softmax 的输出 和教师标签 ( t1,t2,t3) ,从这些数据中输出损失 L。

注意的是反向传播的结果。Softmax 层的反向传播得到了 (y1-t1, y2-t2, y3-t3)这样“漂亮”的结果。由于(y1, y2, y3) 是 Softmax 层的输出,(t1, t2, t3)是监督数据,所以(y1-t1, y2-t2, y3-t3) 是 Softmax 层的输出和教师标签的差分。神经网络的反向传播会把这个差分表示的误差传递给前面的层,这是神经网络学习中的重要性质。

神经网络学习的目的就是通过调整权重参数,使神经网络的输出(Softmax的输出)接近监督标签。因此,必须将神经网络的输出与监督标签的误差高效地传递给前面的层。刚刚的 (y1-t1, y2-t2, y3-t3)正是 Softmax层的输与监督标签的差,直截了当地表示了当前神经网络的输出与监督标签的误差

如果这个误差大,Softmax层前面的层会从这个大的误差中学习到“大”的内容。
如果这个误差小,Softmax层前面的层会从这个大的误差中学习到“小”的内容。

下面来看Softmax-with-Loss层的实现,实现过程如下:

class SoftmaxWithLoss: 
	def __init__(self):
		self.loss = None
		self.y = None
		self.t = None

	def forward(self, x, t):
		self.t = t
		self.y = softmax(y)
		self.loss = cross_entropy_error(self.y, self,t)

		return self.loss

	def backward(self, dout=1):
		batch_size = self.t.shape[0]
		dx = (self.y - self.t) / batch_size
		
		return dx

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

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

相关文章

自由软件,自由社会之GNU 操作系统的初始公告

导读这是 GNU 工程的原始通告,由理查德斯托曼于 1983 年 9 月 27 日发表。纵观历史,可以发现 GNU 工程在很多地方都与这份初始通告有很多差异。比如实际是拖延到了 1984 年 1 月才开始。而自由软件的很多哲学理念也是数年之后才得以厘清。 From mit-vax!…

阿里云学生验证网页及申请认证流程

阿里云学生用户完成学生认证可以领取一台阿里云服务器,那么问题来了,阿里云学生验证申请入口​在哪?阿里云百科分享阿里云学生验证入口网页链接及学生认证全流程: 目录 阿里云学生验证入口及申请流程 打开学生验证申请入口 支…

周大福荣获2023亚洲零售大奖——年度珠宝零售商

由成立于1991年、服务于亚洲充满活力的零售业的行业杂志—《亚洲零售杂志》主办的“2023亚洲零售大奖”评选结果于6月15日揭晓,周大福珠宝集团凭借创新和卓越的表现荣获“2023亚洲零售大奖—年度珠宝零售商(中国)”,是中国唯一入榜…

产品经理面试常见的25个必问题(二)

14、举例分析你知道的几种商业模式和盈利模式? 先明确商业模式和盈利模式的不同。 1)、商业模式有很多种,但基本分为三类: ●以客户驱动的商业模式,多是代理大厂商产品为主,以营销客户赚差价和服务费为主&#xff1…

GPT提示词系统学习-第四课-好玩的角色指令-效果简直是YYDS了

开篇 各位奇思妙想的程序伙伴们,如果你还未加入GPT万能生成器的狂欢队伍,那现在正是时候!让我来带你短暂探访一下GPT惊艳的角色创建功能。嘘~让我们秘密派对开始! 这位万能生成器让人头疼的问题终于迎刃而解——GPT能为你吹气成猴!它帮你创作角色如同魔法一般。 首先,…

【玩转Docker小鲸鱼叭】虚拟化技术简介

什么是虚拟化技术? Docker 是一款基于容器虚拟化技术构建的软件,那到底什么虚拟化技术呢?在学习 Docker 之前,先简单了解下虚拟化技术。 虚拟化是云原生的实现基础,它能够帮助我们更加有效地利用物理计算机硬件。 虚…

2023年中级工程师职称认定、考试和评审有什么区别呢?

2023年中级工程师职称认定、考试和评审有什么区别呢? 人社部门中级工程师职称获得的渠道只有三种:认定、考试和评审这三种渠道,都可以拿到正规的中级职称,那么这几种有什么区别呢? 要说区别的话,启程别老师告诉你&…

python使用pyinstaller打包运行过程中莫名的被阻塞

问题描述 使用pyinstaller打包python代码命令 python -m PyInstaller -i logo.ico -F -p ./console -n scl_runner ./main.py运行之后会有一个终端,可以看到终端日志输出正常,多次远程调用也没有问题,死循环测试调用10万次也没有卡死 然…

2023 互联网大厂 Java 面试 1210 道题全解析

很多 Java 工程师的技术不错,但是一面试就头疼,10 次面试 9 次都是被刷,过的那次还是去了家不知名的小公司。 问题就在于:面试有技巧,而你不会把自己的能力表达给面试官。 应届生:你该如何准备简历&#x…

管理类联考——写作——素材篇——论说文——写作素材01—志篇:理想•信念

管理类专业学位联考 (写作能力) 论说文素材 01——志篇:理想信念 论文说材料: 古之立大事者,不惟有超世之才,亦必有坚韧不拔之志。 ——苏轼《晁错论》 一:道理论据 没有生活的理想,就没有理想的生活。 ——中国共…

C/C++入门秋招知识点八股文

1.C/C关键字 1.1 static(静态)变量 在C中,关键字static是静态变量: 静态变量只会初始化一次,然后在这函数被调用过程中值不变。在文件内定义静态变量(函数外),作用域是当前文件&a…

在HTML语法中,用花括号{}括起来的内容是什么呢?

在HTML语法中,使用花括号{}括起来的内容通常表示占位符或模板语法,用于动态地插入或生成具体的内容。这种语法通常是由特定的模板引擎或框架提供,并在服务器端进行处理。 比如在某Django模板文件中,有如下的代码: &l…

理解Widget::Widget(QWidget *parent) :QWidget(parent)同C++ 基类和派生类的构造函数

1 QT中这段代码如何理解呢 Widget::Widget(QWidget *parent) :QWidget(parent){} 2 首先&#xff0c;来看一个例子 #include <iostream> using namespace std; class Base { public:Base() :m_num(0){ // 构造函数让类范围的m_num被初始化. cout << "thi…

平衡小车学习教程1——硬件资源及其小车底层硬件介绍篇

起因 大家在学会了Stm32后&#xff0c;可以做一个项目来进行来进行练手&#xff0c;平衡小车就是一个很好的练手项目&#xff0c;可以检验自己的学习成果&#xff0c;也可以对学习到的知识进行一个复习。再一个就是通过做项目来锻炼自己的工程能力。 好啦&#xff0c;废话不多…

2023 亚马逊云科技中国峰会,引领 Serverless 技术架构新潮流

序言 随着大数据与云计算技术的深入发展&#xff0c;Serverless 已经成为一个技术趋势&#xff0c;一个云的重要发展方向。依托于 Serverless 无服务器架构&#xff0c;云上技术方式正在由过去的集中式、分布式研发&#xff0c;向新式云上组装式研发转变&#xff0c;实现软件研…

医学影像临床信息系统PACS源码

医学影像临床信息系统&#xff08;Picture Archiving and Communication Systems&#xff09;PACS是指从医疗影像设备中获得数字影像&#xff0c;利用高速网络进行存储、管理、传输的医疗影像信息管理系统。通过该系统&#xff0c;能实现影像数字化、无胶片化管理。 登记系统 …

【linux系统编程学习】【未完待续】

牛客网webserver教程 1. linux系统编程入门1.1 Linux开发环境搭建1.2 GCC&#xff08;1&#xff09; 1. linux系统编程入门 1.1 Linux开发环境搭建 安装虚拟机安装VMware tool 解压-提取文件-然后对应文件夹中 sudo ./vmware-install.pl安装openssh-server sudo apt instal…

【后端面经-Java】Java创建线程的方法简介

【后端面经-Java】Java创建线程的方法简介 1. 线程的基本概念1.1 线程1.2 线程状态和生命周期 2. 创建线程的四种方法2.1 继承Thread类2.2 实现Runnable接口2.3 实现Callable接口2.4 使用线程池 3. 参考资料 1. 线程的基本概念 1.1 线程 学过操作系统的同学应该不陌生&#x…

如何使用 SpringFox 自动生成 RESTful API 文档?

如何使用 SpringFox 自动生成 RESTful API 文档&#xff1f; 在开发 RESTful API 时&#xff0c;编写 API 文档是一个重要的任务。API 文档可以帮助其他开发人员了解 API 的用法、参数、返回值等信息。然而&#xff0c;手动编写 API 文档是一项繁琐的工作&#xff0c;往往需要…

苹果Vision Pro生态升级,UWB芯片制程规格将提高

苹果将积极升级硬件产品规格以建构更有竞争力的 Vision Pro 生态&#xff0c;UWB芯片制程规格将提高。 郭明錤称&#xff0c;Vision Pro 的成功关键之一在于生态&#xff0c;当中包括能否与其他苹果硬件产品整合&#xff0c;而与此相关的主要硬件规格为 Wi-Fi 与 UWB。iPhone…