第四章 神经网络知识扩展

1.其他的神经网络学习算法

1.1介绍
梯度下降算法并不是神经网络的唯一算法,还有其他算法,我们喜欢称他们为优化器(Optimizer),优化器就是优化网络的机器,主要有以下几种。

1.2SGD优化器:
SGD优化器全称为随机梯度下降算法,可以简单的理解为梯度下降算法的改进版本。它的基本思想是,每次进行梯度下降时,不是更新全部的样本( y 1 , y 2 . . . y_1,y_2... y1,y2...),只是随机挑选部分进行更新,这样可以有效的在样本较多的时候减少计算。

1.3ASGD优化器:
ASGD 优化算法全称是随机平均梯度下降算法。基本思想是算法里面的空间换时间的思想,可以简单理解成改良版SGD。

1.4 Rprop优化器:
Rprop优化算法全称是弹性反向传播算法,该算法适合全样本的训练,目前已经很少用。

1.5 Adagrad优化器:
Adagrad是一种自适应优化算法,自适应地为各个参数分配不同的学习率。学习率的变化会受到梯度大小和迭代次数的影响。梯度越大,学习率就越小,梯度越小,学习率就越大,这样就不会出现下降尺度太大无法到达全局最优点的问题。其基本原理是累加前面所有梯度的平方作为分母,所以前期学习率可能会因为梯度小于1而增加,但是到了后期,学习率会很小很小,运行缓慢。

1.6 Adadelta优化器:
Adadelta算法其实是Adagrad算法的改进,它采用距离当前时间点最近的几个梯度平方的累加项作为分母,这样就不会出现后期学习率只会越来越小的问题。

1.7 RMSprop优化器:
RMS是均方根的意思(Root Meam Square)。它其实也是对Adagrad算法的一种改进,Adagrad用的是全部平方的和,它在这个基础上加上一个开平方,可以有效减小分母的大小,从而缓解学习率下降过快的问题。

1.8 Adam优化器
Adam也是一种自适应学习率的算法,它的基本原理是根据梯度的一阶矩估计和二阶矩估计动态地调整学习率。这个算法很好用,比之前的SGD要好很多,所以值得学习一下。
介绍一下什么是矩估计:
在说明什么是矩估计法之前先引进==“矩”的概念。在数学和统计学中,矩(moment)是对变量分布和形态特点的一组度量。在统计学中,总体特征数除了平均数、方差等,还有就是原点矩与中心距==,称其为总体中心距与总体原点矩。在样本特征数中也有原点矩与中心距,称其为样本原点矩与样本中心距。图片来自网络,侵权请联系1700098233@qq.com
可以看到,k阶总体矩就是由输出结果y的k次方乘以可能的概率算出的一个总体期望,k阶中心距是结果y减去数学期望 μ 也就是 y ^ \mu也就是\hat{y} μ也就是y^(之前我们学过的 δ \delta δ)组成的k次方再乘以可能的概率,二阶的中心距其实就是均方差。样本k阶原点矩就是部分输出x的K次方一个平均值,k次中心距是用(x-x的平均值)的K次方的平均值。一阶的时候,总体原点矩就是数学期望 μ \mu μ,样本原点矩是平均值,中心距是都是0。
矩估计法是参数估计中点估计的两种方法之一,另外一种参数的点估计是极大似然估计。矩估计就是用样本的矩去估计总体的矩,即用样本一阶原点矩去估计总体的一阶原点矩,用样本的二阶原点矩去估计总体的二阶原点矩。说白了就是用输入去估计输出。必须要注意的是,用来进行矩估计的是原点矩不是中心距原理就是我们这里只有部分的数据,我们用这个部分的数据来代表总体的数据。这里我们来举个例子:
例如:总体X服从正态分布N(μ,σ2),x1,x2,…xn是来自总体X的样本,请用矩估计法对正态总体中的未知参数μ与σ进行估计。

对于总体参数μ,因总体一阶原点矩即为参数μ。所以对应的,我们用样本一阶原点矩对总体参数μ进行估计。得出总体参数μ的估计值。
图片来自网络,侵权请联系1700098233@qq,com
对于总体参数σ,通过式(2),用样本二阶原点矩对总体参数σ进行估计。得出总体参数σ的估计值。
图片来自网络,侵权请联系1700098233@qq.com
这样我们即便没有完整的数据集,也可以猜测,完整数据集的期望值和方差,这样可以和原本数据进行比较。这在不知道真实的数学期望时,很好用。

1.9 Adamax优化器:
Adamax就是在Adam的基础上,添加了一个学习率上限的概念,有了学习率上限的约束,学习率不会无限地上升或者下降。

1.10 Spare Adam优化器:
SpareAdam算法针对的是如何解决稀疏张量的问题。稀疏张量是稀疏矩阵的高维扩展,其中非零元素表示为一组索引和关联值。其实就是输入或者输出有很多空值如何解决的问题。

1.11 L-BFGS优化器:
L-BFGS算法属于拟牛顿算法,可以节省内存。下面简单说说牛顿法是什么:
拟牛顿法和梯度下降算法一样一样只要求每一步迭代时知道目标函数的梯度。通过测量梯度的变化,构造一个目标函数的模型使之足以产生超线性收敛性。这类方法大大优于最速下降法,尤其对于困难的问题。说白了,它就是改良版梯度下降算法

其实如果你真的从事人工智能操作,你在需要用到的时候再去了解这些算法的细节就可以,甚至于你不理解也没有关系,因为已经有人把算法都打包好了,会用即可。如果真的想学习一两个建议学习一下SGD和Adamax,这两个算是最常用的。

2.参数的更新方法

2.1 批梯度下降
不管是什么样的算法,参数的更新方法都分为两种,一种是全部参数都进行统一计算,然后得到结果进行参数的更新。这也称之为批梯度下降法。它的优点是算的准确,缺点就是算的速度很慢。

2.2 单输入梯度下降
那另一种方法肯定就是对每个输入都单独的过神经网络,单独的更新,最后用更新好的参数带入下一个输入中去。优点是速度快,但是缺点就是全部更新以后的平均值未必就是全局最优。其实这就是随机梯度下降的原理,输入是全部输入的,但是在下降过程中只是随机的更新。

2.3 小批量梯度下降
把前面两种方法进行折中是最好的,就是把训练集分为一份一份的,比如每份200个,然后对于各份依次来优化网络,这样可以在最大程度上降低成本,也可以提升精度。

2.4 epoch和iteration
epoch就是一次所输入训练网络的全部样本量。iteration就是每次训练的批的量。注意,比如我的训练集有100000个数据,我不能一次全部都导入内存去训练,这样会导致内存不够,所以我们需要先设置epoch为1000(也就是先搞1000个数据进入内存),设置iteration为100(每批都是100个),安找小批量梯度下降去训练,练好以后再搞1000张,这样一直循环,直到全部训练完。伪代码如下:

while 1:
	#先导入1000张,这就是epoch,然后分成10份,这就是iteration
	for epoch in range(10)
		for iteration in range(100)
			# 这里就是你的神经网络代码,会保留更新后的权值矩阵
	if 1:# 还有图片:
		#继续导入1000张
	else:
		break

一般情况下,iteration要设置成2的n次幂,且不超64。

3.样本介绍

3.1 张量
我们在描述样本时,通常使用张量这个词。这是一个从力学来的物理概念,它其实是矩阵的延申,它没有长宽高的说法,我们可以简单地把它理解成多个矩阵组成的集合。Tensor是我们最常用的一种四维张量,我们学习它即可。

3.2 Tensor:
Tensor是一个变量,在PyTorch里面很常用,它是一种四维张量,结构是这样的:
s i z e = [ m , c , w , h ] size = [m,c,w,h] size=[m,c,w,h]
其中m代表的是处理的数量,比如输入是64张图片。c代表的是通道数,比如彩色图片有RGB三个通道。w和h可以简单的理解成矩阵的长和宽,对图片也是。

3.3 训练集
用来训练的数据,要随机且量足(差不多就行,太多也会过拟合)。

3.4 测试集
用来检验训练结果的。

3.5 交叉验证集
有时候不一定在测试集上通过的就是最优的,所以需要二次验证。前面三个本质上就是可以拿来输入的数据,比如图片等,没有什么区别。一般是6:3:1的比列来分割数据集,当然其他分割也可以。交叉验证集其实可有可无。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值