深度学习基础:

  1. 性能评估指标
  2. 超参数介绍
  3. 损失函数

在深度神经网络中,超参数的调整是一项必备技能,通过观察在训练过程中的监测指标如损失loss和准确率来判断当前模型处于什么样的训练状态,及时调整超参数以更科学地训练模型能够提高资源利用率。下面将分别介绍并总结了不同超参数的调整规则。**按照超参数的重要程度进行介绍**

(1)学习率

学习率(learning rate或作lr)是指在优化算法中更新网络权重的幅度大小。学习率可以是恒定的、逐渐降低的,基于动量的或者是自适应的。不同的优化算法决定不同的学习率。
⼀般来说,微调参数层(finetune_net)会使用 较小 的学习率(eg:0.001)或固定不变,而从头训练输出层(scratch_net)可以使用 较大 的学习率(eg:0.01)

  • 当学习率过大则可能导致模型不收敛,损失loss不断上下震荡;
  • 学习率过小则导致模型收敛速度偏慢,需要更长的时间训练。
  • 通常lr取值为[0.01,0.001,0.0001]

(2)批次大小batch_size

批次大小是每一次训练神经网络送入模型的样本数,在卷积神经网络中,大批次通常可使网络更快收敛,但由于内存资源的限制,批次过大可能会导致内存不够用或程序内核崩溃

  • bath_size通常取值为[16,32,64,128]

(3)优化器optimizer

目前Adam是快速收敛且常被使用的优化器。随机梯度下降(SGD)虽然收敛偏慢,但是加入动量Momentum可加快收敛,同时带动量的随机梯度下降算法有更好的最优解,即模型收敛后会有更高的准确性。通常若追求速度则用Adam更多。

(4)迭代次数(epoch)

迭代次数是指整个训练集输入到神经网络进行训练的次数,当测试错误率和训练错误率相差较小时,可认为当前迭代次数合适;当测试错误率先变小后变大时则说明迭代次数过大了,需要减小迭代次数,否则容易出现过拟合。

(5)激活函数

在神经网络中,激活函数不是真的去激活什么,而是用激活函数给神经网络加入一些非线性因素,使得网络可以更好地解决较为复杂的问题。激活函数主要是非线性的,如sigmoid、tanh、relu。sigmoid函数通常用于二分类,但要防止梯度消失,故适合浅层神经网络且需要配备较小的初始化权重,

  • tanh函数具有中心对称性,适合于有对称性的二分类。
  • relu是使用最多的激活函数,简单又避免了梯度消失。

训练方法:

熊猫法(Panda) VS. 鱼子酱法(Caviar)

熊猫法:
当我们训练一个很大的模型,但是计算资源又没有那么多的时候,我们会很珍惜我们的训练机会,通常会像照顾一个熊猫一样去照顾我们的模型的训练过程。
具体来说,我们先初始化一组超参数,然后每训练一段时间,比如一天,就赶紧去看看进展如何,是否按照我们预想的方向发展,然后做一定的微调,接着训练,保持观察;如果发现偏离了方向,赶紧对超参数进行调整。就这样,一天天地照看,直到最后达到我们的训练目标。
可以用下面的图来表示:

熊猫法

如图所示,每一天我们观察一次效果,并做微调。可以看到,前三天都不错,第四天突然走偏了,于是我们赶紧退回到D3的节点,调整参数重新训练,让它回到正轨。
这就跟熊猫的养成一样,熊猫每次只能生一个,而且存活率也很低,所以我们必须特别小心地看护。

鱼子酱法
鱼产卵一次就是一大坨,成千上万个小孩生出来,生死由命。
如果我们的计算资源足够丰富,可以同时训练多个模型,那么我们就可以用鱼子酱法:

鱼子酱法

我们直接丢一堆超参数组合的模型去训练,然后不管了,最后看看谁的效果最好就选择谁。

对于这两种方式怎么选择,当然是看具体的情况了,一般情况话,训练一个大模型的时候,我们没有那么壕,所以小心翼翼地去像照顾熊猫一样去调节我们的模型可能更常见一些。

【深度学习基础】超参数介绍相关推荐

  1. 深度学习基础 | 超详细逐步图解 Transformer

    作者 | Chilia 整理 | NewBeeNLP 首先,请阅读先修知识: 深度学习基础 | 从Language Model到RNN 深度学习基础 | RNN家族全面解析 深度学习基础 | Seq2 ...

  2. 【深度学习】超参数优化简单介绍

    介绍 超参数优化也称作超参数调整.往往机器学习/深度学习的算法中包含了成千上百万的参数,这些参数有的可以通过训练来优化,例如神经网络中的权重(Weight)等,我们称为参数(Parameter),也有 ...

  3. 干货 | 深度学习模型超参数搜索实用指南

    乾明 整理编译自 FloydHub Blog 量子位 报道 | 公众号 QbitAI 在文章开始之前,我想问你一个问题:你已经厌倦了小心翼翼地照看你的深度学习模型吗? 如果是的话,那你就来对地方了. ...

  4. 深度学习炼丹-超参数设定和模型训练

    前言 网络层内在参数 使用 3x3 卷积 使用 cbr 组合 尝试不同的权重初始化方法 图片尺寸与数据增强 batch size 设定 背景知识 batch size 定义 选择合适大小的 batch ...

  5. 吴恩达深度学习笔记-超参数调试、Batch正则化(第6课)

    超参数调试 一.调试处理 二.为超参数选择合适的范围 三.超参数训练的实践:Pandas VS Caviar 四.正则化网络的激活函数 五.将Batch Norm拟合进神经网络 六.Batch Nor ...

  6. 深度学习基础 | NLP大魔王 · BERT

    ‍作者 | Chilia 整理 | NewBeeNLP‍ 首先,请阅读先修知识: 深度学习基础 | 从Language Model到RNN 深度学习基础 | RNN家族全面解析 深度学习基础 | Se ...

  7. 深度学习基础: BP神经网络训练MNIST数据集

    BP 神经网络训练MNIST数据集 不用任何深度学习框架,一起写一个神经网络训练MNIST数据集 本文试图让您通过手写一个简单的demo来讨论 1. 导包 import numpy as np imp ...

  8. 第2节--深度学习基础介绍-机器学习--课程介绍(下)

    接第1节–深度学习基础介绍-机器学习–课程介绍(上) 4.Demo - 微软实时语音翻译(一个说英语的人,系统模拟说话人的声音实时说出对应的汉语)- Google无人车送盲人去超市购物- Google ...

  9. 第1节--深度学习基础介绍-机器学习--课程介绍(上)

    本课程为麦子学院彭亮老师讲授的(深度学习基础介绍-机器学习),共28小节. 彭亮在麦子学院还有两门课,一门是Python语言编程基础,另一门是深度学习进阶:算法与应用. 建议三门课的学习顺序为:Pyt ...

最新文章

  1. 笔记本电脑怎么清理灰尘_用了这么多年电脑,你该清理清理这个,将会又快又流畅...
  2. C++多线程的简单程序
  3. Oracle的ONS创建,Oracle 10gR2 RAC Clusterware ONS服务的管理
  4. 学习笔记Spark(四)—— Spark编程基础(创建RDD、RDD算子、文件读取与存储)
  5. 如何让Windows任务栏显示多个不同时区的时钟
  6. windows 7 64bit python3.3安装pyqt
  7. 为什么要重写hashCode()
  8. 30 分钟学 Erlang
  9. 用u盘如何安装linux系统,详细教您如何使用u盘安装Linux系统
  10. 计算机家庭网络共享,Windows7创建家庭组实现多台电脑之间共享资源
  11. 掌握企业邮箱3个好用的技巧,商务沟通安全又轻松!
  12. DIY NAS服务器之OMV 5.6入坑指南(一)-openmediavalut 5.6安装
  13. Python爬虫 | 图书馆公众号座位自动预约【从0到1】
  14. 【Windows、Git问题】detected dubious ownership in repository 问题解决
  15. matlab中ode45用法,ode45(ode45用法举例)
  16. Android终端实现个人中心界面
  17. 武侠世界。。。。。。。。。
  18. 刚刚,优酷的模版引擎,竟然开源了!
  19. 计算机主板设计方案,解决方案:计算机主板每个组件的详细图示
  20. [W pthreadpool-cpp.cc:90] Warning:Leaking Caffe2 thread-pool after fork.(function pthreadpool)

热门文章

  1. pytorch-yolov3实现子batch功能
  2. body属性和文本标记属性
  3. 华为“卖车”:是不是“吹”就等下半年
  4. Ubuntu安装深度音乐深度影音
  5. JetBrains 系列(社区版)安装-以idea为例
  6. pa ps终止进程的命令
  7. Java中易忽略的基础知识
  8. 计算机在未关机的情况下重启,求助关机自动重启电脑关机后当所有指示灯熄灭不到1秒然后屏幕自动出 爱问知识人...
  9. html header设置语言,Content-Language
  10. 计算机控制系统的数学模型有,控制系统的数学模型