在研究类神经网路的程序时,发现会用到一些这概念,因此就来研究了一下。
这四样东西,在机器学习时会很常用到,有时候需要调整这些参数来使机器学习过程更加顺利且精准。
Epoch这是指当所有资料都被用来训练类神经网路一次,就算1个Epoch。举例来说,今天有100笔资料,将它们全部丢进类神经网路中训练,就算是1个Epoch。
Batch size是把资料分成一堆堆,分别丢入类神经网路中训练,而非全部一起丢进去训练。举例来说,今天有100笔资料,我设定Batch size=10,也就是一次只输入10笔资料进类神经网路中,这动作进行10次之後,才会是1个Epoch。
那麽究竟Batch size要设定比较大才好,还是小呢?我们来看看图(一)。
蓝色线条是将全部资料丢进去一起训练,最终训练的效果是最好的,可以收敛到一个点上,但是过程较慢,尤其越到後面进步速度越慢,因此要Epoch很多次才可以。
绿色线条是将资料分批成很多份,每份数量都差不多(根据自己有的资料数来决定要分多少批),虽然在训练时很快就能到达一定的程度,但是却会因为每次训练资料数过少的关系,可能换其他组时,参数的变动就会很大,收敛不怎麽好。
红色线条是每次都用随机资料数量,可能一下子会把所有资料丢进训练,也可能一次只丢入一笔。这样的情况反而更糟,很难收敛成功,但还是会比蓝色线条更快到最佳解的地方。
刚开始接触程序时,学习到Recurtion(回圈),也会学到Iteration(迭代),前者是不断呼叫自身程序码得到结果,後者是用回圈去重复执行程序码得到结果。
在机器学习上Iteration跟Batch size有关,因为如果有设定Batch size大小,就会有分批处理资料的情况,这时候就要用回圈不断把资料输入进类神经网路中进行训练。举例来说,有100笔资料,一次只训练其中10笔资料,就要10次回圈才算是1个Epoch,也就是在这例子的情况下,1个Epoch就要10次Iteration。
因此概念上就是:原始资料大小=Iteration×Batch size=1 Epoch。
如果有个工程师,在100笔资料的情况下,决定每次用20笔资料进行训练,全部资料都要训练3次,这样会Iteration几次呢?Iteration=(原始资料大小÷Batch size)×Epoch=(100÷20)×3=15次。
Learning rate
Learning rate跟更新类神经网路的公式有关系,如图(二)。
η就是Learning rate,在更新权重的时候,会由η乘上∇E(Gradient),来调整权重。但要注意,在梯度下降法篇中有提到,如果切线的斜率调整太大的话,就会没办法收敛,Learning rate就类似於调整切线斜率,要让机器学习进展更快,还是慢一点之类的。虽然欲速则不达,但是太慢的话又很浪费时间。
以上参数都没有一定的设定,也有可能这设定在某些领域不好,但在另外的领域会有不错的成效。而且有可能每个人设备不同,比如资料一次丢入,只要进行多次训练,还是能达到不错的成效,但如果设备不好的情况下,可能连第一次训练都无法成功完成。因此这些设定还是得亲自测试,一步步调整到适合自己想要的机器学习的参数,这样才比较适当。
<<: [Android Studio 30天自我挑战] RecyclerView元件介绍
>>: Day23 Android - RxJava+Post
运算式与运算子 运算式 透过运算子进行运算而得到指定的结果值 运算子的介绍 这边会列出几个简单算是常...
前面提到region会产生副本分散在每一个tikv store里,今天如果架设的机器是跨区的,跨机房...
首先操作部分 删除及编辑页面回填By NewsId查询的Action 扩充 using Micro...
Grid是什麽 Grid是砖墙式版面,使用二维的排版方式,与flexbox不同的地方是Grid一次可...
今天要来介绍一个Windwos内建工具叫做工作排程器(Task Scheduler),他可以预先计划...