参数 VS 超参数

什么是超参数?

比如算法中的learning rate \(a\)(学习率)、iterations(梯度下降法循环的数量)、\(L\)(隐藏层数目)、\({{n}^{[l]}}\)(隐藏层单元数目)、choice of activation function(激活函数的选择)都需要来设置,这些数字实际上控制了最后的参数\(W\)和\(b\)的值,所以它们被称作超参数。

实际上深度学习有很多不同的超参数,之后也会介绍一些其他的超参数,如momentummini batch sizeregularization parameters等等。

如何寻找超参数的最优值?

Idea—Code—Experiment—Idea这个循环,尝试各种不同的参数,实现模型并观察是否成功,然后再迭代。

今天的深度学习应用领域,还是很经验性的过程,通常有个想法,比如可能大致知道一个最好的学习率值,可能说\(a=0.01\)最好,会想先试试看,然后可以实际试一下,训练一下看看效果如何。然后基于尝试的结果会发现,觉得学习率设定再提高到0.05会比较好。如果不确定什么值是最好的,大可以先试试一个学习率\(a\),再看看损失函数J的值有没有下降。然后可以试一试大一些的值,然后发现损失函数的值增加并发散了。然后可能试试其他数,看结果是否下降的很快或者收敛到在更高的位置。可能尝试不同的\(a\)并观察损失函数\(J\)这么变了,试试一组值,然后可能损失函数变成这样,这个\(a\)值会加快学习过程,并且收敛在更低的损失函数值上(箭头标识),就用这个\(a\)值了。

有很多不同的超参数。然而,当开始开发新应用时,预先很难确切知道,究竟超参数的最优值应该是什么。所以通常,必须尝试很多不同的值,并走这个循环,试试各种参数。试试看5个隐藏层,这个数目的隐藏单元,实现模型并观察是否成功,然后再迭代。应用深度学习领域,一个很大程度基于经验的过程,凭经验的过程通俗来说,就是试直到找到合适的数值。

另一个近来深度学习的影响是它用于解决很多问题,从计算机视觉到语音识别,到自然语言处理,到很多结构化的数据应用,比如网络广告或是网页搜索或产品推荐等等。所看到过的就有很多其中一个领域的研究员,这些领域中的一个,尝试了不同的设置,有时候这种设置超参数的直觉可以推广,但有时又不会。所以经常建议人们,特别是刚开始应用于新问题的人们,去试一定范围的值看看结果如何。接下来,会用更系统的方法,用系统性的尝试各种超参数取值。然后其次,甚至是已经用了很久的模型,可能在做网络广告应用,在开发途中,很有可能学习率的最优数值或是其他超参数的最优值是会变的,所以即使每天都在用当前最优的参数调试的系统,还是会发现,最优值过一年就会变化,因为电脑的基础设施,CPU或是GPU可能会变化很大。所以有一条经验规律可能每几个月就会变。如果所解决的问题需要很多年时间,只要经常试试不同的超参数,勤于检验结果,看看有没有更好的超参数数值,相信慢慢会得到设定超参数的直觉,知道的问题最好用什么数值。

这可能的确是深度学习比较让人不满的一部分,也就是必须尝试很多次不同可能性。但参数设定这个领域,深度学习研究还在进步中,所以可能过段时间就会有更好的方法决定超参数的值,也很有可能由于CPUGPU、网络和数据都在变化,这样的指南可能只会在一段时间内起作用,只要不断尝试,并且尝试保留交叉检验或类似的检验方法,然后挑一个对的问题效果比较好的数值。

近来受深度学习影响,很多领域发生了变化,从计算机视觉到语音识别到自然语言处理到很多结构化的数据应用,比如网络广告、网页搜索、产品推荐等等;有些同一领域设置超参数的直觉可以推广,但有时又不可以,特别是那些刚开始研究新问题的人们应该去尝试一定范围内的结果如何,甚至那些用了很久的模型得学习率或是其他超参数的最优值也有可能会改变。

有一条经验规律:经常试试不同的超参数,勤于检查结果,看看有没有更好的超参数取值,将会得到设定超参数的直觉。

神经网络入门篇:详解参数VS超参数(Parameters vs Hyperparameters)的更多相关文章

  1. PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明

    PHP函数篇详解十进制.二进制.八进制和十六进制转换函数说明 作者: 字体:[增加 减小] 类型:转载   中文字符编码研究系列第一期,PHP函数篇详解十进制.二进制.八进制和十六进制互相转换函数说明 ...

  2. 走向DBA[MSSQL篇] 详解游标

    原文:走向DBA[MSSQL篇] 详解游标 前篇回顾:上一篇虫子介绍了一些不常用的数据过滤方式,本篇详细介绍下游标. 概念 简单点说游标的作用就是存储一个结果集,并根据语法将这个结果集的数据逐条处理. ...

  3. java 日志体系(三)log4j从入门到详解

    java 日志体系(三)log4j从入门到详解 一.Log4j 简介 在应用程序中添加日志记录总的来说基于三个目的: 监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作: 跟踪代 ...

  4. Scala进阶之路-Scala函数篇详解

    Scala进阶之路-Scala函数篇详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传值调用和传名调用 /* @author :yinzhengjie Blog:http: ...

  5. Mysql常用show命令,show variables like xxx 详解,mysql运行时参数

    MySQL中有很多的基本命令,show命令也是其中之一,在很多使用者中对show命令的使用还容易产生混淆,本文汇集了show命令的众多用法. 详细: http://dev.mysql.com/doc/ ...

  6. 详解python函数的参数

    详解python函数的参数 一.参数的定义 1.函数的参数在哪里定义 在python中定义函数的时候,函数名后面的括号里就是用来定义参数的,如果有多个参数的话,那么参数之间直接用逗号, 隔开 案列: ...

  7. (十八)整合Nacos组件,环境搭建和入门案例详解

    整合Nacos组件,环境搭建和入门案例详解 1.Nacos基础简介 1.1 关键特性 1.2 专业术语解释 1.3 Nacos生态圈 2.SpringBoot整合Nacos 2.1 新建配置 2.2 ...

  8. 【深度学习篇】--神经网络中的调优一,超参数调优和Early_Stopping

    一.前述 调优对于模型训练速度,准确率方面至关重要,所以本文对神经网络中的调优做一个总结. 二.神经网络超参数调优 1.适当调整隐藏层数对于许多问题,你可以开始只用一个隐藏层,就可以获得不错的结果,比 ...

  9. es6入门4--promise详解

    可以说每个前端开发者都无法避免解决异步问题,尤其是当处理了某个异步调用A后,又要紧接着处理其它逻辑,而最直观的做法就是通过回调函数(当然事件派发也可以)处理,比如: 请求A(function (请求响 ...

  10. 【WebApi系列】详解WebApi如何传递参数

    WebApi系列文章 [01]浅谈HTTP在WebApi开发中的运用 [02]聊聊WebApi体系结构 [03]详解WebApi参数的传递 [04]详解WebApi测试和PostMan [05]浅谈W ...

随机推荐

  1. 深入了解API接口调用——从获取淘宝商品数据开始

    API(Application Programming Interface)是现代软件开发中常用的一种技术,它允许不同的软件系统进行交互和通信.在本文中,我们将深入探讨如何通过API接口来获取淘宝商品 ...

  2. API接口技术的使用可以增加软件开发和运行的灵活性,降低软件运行和维护的成本

    随着科技的发展和互联网的普及,越来越多的公司和企业把业务拓展到互联网上,这就需要用到API接口技术.API(Application Programming Interface,应用程序接口)是指不同软 ...

  3. QA|重写了元素定位后报错xx object has no attribute 'find_element'|网页计算器自动化测试实战

    代码如下: 1 # basepage.py 2 3 from selenium import webdriver 4 5 6 class BasePage(): 7 """ ...

  4. 创建Anaconda虚拟Python环境的方法

      本文介绍在Anaconda环境下,创建.使用与删除Python虚拟环境的方法.   在Python的使用过程中,我们常常由于不同Python版本以及不同第三方库版本的支持情况与相互之间的冲突情况, ...

  5. 腾讯事务处理技术验证系统3TS-Coo模块的项目环境安装使用说明

    本篇文章将详细说明3TS-Coo模板的安装和使用,帮助您快速上手项目 第一部分是简单的基础Docker相关概念,精炼的几句小白话快速理解即可: 第二部分是快速安装项目环境的安装文档,简单几行命令搞定, ...

  6. 开源XL-LightHouse与Flink、ClickHouse之类技术相比有什么优势

    Flink是一款非常优秀的流式计算框架,而ClickHouse是一款非常优秀的OLAP类引擎,它们是各自所处领域的佼佼者,这一点是毋庸置疑的.Flink除了各种流式计算场景外也必然可以用于流式统计,C ...

  7. 微信Native支付(扫码支付)商户配置

    0.需要从商户平台获取/设置的配置 公众号appId 商户号 APIv3密钥 证书序列号 证书密钥 1.扫码登录商户平台 网址:https://pay.weixin.qq.com/ 2.确认已开通Na ...

  8. 深入解析枚举(Enum):在程序设计中的应用与优势

    深入解析枚举(Enum):在程序设计中的应用与优势 引言 在程序设计中,我们经常需要用到一组具名的常量,这些常量表示一些有限的离散状态或取值范围.例如,表示方向(上.下.左.右).星期几.性别等.为了 ...

  9. 创建Oracle数据库实例、配置PLSQL连接数据库实例

    方法一:仅安装Oracle即时客户端: 1.安装Oracle即时客户端Instant Client Setup.exe,配置环境变量 2.安装PLSQL工具,配置Oracle主目录名和OCI库 3.配 ...

  10. LVS+keepalived配置高可用架构和负载均衡机制(1)

    一.基础知识 1. 四层负载均衡(基于IP+端口的负载均衡) 所谓四层负载均衡,也就是主要通过报文中的目标ip地址和端口,再加上负载均衡设备设置的服务器选择方式(分发策略,轮询),决定最终选择的内部服 ...