专栏名称: 夕小瑶科技说
这里有自然语言处理、机器学习、算法的入门指导、科普与深度干货,有小夕的回忆与日常,还有最重要的:萌!气!
目录
相关文章推荐
厦门日报  ·  习近平同普京通电话,重点就中东局势交换意见 ·  18 小时前  
厦门日报  ·  奥迪确认暂停全面电动化计划! ·  昨天  
51好读  ›  专栏  ›  夕小瑶科技说

训练神经网络时如何确定batch的大小?

夕小瑶科技说  · 公众号  ·  · 2017-07-07 23:18

正文

请到「今天看啥」查看全文


其实这两个做法就相当于:


第一种:

total = 旧参下计算更新值1+旧参下计算更新值2+...+旧参下计算更新值500 ;

新参数 = 旧参数 + total;

第二种:

新参数1 = 旧参数 + 旧参数下计算更新值1;

新参数2 = 新参数1 + 新参数1下计算更新值1;

新参数3 = 新参数2 + 新参数2下计算更新值1;

...

新参数500 =新参数500 + 新参数500下计算更新值1;

也就是说,第一种是将参数一次性更新500个样本的量,第二种是迭代的更新500次参数。当然是不一样的啦。

那么问题来了,哪个更好呢?

我们首先分析最简单的影响,哪种做法 收敛更快 呢?

我们假设每个样本相对于大自然真实分布的标准差为σ,那么根据概率统计的知识,很容易推出n个样本的标准差为 有疑问的同学快翻开概率统计的课本看一下推导过程)。


从这里可以看出,我们使用样本来估计梯度的时候,1个样本带来σ的标准差,但是使用n个样本区估计梯度 并不能让标准差线性降低 (也就是并不能让误差降低为原来的1/n,即无法达到σ/n),而n个样本的计算量却是线性的(每个样本都要平等的跑一遍前向算法)。







请到「今天看啥」查看全文