择期-ml-理论学习第二轮笔试基础

第一题——理论题

T1:

Sigmoid:

公式是:

\[f(x)=1/(1+e^{-z}) \]

好处是可以和概率进行挂钩,可以作为输出层使用。

缺点是可能导致梯度消失,也由于涉及e,计算成本时间可能会更高。

同时因为值域为(0,1),权重更新效率低(梯度恒为正或负),不如Tanh好用

Tanh:

也叫做双曲正切函数,公式是:

\[f(x)=(e^x-e^{-x})/(e^x+e^{-x}) \]

相当于Sigmoid的改进版本,他是以0为中心,值域在(-1,1),收敛更快。

但是缺点和Sigmoid一样,容易出现梯度消失,也因为e的出现让计算效率变低。

ReLU:

\[f(x)=max(x,0) \]

通常用于缓解梯度消失的问题。同时计算效率很高。

但是要是输入全为0的话,自己梯度也就是0,最终导致神经元死亡。

T2:

梯度消失:
  1. 梯度消失是什么:在反向传播更新参数的时候,由于梯度是通过链式法则层层相乘的,反向传播接近输入层的时候,梯度

    很有可能及其接近0,于是靠近输入层的参数基本上得不到更新,使训练成本增大,训练效果减小。

  2. 为什么会出现梯度消失:前文提到“层层相乘”,如果层层的梯度都小于1,那很容易达到这个结果。

    例如sigmoid函数,最大的梯度也就是0.25,如果用的太多肯定会GG

梯度爆炸:
  1. 梯度爆炸是什么:其实我觉得就是梯度消失的一个反向极端,反向传播到接近输入层的时候梯度已经到特比特别大的一个值了,

    最后使模型非常不稳定(参数更新太大了),损失跌宕,数据甚至可能会溢出。

  2. 为什么会出现:同理“梯度消失”,典型例子是ReLU,他的梯度总是大于1.

如何解决?
  1. 根本上解决:使用更好的激活函数,避免以上情况。
  2. 权重初始化:让每一层输出的方差在正向传播时保持稳定,让每一层梯度的方差在反向传播时也保持稳定。(只能保证初期不会GG
  3. 批量归一化:(下文规范化中也有提到):在网络中的每一层(通常是激活函数之前)插入一个操作,对当前层的输出进行归一化,使其均值为0,方差为1。然后学习两个新的参数来进行缩放和偏移,以保留网络的表达能力。(这个比较有用)
  4. 梯度裁剪:(针对梯度爆炸):具体实现是在反向传播时发现“方向正确,大小错误”时,将原本很大的值强制性缩小

T3:

正则化:
  1. 正则化主要是解决过拟合问题,通过缩小特征的参数值(而不是去掉),使过拟合程度降低。

​ 实现方式是在成本函数中加入λ/2m*(所有w平方和),然后尽可能的减小w。

  1. 个人理解,这个w的平方和实际上是一种对于w的惩罚机制,应该可以进行进一步的变化。

​ 例如:w的平方和、w的绝对值和、或者两者同时取和。

​ 当然各种选择也会有不同的效果。

​ w的绝对值和:称为Lasso,可以将不重要的特征的权重直接压缩到0,来实现特征选择,得到一个更稀疏、更简单的模型。

​ w的平方和:称为Ridge,它认为所有特征都可能有用,但不能让任何一个特征“说了算”。通过将所有权重都缩小(但不为0)

​ 两者均使用:称为Elastic Net,剔除无关特征的同时,又能考虑到特征间的相关性,保持稳定性。

  1. 当然λ的选择需要注意。

​ 如果太小,那么过拟合不会修复。(加了和没有一样)

​ 如果太大,那么机器学习会最小化所有的w,最终拟合出常数函数fx=b,实现欠拟合。(惩罚太大了)

规范化:
  1. 个人理解,规范化是对特征进行一系列规范(包括缩放、处理异常值、规范化神经网络)的方法。

    这样,通过限制特征区域,使运算的效率得到提高。

    具体实现方式是数据预处理规范化神经网络内部规范化

  2. 数据预处理:

    第一:特征缩放:将数据的最大最小值规范到一个区间内。但是对异常值敏感,可能会存在压缩区间过于狭窄的问题。

    \[X_{norm}=(X-X_{min})/(X_{max}-X_{min}) \]

    第二:Z-Score 标准化:大概意思就是转化为正态分布(均值为0,标准差为1),对异常值的敏感度更低。

    \[X_{std}=(X-平均值)/标准差 \]

    第三:最大绝对值:压缩到[-1,1]之间。

    \[X_{norm}=X/max(abs(X_{max}),abs(X_{min})) \]

  3. 神经网络内部规范化:我的理解是将数据处理应该用在神经网络的层与层之间,使层与层间的传递效率得到提高

    一般都是用Z-Score 标准化来限制,但是与此同时还要尝试利用平移和缩放,防止该层表达能力被限制。

T4:

批量梯度下降:

选取所有样本,利用全体数据求梯度平均值并下降,稳定,但很容易走向局部最小值,而且对于内存的消耗会很大。

精度高,速度慢。

随机梯度下降:

每次选取全部样本中的一个,以此样本进行梯度求解并下降,因为随机化不容易走向局部最小值且内存消耗不大,但是稳定性非常差。精度低,速度快。

T5:

Epoch:

称为周期,可以视为成功跑完一次前向传播和反向传播并且完成一次参数更新。(要求所有训练数据被跑完一次)

Batch:

称为批次,一个批次为整个训练集的一部分数据(比如1000个里面的100个),跑完这个部分就完成了一个批次。

所有批次完成了就完成了一个周期。

Iteration

称为迭代,指的是利用一个batch成功跑完一次前向传播和反向传播,并且参数更新的过程。完成一个批次可以视为一次迭代。

T6:

卷积神经网络(CNN)
  1. 大概就是一种神经网络,可以理解为将外部信息转化为数据信息的过程,分为:输入、特征提取、输出三步。其中提取特征是关键。

  2. 卷积核:应用于提取特征(通常为第一步)

    说实话我真的不好描述这个微妙的过程。

    就比如说一个图片为6*6像素块(每一格按规律设定数字),我利用两个3 * 3的像素(一个提取行特征,一个提取列特征),

    6*6的像素块中所有3*3的块进行对应相乘并相加,填在相对应的4*4像素块中,我们就可以发现4*4像素块中的相应特征被完美提取出来了。

    当然要避免边缘化的问题,所以一般会对6*6的图像进行一定程度的扩大。

  3. 最大池化:应用于提取特征第二步。

    目的是将图片进一步压缩,最终表现出图片最有特征的部分。

    在上一步得到相应特征像素块后(以6*6为例),以2*2的网格将6*6划分成3*3,在3*3中,对应的像素点为对应2*2网格中的最大值。(真的不好表述QAQ)

  4. 扁平化处理:第三步:把池化后的像素块转化为像素条(一行行拆开、转置)并拼接,数据条连接到后面的隐藏层(全连接)进行分析最终输出结果。(将所有特征数据转化为可输入的数据)。

CNN里面的参数:
卷积层:
  1. 滤波器数量:也叫做输出通道数。它决定了这一层卷积会提取多少种不同的特征。数量越多,模型能学习的特征就越丰富,但计算量和参数也越多。(就如上文提到的行特征和列特征,这个数量就是2)
  2. 滤波器尺寸:通常是3*3, 5*5, 7*7等。在上文提到的就是3*3,也就是上文提到的行特征和列特征的大小尺寸
  3. 步长:滤波器在输入上移动的步长。默认是1。这个东西决定了提取特征后得到的像素块的大小,比如上面例子用的步长为1,最终得到了4*4的提取特征后的像素块大小
  4. 填充:也就是上面说的“避免边缘化,扩大”,这个扩大的尺度就是有它决定。
池化层:
  1. 池化类型:最常用的是最大池化和平均池化。最大池化提取最显著的特征(取区域内最大值为代表),平均池化提供平滑的、抗噪声的能力(取区域内平均值为代表)。
  2. 池化窗口尺寸:通常是2*2,也就是上述例子中“网格”的尺寸大小。
  3. 池化步长:通常是2,与2*2窗口结合,使特征图尺寸减半。

T7:

1*1卷积核的作用:

主要是进行降维和升维,从而达到简化计算的地步。

假设我们有一个尺寸为 H*W*1024 的特征图。如果我们用128个 1*1 的卷积核对其进行卷积,每个卷积核的尺寸是 1*1*1024,那么输出的特征图尺寸将是 H*W*128。反之,如果我们使用2048个1×1卷积核,就可以将通道数从1024提升到2048,增加网络的表达能力。

(ps:a*b*c通过x*y*c的1个卷积核最终会形成n*m*1矩阵,所以输出数据的通道数有卷积核个数决定的)

如果直接用128个3*3卷积核处理 H*W*1024 的特征图,计算量是巨大的。而1*1卷积先将其通道数降低(例如降到64),再进行3*3卷积,最后再恢复回去,可以极大地节省计算成本和参数数量。

\[参数量=卷积核个数*卷积核或原图通道数*(卷积核尺寸)+卷积核个数 \]

这里就是减少了“卷积或原图通道数”从而达成优化。

下图便于理解:QQ_1761026865903

T8:

感受野:我觉得是一种对应关系,指的是神经网络中,某个特征图上的一个点,其对应回原始输入图像上的区域大小。

换句话说,就是特征图上的一个像素点,它“看到”了输入图像的哪一块地方。

这是一个层层递进的概念,小的感受野经过一些列变化,和更多小的感受野组合成更大的感受野,最终组合成能看到整个图像的

感受野,并且能准确识别感受野范围内的特征。

T9:

池化:我认为就是把一个特征图进行分块、压缩。最常用的是最大池化和平均池化。最大池化提取最显著的特征(取区域内最大值为代表),平均池化提供平滑的、抗噪声的能力(取区域内平均值为代表)。

总而言之就是缩小数据,精简特征。

T10:

学习率衰减策略是什么?

随着每一个周期的进行,逐渐降低学习率。

学习率衰减的原因:

相当于对学习率的取值进行了优化。

学习率过大可能会导致越过最优点,于是在越靠近最优点的情况下,我们减小学习率就可以做到每次下降更少,从而达到更加精准的结局。

学习率过小可能会导致速度过慢,于是在初期,我们用更大的学习率,让下降更快,从而优化时间。

两者结合,就很轻易理解学习率衰减策略的原因了。

T11:

动量的含义:

个人理解哈,动量是一种速度的向量,表明了移动的方向。

动量在梯度下降的作用

梯度下降中,我们可能会遇到局部最优,或“之”字形下降,十分影响梯度下降的效率。

于是,我们引入历史动量:之前一段时间平均移动方向。

我们对当前移动方向(当前动量)和历史动量进行加权平均,得到目前较好的动量,并以此进行梯度下降。

这样做有什么好处呢?

可以更好滴跳出局部最优,平滑滴进行梯度下降,以及在复杂的函数上更快滴收敛。

总而言之,是一种“惯性”,会让梯度下降更符合常理与预期。

T12:

残差链接:

非常顶级的算法让我摸不着头脑,没学之前我是知道这个东西可是让神经网络层数深度大幅度增加了

残差连接的核心思想是:不再让一个网络层直接去学习目标映射 H(x),而是改为学习这个映射与输入 x 之间的残差 F(x) = H(x) - x。这样,原始的目标映射就变成了 H(x) = F(x) + x

何意味?

QQ_1761028972324

显然,我们在一开始就得到了x这个数据,如此一来,我们只需要得到H(x)-x并和x相加就能得到H(x)了。

为什么这么会更好?

在前文我们已经提到过梯度消失的问题,可能会影响靠近输入层的更新,这也说明了为什么深度越高,拟合程度却不一定越好的原因。

残差网络就可以解决这个问题,因为如果发现我反向传播走原来的路径拟合程度不好时,我们可以直接走short cut,从而达到“输入和输出相同的结果”。(因为大不了我将拟合的残差函数最终学习为0)

最终,就可以达到“学习效果至少不会降低”的程度,从而大幅度增加神经网络深度。

PS:个人被困在了“可以优化学习目标”的问题上,其实这是不一定的,例H(x)=x的残差函数0就很简单,但是当函数更加复杂时,甚至可能会复杂化学习目标。(当然,由于-x本身并不复杂,所以就算复杂化也不会复杂化到哪里去)。

T13:

两者的相同部分:(其实都是归一化)
是什么:

相当于对数据进行规范化,最终达到数据预处理的效果

怎么办:

先Z-Score 标准化,然后再使用两个变量γ与β对其进行非线性转化。

BN:(批归一化):

分[通道次]进行归一化,每次对一个通道层的数共同进行归一化。

对于卷积网络的学习非常有效,因为一般情况下给的图片数量是足够的。

如果卷积网络使用LN处理的话,很有可能会使画面模糊化,因为他把不同通道进行了模糊化(比如将R层和B层模糊,精度下降)

问题就是当图片数量过低(batch_size或n过小)时,均值和方差不稳定,拟合程度不好。

LN:(层归一化):

分[图片次]进行归一化,每次对一个图片所有数据进行归一化。

这个就是对BN进行了方式改写,一般比较适用于循环网络,因为他只专注于当前的样本,不会管其他样本。

循环网络一般会对不定长度的数据进行处理,从而可能在一个样本长度为114514,一个长度为1919810的时候,在时间步为114515前一个样本就没用了,最终导致精度下降,这个问题运用BN比较致命,

两者不同的部分(如下图)(四个数字分别代表【图片数、通道数、长、宽】)

QQ_1761122612517

posted @ 2026-05-28 22:32  铃狐sama  阅读(9)  评论(0)    收藏  举报