首页 > 其他分享 >神经网络优化篇:详解超参数调试的实践:Pandas VS Caviar(Hyperparameters tuning in practice: Pandas vs. Caviar)

神经网络优化篇:详解超参数调试的实践:Pandas VS Caviar(Hyperparameters tuning in practice: Pandas vs. Caviar)

时间:2024-01-26 10:01:02浏览次数:22  
标签:方式 也许 模型 Caviar 试验 vs 参数 熊猫 Pandas

超参数调试的实践

如今的深度学习已经应用到许多不同的领域,某个应用领域的超参数设定,有可能通用于另一领域,不同的应用领域出现相互交融。比如,曾经看到过计算机视觉领域中涌现的巧妙方法,比如说ConfonetsResNets。它还成功应用于语音识别,还看到过最初起源于语音识别的想法成功应用于NLP等等。

深度学习领域中,发展很好的一点是,不同应用领域的人们会阅读越来越多其它研究领域的文章,跨领域去寻找灵感。

就超参数的设定而言,见到过有些直觉想法变得很缺乏新意,所以,即使只研究一个问题,比如说逻辑学,也许已经找到一组很好的参数设置,并继续发展算法,或许在几个月的过程中,观察到的数据会逐渐改变,或也许只是在的数据中心更新了服务器,正因为有了这些变化,原来的超参数的设定不再好用,所以建议,或许只是重新测试或评估的超参数,至少每隔几个月一次,以确保对数值依然很满意。

最后,关于如何搜索超参数的问题,见过大概两种重要的思想流派或人们通常采用的两种重要但不同的方式。

一种是照看一个模型,通常是有庞大的数据组,但没有许多计算资源或足够的CPUGPU的前提下,基本而言,只可以一次负担起试验一个模型或一小批模型,在这种情况下,即使当它在试验时,也可以逐渐改良。比如,第0天,将随机参数初始化,然后开始试验,然后逐渐观察自己的学习曲线,也许是损失函数J,或者数据设置误差或其它的东西,在第1天内逐渐减少,那这一天末的时候,可能会说,看,它学习得真不错。试着增加一点学习速率,看看它会怎样,也许结果证明它做得更好,那是第二天的表现。两天后,会说,它依旧做得不错,也许现在可以填充下Momentum或减少变量。然后进入第三天,每天,都会观察它,不断调整的参数。也许有一天,会发现的学习率太大了,所以可能又回归之前的模型,像这样,但可以说是在每天花时间照看此模型,即使是它在许多天或许多星期的试验过程中。所以这是一个人们照料一个模型的方法,观察它的表现,耐心地调试学习率,但那通常是因为没有足够的计算能力,不能在同一时间试验大量模型时才采取的办法。

另一种方法则是同时试验多种模型,设置了一些超参数,尽管让它自己运行,或者是一天甚至多天,然后会获得像这样的学习曲线,这可以是损失函数J或实验误差或损失或数据误差的损失,但都是曲线轨迹的度量。同时可以开始一个有着不同超参数设定的不同模型,所以,的第二个模型会生成一个不同的学习曲线,也许是像这样的一条(紫色曲线),会说这条看起来更好些。与此同时,可以试验第三种模型,其可能产生一条像这样的学习曲线(红色曲线),还有另一条(绿色曲线),也许这条有所偏离,像这样,等等。或者可以同时平行试验许多不同的模型,橙色的线就是不同的模型。用这种方式可以试验许多不同的参数设定,然后只是最后快速选择工作效果最好的那个。在这个例子中,也许这条看起来是最好的(下方绿色曲线)。

打个比方,把左边的方法称为熊猫方式。当熊猫有了孩子,他们的孩子非常少,一次通常只有一个,然后他们花费很多精力抚养熊猫宝宝以确保其能成活,所以,这的确是一种照料,一种模型类似于一只熊猫宝宝。对比而言,右边的方式更像鱼类的行为,称之为鱼子酱方式。在交配季节,有些鱼类会产下一亿颗卵,但鱼类繁殖的方式是,它们会产生很多卵,但不对其中任何一个多加照料,只是希望其中一个,或其中一群,能够表现出色。这就是哺乳动物繁衍和鱼类,很多爬虫类动物繁衍的区别。将称之为熊猫方式与鱼子酱方式,因为这很有趣,更容易记住。

所以这两种方式的选择,是由拥有的计算资源决定的,如果拥有足够的计算机去平行试验许多模型,那绝对采用鱼子酱方式,尝试许多不同的超参数,看效果怎么样。但在一些应用领域,比如在线广告设置和计算机视觉应用领域,那里的数据太多了,需要试验大量的模型,所以同时试验大量的模型是很困难的,它的确是依赖于应用的过程。但看到那些应用熊猫方式多一些的组织,那里,会像对婴儿一样照看一个模型,调试参数,试着让它工作运转。尽管,当然,甚至是在熊猫方式中,试验一个模型,观察它工作与否,也许第二或第三个星期后,也许应该建立一个不同的模型(绿色曲线),像熊猫那样照料它,猜,这样一生中可以培育几个孩子,即使它们一次只有一个孩子或孩子的数量很少。

所以希望能学会如何进行超参数的搜索过程,现在,还有另一种技巧,能使的神经网络变得更加坚实,它并不是对所有的神经网络都适用,但当适用时,它可以使超参数搜索变得容易许多并加速试验过程,下篇介绍。

标签:方式,也许,模型,Caviar,试验,vs,参数,熊猫,Pandas
From: https://www.cnblogs.com/oten/p/17988697

相关文章

  • 修改vSphere ESXi中虚拟机的三大件CPUID,硬盘ID,MAC地址
    1、查看硬件信息 wmicdiskdrivegetserialnumber查看磁盘序列号wmicbiosgetserialnumber查询BIOS序列号wmicnicconfiggetmacaddress查询网卡MAC信息wmiccpugetprocessorid查询cpu的IDwmicbeseboardgetserialnumber查询主板序列号 2、修改CPUID......
  • vs导入窗体时,*.Designer.cs文件和*.resx文件不会在.cs文件下。
    转载 C#项目解决方案管理器中将*.Designer.cs文件放到*.cs文件下_c#一个cs文件导入另一个cs文件-CSDN博客https://blog.csdn.net/YoungProgrammer/article/details/68489635写C#项目时,会复用到以前项目中的.cs文件;在解决方案管理器中手动添加窗口文件后,*.Designer.cs文件和*.re......
  • LVS常见面试题
    一、Linux集群有哪些Linux集群主要有以下几种类型:负载均衡集群(LoadBalancingCluster,LB)这种类型的集群主要用于分发网络流量,确保服务的稳定性和高效性。它将客户端的请求分配给后端的一组服务器,以平衡整体负载,并防止任何单个服务器过载。常见的软件实现包括LinuxVirtualSer......
  • # yyds干货盘点 # 盘点一个Pandas中.str的一个常见小误区
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas基础的问题。问题如下:大佬们,这里面的dtype,能直接改成str格式?我一开始认为只能这么看print(df.dtypes),传统的做法我一直认为是这样子df['数学']=df['数学'].astype(str),不明白,上面这部,跟这部df['数......
  • 盘点一个Pandas中.str的一个常见小误区
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas基础的问题。问题如下:大佬们,这里面的dtype,能直接改成str格式?我一开始认为只能这么看print(df.dtypes),传统的做法我一直认为是这样子df['数学']=df['数学'].astype(str),不明白,上面这部,跟这部df['......
  • pandas_Series
    **Series结构是由索引+值组成的。**Series.values#得到值Series.index#得到索引创建一个Series,并赋予其标签索引:s1=pd.Series([2,3,4,5,6],index=[0,1,2,3,4])通过字典方式创建Series:s2=pd.Series({"小猫":66,"小狗":77,"小牛":88})返回值会告诉dtype类型,如果想......
  • [转]vs2019升级后,启动调试,谷歌浏览器无法正常使用 - 温故纳新 - 博客园
    解决方法:vs2019按如下步骤设置:工具  =》 选项  =》调试 =》 常规 =》勾选“启用APS.NET 的 Javascript 调试(Chrome和IE)”---------------------作者:温故纳新来源:CNBLOGS原文:https://www.cnblogs.com/tomorrow0/p/14383870.html版权声明:本文为作者原创文章,转载请......
  • pandas_DataFrame
    DataFrame的结构为二维。创建方法类似字典,由列名:Series组成。创建DataFrame示例1:importpandasaspds_id=pd.Series(["01","02","03","04","05"])s_class=pd.Series(["二班","一班","二班","三班&quo......
  • 文心一言 VS 讯飞星火 VS chatgpt (186)-- 算法导论14.1 3题
    三、用go语言,写出OS-SELECT的非递归版本。文心一言:下面是使用Go语言编写的OS-SELECT的非递归版本:funcOS_SELECT(T*Node,kint)*Node{//找到最小秩的节点minRankNode:=findMinRankNode(T)//如果最小秩的节点就是目标节点,则返回该节点if......
  • 精通 VS 调试技巧,学习与工作效率翻倍!
    ​✨✨欢迎大家来到贝蒂大讲堂✨✨​......