首页 > 其他分享 >训练类神经网络

训练类神经网络

时间:2023-07-19 19:12:23浏览次数:41  
标签:训练 最小值 模型 Batch 神经网络 参数 鞍点

结果不理想的检查步骤

情况一:模型问题

  • 所设的模型不包含要找的函数;需要重新修改模型

  • 可以增加模型中特征值,或者增加层数(Deep Learning),以增加模型的复杂度

情况二:优化(optimization)没做好

  • 没有找到模型中解决问题的最好的方法

如何判断问题出自情况一还是二:

上图右边,56层的netWork训练数据得到的数据没有20层的netWork的好,表明56层不是Overfitting的问题,因为56层netWork包含20层netWork,层数越高得到训练数据必然越好,所以这是情况二

情况三:过度拟合(Overfitting)

 例如:

  • 模型的自由度大,就会产生一些奇怪的曲线,导致训练资料的结果好,测试资料上的结果差

解决方法:

  1.  增加训练资料,即使模型的弹性较大,足够多的训练资料也能限制住产生的曲线,如:数据增加(data augmentation),把图片资源上下翻转,左右翻转等。

  2. 缩小模型的弹性,限制模型:如:把高次函数限制函数为二次函数

     限制方法:减少特征值、减少参数,Deep  Learn中减少每层中神经元的个数,模型中共用参数等

过度限制也可能会回到情况一的问题:

情况四:不匹配(mismatch)

特殊情况;训练资料和测试资料的分布不一样。如:

 解决情况二:优化(optimization)问题

  • 原因:由于没有找到该模型中使训练资料得到数据最好的函数,导致训练资料得到的数据不好

 

  • 局部最小值和鞍点处一阶倒数都为0,所以可以根据泰勒展开式,确定周围点与这点值的大小关系,从而区分局部最小值和鞍点

泰勒级数近似(Tayler Series Approximation)

  •  对于鞍点的情况,H可以确定参数更新的方向:

  • 局部最小值的情况在现实中是比较少的:

出现局部最小值的点处在更高维度的模型中很可能只是一个鞍点,并且现实中的模型中参数维度都较高,所以很少出现局部最小值的情况

批处理(Batch)

  • 实际算微分时,不是直接对所有参数算微分,而是把所有的参数分成大小为B的批处理;
  • 每次修改参数的时候,依次拿B资料算出Li,用微分值和η(learning rate)修改参数;全部的Batch都修改一次叫Epoch,每次Epoch后都会重新分Batch

注:左边不分Batch,右边分成了N个Bactch

  左边修改参数时,一次训练只修改一次,修改一次数据要较长时间,并且修改的参数方向准确;

  右边的一次训练要修改N次数据,每次修改参数时间短,但是修改的方向不准确

由于GPU可以同时计算多比数据,所以Batch的个数分的不多时,所需的时间不一定会很长;

例如:训练资料有60000个参数,Batch Size设置为1,一个Epoch要60000个updates;

若Batch Size设置为1000,要60个updates;(同时计算1000比数据)

 注:当Batch Size较大时,也会出现优化失败(optimization fails)的问题

原因是,当Batch较大时,更容易出现微分为0的情况,所以更容易卡在某个点处

  • 有时候会出现较大Batch和较小的Batch在训练资料中数据相近,但测试中较小的Batch得到的数据较差;原因可能训练中的Loss函数中有多个局部最小值,不同的局部最小值周围数据分布平缓程度不一样,而测试资料的Loss函数又和训练的Loss函数有一些差距,此时局部最小值周围数据分布不平缓时,就会导致测试资料数据较差(局部最小值周围数据分布越平缓时,这个局部最小值越好)

动力(Momentum)

  • 可能对抗局部最小值(local minima)和鞍点(saddle point)
  • 概念:Loss函数比作斜坡,参数比作球,把球从斜坡滚下,由于惯性,可能滚过鞍点和局部最小值
  • Gradient Descent(梯度下降法):利用梯度和η(learn rate)改进参数,但由于鞍点和局部最小值处梯度为0,所以容易卡在某个鞍点或者局部最小值点

  • Momentum就是在梯度下降法中修改参数时,另外再加上一次修改参数的方向作为这次参数修改的方向(类似加入惯性)

 

 附加学习效率(Adative Learn Rate)

  • 有时候,梯度不为0,但Loss的值却下降不明显:就是因为η的值不适合

  • 有可能参数在Loss局部最小值的两边来回震荡,这种情况Loss基本不会下降,但实际上并没有卡在鞍点或者局部最小值

这种情况,η(Learn Rate)不变的话,则很难到达目标点,所以就需要自动调整学习速率(某方向上梯度较小时,则η调大,反之调小)

修改η为参数依赖的值

1、  均方根(root mean square),前边的每个梯度权重相同

在接近时,y轴突变导致Loss变大,解决方法是学习速率调度(Learn Rate Scheduling)

  • 学习速率衰变(Learn Rate Decay):让η随时间的增加而减小;  Warm Up:η先变大后变小

2、  PMSProp

  • 用上次的σ和这次的梯度的平方按权重取方差(σ中其实包含之前的所有梯度)

3、  Adam: PMSProp+Momentum

训练数据集和现实全部数据的分布差距

h为模型的一组参数值,

  • 训练集得出理想的最佳h和实际现实的h不同,所以用理想的h用在现实中,差距如何控制在ε内

  • 训练数据有好坏之分,用坏的训练数据,得到的h,即使在训练集中损失值小,但在测试集中损失值也较大

得到坏的训练集的概率:

  • ε为自己定的;|H|为模型中h可选值的数量,也标志着模型的复杂度;N为训练数据总数
  • 所以增加N或者降低|H|都可以使得到坏的训练数据的概率降低
  1. 当|H|较小时,模型的复杂度不够高,得出的最好的函数可能在现实中表现也不好,即使训练集和测试集接近,最终得到的数据也一般
  2. 当|H|较大时,模型的复杂度过高,训练集得的h代入测试集中可能差别较大,最终得到的数据也一般

 

当 |H|过小时,即使找到了模型中的最佳函数,可能也没有大|H|模型中二流函数的测试结果好

如何即让|H|小,训练集和测试集结果接近,也让模型的复杂度高,能确保包含使现实数据较好的函数:深度学习

结:深度学习可以用较少的参数构建出更复杂的模型

 

标签:训练,最小值,模型,Batch,神经网络,参数,鞍点
From: https://www.cnblogs.com/TianLiang-2000/p/17566466.html

相关文章

  • 【学习记录】2023年暑期ACM训练
    学习记录7月16日集训正式开始前一天,搬东西到了机房,在我的老古董笔记本上配置好了环境。这半个月来基本没有写代码,目前非常生疏。晚上在VJudge上拉了个热身赛,做了些简单的签到题,稍微找回了些手感。有一道计算几何的题目有思路,但是卡在了代码实现上,毕竟还没有系统学过。7月17日&......
  • 大语言模型的预训练4:指示学习Instruction Learning详解以及和Prompt Learning,In-cont
    大语言模型的预训练[4]:指示学习InstructionLearning:Entailment-oriented、PLMoriented、human-oriented详解以及和PromptLearning,In-contentLearning区别1.指示学习的定义InstructionLearning让模型对题目/描述式的指令进行学习。针对每个任务,单独生成指示,通过在若干个......
  • “范式杯”2023牛客暑期多校训练营1 蒻蒟题解
    A.AlmostCorrect题意:给定一个01串,要求构造一系列排序操作(xi,yi),使得经过这些排序操作后可以使与给定01串等长的所有其他01串完全排好序,而给定的01串无法完全排好序Solution构造题我们考虑到对0和1的位置进行统计,统计得出最左边的1的位置为l,最右边的0的位置为r我们进行三次......
  • 大语言模型的预训练[5]:语境学习、上下文学习In-Context Learning:精调LLM、Prompt设计
    大语言模型的预训练[5]:语境学习、上下文学习In-ContextLearning:精调LLM、Prompt设计和打分函数(ScoringFunction)设计以及ICL底层机制等原理详解1.In-ContextLearning背景与定义背景大规模预训练语言模型(LLM)如GPT-3是在大规模的互联网文本数据上训练,以给定的前缀来预测生......
  • 二分专题训练
    KC喝咖啡题目描述:给\(n\)个物品,每个物品有两个属性\(v_i\)和\(c_i\),选出其中\(m\)件,最大化\(\frac{\sumv_i}{\sumc_i}\)。数据范围:\(1≤m≤n≤200\),\(1≤c_i,v_i≤1×10^4\)。01分数规划的板子题,不过很久没写过了还是记录一下。对于一个数值\(\lambda\),验证其是否符合条......
  • 代码随想录算法训练营第三十三天| 1049. 最后一块石头的重量 II 494. 目标和 474.一
    1049.最后一块石头的重量II思路:因为含有两个石头的相撞,所以需要把dp的目标值改成sum/2,然后取得这个目标值的最大值,然后对sum-2*target代码:1//要求:有多个石头,两两撞击,取得剩下的石头的最小值2//——》一定要碰到最后一个3//注意:4//1,x==y:两个粉碎,x<y:y=......
  • 代码随想录算法训练营第57天 | ● 647. 回文子串 ● 516.最长回文子序列 ● 动
     第九章 动态规划part17●  647. 回文子串  ●  516.最长回文子序列●  动态规划总结篇 今天 我们就要结束动态规划章节了,大家激不激动!!!   详细布置   647. 回文子串    动态规划解决的经典题目,如果没接触过的话,别硬想 直接看题解。https:......
  • 代码随想录算法训练营第58天 | ● 739. 每日温度 ● 496.下一个更大元素 I - 第1
     第十章 单调栈part01 ●  739. 每日温度 ●  496.下一个更大元素 I    详细布置    739. 每日温度  今天正式开始单调栈,这是单调栈一篇扫盲题目,也是经典题。 大家可以读题,思考暴力的解法,然后在看单调栈的解法。 就能感受出单调栈的巧妙 ......
  • 代码随想录算法训练营第59天 | ● 503.下一个更大元素II ● 42. 接雨水 - 第10章
     第十章 单调栈part02 ●  503.下一个更大元素II ●  42. 接雨水    详细布置   503.下一个更大元素II  这道题和 739. 每日温度 几乎如出一辙,可以自己尝试做一做 https://programmercarl.com/0503.%E4%B8%8B%E4%B8%80%E4%B8%AA%E6%9B%B4%E5%......
  • 代码随想录算法训练营第60天 | ● 84.柱状图中最大的矩形 - 第10章 动态规划part03
     第十章 单调栈part03有了之前单调栈的铺垫,这道题目就不难了。  ●  84.柱状图中最大的矩形   今天是训练营最后一天,恭喜坚持两个月的录友们,接下来可以写一篇自己 代码随想录一刷的总结。好好回顾一下,这两个月自己的博客内容,以及自己的收获。  ......