深度学习-part3(反向传播、GAN)

5. 反向传播

5.1 什么是反向传播?‍

通俗解释:类比几个人站成一排,第一个人看一幅画(输入数据),描述给第二个人(隐层)……依此类推,到最后一个人(输出)的时候,画出来的画肯定不能看了(误差较大)。

反向传播就是:把画拿给最后一个人看(求取误差),然后最后一个人就会告诉前面的人下次描述时需要注意哪里(权值修正)

一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。

目的是更新神经元参数,而神经元参数正是 z=wx+b 中的 (w,b).对参数的更新,利用损失值loss对参数的导数, 并沿着负梯度方向进行更新。

“正向传播”求损失,“反向传播”回传误差

5.2 反向传播是如何工作的?

1.输入层接收x

2.使用权重w对输入进行建模

3.每个隐藏层计算输出,数据在输出层准备就绪

4.实际输出和期望输出之间的差异称为误差

5.返回隐藏层并调整权重,以便在以后的运行中减少此错误

这个过程一直重复,直到我们得到所需的输出。训练阶段在监督下完成。一旦模型稳定下来,就可以用于生产。

5.3 为什么需要反向传播?

•反向传播快速、简单且易于实现

•没有要调整的参数

•不需要网络的先验知识

•模型不需要学习函数的特性

5.4 手推BP

推导:链式求导法则反复用

 

伪代码:

5.5 输入层到输出等变化

6.GAN

        生成式对抗网络,由一个生成器网络和一个判别器网络组成。判别器的训练目的是能够区分生成器的输出与来自训练集的真实图像,生成器的训练目的是欺骗判别器。值得注意的是,生成器从未直接见过训练集中的图像,它所知道的关于数据的信息都来自于判别器。

GAN 相关的技巧:

6.1 生成器

生成器:针对于D我们有标记为1和0的数据,因此我们可以对其进行训练。那么对于生成器,有x(也就是随机噪声z),那么y在哪里呢?对于生成器,我们的目的是使得其能够生成真实的图片,换句话说,我们是希望生成的图片能够骗过D。那么如何通过判别器来产生所谓的y??我们可以这样做:我们通过随机向量(噪声数据)经由生成网络产生一组假图片,我们将这些假图片都标记为 1(也就是说,人为的把假的图片当作真实的),然后将这些假图片输入到判别器中,判别器在对这些图片进行判别的时候,会发现这些图片是假的图片,然后给出低分,这样就产生了误差(因为标记的为1,但是判别器给了低分)。因此,在训练生成器的时候,这个网络是串接的。而在训练生成器的时候,一个很重要的操作就是保持判别器网络的参数不发生改变,只是把误差一直方向传播,传到生成网络那块后更新生成网络的参数,这样就完成了生成网络的训练了它将一个向量(来自潜在空间,训练过程中对其随机采样)转换为一张候选图像。GAN 常见的诸多问题之一,就是生成器“卡在”看似噪声的生成图像上。

在完成生成器的训练之后,我们又可以产生新的假的图片去对判别器进行训练。我们把这个过程称作为单独交替训练。同时要定义一个迭代次数,交替迭代到一定次数后停止即可。

一种可行的解决方案是在判别器和生成器中都使用 dropout。

6.2 判别器

        接下来开发 discriminator 模型,它接收一张候选图像(真实的或合成的)作为输入,并将其划分到这两个类别之一:“生成图像”或“来自训练集的真实图像”。

6.3 训练技巧

  • 输入规范化到(-1,1)之间,最后一层的激活函数使用tanh(BEGAN除外)
  • 使用wassertein GAN的损失函数
  • 如果有标签数据的话,尽量使用标签,也有人提出使用反转标签效果很好,另外使用标签平滑,单边标签平滑或者双边标签平滑
  • 使用mini-batch norm, 如果不用batch norm 可以使用instance norm 或者weight norm
  • 避免使用RELU和pooling层,减少稀疏梯度的可能性,可以使用leakrelu激活函数
  • 优化器尽量选择ADAM,学习率不要设置太大,初始1e-4可以参考,另外可以随着训练进行不断缩小学习率
  • 给D的网络层增加高斯噪声,相当于是一种正则

6.4 目标函数

6.5 算法流程

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

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

相关文章

【氮化镓】利用Ga2O3缓冲层改善SiC衬底AlN/GaN/AlGaN HEMT器件性能

Micro and Nanostructures 189 (2024) 207815文献于阅读总结。 本文是关于使用SiC衬底AlN/GaN/AlGaN高电子迁移率晶体管(HEMT)的研究,特别是探讨了不同缓冲层对器件性能的影响,以应用于高速射频(RF)应用。…

电商评论数据聚类实验报告

目录 实验目的整体思路数据介绍代码与实验步骤 4.1 爬虫代码 4.2 数据清洗 4.3 分词 4.4 去停用词 4.5 计算TF-IDF词频与聚类算法应用 4.6 生成词云图实验结果 5.1 词云图 5.2 聚类结果分析不足与反思参考资料 1. 实验目的 掌握无监督学习问题的一般解决思路和具体解决办法&…

22款Visual Studio Code实用插件推荐

前言 Visual Studio Code是一个轻量级但功能强大的源代码编辑器,轻量级指的是下载下来的Visual Studio Code其实就是一个简单的编辑器,强大指的是支持多种语言的环境插件拓展,也正是因为这种支持插件式安装环境开发让Visual Studio Code成为…

工控机的无限可能2--智慧城市

一、智能柜 随着网络技术的发展,网购因方便快捷、价格优惠、不受时空限制等优势已成为用户重要的消费方式。快递员因满柜,或柜型单一不能投递,只能将快件堆放在车上或公共过道处苦等,快递、资产管理也随之出现。 如下&#xff0…

如何将OpenCV Java 与Eclipse结合使用

返回目录:OpenCV系列文章目录 上一篇:OpenCV-Java 开发简介 下一篇: 正文: 警告:本教程可以包含过时的信息。 从 2.4.4 版本开始,OpenCV 支持 Java。在本教程中,我将解释如何设置开发环境&a…

杂记8---多线激光雷达与相机外参标定

背景:本人开源的标定程序,提供大家参考学习 基于棋盘格的多线激光雷达和鱼眼/针孔模型相机外参标定的程序 前言 标定数据,只需要一个棋盘格标定板。把标定板放置lidar 与camera 共视区域,拜拍几个pose进行采集。 基于简谐原则…

2023 PWNHUB 3月赛-【tt】

文章目录 setcbuf泄露栈地址转换scanf栈地址思路exp setcbuf 代码 setvbuf(stdin, 0LL, 2, 0LL); setvbuf(stdout, 0LL, 2, 0LL); setvbuf(stderr, 0LL, 2, 0LL); 是用来设置标准输入、标准输出和标准错误流的缓冲模式的。 setvbuf 函数的原型如下: int setvbuf(…

超越标签的探索:K-means与DBSCAN在数据分析中的新视角

最近在苦恼为我的数据决定分组问题,在查找资料时,恰好看到机器学习中的无监督学习的聚类分析,正好适用于我的问题,但是我之前学机器学习时。正好没有学习无监督部分,因为我认为绝大多数问题都是有标签的监督学习&#…

Linux课程四课---Linux第一个小程序(进度条)

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…

快速搭建一个一元二次方程flask应用

新建flask_service目录、templates子目录 flask_service —— app.py —— templates —— —— index.html app.py from flask import Flask, request, jsonify, render_template import random import matplotlib.pyplot as plt from io import BytesIO import base64app F…

【全开源】零点城市社交电商系统源码-最新版|博纳软云

零点城市社交电商系统源码——引领未来社交电商新潮流 在当今数字化时代,社交电商已经成为商业领域的一股新势力。零点城市社交电商系统源码,正是这一新潮流的引领者,以其独特的创新理念和强大的技术实力,助力企业快速搭建高效、…

每周编辑精选|微软开源 Orca-Math 高质量数学数据集、清华大学研究团队发布条件去噪扩散模型 SPDiff...

Orca-Math 是微软研究院发布的数学推理模型,该模型展示了较小的专业模型在特定领域的价值,它们可以匹配甚至超越更大模型的性能。微软近期开源了用于训练 Orca-Math 的 Orca-Math-200K 数学单词问题数据集,现已在 hyper.ai 官网提供下载&…