神经网络:深度学习优化方法

1.有哪些方法能提升CNN模型的泛化能力

  1. 采集更多数据:数据决定算法的上限。

  2. 优化数据分布:数据类别均衡。

  3. 选用合适的目标函数。

  4. 设计合适的网络结构。

  5. 数据增强。

  6. 权值正则化。

  7. 使用合适的优化器等。

2.BN层面试高频问题大汇总

BN层解决了什么问题?

统计机器学习中的一个经典假设是“源空间(source domain)和目标空间(target domain)的数据分布(distribution)是一致的”。如果不一致,那么就出现了新的机器学习问题,如transfer learning/domain adaptation等。而covariate shift就是分布不一致假设之下的一个分支问题,它是指源空间和目标空间的条件概率是一致的,但是其边缘概率不同。对于神经网络的各层输出,由于它们经过了层内卷积操作,其分布显然与各层对应的输入信号分布不同,而且差异会随着网络深度增大而增大,但是它们所能代表的label仍然是不变的,这便符合了covariate shift的定义。

因为神经网络在做非线性变换前的激活输入值随着网络深度加深,其分布逐渐发生偏移或者变动(即上述的covariate shift)。之所以训练收敛慢,一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近(比如sigmoid),所以这导致反向传播时低层神经网络的梯度消失,这是训练深层神经网络收敛越来越慢的本质原因。而BN就是通过一定的正则化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正态分布,避免因为激活函数导致的梯度弥散问题。所以与其说BN的作用是缓解covariate shift,也可以说BN可缓解梯度弥散问题。

BN的公式

其中scale和shift是两个可学的参数,因为减去均值除方差未必是最好的分布。比如数据本身就很不对称,或者激活函数未必是对方差为1的数据有最好的效果。所以要加入缩放及平移变量来完善数据分布以达到比较好的效果。

BN层训练和测试的不同

在训练阶段,BN层是对每个batch的训练数据进行标准化,即用每一批数据的均值和方差。(每一批数据的方差和标准差不同)

而在测试阶段,我们一般只输入一个测试样本,并没有batch的概念。因此这个时候用的均值和方差是整个数据集训练后的均值和方差,可以通过滑动平均法求得:

上面式子简单理解就是:对于均值来说直接计算所有batch u u u 值的平均值;然后对于标准偏差采用每个batch σ B σ_B σB 的无偏估计。

在测试时,BN使用的公式是:

BN训练时为什么不用整个训练集的均值和方差?

因为用整个训练集的均值和方差容易过拟合,对于BN,其实就是对每一batch数据标准化到一个相同的分布,而不同batch数据的均值和方差会有一定的差别,而不是固定的值,这个差别能够增加模型的鲁棒性,也会在一定程度上减少过拟合。

BN层用在哪里?

在CNN中,BN层应该用在非线性激活函数前面。由于神经网络隐藏层的输入是上一层非线性激活函数的输出,在训练初期其分布还在剧烈改变,此时约束其一阶矩和二阶矩无法很好地缓解 Covariate Shift;而BN的分布更接近正态分布,限制其一阶矩和二阶矩能使输入到激活函数的值分布更加稳定。

BN层的参数量

我们知道 γ γ γ β β β 是需要学习的参数,而BN的本质就是利用优化学习改变方差和均值的大小。在CNN中,因为网络的特征是对应到一整张特征图上的,所以做BN的时候也是以特征图为单位而不是按照各个维度。比如在某一层,特征图数量为 c c c ,那么做BN的参数量为 c ∗ 2 c * 2 c2

BN的优缺点

优点:

  1. 可以选择较大的初始学习率。因为这个算法收敛很快。

  2. 可以不用dropout,L2正则化。

  3. 不需要使用局部响应归一化。

  4. 可以把数据集彻底打乱。

  5. 模型更加健壮。

缺点:

  1. Batch Normalization非常依赖Batch的大小,当Batch值很小时,计算的均值和方差不稳定。

  2. 所以BN不适用于以下几个场景:小Batch,RNN等。

3.Instance Normalization的作用

Instance Normalization(IN)和Batch Normalization(BN)一样,也是Normalization的一种方法,只是IN是作用于单张图片,而BN作用于一个Batch

BN对Batch中的每一张图片的同一个通道一起进行Normalization操作,而IN是指单张图片的单个通道单独进行Normalization操作。如下图所示,其中C代表通道数,N代表图片数量(Batch)。

IN适用于生成模型中,比如图片风格迁移。因为图片生成的结果主要依赖于某个图像实例,所以对整个Batch进行Normalization操作并不适合图像风格化的任务,在风格迁移中使用IN不仅可以加速模型收敛,并且可以保持每个图像实例之间的独立性。

下面是IN的公式:

其中t代表图片的index,i代表的是feature map的index。

4.有哪些提高GAN训练稳定性的Tricks

1.输入Normalize

  1. 将输入图片Normalize到 [ − 1 , 1 ] [-1,1] [11] 之间。
  2. 生成器最后一层的输出使用Tanh激活函数。

Normalize非常重要,没有处理过的图片是没办法收敛的。图片Normalize一种简单的方法是(images-127.5)/127.5,然后送到判别器去训练。同理生成的图片也要经过判别器,即生成器的输出也是-1到1之间,所以使用Tanh激活函数更加合适。

2.替换原始的GAN损失函数和标签反转

  1. 原始GAN损失函数会出现训练早期梯度消失和Mode collapse(模型崩溃)问题。可以使用Earth Mover distance(推土机距离)来优化。

  2. 实际工程中用反转标签来训练生成器更加方便,即把生成的图片当成real的标签来训练,把真实的图片当成fake来训练。

3.使用具有球形结构的随机噪声 $Z$ 作为输入

  1. 不要使用均匀分布进行采样

  1. 使用高斯分布进行采样

4.使用BatchNorm

  1. 一个mini-batch中必须只有real数据或者fake数据,不要把他们混在一起训练。
  2. 如果能用BatchNorm就用BatchNorm,如果不能用则用instance normalization。

5.避免使用ReLU,MaxPool等操作引入稀疏梯度

  1. GAN的稳定性会因为引入稀疏梯度受到很大影响。
  2. 最好使用类LeakyReLU的激活函数。(D和G中都使用)
  3. 对于下采样,最好使用:Average Pooling或者卷积+stride。
  4. 对于上采样,最好使用:PixelShuffle或者转置卷积+stride。

最好去掉整个Pooling逻辑,因为使用Pooling会损失信息,这对于GAN训练没有益处。

6.使用Soft和Noisy的标签

  1. Soft Label,即使用 [ 0.7 − 1.2 ] [0.7-1.2] [0.71.2] [ 0 − 0.3 ] [0-0.3] [00.3] 两个区间的随机值来代替正样本和负样本的Hard Label。
  2. 可以在训练时对标签加一些噪声,比如随机翻转部分样本的标签。

7.使用Adam优化器

  1. Adam优化器对于GAN来说非常有用。
  2. 在生成器中使用Adam,在判别器中使用SGD。

8.追踪训练失败的信号

  1. 判别器的损失=0说明模型训练失败。
  2. 如果生成器的损失稳步下降,说明判别器没有起作用。

9.在输入端适当添加噪声

  1. 在判别器的输入中加入一些人工噪声。
  2. 在生成器的每层中都加入高斯噪声。

10.生成器和判别器差异化训练

  1. 多训练判别器,尤其是加了噪声的时候。

11.Two Timescale Update Rule (TTUR)

对判别器和生成器使用不同的学习速度。使用较低的学习率更新生成器,判别器使用较高的学习率进行更新。

12.Gradient Penalty (梯度惩罚)

使用梯度惩罚机制可以极大增强 GAN 的稳定性,尽可能减少mode collapse问题的产生。

13.Spectral Normalization(谱归一化)

Spectral normalization可以用在判别器的weight normalization技术,可以确保判别器是K-Lipschitz连续的。

14.使用多个GAN结构

可以使用多个GAN/多生成器/多判别器结构来让GAN训练更稳定,提升整体效果,解决更难的问题。

5.深度学习炼丹可以调节的一些超参数

  1. 预处理(数据尺寸,数据Normalization)
  2. Batch-Size
  3. 学习率
  4. 优化器
  5. 损失函数
  6. 激活函数
  7. Epoch
  8. 权重初始化
  9. NAS网络架构搜索

6.Spectral Normalization的相关知识

Spectral Normalization是一种wegiht Normalization技术,和weight-clipping以及gradient penalty一样,也是让模型满足1-Lipschitz条件的方式之一。

Lipschitz(利普希茨)条件限制了函数变化的剧烈程度,即函数的梯度,来确保统计的有界性。因此函数更加平滑,在神经网络的优化过程中,参数变化也会更稳定,不容易出现梯度爆炸

Lipschitz条件的约束如下所示:

截屏2023-11-13 20 35 07

其中 K K K 代表一个常数,即利普希茨常数。若 K = 1 K=1 K=1 ,则是1-Lipschitz。

在GAN领域,Spectral Normalization有很多应用。在WGAN中,只有满足1-Lipschitz约束时,W距离才能转换成较好求解的对偶问题,使得WGAN更加从容的训练。

如果想让矩阵A映射: R n → R m R^{n}\to R^{m} RnRm 满足K-Lipschitz连续,K的最小值为 λ 1 \sqrt{\lambda_{1}} λ1 ( λ 1 \lambda_{1} λ1 A T A A_TA ATA 的最大特征值),那么要想让矩阵A满足1-Lipschitz连续,只需要在A的所有元素上同时除以 λ 1 \sqrt{\lambda_{1}} λ1 (Spectral norm)。

Spectral Normalization实际上在做的事,是将每层的参数矩阵除以自身的最大奇异值,本质上是一个逐层SVD的过程,但是真的去做SVD就太耗时了,所以采用幂迭代的方法求解。过程如下图所示:

幂迭代法流程

得到谱范数 σ l ( W ) \sigma_l(W) σl(W) 后,每个参数矩阵上的参数皆除以它,以达到Normalization的目的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智能优化算法应用:基于食肉植物算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于食肉植物算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于食肉植物算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.食肉植物算法4.实验参数设定5.算法结果6.…

Java之Synchronized与锁升级

Synchronized与锁升级 一、概述 在多线程并发编程中 synchronized 一直是元老级角色,很多人都会称呼它为重量级锁。但是,随着 Java SE 1.6 对 synchronized 进行了各种优化之后,有些情况下它就并不那么重了。 本文详细介绍 Java SE 1.6 中为…

DALL-E 2: Hierarchical Text-Conditional Image Generation with CLIP Latents

DALL-E 2 论文代码李沐讲DALLE 2方法 上图中,虚线的上半部分是CLIP的训练过程,虚线的下半部分描述的DALL-E 2的训练过程。CLIP训练 在训练时,将文本以及对应的图像分别输入到CLIP的文本编码器和图像编码器,然后得到输出的文本特征和图像特征,这两个特征就是一个正样本,该…

卷积神经网络基础与补充

参考自 up主的b站链接:霹雳吧啦Wz的个人空间-霹雳吧啦Wz个人主页-哔哩哔哩视频这位大佬的博客 https://blog.csdn.net/m0_37867091?typeblog CNN的历史发展: 这一点老师上课的时候也有讲到,BP的出现对CNN的发展至关重要 卷积的特性&#x…

MySQL中MVCC的流程

参考文章一 参考文章二 当谈到数据库的并发控制时,多版本并发控制(MVCC)是一个重要的概念。MVCC 是一种用于实现数据库事务隔离性的技术,常见于像 PostgreSQL 和 Oracle 这样的数据库系统中。 MVCC 的核心思想是为每个数据行维护…

(2021|CoRR,AugCLIP,优化)FuseDream:通过改进的 CLIP+GAN 空间优化实现免训练文本到图像生成

FuseDream: Training-Free Text-to-Image Generation with Improved CLIPGAN Space Optimization 公众:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料) 目录 0. 摘要 1. 简介 2. CLIPGAN 文本到图…

ARM 汇编语言知识积累

博文参考: arm中SP,LR,PC寄存器以及其它所有寄存器以及处理器运行模式介绍 arm平台根据栈进行backtrace的方法-腾讯云开发者社区-腾讯云 (tencent.com) 特殊功能寄存器: SP: 即 R13,栈指针,…

DataProcess-VOC数据图像和标签一起进行Resize

VOC数据图像和标签一起进行Resize 参加检测比赛的时候,很多时候工业原始数据尺度都比较大,如果对数据不提前进行处理,会导致数据在加载进内存时花费大量的时间,所以在执行训练程序之前需要将图像提前进行预处理。对于目标检测的数…

基于SpringBoot + Vue的图书管理系统

功能概述 该图书管理系统提供了一系列功能,包括图书管理、图书类型管理、读者借阅归还图书、用户管理和重置密码等。 在图书管理功能中,管理员可以方便地进行图书信息的管理。他们可以添加新的图书记录,包括书名、作者、出版社、ISBN等信息&a…

DC-9靶机

目录 DC-9靶场链接: 首先进行主机发现: sqlmap注入: 文件包含: 端口敲门规则: hydra爆破: root提权: 方法一/etc/passwd: ​编辑 方法二定时任务crontab: DC-9靶…

Zookeeper入门

ZooKeeper 是一个开源的分布式协调架,主要用来解决分布式集群中应用系统的一致性问题 本质 分布式的文件存储系统(Zookeeper文件系统监听机制),是一个基于观察者模式设计的分布式服务管理框架 zookeeper的数据结构 Zookeeper的层次模型称作Data Tree,…

Kubectl 部署有状态应用(下)

接上文 《Kubectl 部署有状态应用(上)》创建完StatefulSet后,本文继续介绍StatefulSet 扩展、更新、删除等内容。 StatefulSet 中的 Pod 验证序数索引和稳定的网络身份 StatefulSet 中的 Pod 具有唯一的序数索引和稳定的网络身份。 查看 …

外贸多语言电商系统的运作流程

外贸多语言电商系统的运作流程通常包括以下几个步骤: 1. 网站搭建和设计:首先需要搭建一个多语言电商网站,可以选择现有的电商平台或自行开发。网站设计应考虑不同语言和文化背景的用户需求,包括界面布局、导航结构、语言切换等。…

TLS 1.2详解

TSL由多个协议组成的两层协议集合,工作与应用层和传输层之间。 TLS协议包含两层协议:记录层协议(TLS Record Protocol协议)和 握手协议(TLS Handshake Protocol协议),底层采用可靠传输协议&…

SpringMVC之跨域请求

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 SpringMVC之跨域请求 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、什么是同源策略…

Report Design

ERP_ENT_STD-CSDN博客

接口测试的持续集成的工具(git代码管理工具,jenkins持续集成)

持续集成的概念:大白话就是持续的做一件事情,使其使用起来更加流畅;结合测试来讲就是说用工具管理好代码的同时,使代码运行的更加自动以及智能;提升测试效率。 ⽹址:https://git-scm.com/downloads 长这个…

CnosDB如何确保多步操作的最终一致性?

背景 在时序数据库中,资源的操作是一个复杂且关键的任务。这些操作通常涉及到多个步骤,每个步骤都可能会失败,导致资源处于不一致的状态。例如,一个用户可能想要在CnosDB集群中删除一个租户,这个操作可能需要删除租户…

网络传输介质简介

通信网络除了包含通信设备本身之外,还包含连接这些设备的传输介质,如同轴电缆、双绞线和光纤等。不同的传输介质具有不同的特性,这些特性直接影响到通信的诸多方面,如线路编码方式、传输速度和传输距离等。 简单网络 两个终端&am…

直排轮滑教程6

直道滑行摆臂练习 1,下面来学练摆臂技术动作。直道滑行摆臂练习。 2,主要有两点作用,第一点,增加蹬地力量。第二点,协助身体平衡。 3,要想摆好臂,首先肩关节放松,摆的就自然了。肘…