深度学习500问——Chapter14:超参数调整(3)

文章目录

14.5 如何改善GAN的性能

14.6 AutoML

14.6.1 什么是AutoML

14.6.2 自动化超参数搜索方法有哪些

14.6.3 什么是神经网络架构搜索(NAS)

14.6.4 NASNet的设计策略

14.6.5 网络设计中,为什么卷积核设计尺寸都是奇数

14.6.6 网络设计中,权重共享等形式有哪些,为什么要权重共享


14.5 如何改善GAN的性能

优化GAN性能通常需要再如下几个方面进行:

  • 设计或选择更适合目的代价函数。
  • 添加额外的惩罚。
  • 避免判别器过度自信和生成器过度拟合。
  • 更好的优化模型的方法。
  • 添加标签明确优化目标。

GAN常用训练技巧:

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

14.6 AutoML

14.6.1 什么是AutoML

目前一个优秀的机器学习和深度学习模型,离不开这几个方面:

  • 一、优秀的数据预处理;
  • 二、合适的模型结构和功能;
  • 三、优秀的训练策略和超参数;
  • 四、合适的后处理操作;
  • 五、严格的结果分析。

这几方面都对最终的结果有着举足轻重的影响,这也是目前的数据工程师和学者们的主要工作。但由于这每一方面都十分繁琐,尤其是在构建模型和训练模型上,而大部分情况下,这些工作有无须过深专业知识就能使用起来。所以AutoML主要的作用就是来帮助实现高效的模型构建和超参数调整。

例如深度学习网络的架构搜索、超参数的重要性分析等等。当然AutoML并不简单的进行暴力或者随机的搜索,其仍然 需要机器学习方面的知识,例如贝叶斯优化、强化学习、元学习以及迁移学习等等。

目前也有不错的AutoML工具包,例如Alex Honchar的Hyperopt、微软的NNI、Autokeras等。

目前AutoML已经成为最新的研究热点,有兴趣的可以参考:AutoML | Literature on Neural Architecture Search

14.6.2 自动化超参数搜索方法有哪些

目前自动化搜索主要包含网格搜索、随机搜索、基于模型的超参优化。

网格搜索:

通常当超参数量较少的时候,可以使用网格搜索法,即列出每个超参数的大致候选集合。利于这些集合进行逐项组合优化。在条件允许的情况下,重复进行网格搜索会当优秀,当然每次重复需要根据上一步得到的最优参数组合,进行进一步的细粒度的调整。网格搜索最大的问题就在于计算时间会随着超参数的数量指数级的增长。

随机搜索:

随机搜索,是一种用来替代网格搜索的搜索方式。随机搜索有别于网格搜索的一点在于,我们不需要设定一个离散的超参数集合,而是对每个超参数定义一个分布函数来生成随机超参数。

随机搜索相比于网格搜索在一些不敏感超参上拥有明显优势。例如网格搜索对于批样本数量(batch size),在 [16,32,64]这些范围内进行逐项调试,这样的调试显然收益更低下。当然随机搜索也可以进行细粒度范围内的重复的搜索优化。

基于模型的超参优化:

有别于上述两种的搜索策略,基于模型的超参调优问题转化为了优化问题。直觉上会考虑是否进行一个可导建模,然后利用梯度下降进行优化。但不幸的是我们的超参数通常情况下是离散的,而且其计算代价依旧很高。

基于模型的搜索算法,最常见的就是贝叶斯超参优化。有别于网格搜索和随机搜索独立于前几次搜索结果的搜索,贝叶斯则是利用历史的搜索结果进行优化搜索。

其主要有四部分组成:

  1. 目标函数,大部分情况下就是模型验证集上的损失。
  2. 搜索空间,即各类待搜索的超参数。
  3. 优化策略,建立的概率模型和选择超参数的方式。
  4. 历史的搜索结果。

首先对搜索空间进行一个先验性的假设猜想,即假设一种选择超参的方式,然后不断的优化更新概率模型,最终的目标是找到验证集上误差最小的一组超参数。

14.6.3 什么是神经网络架构搜索(NAS)

2015至2017年间,是CNN网络设计最兴盛的阶段,大多都是由学者人工设计的网络结构。这个过程会非常繁琐。其主要原因在于对不同模块组件的组成通常是个黑盒优化的问题,此外,在不同结构超参数以及训练超参数的选择优化上非凸优化问题,或者是个混合优化问题,既有离散空间又有连续空间。

NAS(Neural Architecture Search)的出现就是为了解决如何通过机器策略和自动化的方式设计出优秀高效的网络。而这种策略通常不是统一的标准,不同的网络结合实际的需求通常会有不同的设计,比如移动端的模型会在效率和精度之间做平衡。

目前,NAS也是AutoML中最重要的部分。NAS通常会分为三个方面,搜索空间(在哪搜索),搜索策略(如何搜索)及评价预估。

  • 搜索空间,即在哪搜索,定义了优化问题所需变量。不同规模的搜索空间的变量其对于的难度也是不一样的。早期由于网络结构以及层数相对比较简单,参数量较少,因此会更多的使用遗传算法等进化算法对网络的超参数和权重进行优化。深度学习发展到目前,模型网络结构越来越复杂,参数量级越来越庞大,这些进化算法已经无法继续使用。但若我们先验给定一些网络结构和超参数,模型的性能已经被限制在给定的空间,此时搜索的空间已变得有限,所以只需对复杂模型的架构参数和对应的超参数进行优化即可。
  • 搜索策略,即如何搜索,定义了如何快速、准确找到最优的网络结构参数配置的策略。常见的搜索方法包括:随机搜索、贝叶斯优化、强化学习、进化算法以及基于模型的搜索算法。其中主要代表为2017年谷歌大脑的使用强化学习的搜索方法。
  • 评价预估,定义了如何高效对搜索的评估策略。深度学习中,数据规模往往是庞大的,模型要在如此庞大的数据规模上进行搜索,这无疑是非常耗时的,对优化也会造成非常大的困难,所以需要一些高效的策略做近似的评估。这里一般会有如下三种思路:

                一、使用些低保真的训练集来训练模型。低保真在实际中可以用不同的理解,比如较少的迭代次数,用一小部分数据集或者保证结构的同时减少通道数等。这些方法都可以在测试优化结构时大大降低计算时间,当然也会存在一定的偏差。但架构搜索从来并不是要一组固定的参数,而是一种优秀的模型结构。最终选取时,只需在较优秀的几组结构中进行全集训练,进行择优选取即可。

                二、使用代理模型。除了低保真的训练方式外,学者们提出了一种叫做代理模型的回归模型,采用例如插值等策略对已知的一些参数范围进行预测,目的是为了用可能少的点预测到最佳的结果。

                三、参数级别的迁移。例如知识蒸馏。用已训练好的模型权重参数对目标问题搜索,通常会让搜索拥有一个优秀的起点,由于积累了大量的历史寻优数据,对新问题的寻优将会起到很大的帮助。

14.6.4 NASNet的设计策略

NASNet是最早由google brain通过网络架构搜索策略搜索并成功训练ImageNet的网络,其性能超越所有手动设计的网络模型。关于NASNet的搜索策略,首先需要参考google brain发表在ICLR 2017的论文《Neural Architecture Search with Reinforcement Learning》。该论文是最早成功通过架构搜索策略在cifar-10数据集上取得比较不错效果的工作。NASNet很大程度上是沿用该搜索框架的设计思想。

NASNet的核心思想是利用强化学习对搜索空间内的结构进行反馈探索。架构探索图如下,定义了一个以RNN为核心的搜索控制器。在搜索空间以概率p对模型进行搜索采样。得到网络模型A后,对该模型进行训练,待模型收敛得到设定的准确率R后,将梯度传递给控制器RNN进行梯度更新。

架构搜索策略流程

RNN控制器会对卷积层的滤波器的尺寸、数量以及滑动间隔进行预测。每次预测的结果都会作为下一级的输入,当层数达到设定的阈值时,会停止预测。而这个阈值也会随着训练的进行而增加。

这里的控制器只预测了卷积,并没有对例如 inception 系列对分支结构或者ResNet的跳级结构等进行搜索。所以,控制器需要进一步扩展到预测这些跳级结构上,这样搜索空间相应的也会增大。

为了预测这些结构,RNN控制器内每一层都增加了一个预测跳级结构的神经元,文中称为锚点,稍有不同的是该锚点的预测会由前面所有层的锚点状态决定。

RNN控制器

NASNet大体沿用了上述生成网络结构的机器,并在此基础上做了如下两点改进:

1、先验行地加入inception系列和ResNet的堆叠模块的思想。其定义了两种卷积模块,Normal Cell和Reduction Cell,前者不进行降采样,而后者是个降采样的模块。而由这两种模块组成的结构可以很方便的通过不同数量的模块堆叠将其从小数据集搜索到的架构迁移到大数据集上,大大提高了搜索效率。

​ NASNet的RNN控制器

2、对RNN控制进行优化,先验性地将各种尺寸和类型的卷积和池化层加入到搜索空间内,用预测一个卷积模块代替原先预测一层卷积。如图,控制器RNN不在预测单个卷积内的超参数组成,而是对一个模块内的每一个部分进行搜索预测,搜索的空间则限定在如下这些操作中:

​ • identity • 1x3 then 3x1 convolution​ • 1x7 then 7x1 convolution • 3x3 dilated convolution​ • 3x3 average pooling • 3x3 max pooling​ • 5x5 max pooling • 7x7 max pooling​ • 1x1 convolution • 3x3 convolution​ • 3x3 depthwise-separable conv • 5x5 depthwise-seperable conv​ • 7x7 depthwise-separable conv

在模块内的连接方式上也提供了element-wise addition和concatenate两种方式。NASNet的搜索方式和过程对NAS的一些后续工作都具有非常好的参考借鉴意义。

14.6.5 网络设计中,为什么卷积核设计尺寸都是奇数

我们发现在很大部分网络设计时都会使用例如 3x3/5x5/7x7 等奇数尺寸卷积核,主要原因有两点:

  • 保证像素点中心位置,避免位置信息偏移。
  • 填充边缘时能保证两边都能填充,原矩阵依然对称。

14.6.6 网络设计中,权重共享等形式有哪些,为什么要权重共享

权重共享的形式:

  • 深度学习中,权重共享最具代表性的就是卷积网络的卷积操作。卷积相比于全连接神经网络参数大大减少。
  • 多任务网络中,通常为了降低每个任务多计算量,会共享一个骨干网络。
  • 一些相同尺度下的结构化递归网络。

权重共享的好处:

权重共享一定程度上能增强参数之间的联系,获得更好的共性特征。同时很大程度哈桑降低了网络的参数,节省计算量喝计算所需内存(当然,结构化递归并不节省计算量)。此外权重共享能起到很好正则的作用。正则化的目的是为了降低模型复杂度,防止过拟合,而权重共享则正好降低了模型的参数喝复杂度。

因此一个设计优秀的权重共享方式,在降低计算量的同时,通常会较独享网络有更好的效果。

权重共享不仅在人工设计(human- invented)的网络结构中有简化参数,降低模型复杂度的作用,在神经网络搜索(NAS)的网络结构中可以使得child model的计算效率提升,使得搜索过程可以在单卡GPU上复现,见Efficient NAS(ENAS)。

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

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

相关文章

一文详解GB28181、RTSP、RTMP

GB28181 GB28181 即 GB/T28181—2016《公共安全视频监控联网系统信息传输、交换、控制技术要求》。它是公安部提出的公共安全行业标准,在视频监控领域具有重要地位。 主要目的和应用场景: 目的:解决不同厂家的视频监控设备执行各自标准&…

相交链表 -------------应用

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后&…

【机器学习(十)】时间序列预测月销量案例分析—Holt-Winters算法—Sentosa_DSML社区版

文章目录 一、Holt-Winters算法原理(一) 加法模型(二) 乘法模型(三) 阻尼趋势 二、Holt Winters算法优缺点优点缺点 三、Python代码和Sentosa_DSML社区版算法实现对比(一) 数据读入和统计分析(二) 数据预处理(三) 模型训练和模型评估(四) 模型可视化 四、总结 一、Holt-Winters…

论文研读——《Task-Adaptive Negative Envision for Few-Shot Open-Set Recognition》

这是一篇关于少样本开集识别的论文。 目录 论文简介: 名词补充 论文的贡献 负原型生成器 确定动态阈值 共轭训练 补充:元训练过程 共轭训练过程 共轭训练损失 实验设置 总结 论文简介: Task-Adaptive Negative Envision for Few-…

怎么把照片转换成jpg格式?这5种转换方法简单高效

照片是我们记录生活、分享美好的重要方式。然而,不同设备和软件生成的照片格式各异,有时为了兼容性或文件大小的需求,我们需要将照片转换成JPG格式。很多小伙伴不知道怎么转换,下面来给大家分享5种简单高效的转换方法,…

tokenizer简述

知乎:难赋链接:https://zhuanlan.zhihu.com/p/721054525 简述 为了方便计算机处理文本,我们常把文本转化为数值的形式。具体操作是把文本分割成有意义的片段,再把这些片段映射为数组,就能够利用各种深度学习的技术来处…

FastStone Capture屏幕长截图软件注册码

FastStone Capture是一款功能强大的电脑屏幕截图、录像软件,并支持图像编辑、注释及分享等使用功能。FastStone Capture可以免费用30天试用,终身版88元单台电脑终身使用,终身更新。不过网上分享的FastStone Capture注册码似乎也可以正常激活&…

Java开发:文件上传和下载

一、文件上传 使用MultipartFile 类型接收参数; 调用上传有两种方式: 方式一:使用curl命令 curl -F "file/data/filename.txt" http://localhost:8080/upload --verbose方式二:使用html,写一个form表单&…

Mysql基本理解

系列文章目录 Mysql的基础理论知识 目录 系列文章目录 文章目录 一、数据库概述 1.数据库概念 2.数据库的作用 3.什么是关系型数据库? 4.Mysql的优点 5.数据库术语 6.SQL语言分类 二、Mysql安装 三、 Mysql使用 1.登录数据库、退出登录 2.创建、列出数据库 3.选择…

Node.JS有什么用?给谁用?怎么学?通俗易懂,超级详细!

现在,nodejs主要是前端的小伙伴来用的。前端小伙伴也不用说去怎么学node,而是把node当做是一个环境。我们利用这个环境去搭建上层的一些应用,去使用一些工具。就像学习Windows一样,我们没有必要深入了解Windows的每一个细节&#…

【hot100-java】【环形链表 II】

印象题 /*** Definition for singly-linked list.* class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*/ public class Solution {public ListNode detectCycle(ListNode head) {ListNode fasthea…

建筑工程系列专业职称评审条件大全

我们都知道,职称是分很多系列,今天甘建二主要是从建筑工程系列讲起来,从技术员到初级职称再到中级职称然后到高级职称,各个等级的评审条件给您一一解析,赶紧收藏起来。 ✨技术员1️⃣理工类或建筑工程相关专业大学专科…

视频生成技术分享

文本到视频(T2V)生成是一种技术,它通过将文本描述转换为视频内容,允许用户根据自然语言生成动态视觉媒体。近年来,扩散模型在这一领域取得了显著进展,但现有模型在处理多个对象和复杂场景时,面临…

android 跑了一个网易云信v1.0的app, 编译的过程中报错Entry name ‘assets/sm2/r.jks‘ collided的处理

1、一开始并没有报这个错误,然后直接就不知道注了什么信息以后,就报错,是因为下面的warning: 2、然后编译的时候就直接报下面的错误: 3、然后我们再之前的注解放开: 这样一切就正常了。 4、那么这个究竟是…

【动态规划】(五)动态规划——子序列问题

动态规划——子序列问题 子序列问题☆ 最长递增子序列(离散)最长连续递增序列(连续)最大子序和(连续)最长重复子数组(连续)☆ 最长公共子序列(离散-编辑距离过渡&#xf…

【动态规划】(四)动态规划——打家劫舍与买卖股票

打家劫舍与买卖股票 打家劫舍问题打家劫舍打家劫舍II打家劫舍III 买卖股票问题买卖股票的最佳时机买卖股票的最佳时机II买卖股票的最佳时机III买卖股票的最佳时机IV最佳买卖股票时机含冷冻期买卖股票的最佳时机含手续费 股票问题总结 打家劫舍问题 给定一个数组,相…

day-59 两两交换链表中的节点

思路 只需将链表两两交换节点即可,如果是奇数个节点,最后一个节点则不用交换 解题过程 可以先自定义一个头结点thead,这样更便于思考交换,最后返回thead.next即可 Code /*** Definition for singly-linked list.* public class…

SAM+无监督学习!能发顶会的高端局组合!idea效果绝佳

学过SAM的朋友都知道,SAM需要对训练数据进行全面的手动标记,每张图像都要超过20分钟...效率有待提升。那么如何解决这个短板?我们考虑SAM无监督学习。 这是因为无监督学习具有无需人工标注数据的特点,通过将两者结合,…

【LeetCode】动态规划—删除并获得点数(附完整Python/C++代码)

动态规划—#740. 删除并获得点数 前言题目描述基本思路1. 问题定义:2. 理解问题和递推关系:3. 解决方法:4. 进一步优化:5. 小总结: 代码实现Python3代码实现Python 代码解释C代码实现C 代码解释 总结: 前言 给你一个整数数组 n u m s nums nums ,你可以对它进行一…

DownShift: Tuning Shift Reduction With Reliability for Racetrack Memories

目录 DownShift: Tuning Shift Reduction With Reliability for Racetrack Memories文章摘要:文章的主要贡献包括:文章的结构如下:DownShiftDownShift通过以下方式改进了现有的数据放置策略: GROGU(Generating Reliabi…