首页 > 其他分享 >神经网络入门篇:详解参数VS超参数(Parameters vs Hyperparameters)

神经网络入门篇:详解参数VS超参数(Parameters vs Hyperparameters)

时间:2023-12-05 10:23:33浏览次数:32  
标签:尝试 Parameters 试试 Hyperparameters 学习 可能 参数 最优

参数 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、网络和数据都在变化,这样的指南可能只会在一段时间内起作用,只要不断尝试,并且尝试保留交叉检验或类似的检验方法,然后挑一个对的问题效果比较好的数值。

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

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

标签:尝试,Parameters,试试,Hyperparameters,学习,可能,参数,最优
From: https://www.cnblogs.com/oten/p/17876605.html

相关文章

  • 【C语言】宏定义不带参数
    ......
  • Day09 方法知识点综合(求值策略与可变参数)
    1.求值策略编程语言中方法之间进行参数传递时有个传递策略,该策略就被称为求值策略(Evaluationstrategies)。求值策略分为两大基本类型,如果按照如何处理传递给方法的实际参数,分为严格的和非严格的两种求值策略。1.1严格求值策略传值调用(Callbyvalue)将实参复制一份给形参......
  • vue3 setup 父组件向子组件传递参数、方法|子组件向父组件传递数据,函数
    https://blog.csdn.net/qq_27517377/article/details/123163381https://blog.csdn.net/qq_27517377/article/details/123166367vue3setup父组件向子组件传递参数参数<template><el-rowclass="mb-4"> <el-buttontype="danger">props.vue传......
  • Spring中controller中关于GET和POST请求的参数接收
    Spring中controller中关于GET和POST请求的参数接收Spring中controller中关于GET和POST请求的参数接收GET请求参数用&符号连接在一起[/get?name=tom]//无参//没有任何参数的请求@GetMapping(value="/metrics/get")@ApiOperation("get请求没有任何参数")publicRespon......
  • 解释 pandas.series.rename函数的每个参数
    `pandas.Series.rename`是一个用于更改Series索引标签或名称的函数¹。以下是该函数的一些参数¹:-`index`:可选,标量,可哈希序列,类似字典或函数。函数或类似字典的对象是应用于索引的转换。标量或可哈希的序列将改变Series的`name`属性¹。-`axis`:默认为0。未使用。需要此......
  • 电机型号命名参数
    主要参数1.电机类型:一般以字母表示,如Y、Y2、Y3等,代表不同的电机类型2.功率:以KW为单位,通常使用数字表示,如0.75KW、1.5KW等,代表电机的额定输出功率。3.电压:一般以V为单位,通常是两个三位数,如220/380V、380/660V等,代表电机的额定电压。4.转速: RPM为单位, 代表电机的额定转......
  • Wpf Prism 导航(参数传递,路由守卫,路由记录)
    十年河东,十年河西,莫欺少年穷学无止境,精益求精1、新建项目wpfApp5,添加Nuget引用,并初始化App.xaml及cs类 app.xaml如下:<Prism:PrismApplicationx:Class="WpfApp5.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="......
  • Java泛型:类型参数化的优雅解决方案
    一、引言Java泛型是Java语言的一重要特性,它提供了一种在编译时进行类型检查的方式,使得代码更加类型安全。本文将深入探讨Java泛型的概念、用法及其重要性。二、Java范型简介Java范型,也称为泛型,是一种在Java编程语言中处理类型的方法。它允许程序员在类、接口和方法中使用类型参数。......
  • 聊聊 神经网络模型 预训练生成超参数实现
    概述在上一篇博客中,已经阐述了预训练过程中,神经网络中超参数的计算逻辑,本文,从程序实现的角度,将数学计算转换为程序代码,最终生成超参数文件;并将替换聊聊神经网络模型示例程序——数字的推理预测中已训练好的超参数文件,推理预测数字,最终比对下两者的精确度。神经网络层实现首......
  • SAP ABAP RZ11 事务码里 Instance Profile 和 Current Value 等参数值的解读
    首先,让我们了解在SAPABAP系统中通过事务码RZ11查看参数时,涉及的四个重要组件:KernelDefault、DefaultProfile、InstanceProfile和CurrentValue。KernelDefault:含义:KernelDefault表示系统中SAP内核(Kernel)的默认配置参数值。这是SAP系统内核的全局默认设置,通常在SAP系统......