Week 6 hw3-1 全连接网络反向传播推导

news2024/11/22 5:50:57

Week 6 hw3-1 全连接网络反向传播推导

折腾了半天,记录一下。

作业中网络由若干全连接层+ReLU组成,输出层的函数为softmax,损失函数为交叉熵。

一、记号

在这里插入图片描述

设网络有 n n n层。如图,当 i < n i<n i<n时,我们有如下几条式子成立:
{ z j i − 1 = ReLU ( x j i − 1 ) x j i = ReLU ( z ^ j i − 1 ) z ^ j i − 1 = ∑ k = 1 d i − 1 z k i − 1 w k j i − 1 + b j i − 1 \begin{cases} z^{i-1}_j=\text{ReLU}(x^{i-1}_j)\\ x^{i}_j=\text{ReLU}(\hat{z}^{i-1}_j)\\ \hat{z}_{j}^{i-1}=\sum\limits_{k=1}^{d_{i-1}}z^{i-1}_kw_{kj}^{i-1}+b_j^{i-1} \end{cases} zji1=ReLU(xji1)xji=ReLU(z^ji1)z^ji1=k=1di1zki1wkji1+bji1
同时,记:
{ x i − 1 = [ x 1 i − 1 , x 2 i − 1 , … , x d i − 1 i − 1 ] x i = [ x 1 i − 1 , x 2 i − 1 , … , x d i i ] z i − 1 = [ z 1 i − 1 , z 2 i − 1 , … , z d i − 1 i − 1 ] z ^ i − 1 = [ z ^ 1 i − 1 , z ^ 2 i − 1 , … , z ^ d i i − 1 ] b i − 1 = [ b 1 i − 1 , b 2 i − 1 , … , b d i i − 1 ] W i − 1 = ( w 11 i − 1 w 12 i − 1 … w 1 d i i − 1 w 21 i − 1 w 22 i − 1 … w 2 d i i − 1 ⋮ ⋮ ⋱ ⋮ w d i − 1 1 i − 1 w d i − 1 2 i − 1 … w d i − 1 d i i − 1 ) \begin{cases} \mathbf{x}^{i-1}=[x_1^{i-1},x_2^{i-1},\dots,x_{d_{i-1}}^{i-1}]\\ \mathbf{x}^{i}=[x_1^{i-1},x_2^{i-1},\dots,x_{d_{i}}^{i}]\\ \mathbf{z}^{i-1}=[z_1^{i-1},z_2^{i-1},\dots,z_{d_{i-1}}^{i-1}]\\ \hat{\mathbf{z}}^{i-1}=[\hat{z}_1^{i-1},\hat{z}_2^{i-1},\dots,\hat{z}_{d_{i}}^{i-1}]\\ \mathbf{b}^{i-1}=[b_1^{i-1},b_2^{i-1},\dots,b_{d_i}^{i-1}]\\ \mathbf{W}^{i-1}= \begin{pmatrix} w_{11}^{i-1} & w_{12}^{i-1} & \dots & w_{1d_i}^{i-1}\\ w_{21}^{i-1} & w_{22}^{i-1} & \dots & w_{2d_i}^{i-1}\\ \vdots & \vdots & \ddots & \vdots\\ w_{d_{i-1}1}^{i-1} & w_{d_{i-1}2}^{i-1} & \dots & w_{d_{i-1}d_i}^{i-1} \end{pmatrix} \end{cases} xi1=[x1i1,x2i1,,xdi1i1]xi=[x1i1,x2i1,,xdii]zi1=[z1i1,z2i1,,zdi1i1]z^i1=[z^1i1,z^2i1,,z^dii1]bi1=[b1i1,b2i1,,bdii1]Wi1= w11i1w21i1wdi11i1w12i1w22i1wdi12i1w1dii1w2dii1wdi1dii1

那么我们得到矩阵形式:
{ z i − 1 = ReLU ( x i − 1 ) x i = ReLU ( z ^ i − 1 ) z ^ i − 1 = z i − 1 W i − 1 + b i − 1 \begin{cases} \mathbf{z}^{i-1}=\text{ReLU}(\mathbf{x}^{i-1})\\ \mathbf{x}^i=\text{ReLU}(\hat{\mathbf{z}}^{i-1})\\ \hat{\mathbf{z}}^{i-1}=\mathbf{z}^{i-1}\mathbf{W}^{i-1}+\mathbf{b}^{i-1} \end{cases} zi1=ReLU(xi1)xi=ReLU(z^i1)z^i1=zi1Wi1+bi1
i = n i=n i=n时,记 i i i位置的真实标签为 y i y_{i} yi,预测结果为 y ^ i \hat{y}_i y^i。我们有:
{ z j n − 1 = ReLU ( x j n − 1 ) y ^ j = [ softmax ( z ^ 1 n − 1 , z ^ 2 n − 1 … , z ^ d n n − 1 ) ] j z ^ j n − 1 = ∑ k = 1 d n − 1 z k i − 1 w k j n − 1 + b j n − 1 \begin{cases} z^{n-1}_j=\text{ReLU}(x^{n-1}_j)\\ \hat{y}_j=[\text{softmax}(\hat{z}^{n-1}_1,\hat{z}^{n-1}_2\dots,\hat{z}^{n-1}_{d_n})]_j\\ \hat{z}_{j}^{n-1}=\sum\limits_{k=1}^{d_{n-1}}z^{i-1}_kw_{kj}^{n-1}+b_j^{n-1} \end{cases} zjn1=ReLU(xjn1)y^j=[softmax(z^1n1,z^2n1,z^dnn1)]jz^jn1=k=1dn1zki1wkjn1+bjn1
y = [ y 1 , y 2 , … , y d n ] , y ^ = [ y ^ 1 , y ^ 2 , … , y ^ d n ] \mathbf{y}=[y_1,y_2,\dots,y_{d_n}],\hat{\mathbf{y}}=[\hat y_1,\hat y_2,\dots,\hat y_{d_n}] y=[y1,y2,,ydn],y^=[y^1,y^2,,y^dn]。其中 y \mathbf{y} y为one-hot向量。

那么我们得到矩阵形式:
{ z n − 1 = ReLU ( x n − 1 ) y ^ = softmax ( z ^ n − 1 ) z ^ n − 1 = z n − 1 W n − 1 + b n − 1 \begin{cases} \mathbf{z}^{n-1}=\text{ReLU}(\mathbf{x}^{n-1})\\ \hat{\mathbf{y}}=\text{softmax}(\hat{\mathbf{z}}^{n-1})\\ \hat{\mathbf{z}}^{n-1}=\mathbf{z}^{n-1}\mathbf{W}^{n-1}+\mathbf{b}^{n-1} \end{cases} zn1=ReLU(xn1)y^=softmax(z^n1)z^n1=zn1Wn1+bn1
记损失函数 J ( y , y ^ ) = − ∑ i = 1 d n y i log ⁡ y ^ i J(\mathbf{y},\hat{\mathbf{y}})=-\sum\limits_{i=1}^{d_n}y_i\log \hat{y}_i J(y,y^)=i=1dnyilogy^i

二、推导

接下来计算 ∇ J W l \nabla J_{\mathbf{W}^l} JWl ∇ J b l \nabla J_{\mathbf{b}^l} Jbl

画出计算图,得到:
∇ J w i j l = ∂ J ∂ z ^ j l ∂ z ^ j l ∂ w i j l = ∂ J ∂ z ^ j l z i l ∇ J b j l = ∂ J ∂ z ^ j l ∂ z ^ j l ∂ b j l = ∂ J ∂ z ^ j l \nabla J_{w^l_{ij}}=\frac{\partial J}{\partial \hat{z}_j^l}\frac{\partial \hat{z}_j^l}{\partial w_{ij}^l}=\frac{\partial J}{\partial \hat{z}_j^l}z^l_{i}\\ \nabla J_{b^l_{j}}=\frac{\partial J}{\partial \hat{z}_j^l}\frac{\partial \hat{z}_j^l}{\partial b^l_{j}}=\frac{\partial J}{\partial \hat{z}_j^l} Jwijl=z^jlJwijlz^jl=z^jlJzilJbjl=z^jlJbjlz^jl=z^jlJ

写成矩阵形式,得到:
∇ J W l = ( z l ) T ∇ J z ^ l ∇ J b l = ∇ J z ^ l \nabla J_{\mathbf{W}^l}=(\mathbf{z}^l)^{T}\nabla J_{\mathbf{\hat{z}}^l}\\ \nabla J_{\mathbf{b}^l}=\nabla J_{\mathbf{\hat{z}}^l} JWl=(zl)TJz^lJbl=Jz^l
于是只需要计算 ∇ J z ^ l \nabla J_{\mathbf{\hat{z}}^l} Jz^l即可。我们尝试构造递推式计算。画出计算图,得到:
∇ J z ^ j l = ( ∑ k = 1 d l + 1 ∂ J ∂ z ^ k l + 1 ∂ z ^ k l + 1 ∂ x j l + 1 ) ∂ x j l + 1 ∂ z ^ j l = ( ∑ k = 1 d l + 1 ∂ J ∂ z ^ k l + 1 w j k l + 1 ) d ReLU d x ∣ x = z ^ j l \nabla J_{\hat{z}_{j}^l}=(\sum_{k=1}^{d_{l+1}}\frac{\partial J}{\partial \hat{z}_{k}^{l+1}}\frac{\partial \hat{z}_{k}^{l+1}}{\partial x_j^{l+1}})\frac{\partial x_j^{l+1}}{\partial \hat{z}_{j}^l}=(\sum_{k=1}^{d_{l+1}}\frac{\partial J}{\partial \hat{z}_{k}^{l+1}}w_{jk}^{l+1})\left.\dfrac{\text{d ReLU}}{\text{d}x}\right|_{x=\hat{z}_{j}^{l}} Jz^jl=(k=1dl+1z^kl+1Jxjl+1z^kl+1)z^jlxjl+1=(k=1dl+1z^kl+1Jwjkl+1)dxd ReLU x=z^jl
写成矩阵形式,得到:
∇ J z ^ l = ∇ J z ^ l + 1 W l + 1 ReLU’ ( z ^ l ) \nabla J_{\hat{\mathbf{z}}^l}=\nabla J_{\hat{\mathbf{z}}^{l+1}}\mathbf{W}^{l+1}\text{ReLU'}(\hat{\mathbf{z}}^l) Jz^l=Jz^l+1Wl+1ReLU’(z^l)
因此若得到 ∇ J z ^ n − 1 \nabla J_{\hat{\mathbf{z}}^{n-1}} Jz^n1则完成计算。下面计算 ∇ J z ^ n − 1 \nabla J_{\hat{\mathbf{z}}^{n-1}} Jz^n1

由于 y \mathbf{y} y为one-hot向量,若真实标签的类别为 i i i,那么我们有 J ( y , y ^ ) = − y i log ⁡ y ^ i = − log ⁡ y ^ i J(\mathbf{y},\hat{\mathbf{y}})=-y_i\log\hat{y}_i=-\log\hat{y}_i J(y,y^)=yilogy^i=logy^i

画出计算图,得到:
∇ J z ^ j n − 1 = ∂ J ∂ z ^ j n − 1 = ∑ k = 1 d n ∂ J ∂ y ^ k ∂ y ^ k ∂ z ^ j n − 1 = ∂ J ∂ y ^ i ∂ y ^ i ∂ z ^ j n − 1 = − 1 y ^ i ∂ y ^ i ∂ z ^ j n − 1 \nabla J_{\hat{z}_j^{n-1}}=\frac{\partial J}{\partial \hat{z}_j^{n-1}}=\sum_{k=1}^{d_n}\frac{\partial J}{\partial\hat{y}_k}\frac{\partial\hat{y}_k}{\partial \hat{z}_j^{n-1}}=\frac{\partial J}{\partial\hat{y}_i}\frac{\partial\hat{y}_i}{\partial \hat{z}_j^{n-1}}=-\frac{1}{\hat{y}_i}\frac{\partial\hat{y}_i}{\partial \hat{z}_j^{n-1}} Jz^jn1=z^jn1J=k=1dny^kJz^jn1y^k=y^iJz^jn1y^i=y^i1z^jn1y^i
由于 y ^ i = exp ⁡ ( z ^ i n − 1 ) ∑ k = 1 d n exp ⁡ ( z ^ k n − 1 ) \hat{y}_i=\frac{\exp(\hat{z}_i^{n-1})}{\sum_{k=1}^{d_n}\exp(\hat{z}_k^{n-1})} y^i=k=1dnexp(z^kn1)exp(z^in1),下面进行分类讨论。

i ≠ j i\not=j i=j时,有:
∂ y ^ i ∂ z ^ j n − 1 = − exp ⁡ ( z ^ i n − 1 ) ( ∑ k = 1 d n exp ⁡ ( z ^ k n − 1 ) ) 2 exp ⁡ ( z ^ j n − 1 ) = − y ^ i y ^ j \frac{\partial\hat{y}_i}{\partial \hat{z}_j^{n-1}}=-\frac{\exp(\hat{z}_i^{n-1})}{(\sum_{k=1}^{d_n}\exp(\hat{z}_k^{n-1}))^2}\exp(\hat{z}_j^{n-1})=-\hat{y}_i\hat{y}_j z^jn1y^i=(k=1dnexp(z^kn1))2exp(z^in1)exp(z^jn1)=y^iy^j
i = j i=j i=j时,有:
∂ y ^ i ∂ z ^ j n − 1 = ∑ k = 1 , k ≠ i d n exp ⁡ ( z ^ k n − 1 ) ( ∑ k = 1 d n exp ⁡ ( z ^ k n − 1 ) ) 2 exp ⁡ ( z ^ i n − 1 ) = ( 1 − y ^ i ) y ^ i \frac{\partial\hat{y}_i}{\partial \hat{z}_j^{n-1}}=\frac{\sum\limits_{k=1,k\not=i}^{d_n}\exp(\hat{z}_k^{n-1})}{(\sum\limits_{k=1}^{d_n}\exp(\hat{z}_k^{n-1}))^2}\exp(\hat{z}_i^{n-1})=(1-\hat{y}_i)\hat{y}_i z^jn1y^i=(k=1dnexp(z^kn1))2k=1,k=idnexp(z^kn1)exp(z^in1)=(1y^i)y^i
代入 ∇ J z ^ j n − 1 \nabla J_{\hat{z}_j^{n-1}} Jz^jn1,我们得到:
∇ J z ^ j n − 1 = { y ^ j , i ≠ j − 1 + y ^ j , i = j \nabla J_{\hat{z}_j^{n-1}}= \begin{cases} \hat{y}_j, & i\not= j\\ -1+\hat{y}_j, & i = j \end{cases} Jz^jn1={y^j,1+y^j,i=ji=j
至此推导完毕。

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

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

相关文章

机器学习/人工智能 实验一:典型监督学习方法分类实践与比较分析

一、实验目的与要求 (1)利用所学习的监督学习方法完成目标识别实验方案的设计。 (2)编程并利用相关软件完成实验测试&#xff0c;得到实验结果。 (3)通过对实验数据的分析﹑整理&#xff0c;方法的对比&#xff0c;得出实验结论&#xff0c;培养学生创新思维和编写实验报告的能…

【PyTorch深度学习实践】09_卷积神经网络基础

文章目录1.卷积操作1.1 卷积操作1.2 padding-填充1.3 stride-步长1.4 pooling-池化1.5 基础版CNN代码示例1.6 完整CNN代码示例1.卷积操作 卷积神经网络概览 1.1 卷积操作 输入通道数卷积核通道数&#xff0c;卷积核个数输出通道数 1.2 padding-填充 padding是为了让源图像最…

FPGA图像处理HLS实现三种图像缩放算法,线性插值、双线性插值、双三次插值,提供HLS工程和vivado工程源码

目录一、三种图像缩放算法介绍线性插值双线性插值双三次插值二、HLS实现线性插值图像缩放三、HLS实现双线性插值图像缩放四、HLS实现双三次插值图像缩放五、HLS在线仿真并导出IP六、其他FPGA型号HLS在线仿真并导出IP七、zynq7100开发板vivado工程八、上板调试验证九、福利&…

纪念QT可直接安装的离线版最后版本5.14.2

为什么说纪念呢&#xff1f;因为&#xff0c;这个版本之后再也没有可下载下来安装的版本了&#xff0c;因为我们以后再也没有这么方便了。为是很么说纪念呢&#xff1f;因为我们从QT还很柔弱的时候开始就是使用的离线版。 以前用c#来做组态&#xff0c;自定义控件开发起来也还…

基础知识一览2

这里写目录标题1.XML2.1 XML中的转义字符2.2 CDATA区2.3 如何去约束XMl:DTD2.3.1 xml文件内部引用DTD约束2.3.2 xml文件引用外部DTD约束2.3.3 xml文件引用公共DTD约束1.XML xml的文件后缀名是.xmlxml有且只有一个根标签xml的标签是尖括号包裹关键字成对出现的&#xff0c;有开…

如何做好banner设计(banner设计要点包括哪些)

网页设计的Banner作为表达网站价值或者传达广告信息的视觉主体&#xff0c;一直在根据网络环境的变化而变化着&#xff0c;从表现形式到尺寸大小&#xff0c;再到创意的多元化&#xff0c;因此更需要我们网页设计师们对其设计创意进行丰富和完善&#xff0c;才能真正达到宣传的…

Elasticsearch入门——Elasticsearch7.8.0版本和Kibana7.8.0版本的下载、安装(win10环境)

目录一、Elasticsearch7.8.0版本下载、安装1.1、官网下载地址1.2、下载步骤1.3、安装步骤(需要jdk11及以上版本支持)1.4、启动后&#xff0c;控制台中文乱码问题解决二、Node下载、安装&#xff08;安装Kibana之前需要先安装Node&#xff09;2.1、Node官网下载地址2.2、Node下载…

Linux文字处理和文件编辑(三)

1、Linux里的配置文件&#xff1a; /etc/bashrc文件&#xff1a;该配置文件在root用户下&#xff0c;权限很高。~/.bashrc文件&#xff1a;只有当前用户登录时才会执行该配置文件。每次打开终端&#xff0c;都会自动执行配置文件里的代码。比如&#xff0c;alias md‘mkdir’就…

《2022年终总结》

2022年终总结 笔者成为社畜的一年&#xff0c;整整打了一年工&#xff01; 之前都说每年都有点变化&#xff0c;今年的变化可能就是更加懒散了&#xff0c;玩了更多的手机 就是运动的坚持更加多了&#xff0c;收入也增加了&#xff0c;哈哈&#xff01; 其实今年的变化不大&am…

41. 【农产品溯源项目前后端Demo】后端目录结构

本节介绍下后端代码的目录结构。 1. 实现用户管理、菜单管理、角色管理、代码自动生成等服务,归结为系统管理,是若依框架提供的能力。 2. ruoyi-traces实现农产品溯源应用的代码,如果要引入其他Java包,修改本模块的pom.xml文件。 1)config包加载配置文件数据,配置文件路…

FPGA:IIC验证镁光EEPROM仿真模型(纯Verilog)

目录日常唠嗑一、程序设计二、镁光模型仿真验证三、testbench文件四、完整工程下载日常唠嗑 IIC协议这里就不赘述了&#xff0c;网上很多&#xff0c;这里推荐两个&#xff0c;可以看看【接口时序】6、IIC总线的原理与Verilog实现 &#xff0c;还有IIC协议原理以及主机、从机Ve…

基于SpringBoot的车牌识别系统(附项目地址)

yx-image-recognition: 基于spring boot maven opencv 实现的图像深度学习Demo项目&#xff0c;包含车牌识别、人脸识别、证件识别等功能&#xff0c;贯穿样本处理、模型训练、图像处理、对象检测、对象识别等技术点 介绍 spring boot maven 实现的车牌识别及训练系统 基于…

3-1存储系统-存储器概述主存储器

文章目录一.存储器概述&#xff08;一&#xff09;存储器分类1.按在计算机中的作用&#xff08;层次&#xff09;分类2.按存储介质分类3.按存取方式分类4.按信息的可保存性分类&#xff08;二&#xff09;存储器的性能指标二.主存储器&#xff08;一&#xff09;基本组成1.译码…

6 个必知必会高效 Python 编程技巧

编写更好的Python 代码需要遵循Python 社区制定的最佳实践和指南。遵守这些标准可以使您的代码更具可读性、可维护性和效率。 本文将展示一些技巧&#xff0c;帮助您编写更好的 Python 代码 文章目录遵循 PEP 8 风格指南1.遵守 PEP 8 命名约定2. 使用描述性的和有意义的变量名…

读书笔记--- ggplot2:数据分析与图形艺术

最近看了这本书《ggplot2&#xff1a;数据分析与图形艺术》&#xff08;第2版&#xff09;&#xff0c;实际上网页在线版本已经更新到第3版了&#xff08;https://ggplot2-book.org/&#xff09;。 这本书页数不多&#xff0c;但是整体还是值得阅读&#xff0c;不愧是Hadley W…

【Proteus仿真】【STM32单片机】酒精浓度检测系统设计

文章目录一、功能简介二、软件设计三、实验现象联系作者一、功能简介 本项目使用Proteus8仿真STM32单片机控制器&#xff0c;使用LCD1602显示模块、按键模块、LED和蜂鸣器、MQ-3酒精传感器模块等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示酒精浓度值和阈值&…

插入排序.

根据找插入位置的方法分为&#xff1a; ①、顺序法定位插入位置——直接插入排序 ②、二分法定位插入位置——二分插入排序 ③、缩小增量多遍插入排序——希尔排序 一、直接插入排序&#xff08;以升序为例&#xff09; 先背模板&#xff01; void insert_sort(int *a,int le…

远程服务器(恒源云)上使用NNI进行训练调参的详细流程

远程服务器&#xff08;恒源云&#xff09;上使用NNI进行训练调参的详细流程 一、环境配置 pip下载安装nni&#xff0c;&#xff08;可使用豆瓣源&#xff0c;可快速下载&#xff0c;在安装命令后加 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com&#x…

VUE|后台管理项目——动态路由权限管理

公共数据复用1.1 为什么要公共数据复用&#xff1f;因为我们只有把导航和路由的数据公共的提出来&#xff0c;我们才能告知后端人员需要返回什么数据。1.2 怎么数据复用呢&#xff1f;首先&#xff0c;我们可以在utils文件夹里新建一个navDate.js的文件&#xff1a;把我们需要的…