ARTICLE · 983566
《神经网络与深度学习通识版》第四章习题选
《神经网络与深度学习通识版》第四章习题选第四章的题目看起来和第二章的有点接近。 第一题: “在低维空间里,我们习惯担心“掉进局部最优爬不出来”;但在高维空间里,真正的困境变成了鞍点.请从“所有方向都向下”这件事发生的概率出发,说明为什么维度越高,严格局部最优越罕见,这也颠覆了很多人对“优化困难”的直觉.” 第一次接触到鞍点概念的时候,好像没有特别在意,经过这本书的梳理,才知道在深度神经网络场景中,这是优化器要面对的主要挑战。稍微展开一下,帮助自己理解。 首先,不能仅仅从直观的二维局部最优曲线图上去理解高维场景下的非凸函数的优化下降过程,在一般的教科书上,都会有连续2个或者3个坑的曲线图,使人对非凸函数的理解很快就固化成那种样子了。 其实,根据这本书中的介绍,对于一个局部最优或者全家最优点来说,严格的数据定义是这个点本身的梯度为0,但是各个方向的梯度都应该为正,也就是损失函数值应该变大,不同的方向可以对应到不同的维度。但是在高维场景下,要所有方向的梯度都是正的,几乎不可能(概率为2^(-N),N为维度值,对应2维场景是1/4,概率还是很高的,所以有很多局部最优),大部分情况都是有正,有负,就是说可能在很多方向上,这个点确实是谷底,但是对应某些方向,这个点其实是山顶。 然后书中对此的严格说明,用到了二阶的梯度矩阵,从特征值的角度来分析,这样就更有说服力了。在2014年的时候,有人发了论文,通过实际实验验证了这一点。通过这个事例可以看出,在网络训练过程中,还是不能只依靠直觉,需要通过理性的数学分析来解决问题。 第五题: “学习率常被称作‘最重要的超参数’。请从 ‘一次不敢走太远,一次不敢走太近’ 的角度,解释为什么训练震荡和训练停滞是同一组现象的两极.然后思考:学习率衰减为什么是一种优雅的折中?” 具体到模型中的某个参数,在优化过程中,一旦确定了梯度之后,采用的更新公式为θ_t+1 = θ_t - η·g_t,其中的η就是学习率。题目中提到了两种现象,一个是训练震荡,一个是训练停滞,前者说的是,损失函数值在参数调整之后,开始可能下降,然后反而上升,再不断重复这个波动震荡的过程,后者自然就是损失函数在参数多次调整后,没有什么变化,像是停滞了一样。出现这些情况的原因和学习率有密切关系的原因在于损失曲面总体的复杂形状。有时曲面比较狭窄陡峭,有时过于平坦,导致在陡峭的情况下如果采用较大学习率,会使得参数下降步子迈得太大,跨过了峡谷,结果在两边山坡上来回跳,不是向峡谷下面走。与此相对是在平坦区域步子太小,进展缓慢。 所以,题目中说这是一组现象的两个极端,意思是说两种情况下学习率设定都是没有适配好损失曲面的复杂形状。进一步来说,采用单一学习率可能总是出现无法很好适配不同位置和不同方向的曲率差异。学习率衰减(Learning Rate Decay)的策略是:在训练初期用较大的学习率快速探索,后期逐步缩小学习率精细调整。 这样可以在训练初期快速穿越无效搜索空间,并且训练中期在潜在区域探索,避免被震荡困住,在后期快要到达优化目标谷底时尽量保持精细搜索,避免漏掉真正的极小值。 现代优化器(如 Adam)在此基础上进一步做了逐参数自适应学习率(根据梯度历史方差调整每个维度的步长),本质上是在空间维度上也进行了“曲率匹配”,与学习率衰减的时间维度配合,形成了一组完整的“时空自适应”策略。 第六题: “批量规范化和层规范化的差别,看似只是‘沿哪个维度求均值’,背后却对应着两种关于‘什么是同类样本’的不同假设.请解释这一差别,并思考为什么Transformer更偏好层规范化.” 不管是批量规范化还是层规范化,都是规范化,实际就是执行对样本值减去均值,除以标准差的操作,目的是让神经网络某一层的输入或者输出的分布保持在一定范围之内,使得优化能够正常进行。和层规范化相关的还有RMSNorm,就是不减去均值,只进行缩放操作(没有均值自然就不好算方差和标准差,只有均方根了)。 然后这个均值和标准差的计算就有讲究。 在批量规范化中,每个特征通道都有自己的均值和方差,原因在于开始的时候这个是用于CNN的图片处理,每个样本都是一个展开的图片,自然一个批次中不同样本的同样的特征通道对应着图片上的同样的位置,假设这些值来自同样的分布是合理的。 层规范化正好和批量规范化反过来,不是在批次中的不同样本的特征通道上计算均值,而是在同一个样本的所有特征通道上计算。实际上,即便一个批次中只有一个样本,对于层规范化来说也是无所谓的。这个基本是用在语言模型上,通常输入是形状为[Batch Size, Sequence Length, Hidden Size] 的张量,而层规范化是在最后一维,Hidden Size上计算均值和方差。实际是计算每个token的特征维度的统计分布,而不同的样本对应于不同的序列,讨论不同句子的相同位置的分布确实没有什么意义。 不过,对于使用Transformer替代了CNN的模型来说,也都换成使用层规范化,网上提示主要还是因为Transformer的核心是自注意力(Self-Attention)—每个位置通过查询所有位置来更新自己。这个过程天然是“样本内”的,因而很难在这种模型中使用批量规范化。 第八题: “暂退法与数据增强都是正则化手段,一个从模型端加扰动,一个从数据端加扰动.请比较它们的作用机制,并思考:它们能否同时使用?同时使用时会不会互相干扰?” 选择的本章最后一题,比前面几个要抽象不少,也没有多少自己的真正理解。 记得在尝试训练CNN的时候,确实把两种正则化叠加使用过,应该效果比没有正则化的时候好,好像是把dropout叠加到梯度衰减上会效果差一点,但是叠加上数据增强完全是正向的。 训练一个图像分类器时,一般是先对图片做随机裁剪、翻转、色彩抖动(数据增强),然后送入网络,在卷积层后或全连接层前加Dropout。这已经是多年来的标准流程。 据说,Dropout机制是随机将神经元的输出置零(或缩放),破坏内部协同适应,防止神经元之间过度依赖(共适应),学习更多的冗余路径;而数据增强则是对原始输入进行几何/色彩/噪声变换,创造虚拟样本,防止模型对特定像素/模式过拟合,扩大训练分布覆盖范围。