深度学习(batch,mini-batch,其它算法)

来源:互联网 发布:4g卡为什么显示3g网络 编辑:程序博客网 时间:2024/06/15 21:47

1 .batch vs mini-batch

2.理解mini-batch

分成几份,,,遍历做回归与反省回归。
若size=m,才相当于batch。
若size=1 ,随机梯度下降法(stochastic gradient descent)每个样本样本都是独立Mini_batch.
随机梯度下降法有很多的 噪声。指错方向。往往不会到达最小值,而是在附近波动.很显然,一个样本求一次梯度,没有用到向量,速度慢.若1 < size < m,学习速率最快。1 实现了向量化。2.不需要等待整个训练集处理完
Vectoration fast总的来说比随机梯度下降 更持续的接近最小值,也不一定在很小的范围内波动,如果出现波动,可以减小学习率
3How to choose size?
1 . small training set (m<=2000):use batch gradient descent
2 . bigger training set:64 to 512.consider computer memory,(2 to nth)
attention: make sure your mini-batch size fits in GPU/CPU memory

3.指数加权平均(exponentially weighted average):

4.理解指数加权平均

5.偏差修正

6.动量梯度下降法(Momentum):

![这里写图片描述](http://img.blog.csdn.net/20171005135513484?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzQwNTk5ODk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)![这里写图片描述](http://img.blog.csdn.net/20171005135709643?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzQwNTk5ODk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)1.  这种上下波动,不可能使用更大的学习率,会偏离函数范围,所以我们希望使用更小的学习率。

2. 你希望横轴上加快,纵轴上变慢,

7.RMS这里写图片描述

8.adam算法:

2个结合
Alpha:调试选择
Belta1:0.9
Belta:0.999
Epsilon:10-8 Adam作者这么认为
通常使用默认值,只调整alpha
Adaptive moment Estimation

9. 学习率衰减:

前期能承受较大的步伐,开始的alpha比较大。
学习率下降的方法:
1、 Decay rate: 衰减率
Epoch-num 第几代
这里写图片描述
2. exponentially decay :
这里写图片描述
3还有各种方法:
4. manual decay 手动衰减 模型数量小的时候

10. local optima in neural network

不太可能困在极差的局部最优中。(有很多的参数,J被定义在极大的维度空间)
局部最优这不是个问题。

平稳段 是最严重的问题。导数长时间未0。这也就是momentum 原因。
这里写图片描述
这里写图片描述

如果梯度为0,那么他在各个方向可能是凸函数,凹函数。
在20000维当中,维度都为0 的概率很小。。 很可能遇到上面的鞍点。

这里写图片描述
这点的梯度为0 。。

实际上,在低纬度的一些直觉 不能应用到高wei度上去。

附带数组 运算

数的平方和多次方 pow(a,2)
Array多次方 np.square(a) np.sqrt(a)
umpy.sqrt(array) 平方根函数
numpy.exp(array) e^array[i]的数组
numpy.abs/fabs(array) 计算绝对值
numpy.square(array) 计算各元素的平方 等于array**2
numpy.log/log10/log2(array) 计算各元素的各种对数
numpy.sign(array) 计算各元素正负号
numpy.isnan(array) 计算各元素是否为NaN
numpy.cos/cosh/sin/sinh/tan/tanh(array) 三角函数
numpy.modf(array) 将array中值得整数和小数分离,作两个数组返回二元ufunc
numpy.add(array1,array2)元素级加法
numpy.subtract(array1,array2) 元素级减法
numpy.multiply(array1,array2) 元素级乘法
numpy.divide(array1,array2) 元素级除法 array1./array2
numpy.power(array1,array2) 元素级指数 array1.^array2
numpy.maximum/minimum(array1,aray2) 元素级最大值
numpy.fmax/fmin(array1,array2) 元素级最大值,忽略NaN
numpy.mod(array1,array2)元素级求模
numpy.copysign(array1,array2) 将第二个数组中值得符号复制给第一个数组中值
numpy.greater/greater_equal/less/less_equal/equal/not_equal (array1,array2)元素级比较运算,产生布尔数组
numpy.logical_and/logical_or/logic_xor(array1,array2)元素级的真值逻辑运算

原创粉丝点击