神经网络训练中,傻傻分不清Epoch、Batch Size和迭代

作者: 李亚洲 2017-09-26 10:09:55

你肯定经历过这样的时刻,看着电脑屏幕抓着头,困惑着:「为什么我会在代码中使用这三个术语,它们有什么区别吗?」因为它们看起来实在太相似了。

为了理解这些术语有什么不同,你需要了解一些关于机器学习的术语,比如梯度下降,以帮助你理解。

这里简单总结梯度下降的含义…

梯度下降

这是一个在机器学习中用于寻找***结果(曲线的最小值)的迭代优化算法。

梯度的含义是斜率或者斜坡的倾斜度。

下降的含义是代价函数的下降。

算法是迭代的,意思是需要多次使用算法获取结果,以得到***化结果。梯度下降的迭代性质能使欠拟合的图示演化以获得对数据的***拟合。

梯度下降中有一个称为学习率的参量。如上图左所示,刚开始学习率更大,因此下降步长更大。随着点下降,学习率变得越来越小,从而下降步长也变小。同时,代价函数也在减小,或者说代价在减小,有时候也称为损失函数或者损失,两者都是一样的。(损失/代价的减小是一件好事)

只有在数据很庞大的时候(在机器学习中,几乎任何时候都是),我们才需要使用 epochs,batch size,迭代这些术语,在这种情况下,一次性将数据输入计算机是不可能的。因此,为了解决这个问题,我们需要把数据分成小块,一块一块的传递给计算机,在每一步的末端更新神经网络的权重,拟合给定的数据。

EPOCHS

当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一个 epoch。

然而,当一个 epoch 对于计算机而言太庞大的时候,就需要把它分成多个小块。

为什么要使用多于一个 epoch?

我知道这刚开始听起来会很奇怪,在神经网络中传递完整的数据集一次是不够的,而且我们需要将完整的数据集在同样的神经网络中传递多次。但是请记住,我们使用的是有限的数据集,并且我们使用一个迭代过程即梯度下降,优化学习过程和图示。因此仅仅更新权重一次或者说使用一个 epoch 是不够的。


随着 epoch 数量增加,神经网络中的权重的更新次数也增加,曲线从欠拟合变得过拟合。

那么,几个 epoch 才是合适的呢?

不幸的是,这个问题并没有正确的答案。对于不同的数据集,答案是不一样的。但是数据的多样性会影响合适的 epoch 的数量。比如,只有黑色的猫的数据集,以及有各种颜色的猫的数据集。

BATCH SIZE

一个 batch 中的样本总数。记住:batch size 和 number of batches 是不同的。

BATCH 是什么?

在不能将数据***神经网络的时候,就需要将数据集分成几个 batch。

正如将这篇文章分成几个部分,如介绍、梯度下降、Epoch、Batch size 和迭代,从而使文章更容易阅读和理解。

迭代

理解迭代,只需要知道乘法表或者一个计算器就可以了。迭代是 batch 需要完成一个 epoch 的次数。记住:在一个 epoch 中,batch 数和迭代数是相等的。

比如对于一个有 2000 个训练样本的数据集。将 2000 个样本分成大小为 500 的 batch,那么完成一个 epoch 需要 4 个 iteration。

Epoch Batch Size 神经网络
上一篇:内存带宽与计算能力,谁才是决定深度学习执行性能的关键? 下一篇:迪拜测试无人“飞的”:有望全球首推无人机载客服务
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

神经网络技术帮自主驾驶汽车识别幻影物体

以色列本古里安大学内盖夫网络安全研究中心的研究人员表示,在道路上投影图像形成幻影物体,可导致行驶中的半自主或全自主驾驶汽车误判并急刹车,从而危及车内驾驶员和乘客的生命。他们正在研究的神经网络技术,将解决自主驾驶汽车无法识别幻影物体的缺陷。

毛黎 ·  2020-02-07 13:33:13
二次元少女生成器、会开车的神经网络...2019年优秀的17个机器学习项目

为了挑选出2019年优秀的开源项目,最近某位Medium网友整理了2019年Reddit机器学习板块热门高赞项目资源汇总,一起来看看都有哪些项目上榜。

猿妹 ·  2019-12-25 14:29:35
避免神经网络过拟合的5种技术

最近一年我一直致力于深度学习领域。这段时间里,我使用过很多神经网络,比如卷积神经网络、循环神经网络、自编码器等等。我遇到的最常见的一个问题就是在训练时,深度神经网络会过拟合。

THU数据派 ·  2019-12-20 09:15:48
诠释图形处理器(GPU)和神经网络加速器芯片如何为汽车应用提供智能优势

汽车行业是推动人工智能(AI)发展的重要行业之一,这是因为该行业致力于自动驾驶汽车和高级驾驶员辅助系统(ADAS)的泛在利益。

Imagination Technologies汽车产品部总监Bryce Johnst ·  2019-12-18 14:00:33
如何对机器学习做单元测试

养成良好的单元测试的习惯,真的是受益终身的,特别是机器学习代码,有些bug真不是看看就能看出来的。

AI公园 ·  2019-12-18 10:25:12
如何在Keras中创建自定义损失函数?

Keras 是一个创建神经网络的库,它是开源的,用 Python 语言编写。Keras 不支持低级计算,但它运行在诸如 Theano 和 TensorFlow 之类的库上。

skura ·  2019-12-02 21:29:45
一文搞懂神经网络

人工智能是这几年非常火的技术,上至九十九下至刚会走都对人工智能或多或少的了解。神经网络是人工智能的核心,也就是说没有神经网络就没有人工智能,那么这篇文章就带大家学习一下神经网络相关的知识。这篇文章没有数学公式、没有代码,旨在帮助读者快速掌握神经网络的核心知识。

朱钢 ·  2019-11-19 08:00:00
一文理清深度学习前馈神经网络 精选

前馈神经网络(feedforward neural network)是一种最简单的神经网络,各神经元分层排列。每个神经元只与前一层的神经元相连。接收前一层的输出,并输出给下一层.各层间没有反馈。

SAMshare ·  2019-11-06 17:00:51
Copyright©2005-2020 51CTO.COM 版权所有 未经许可 请勿转载