batch learning和stochastic learning
2016-05-19 16:23
288 查看
在深度学习网络中,有两种主要的学习方式,batching learning 和 stochastic learning,下面就来对这两种学习方式做以下总结:
batch learing:批量学习,这是一种离线的学习方法,大概的过程就是,每次网络的训练都是用所有的输入样本,针对一个训练样本,我可以比较网络输出和目标输出之间的残差cost(i),在求出所有样本对应的残差之后,对残差去平均,得到整个训练样本的残差Cost,然后利用这个残差求取梯度,进而对网络参数进行修正。这种方法是有一定好处的,比如,这种方法能找出网络的最优解,而且由于是对所有样本去平均,所以可以消除噪音对网络的影响。但是这种方法的缺点也很明显,在网络规模很大,训练样本很多的情况下,这种方法计算就非常耗费时间,远远大于stochastic
learning所需要的时间。
stochastic learning:随即学习,这是一种在线的学习方法,即在对输入进行处理的时候,也不断在学习,相比于之前的batch learning,还是有很大的优势,因为batching learning只是在训练的时候会修正网络参数,等到真正对输入数据进行处理的时候,是不会在改变网络参数的。stochastic learning一次只输入一个样本,利用输入的一个样本,计算输入结果,并和目标结果做残差,然后利用残差修正网络参数,紧接着就对下一个样本进行训练,然后继续修正权值,就这样依次做下去。从这我们可以看出,stochastic的训练所需的计算量相比于batch
learning减少了很多,而且这是一种在线的学习方法。但是stochastic learning 也是有一些缺点的,由于每次只用一个样本进行训练,使得输入很容易受噪声影响,这可以算缺点,也可以算优点,是缺点是因为噪声使得每次迭代不一定朝最优的方向,是优点是因为这样的情况有时可以避免网络陷入局部最优。
对于stochastic learning受噪声影响的情况,很多深度网络的实现中都采用了batch learning 和stochastic learning相结合的方式,在这种方式中,每一次的训练即不使用全部的样本,也不只使用一个样本,而是使用10个或者别的合适数目的样本,这样就可以稍微消除噪声的影响,又可以进行在线学习。
batch learing:批量学习,这是一种离线的学习方法,大概的过程就是,每次网络的训练都是用所有的输入样本,针对一个训练样本,我可以比较网络输出和目标输出之间的残差cost(i),在求出所有样本对应的残差之后,对残差去平均,得到整个训练样本的残差Cost,然后利用这个残差求取梯度,进而对网络参数进行修正。这种方法是有一定好处的,比如,这种方法能找出网络的最优解,而且由于是对所有样本去平均,所以可以消除噪音对网络的影响。但是这种方法的缺点也很明显,在网络规模很大,训练样本很多的情况下,这种方法计算就非常耗费时间,远远大于stochastic
learning所需要的时间。
stochastic learning:随即学习,这是一种在线的学习方法,即在对输入进行处理的时候,也不断在学习,相比于之前的batch learning,还是有很大的优势,因为batching learning只是在训练的时候会修正网络参数,等到真正对输入数据进行处理的时候,是不会在改变网络参数的。stochastic learning一次只输入一个样本,利用输入的一个样本,计算输入结果,并和目标结果做残差,然后利用残差修正网络参数,紧接着就对下一个样本进行训练,然后继续修正权值,就这样依次做下去。从这我们可以看出,stochastic的训练所需的计算量相比于batch
learning减少了很多,而且这是一种在线的学习方法。但是stochastic learning 也是有一些缺点的,由于每次只用一个样本进行训练,使得输入很容易受噪声影响,这可以算缺点,也可以算优点,是缺点是因为噪声使得每次迭代不一定朝最优的方向,是优点是因为这样的情况有时可以避免网络陷入局部最优。
对于stochastic learning受噪声影响的情况,很多深度网络的实现中都采用了batch learning 和stochastic learning相结合的方式,在这种方式中,每一次的训练即不使用全部的样本,也不只使用一个样本,而是使用10个或者别的合适数目的样本,这样就可以稍微消除噪声的影响,又可以进行在线学习。
相关文章推荐
- Java学习之反射机制---动态代理
- 2016年求职找工作千万小心这些求职陷阱
- etcd
- 【Linux】Linux系统下find指令详细用法与示例
- 理解Spring4.0新特性@RestController注解
- Android学习参考
- 输入输出(IO)简介
- Java For循環的幾種用法
- 第12周项目1 实现复数类中的运算重载
- 生成窗口最大值数组
- 数据库连接池 C3P0
- JavaScript 正则表达式——基本语法(2)
- leetcode-Longest Substring Without Repeating Characters
- MySQL事务及锁相关
- git 命令
- android View内容滑动的几种方式
- 为什么应该使用MyFragment.newInstance()创建新的Frgament,而不是new MyFragment()
- Git忽略已经被提交的文件
- PS制作出漂亮的唇彩效果
- Sublime Text3 配置 JAVA 运行环境