GAN:对抗生成网络,前向传播和后巷传播的区别

news2024/11/26 11:52:48

目录

GAN:对抗生成网络

损失函数

判别器开始波动很大,先调整判别器

 生成样本和真实样本的统一:真假难辨​编辑

 文字专图片​编辑

 头像转表情包​编辑

 头像转3D​编辑

后向传播

1. 前向传播(forward)

2. 反向传播(backward):得到权重参数公式,寻找优路径

反向传播的四个基本方程

链式法则误差求和

 梯度下降权重参数更新​编辑


GAN:对抗生成网络

 

 

 

损失函数

 

判别器开始波动很大,先调整判别器

 生成样本和真实样本的统一:真假难辨

 

 

 图像数据集生成

 

 文字专图片

 头像转表情包

 头像转3D

 贝叶斯:后验

 

 

 

后向传播

 

 


前向传播:通过输入层输入,一路向前,通过输出层输出的一个结果。如图指的是1 、 x1、x2、xn、与权重(weights)相乘,并且加上偏置值b0,然后进行总的求和,同时通过激活函数激活之后算出结果。这个过程就是前向传播
反向传播:通过输出反向更新权重的过程。具体的说输出位置会产生一个模型的输出,通过这个输出以及原数据计算一个差值。将前向计算过程反过来计算。通过差值和学习率更新权重。

1. 前向传播(forward)

简单理解就是将上一层的输出作为下一层的输入,并计算下一层的输出,一直到运算到输出层为止。接下来我们用数学公式描述一下:

权重

偏置

设 wjkl 为 l−1 层第 k 个神经元到第 l 层第 j 个神经元的weight, bjl 为第 l 层第 j 个神经元的bias, ajl 为第第 l 层第 j 个神经元的激活值(激活函数的输出,保证模型的非线性)。

对于Layer 2的输出 a1(2) ,a2(2),a3(2),

a1(2)=σ(z1(2))=σ(w11(2)x1+w12(2)x2+w13(2)x3+b1(2))

a2(2)=σ(z2(2))=σ(w21(2)x1+w22(2)x2+w23(2)x3+b2(2))

a3(2)=σ(z3(2))=σ(w31(2)x1+w32(2)x2+w33(2)x3+b3(2))

对于Layer 3的输出a1(3),

a1(3)=σ(z1(3))=σ(w11(3)a1(2)+w12(3)a2(2)+w13(3)a3(2)+b1(3))

a2(3)=σ(z2(3))=σ(w21(3)a1(2)+w22(3)a2(2)+w23(3)a3(2)+b2(3))

从上面可以看出,使用代数法一个个的表示输出比较复杂,而如果使用矩阵法则比较的简洁。将上面的例子一般化,并写成矩阵乘法的形式,

z(l)=W(l)a(l−1)+b(l)

a(l)=σ(z(l))

其中 σ 为 激活函数,如Sigmoid,ReLU,PReLU等。

2. 反向传播(backward):得到权重参数公式,寻找优路径

实际上,反向传播仅指用于计算梯度的方法而另一种算法,例如随机梯度下降法,才是使用该梯度来进行学习。原则上反向传播可以计算任何函数的到导数

在了解反向传播算法之前,我们先简单介绍一下链式法则:

微积分中的链式法则(为了不与概率中的链式法则相混淆)用于计复合函数的导数。反向传播是一种计算链式法则的算法,使用高效的特定运输顺序。

设 x 是实数, f 和 g 是从实数映射到实数的函数。假设 y=g(x) 并且 z=f(g(x))=f(y) 。那么链式法则就是: dzdx=dzdydydx 。

反向传播算法的核心是代价函数 C 对网络中参数(各层的权重 W 和偏置 b )的偏导表达式 ∂C∂W 和∂C∂b。这些表达式描述了代价函数值C随权重W或偏置b变化而变化的程度。BP算法的简单理解:如果当前代价函数值距离预期值较远,那么我们通过调整权重W或偏置b的值使新的代价函数值更接近预期值(和预期值相差越大,则权重W或偏置b调整的幅度就越大)。一直重复该过程,直到最终的代价函数值在误差范围内,则算法停止。

BP算法可以告诉我们神经网络在每次迭代中,网络的参数是如何变化的,理解这个过程对于我们分析网络性能或优化过程是非常有帮助的,所以还是尽可能搞透这个点。

反向传播过程中要计算偏导表达式 ∂C/∂W 和∂C/∂b,我们先对代价函数做两个假设,以二次损失函数为例:

其中 n 为训练样本 x 的总数, y=y(x) 为期望的输出,即ground truth, L 为网络的层数, aL(x) 为网络的输出向量。

假设1:总的代价函数可以表示为单个样本的代价函数之和的平均:

 这个假设的意义在于,因为反向传播过程中我们只能计算单个训练样本的∂Cx/∂Wx 和∂C/∂b,在这个假设下,我们可以通过计算所有样本的平均来得到总体的∂C/∂W 和∂C/∂b。

假设2:代价函数可以表达为网络输出的函数 Loss=C(aL) ,比如单个样本 x 的二次代价函数可以写为:

反向传播的四个基本方程

权重W或偏置b的改变如何影响代价函数 C 是理解反向传播的关键。最终,这意味着我们需要计算出每个的∂C/∂Wjkl 和∂C/∂bjkl,在讨论基本方程之前,我们引入误差 δ 的概念,δjl表示第 l 层第 j 个神经元的误差

如上图所示,假设有个小恶魔在第 l 层第 j 个神经元捣蛋,他让这个神经元的权重输出变化了 Δzjl ,那么这个神经元的激活输出为 δ(zjl+Δzjl) ,然后这个误差向后逐层传播下去,导致最终的代价函数变化了 ∂C/∂zjlΔzjl 。现在这个小恶魔改过自新,它想帮助我们尽可能减小代价函数的值(使网络输出更符合预期)。假设 ∂C∂zjl 一开始是个很大的正值或者负值,小恶魔通过选择一个和 ∂C/∂zjl 方向相反的Δzjl使代价函数更小(这就是我们熟知的梯度下降法)。随着迭代的进行, ∂C/∂zjl 会逐渐趋向于0,那么Δzjl对于代价函数的改进效果就微乎其微了,这时小恶魔就一脸骄傲的告诉你:“俺已经找到了最优解了(局部最优)”。这启发我们可以用 ∂C/∂zjl 来衡量神经元的误差: δjl=∂C∂zjl 。

下面就来看看四个基本方程是怎么来的。

1. 输出层的误差方程

果上面的东西你看明白了,这个方程应该不难理解,等式右边第一项 ∂C∂ajL 衡量了代价函数随网络最终输出的变化快慢,而第二项 σ(1)(zjL) 则衡量了激活函数输出随 zjL 的变化快慢。当激活函数饱和,即 σ(1)(zjL)≈0 时,无论∂C∂ajL多大,最终 δjL≈0 ,输出神经元进入饱和区,停止学习。

方程中两项都很容易计算,如果代价函数为二次代价函数:

可以得到:

同理,对激活函数 σ(z) 求 zjL 的偏导即可求得 σ(1)(zjL) ,将它重写为矩阵形式:

⊙ 为Hadamard积,即矩阵的点积。

链式法则误差求和

 梯度下降权重参数更新

 

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

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

相关文章

自我管理篇--“90%的简历会被刷掉”这个现象背后的原因

以上简历模板资源的排版可能不是最优,但工作经历可以借鉴 文章目录 一、简历问题出在什么地方二、如何提升简历的质量三、如何避免常见的简历错误四、如何让你的简历脱颖而出五、如何准备面试 为什么90%的简历会被淘汰 在当今竞争激烈的就业市场中,求职者…

OCR扫描仪应该怎么选?

选择OCR扫描仪时,以下几个因素需要考虑: 1. 扫描质量:确保选购的OCR扫描仪能够提供高质量的扫描结果。关注分辨率(通常以dpi表示),辨识度和颜色深度等技术指标,以满足您的需求。 2. 扫描速度&a…

电脑报错vcomp100.dll丢失怎样修复?这三个方法可以解决

vcomp100.dll是微软Visual C 2005 Redistributable Package的一部分,它包含了运行某些程序所需的C运行时库。当电脑中的vcomp100.dll文件丢失或损坏时,可能会导致一些程序无法正常运行,甚至出现系统崩溃等问题。 那么,当遇到这样的…

openpnp - 自动换刀的设置

文章目录 openpnp - 自动换刀的设置概述笔记采用的openpnp版本自动换刀库的类型选择自动换刀设置前的注意事项先卸掉吸嘴座上所有的吸嘴删掉所有的吸嘴设置自动换刀的视觉识别设置吸嘴座为自动换刀 - 以N1为例备注补充 - 吸嘴轴差个0.3mm, 就有可能怼坏吸嘴END openpnp - 自动换…

Laravel 框架构造器的排序分组.子查询 JOIN 查询 构造器的增删改 ⑦

作者 : SYFStrive 博客首页 : HomePage 📜: THINK PHP 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 &#x1f44…

go1.21.0.windows-amd64.msi

go1.21.0.windows-amd64.msi Windows 10 or greater required.

漏洞指呗-VluFocus靶场专栏-番外篇

漏洞指呗-VluFocus靶场专栏-番外篇奇技淫巧 🌸struts2漏洞扫描工具🌸step1 修改ip和端口step2 验证漏洞是否存在step3 执行cmd命令,获取flag 🌸Goby插件工具headshot🌸step1 输入ip和端口 检测step2 cmd 输入指令 &…

LeetCode 833. Find And Replace in String【字符串,哈希表,模拟】1460

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

stm32单片机开关控制LED灯(中断方式)(proteus电路图)

注意了:一般人都是用按键button实现这个功能,但是我就是喜欢用Switch,然后我就用了Switch,喜欢的朋友欢迎看一看 不同地方在于:这里是interrupt 函数 void EXTI0_IRQHandler(void) {/* USER CODE BEGIN EXTI0_IRQn 0…

【Apollo学习笔记】——规划模块TASK之LANE_CHANGE_DECIDER

文章目录 前言LANE_CHANGE_DECIDER功能简介LANE_CHANGE_DECIDER相关配置LANE_CHANGE_DECIDER总体流程LANE_CHANGE_DECIDER相关子函数PrioritizeChangeLaneUpdateStatusIsClearToChangeLaneHysteresisFilter 参考 前言 在Apollo星火计划学习笔记——Apollo路径规划算法原理与实…

线性代数的学习和整理8: 方阵和行列式相关(草稿-----未完成)

1.4.1 方阵 矩阵里,行数列数的矩阵叫做方阵方阵有很多很好的特殊属性 1.4.2 行列式 行列式是方阵的一种特殊运算如果矩阵行数列数相等,那么这个矩阵是方阵。行列数的计算方式和矩阵的不同只有方阵才有行列式行列式其实是,矩阵变化的一个面…

SLAM-VIO视觉惯性里程计

SLAM 文章目录 SLAM前言IMU与视觉比较单目视觉缺陷:融合IMU优势:相机-IMU标定松耦合紧耦合基于滤波的融合方案:基于优化的融合方案: 前言 VIO(visual-inertial odometry)即视觉惯性里程计,有时…

第十三章MyBatis高级映射

多对一映射 创建数据表 student是主表class_id关联class表的id class表 student表 创建pojo Class类 Data AllArgsConstructor NoArgsConstructor public class Class {private Long id;private String name;private List<Student> students; }Student类 Data A…

【算法系列篇】滑动窗口

文章目录 前言什么是滑动窗口1.长度最小的子数组1.1 题目要求1.2 做题思路 1.3 Java代码实现2.无重复字符的最长子串2.1 题目要求2.2 做题思路2.3 Java代码实现 3.最大连续1的个数 III3.1 题目要求3.2 做题思路3.3 Java代码实现 4.将x减到0的最小操作数4.1 题目要求4.2 做题思路…

ubuntu上使用osg3.2+osgearth2.9

一、介绍 在ubuntu上使用osgearth加载三维数字地球&#xff0c;首先要有osg和osgearth的库&#xff0c;这些可以直接使用apt-get下载安装&#xff0c;但是版本有些老&#xff0c;如果需要新版本的就需要自己编译。 #查看现有版本 sudo apt-cache madison openscenegraph #安装…

windows上ffmpeg如何录制双屏幕中的一个屏幕上的视频

首先&#xff0c;如何在window上安装ffmpeg自己查找scoop安装ffmpeg. 如题&#xff1a; 如果你有两个屏幕&#xff0c;如何让ffmpeg来录制其中的一个屏幕的视频呢。 很简单&#xff0c;首先你要查看另外一个屏幕的分辨率&#xff1a; 第一步&#xff1a;进入系统中 第二步&am…

VsCode报错:No such file or directory:‘文件名‘

1.问题&#xff1a; 昨天用VsCode直接打开py文件&#xff0c;运行后显示No such file or directory:‘directory’。但directory文件和该py文件在同一目录 2.原因&#xff1a; 直接打开py文件&#xff0c;Vscode看不到同一目录下的其他文件 3.解决方法&#xff1a; 打开文件夹…

漏洞指北-VulFocus靶场专栏-中级03

漏洞指北-VulFocus靶场专栏-初级03 中级009 &#x1f338;gxlcms-cve_2018_14685&#x1f338;step1&#xff1a;安装系统 密码rootstep2 进入后台页面 账号密码&#xff1a;admin amdin888step3 查看详细 有phpinfo() 中级010 &#x1f338;dedecms-cnvd_2018_01221&#x1f3…

EventBus3.0源码详解

详解之前要说明一下&#xff0c;LivedataBus 比EventBus更适合目前jetpack化的app&#xff0c;因为考虑到组件的生命周期处理&#xff0c;性能方面&#xff0c;EventBus还是要反射invoke的调用的&#xff0c;网上找不到有实测过的博文&#xff0c;我想来个性能对比实测&#xf…

【旅游度假】Axure酒店在线预订APP原型图 旅游度假子模块原型模板

作品概况 页面数量&#xff1a;共 10 页 兼容软件&#xff1a;Axure RP 9/10&#xff0c;不支持低版本 应用领域&#xff1a;旅游度假&#xff0c;生活服务 作品申明&#xff1a;页面内容仅用于功能演示&#xff0c;无实际功能 作品特色 本作品为「酒店在线预订」的移动端…