小四的面试基础八股准备(持续更新)

过拟合与欠拟合

  • 过拟合是指模型在训练好(training loss 小),但在测试数据或验证差(test loss大)
    过度拟合了训练数据中的噪声和细节,导致其泛化能力下降。
  • 欠拟合是指模型在训练和预测的时候效果都不好,欠拟合指模型没有很好的捕捉数据特征,不能很好的拟合数据

判断过拟合的常用方法

  1. 训练误差和验证误差的比较:训练误差小而验证误差大
  2. 学习曲线:学习曲线展示了模型随训练过程(例如,训练次数或数据量增加)的表现情况。如果训练误差不断下降而验证误差在下降后又开始上升,通常表明模型开始过拟合。
  3. 交叉验证:(如k折交叉验证),交叉验证结果显示模型在多个数据子集上的性能波动很大,也可能存在过拟合。
  4. 模型复杂度:过于复杂的模型(如深层神经网络或高次多项式回归模型)容易过拟合,因为它们有能力记住训练数据中的所有细节。可以通过降低模型复杂度(如减少神经网络的层数或节点数,使用正则化等)来判断是否存在过拟合。
  5. 正则化参数:在使用带有正则化项的模型时(如L2正则化),如果正则化参数(如权重衰减系数)较小导致过拟合增大,那么增大正则化参数可能会减少过拟合。
  6. 特征选择:如果模型使用了太多无关或噪声特征,可能导致过拟合。可以通过特征选择、降维等方法减少特征数量来判断是否存在过拟合。

正则化

作用:防止模型过拟合(overfitting)。
正则化通过增加一个惩罚项来限制模型的复杂度,从而提高模型的泛化能力。
线性模型的正则化类型:岭回归( L 2 L_2 L2)、lasso回归( L 1 L_1 L1)、弹性网络( L 2 L_2 L2 L 1 L_1 L1结合)、提前停止

L1和L2正则化的区别? 如何选择?

  1. L2 正则化(Ridge Regression)
    Loss2 = Loss original + λ ∑ i = 1 n w i 2 \text{Loss2} = \text{Loss}_{\text{original}} + \lambda \sum_{i=1}^n w_i^2 Loss2=Lossoriginal+λi=1nwi2
    • λ \lambda λ 是正则化强度的超参数,拟合能力与泛化能力的权衡, λ \lambda λ的增加会导致更平坦(即不极端,更合理的预测),减少模型方差但增加了
    • 偏差 w i w_i wi是模型的权重,L2选择更多的特征,每个特征权值都比较小。

偏差与方差权衡
偏差:错误的假设,模型不够复杂,高偏差模型欠拟合数据
方差:模型对训练数据的变化过于敏感,过拟合数据
不可避免的误差:数据本身的噪声,只能通过清理数据(修复数据源or检测并移除异常值)
增加模型复杂度显著提升模型的方差并减少偏差,降低模型复杂度提升偏差降低方差,这就是权衡。

  1. L1 正则化(Lasso Regression)
    Loss1 = Loss original + λ ∑ i = 1 n ∣ w i ∣ \text{Loss1} = \text{Loss}_{\text{original}} + \lambda \sum_{i=1}^n |w_i| Loss1=Lossoriginal+λi=1nwi
    L1会使得部分模型参数趋近于0,从而实现特征选择的效果。
    L1优点将不重要的特征的权重置为0,从而提高模型的可解释性,并且可以减少模型的计算量。
    L1缺点在于它是不可导的,需要使用其他的优化方法来求解。
  • 选择正则化项
    • 特征的数量较大,L1可以减少不重要特征的权重,或者用弹性网络
    • 弹性网络由于lasso回归,因为当特征数量超过训练实例数,或者几个特征强相关时,lasso回归变现很不稳定
    • 训练集比较小,L2帮助模型更好地拟合数据。
    • 模型很复杂,L2限制模型的权重增长,防止模型过拟合。

为什么说L1正则化能表示稀疏性?

角度一:解空间的形状
KKT条件:带正则项和带约束条件是等价的。为了约束w的可能取值空间为最优化问题加上一个约束,就是w的L2范数的平方不能大于m。
L2正则化相当于为参数定义圆形的解空间,L1参数相当于为参数定义了棱形的解空间。在优化过程中,L1 正则化会更频繁地使权重变化方向指向坐标轴(即使某些权重变为零),而 L2 正则化则倾向于减小权重的大小,但不会使其完全变为零。请添加图片描述
角度二:函数叠加求导的角度

  • 对Loss1求导之后,L1正则化部分产生的倒数在原点左边部分 − C -C C,在原点右边边部分 + C +C +C,只要 L o s s o r i g i n a l Loss_{original} Lossoriginal的导数的绝对值小于 C C C,那么Loss1的导数在原点左边小于0,递减;那么Loss1的导数在原点右边大于0,递增。这样导致min很容易在原点部分取到。
  • 相反Loss2正则项在原点部分导数为0,只要 L o s s o r i g i n a l Loss_{original} Lossoriginal的导数不为0,那么L2只有减少w绝对值的作用,对解空间的稀疏性没有贡献。

参数稀疏的好处

  1. 特征选择(Feature Selection)
      参数稀疏可以实现特征的⾃动选择。⼀般来说,样本大部分特征最终的输出没有关系或者不提供任何信息的,在最⼩化⽬标函数的时候考虑这些额外的特征,虽然可以获得更⼩的训练误差,但在预测新的样本时,这些没⽤的信息反⽽会被考虑,从⽽⼲扰了对正确的预测。(即拟合能力好但是泛化能力差)稀疏规则化算⼦的引⼊就是为了完成特征⾃动选择,学习地去掉这些没有信息的特征,也就是把这些特征对应的权重置为0。
  2. 可解释性(Interpretability)
       模型更容易解释。利于预测患病相关的特征越少越好,仅有五个非0的weights,相比1000维而言,预测y的信息更巨大且决策性更强。

其他正则化的方式?

  • 弹性网络正则化(Elastic Net)
    结合了 L1 和 L2 正则化:
    Loss = Loss original + λ 1 ∑ i = 1 n ∣ w i ∣ + λ 2 ∑ i = 1 n w i 2 \text{Loss} = \text{Loss}_{\text{original}} + \lambda_1 \sum_{i=1}^n |w_i| + \lambda_2 \sum_{i=1}^n w_i^2 Loss=Lossoriginal+λ1i=1nwi+λ2i=1nwi2
    其中,(\lambda_1) 和 (\lambda_2) 分别是 L1 和 L2 正则化的超参数。

  • Dropout
    在神经网络中,随机丢弃一些神经元,以减少模型对特定神经元的依赖。训练时,以一定概率(如 0.5)随机忽略一些神经元,测试时使用所有神经元,但将其输出按相应比例缩小。

  • 数据增强(Data Augmentation)
    增加训练数据的多样性,通过对现有数据进行变换(如旋转、缩放、裁剪等)来生成新的训练样本,从而提高模型的泛化能力。

  • 早停(Early Stopping)

    • 在训练过程中监控模型在验证集上的性能,当性能不再提升时,停止训练,以防止模型在训练集上过拟合。当验证症误差达到最小值时停止训练。
    • 判断是因为当验证误差停止下降反而开始回升,说明模型开始过拟合训练数据。
    • 随机和小批量梯度下降解决方案:在验证错误超过最小值一段时间后停止,然后回滚模型参数到验证误差最小的位置。

损失函数

  • 损失函数定义:损失函数(loss function)能够量化目标的实际值与预测值之间的差距。
  • 通常我们会选择非负数作为损失,且数值越小表示损失越小,完美预测时的损失为0。

常见的损失函数

在分类和回归任务中,常用的损失函数有以下几种:

分类任务常用损失函数

  1. 交叉熵损失(Cross-Entropy Loss)
    L ( y , y ^ ) = − ∑ i = 1 N y i log ⁡ ( y ^ i ) L(y, \hat{y}) = -\sum_{i=1}^{N} y_i \log(\hat{y}_i) L(y,y^)=i=1Nyilog(y^i)
    其中,( y ) 是真实标签的一个one-hot表示,( \hat{y} ) 是模型预测的概率分布。

  2. 二元交叉熵损失(Binary Cross-Entropy Loss)
    L ( y , y ^ ) = − [ y log ⁡ ( y ^ ) + ( 1 − y ) log ⁡ ( 1 − y ^ ) ] L(y, \hat{y}) = - \left[ y \log(\hat{y}) + (1 - y) \log(1 - \hat{y}) \right] L(y,y^)=[ylog(y^)+(1y)log(1y^)]
    其中,( y ) 是实际标签(0或1),( \hat{y} ) 是预测的概率。

  3. 负对数似然损失(Negative Log-Likelihood Loss, NLL Loss)
    L ( y , y ^ ) = − log ⁡ ( y ^ c ) L(y, \hat{y}) = -\log(\hat{y}_{c}) L(y,y^)=log(y^c)
    其中,( c ) 是真实类别,( \hat{y}_{c} ) 是模型对类别 ( c ) 的预测概率。

回归任务常用损失函数

  1. 均方误差(Mean Squared Error, MSE)
    L ( y , y ^ ) = 1 N ∑ i = 1 N ( y i − y ^ i ) 2 L(y, \hat{y}) = \frac{1}{N}\sum_{i=1}^{N} (y_i - \hat{y}_i)^2 L(y,y^)=N1i=1N(yiy^i)2
    求导方便,能够用梯度下降法优化;对异常值敏感

  2. 平均绝对误差(Mean Absolute Error, MAE)
    L ( y , y ^ ) = 1 N ∑ i = 1 N ∣ y i − y ^ i ∣ L(y, \hat{y}) = \frac{1}{N}\sum_{i=1}^{N} |y_i - \hat{y}_i| L(y,y^)=N1i=1Nyiy^i
    异常点多的情况下鲁棒性好;但不方便求导

  3. 均方对数误差(Mean Squared Logarithmic Error, MSLE)
    L ( y , y ^ ) = 1 N ∑ i = 1 N ( log ⁡ ( 1 + y i ) − log ⁡ ( 1 + y ^ i ) ) 2 L(y, \hat{y}) = \frac{1}{N}\sum_{i=1}^{N} \left( \log(1 + y_i) - \log(1 + \hat{y}_i) \right)^2 L(y,y^)=N1i=1N(log(1+yi)log(1+y^i))2

  • 回归:平方误差函数。 当样本 i i i的预测值为 y ^ ( i ) \hat{y}^{(i)} y^(i),其相应的真实标签为 y ( i ) y^{(i)} y(i)时, 平方误差可以定义为以下公式:

l ( i ) ( w , b ) = 1 2 ( y ^ ( i ) − y ( i ) ) 2 . l^{(i)}(\mathbf{w}, b) = \frac{1}{2} \left(\hat{y}^{(i)} - y^{(i)}\right)^2. l(i)(w,b)=21(y^(i)y(i))2. 均方误差损失函数(简称均方损失)可以用于线性回归的一个原因是:
我们假设了观测中包含噪声,其中噪声服从正态分布。 噪声正态分布如下式:

y = w ⊤ x + b + ϵ , y = \mathbf{w}^\top \mathbf{x} + b + \epsilon, y=wx+b+ϵ,

其中, ϵ ∼ N ( 0 , σ 2 ) \epsilon \sim \mathcal{N}(0, \sigma^2) ϵN(0,σ2)

因此,我们现在可以写出通过给定的 x \mathbf{x} x观测到特定 y y y似然(likelihood):

P ( y ∣ x ) = 1 2 π σ 2 exp ⁡ ( − 1 2 σ 2 ( y − w ⊤ x − b ) 2 ) . P(y \mid \mathbf{x}) = \frac{1}{\sqrt{2 \pi \sigma^2}} \exp\left(-\frac{1}{2 \sigma^2} (y - \mathbf{w}^\top \mathbf{x} - b)^2\right). P(yx)=2πσ2 1exp(2σ21(ywxb)2).

现在,根据极大似然估计法,参数 w \mathbf{w} w b b b的最优值是使整个数据集的似然最大的值:

P ( y ∣ X ) = ∏ i = 1 n p ( y ( i ) ∣ x ( i ) ) . P(\mathbf y \mid \mathbf X) = \prod_{i=1}^{n} p(y^{(i)}|\mathbf{x}^{(i)}). P(yX)=i=1np(y(i)x(i)).

根据极大似然估计法选择的估计量称为极大似然估计量。 改为最小化负对数似然 − log ⁡ P ( y ∣ X ) -\log P(\mathbf y \mid \mathbf X) logP(yX)

− log ⁡ P ( y ∣ X ) = ∑ i = 1 n 1 2 log ⁡ ( 2 π σ 2 ) + 1 2 σ 2 ( y ( i ) − w ⊤ x ( i ) − b ) 2 . -\log P(\mathbf y \mid \mathbf X) = \sum_{i=1}^n \frac{1}{2} \log(2 \pi \sigma^2) + \frac{1}{2 \sigma^2} \left(y^{(i)} - \mathbf{w}^\top \mathbf{x}^{(i)} - b\right)^2. logP(yX)=i=1n21log(2πσ2)+2σ21(y(i)wx(i)b)2.

最 小化上式仅依赖于 w \mathbf{w} w b b b,不依赖于 σ \sigma σ。等价于最小化均方误差
在高斯噪声的假设下,最小化均方误差等价于对线性模型的极大似然估计。

svm损失函数

  • 合页损失函数(Hinge Loss)常用于支持向量机(SVM)中的分类任务,特别是二分类问题。它的公式如下:

L ( y , y ^ ) = max ⁡ ( 0 , 1 − y y ^ ) L(y, \hat{y}) = \max(0, 1 - y \hat{y}) L(y,y^)=max(0,1yy^)

在多分类问题中,可以使用多类合页损失(Multi-class Hinge Loss),其公式为:

L ( y , y ^ ) = ∑ i ≠ y max ⁡ ( 0 , 1 − y ^ y + y ^ i ) L(y, \hat{y}) = \sum_{i \neq y} \max(0, 1 - \hat{y}_y + \hat{y}_i) L(y,y^)=i=ymax(0,1y^y+y^i)

  • y ^ i \hat{y}_i y^i是模型对其他类别的预测分数。

  • hard Hinge Loss

    硬合页损失函数是合页损失函数的一个特例,用于支持向量机(SVM)等分类模型中。硬合页损失与标准合页损失类似,但它严格要求分类器的输出距离分界线(margin)至少为1。公式如下:

    L ( y , y ^ ) = { 0 , if  y y ^ ≥ 1 , 1 − y y ^ , if  y y ^ < 1. L(y, \hat{y}) = \begin{cases} 0, & \text{if } y \hat{y} \geq 1, \\ 1 - y \hat{y}, & \text{if } y \hat{y} < 1. \end{cases} L(y,y^)={0,1yy^,if yy^1,if yy^<1.

    • y y y 是真实标签,取值为 − 1 -1 1 1 1 1
    • y ^ \hat{y} y^ 是模型预测的值。

L0、L1、L2的区别

  • L0范数是指向量中⾮0的元素的个数。如果我们⽤L0范数来规则化⼀个参数矩阵W的话,就是希望W的⼤部分元素都是0即让参数W是稀疏的。
  • L1范数是指向量中各个元素绝对值之和,L1也可以使权重稀疏,是L0范数的最优凸近似
  • L2范数被称为岭回归或者权重衰减,它使得⽬标函数变为凸函数,L2范数可以使得权重⽐较⼩。⼀般来说权重⽐较⼩意味着模型⽐较简单,泛化性越强。

特征工程

为什么对连续数值进行特征归一化?

目的:为了消除数据特征之间量纲的影响,Normalization使得各指标处于同一数量级。
解释:随机梯度下降 没有特征缩放的目标函数形状椭圆的,在学习率相同的情况下,较小特征值的特征变量需要更大的权重(weights)来影响成本函数,更新速度更慢,整体相对于有相同数值规模的目标函数,需要较多的迭代才能找到最优解。

特征处理的方法

标准化与归一化的区别

归一化会改变数据的原始距离、分布、信息,但标准化不会
使用标准:
对输出范围有要求,归一化
数据稳定,不存在极端max或者min,用归一化
数据存在较多异常值或较多噪声,用标准化,间接避免。

sklearn中常见的特征处理的类

请添加图片描述

高维组合特征

组合特征:为了提高复杂关系的拟合能力,将一阶离散特征两两组合,构成高阶组合特征
构建组合特征:用户数量为m,物品数量为n,需要学习的参数的规模为m*n,简单两两组合特征的需要学习的参数量太大。
矩阵分解思路:
矩阵分解是一种常用的推荐算法技术,尤其适用于协同过滤推荐系统。它通过将用户-物品的评分矩阵分解为两个低秩矩阵的乘积,从而发现潜在的用户和物品特征。常见的矩阵分解方法包括奇异值分解(SVD)、非负矩阵分解(NMF)以及基于梯度下降的矩阵分解等。
明白了,下面我会用纯Markdown语法重新表述:

假设我们有一个用户-物品评分矩阵 R R R,其中 R i j R_{ij} Rij 表示用户 i i i 对物品 j j j的评分。矩阵分解的目标是将这个矩阵分解为两个矩阵 ( P ) 和 ( Q ) 的乘积:

R = P Q T R = PQ^T R=PQT

其中:

  • ( P ) 是用户特征矩阵,维度为 ( m*k),( m ) 是用户数量,( k ) 是特征数量。
  • ( Q ) 是物品特征矩阵,维度为 (n*k),( n ) 是物品数量,( k ) 是特征数量。
  1. 奇异值分解(SVD)

    • SVD 是一种常见的矩阵分解方法,将矩阵分解为三个矩阵的乘积: R = U Σ V T R = U \Sigma V^T R=UΣVT,其中 ( U ) 和 ( V ) 是正交矩阵,( \Sigma ) 是对角矩阵。可以通过保留对角矩阵中较大的奇异值,将其近似为低秩矩阵,从而实现降维。
  2. 非负矩阵分解(NMF)

    • NMF 是一种矩阵分解方法,要求分解得到的矩阵元素都是非负的。这种方法在推荐系统中比较常见,尤其是当评分数据是非负的(例如,只有喜欢的程度,没有负面评分)。
  3. 基于梯度下降的矩阵分解

    • 这种方法通过优化目标函数来学习矩阵 ( P ) 和 ( Q )。目标函数通常是预测评分与实际评分之间的均方误差,同时可以加入正则化项来防止过拟合。常见的优化方法包括随机梯度下降(SGD)。
  • 优势
    • 可以捕捉到用户和物品的潜在特征。
    • 在稀疏数据(如用户评分数据)上表现良好。
    • 可扩展性强,适用于大规模数据。

局限

  • 对新用户和新物品的冷启动问题无能为力(即无法处理完全没有评分的新用户或新物品)。
  • 矩阵分解模型的训练需要一定的计算资源,尤其是大规模数据集。

机器学习中样本不平衡的处理⽅法

处理样本不均衡的⽅法主要有以下三种:

  1. ⽋采样
    • ⽋采样(undersampling)法是去除训练集内⼀些多数样本,使得两类数据量级接近,然后在正常进⾏学习。(950负,50正,选10%的负➕50正做训练集)
      • 优点:平衡数据&减少数据量,加速训练。
      • 缺点:数据减少会影响模型的特征学习能力和泛化能力,会损失已经收集的信息,往往还会丢失重要信息
  2. ⽋采样改进⽅法1
       我们可以更改抽样⽅法来改进⽋抽样⽅法,⽐如把多数样本分成核⼼样本和⾮核⼼样本,⾮核⼼样本为对预测⽬标较低概率达成的样本,可以考虑从⾮核⼼样本中删除⽽⾮随机⽋抽样,这样保证了需要机器学习判断的核⼼样本数据不会丢失。
  3. ⽋采样改进⽅法2
       另外⼀种⽋采样的改进⽅法是 EasyEnsemble 提出的继承学习制度,它将多数样本划分成若 N个集合,然后将划分过后的集合与少数样本组合,这样就形成了N个训练集合,⽽且每个训练结合都进⾏了⽋采样,但从全局来看却没有信息丢失。
  4. 过采样
       过采样(oversampling)是对训练集内的少数样本进⾏扩充,既增加少数样本使得两类数据数⽬接近,然后再进⾏学习。(950负,50正,将正样本复制10倍➕950负做训练集)
      缺点是虽然引⼊了额外的训练数据,但没有给少数类样本增加任何新的信
    息,⾮常容易造成过拟合。
  • 过采样改进⽅法1
       使⽤数据增强⽅法
  • 过采样代表算法:SMOTE 算法
       SMOTE对少数样本进行人工合成的方式将新样本加入训练集。

特征降维

  • 数据降维:数据降维会丢失信息,但是加速训练。降低训练数据的维度过滤不必要的噪声从而导致性能更好。
  • 维度灾难:高维立方体中大多数点都非常接近边界。高维数据集稀疏:大多数训练实例之间相距很远,新的实例可能远离任何一个实例,即训练集维度越高,过拟合风险越大。

减少维度的主要方法

投影

原因:一部分特征恒定不变,其他特征高度相关。
方法:将高维(3D)投影到2D空间
评价:不总是最佳方法,总空间可能会发生扭曲

流形学习

2D流形是可以在更高维度空间中弯曲和扭曲的2D形状,但在第3维弯曲。d维流形是局部d维超平面

减少维度的主要技术

主成分分析(PCA)

PCA最大方差理论:识别最靠近数据的超平面,找数据集映射到每条轴上,找到数据分布最分散的轴,也就是方差最大的轴,保留了更多的差异性。
PCA最小平方误差理论:找d维超平面,使得数据点到这个平面的距离平方和最小。
x投影后的方差是协方差矩阵的特征值
最佳投影方向是最大特征值嘴硬的特征向量
次佳投影方向位于最佳投影方向的正交空间

可解释方差比:该比率表示沿着每个成分的数据集方差的比率

pca.explained_variance_ratio_

选择相加足够大的方差部分(95%)的d个维度

线性判别分析

归一化

批量规范化解决的就是在反向传播过程中层间训练速度不一致的问题,不会出现learing rate过大,上层梯度爆炸,下层梯度消失的情况
作用在 1.在mlp和卷积层输出上,激活函数前;2.mlp和卷积层输入上

归一化的方式有哪几种?

请添加图片描述

batch normalization

  • 定义:将一个batch里单个特征的所有样本求均值与方差进行归一化

  • 形式: x ∈ B \mathbf{x} \in \mathcal{B} xB表示一个来自小批量 B \mathcal{B} B的输入,

    B N ( x ) = γ ⊙ x − μ ^ B σ ^ B + β . \mathrm{BN}(\mathbf{x}) = \boldsymbol{\gamma} \odot \frac{\mathbf{x} - \hat{\boldsymbol{\mu}}_\mathcal{B}}{\hat{\boldsymbol{\sigma}}_\mathcal{B}} + \boldsymbol{\beta}. BN(x)=γσ^Bxμ^B+β.
    μ ^ B \hat{\boldsymbol{\mu}}_\mathcal{B} μ^B是小批量 B \mathcal{B} B的样本均值, σ ^ B \hat{\boldsymbol{\sigma}}_\mathcal{B} σ^B是小批量 B \mathcal{B} B的样本标准差。
    应用标准化后,生成的小批量的平均值为0和单位方差为1。

    拉伸参数(scale) γ \boldsymbol{\gamma} γ偏移参数(shift) β \boldsymbol{\beta} β,它们的形状与 x \mathbf{x} x相同。
    γ \boldsymbol{\gamma} γ β \boldsymbol{\beta} β是需要与其他模型参数一起学习的参数。作用是为了保证模型的表达能力不因为规范化而下降。

    μ ^ B = 1 ∣ B ∣ ∑ x ∈ B x , σ ^ B 2 = 1 ∣ B ∣ ∑ x ∈ B ( x − μ ^ B ) 2 + ϵ . \begin{aligned} \hat{\boldsymbol{\mu}}_\mathcal{B} &= \frac{1}{|\mathcal{B}|} \sum_{\mathbf{x} \in \mathcal{B}} \mathbf{x},\\ \hat{\boldsymbol{\sigma}}_\mathcal{B}^2 &= \frac{1}{|\mathcal{B}|} \sum_{\mathbf{x} \in \mathcal{B}} (\mathbf{x} - \hat{\boldsymbol{\mu}}_{\mathcal{B}})^2 + \epsilon.\end{aligned} μ^Bσ^B2=B1xBx,=B1xB(xμ^B)2+ϵ.

    方差估计值中添加一个小的常量 ϵ > 0 \epsilon > 0 ϵ>0,以确保我们永远不会尝试除以零,即使在经验方差估计值可能消失的情况下也是如此。估计值 μ ^ B \hat{\boldsymbol{\mu}}_\mathcal{B} μ^B σ ^ B {\hat{\boldsymbol{\sigma}}_\mathcal{B}} σ^B通过使用平均值和方差的噪声(noise)估计来抵消缩放问题。优化中的各种噪声通常导致更快的训练和较少的过拟合。

  • batch normalization的作用

    • 可以使⽤更⼤的学习率训练过程更加稳定,极⼤提⾼了训练速度。但是不会改变模型的精度
      • 因为不同层的参数可变范围不一样,反向传播时所有的权重会同时更新,避免过于震荡,学习率不得不设置得⾜够⼩,⾜够⼩就意味着学习缓慢。
    • 可以将bias置为0,因为Batch Normalization的Standardization过程会移除直流分量,所以不再需要bias。
    • 对权重初始化不再敏感,通常权重采样⾃0均值某⽅差的⾼斯分布,以往对⾼斯分布的⽅差设置⼗分重要,有了Batch Normalization后,对与同⼀个输出节点相连的权重进⾏放缩,其标准差 σ ^ B \hat{\boldsymbol{\sigma}}_\mathcal{B} σ^B也会放缩同样的倍数,相除抵消。BN和优化器良好配合,因为将参数的量级进行统一
    • 对权重的尺度不再敏感,理由同上,尺度统⼀由γ参数控制,在训练中决定。
    • 深层⽹络可以使⽤sigmoid和tanh,理由同上,BN抑制了梯度消失。
    • Batch Normalization具有某种正则作⽤,不需要太依赖dropout,减少过拟合。
  • 应用场景(缺点)

    • BN不适合处理序列数据(eg:文本数据),因为序列数据长度不一,rnn和lstm不适合BN
    • BN对于batch的大小很敏感,较小的batch_size表现不好是因为每个batch的统计特性可能会有较大的波动。
  • 预测过程中的批量规范化

    • 训练数据应用预测时,不需要样本均值中的噪声以及在微批量估计上估计每个小批量产生的样本方差了
    • 使用模型进行预测的时候,通过移动平均估算整个训练数据集的样本均值和方差。请添加图片描述

Layer normalization

  • 定义以及与BN的区别
    • Batch-normalization是在特征维度做normalization,是针对mini-batch所有数据的单个特征做的规范化。
    • Layer-normalization是在样本维度做normalization,即对单个样本的所有特征(channel)做规范化。
  • 优点:对单一样本进行归一化,对batch_size不敏感,处理序列数据表现更好;处理不同长度的序列更加灵活。

Normalization为什么会奏效?

  1. Normalization具有权重伸缩不变性(即对权重进⾏伸缩变换,规范化后的值是不变的),因此,这个性质就避免了反向传播因为权重过⼤或过⼩⽽造成的梯度问题,加速了收敛过程。同时这⼀属性也具有参数正则化的效果,避免了参数的⼤幅度震荡,提⾼了⽹络的泛化性能。
  2. Normalization具有数据伸缩不变性,这⼀性质可以有效地减少梯度弥散,简化学习率的选择。
  3. Normalization规范了每⼀层的数据输⼊,使得其分布⼀致,使得所有特征具有相同的均值和⽅差,这样这⼀
    层的神经元就不会因为上⼀层或下⼀层的神经元的剧烈变化⽽不稳定,也就加速了收敛。

Batch Normalization详解

在这里插入图片描述
神经⽹络⼀次反向传播过程会同时更新所有层的权重,前⾯层权重的更新会改变当前层输⼊的分布,对于浅层模型,⽐如SVM,输⼊特征的分布是固定的,即使拆分成不同的batch,每个batch的统计特性也是相近的,因此只需调整直线位置来适应输⼊分布,显然要容易得多。⽽深层模型,每层输⼊的分布和权重在同时变化,训练相对困
难。

从多层⻆度来看,在反向传播过程中,每层权重的更新是在假定其他权重不变的情况下,向损失函数降低的⽅向调整⾃⼰。问题在于,在⼀次反向传播过程中,所有的权重会同时更新,导致层间配合“缺乏默契”,相互配合越困难,⽂中把这个现象称之为 Internal Covariate Shift。为了避免过于震荡,学习率不得不设置得⾜够⼩,⾜够⼩
就意味着学习缓慢。

为此,希望对每层输⼊的分布有所控制,于是就有了Batch Normalization,其出发点是对每层的输⼊做Normalization,只有⼀个数据是谈不上Normalization的,所以是对⼀个batch的数据进⾏Normalization。
如果batch size为m,则在前向传播过程中,⽹络中每个节点都有m个输出,所谓的Batch Normalization,就是对该层每个节点的这m个输出进⾏归⼀化再输出,其操作可以分成2步:先标准化再伸缩变换。

⽣成模型与判别模型有什么区别?

⽣成模型

  • 定义:⽣成模型是那些能够对数据⽣成过程建模的算法。它们不仅学习输⼊数据与输出标签之间的关系,⽽且学习了每个类的特征分布以及输⼊数据本身的分布。⽣成模型关注于如何基于训练数据来产⽣(⽣成)新的实例。
  • ⼀些常⻅的⽣成模型包括:朴素⻉叶斯、隐⻢尔可夫模型、GAN、VAE、GPT
  • 优点:⽣成模型可以⽤于⽆监督学习(如聚类分析和密度估计),也可⽤于监督学习。此外,它们能够处理缺失数据的情况,具有较强的泛化能⼒,并且可以⽤于⽣成新的样本。
  • 缺点:⽣成模型通常⽐判别模型计算量⼤,训练时间⻓,因为它们需要估计整个数据分布。

判别模型

  • 定义:判别模型则关注于直接从输⼊数据学习到输出标签之间的条件概率分布或决策边界。它们不尝试建⽴数据⽣成的全局模型,⽽是专注于区分不同的数据类别。
  • ⼀些常⻅的判别模型包括:线性回归、决策树、神经⽹络、BERT
  • 优点:判别模型通常预测准确度较⾼,且在处理特定任务如分类和回归时,计算速度⽐⽣成模型快,因为它们只关⼼决策边界⽽⾮整个数据分布。
  • 缺点:判别模型通常不能很好地处理数据中的缺失值,不像⽣成模型那样可以⽣成新的数据样本。另外,它们通常对数据的分布做出更少的假设,这有时可能使它们对于数据中的噪声和异常值更加敏感。

梯度消失和梯度爆炸是怎么回事

梯度消失和梯度爆炸的原因

  1. 梯度消失(Vanishing Gradient)是指在深度⽹络中,随着错误反向传播到前⾯的层,梯度会变得越来越⼩,直到接近于零,使得⽹络中的前⾯⼏层学习得⾮常慢,甚⾄⼏乎不学习。这个问题通常是因为使⽤了某些激活函数,如Sigmoid或Tanh函数。这些激活函数在输⼊值较⼤或较⼩时,它们的梯度接近于零,从⽽导致梯度在反向传播过程中逐渐减少⾄接近零。梯度消失问题会导致⽹络难以学习到有⽤的特征,特别是在⽹络较深时这个问题更为严重。
  2. 梯度爆炸(Exploding Gradient)是指在深度⽹络的训练过程中,梯度的⼤⼩急剧增加,成指数级增⻓,从⽽导致数值变得⾮常⼤,以⾄于数字溢出或导致模型参数更新异常,从⽽使模型⽆法收敛。梯度爆炸通常在⽹络较深且⽹络结构复杂时发⽣,并且往往与权重初始化⽅法、学习率设置以及激活函数的选择有关。

如何缓解梯度消失和梯度爆炸

对于梯度消失问题:
使⽤ReLU(Rectified Linear Unit)激活函数,因为ReLU及其变种(如Leaky ReLU,PReLU等)在正区间梯度恒定,可以在⼀定程度上避免梯度消失问题;使⽤更加合适的权重初始化⽅法,⽐如He初始化或Xavier(Glorot)初始化,以确保⽹络前期不会因为激活函数导致梯度消失;
使⽤残差⽹络(ResNet)等架构,这种架构通过引⼊跳过连接,使得梯度可以直接反向传播,避免了深
层⽹络中梯度消失的问题。
对于梯度爆炸问题:
使⽤梯度裁剪(Gradient Clipping)技术,该技术通过将梯度的⼤⼩限制在⼀个阈值以内,来防⽌梯度
变得过⼤;
使⽤更加合适的权重初始化和合理设置学习率;
使⽤批量归⼀化(Batch Normalization)可以减轻梯度爆炸的问题,因为它通过规范化层的输⼊来控制
每层输⼊分布的变化。
通过这些⽅法的应⽤与组合,可以在很⼤程度上缓解梯度消失和梯度爆炸问题,使深度神经⽹络的训练变得更加稳
定和⾼效。

激活函数

激活函数参考(5种)

  1. 激活函数应该满足:
    • 非线性:激活函数非线性,线性激活函数无法解决复杂的非线性问题,即使有多层网络的叠加,最终的输出仍是输入的线性组合。非线性激活函数允许网络层之间的非线性映射,使得模型能够表达更复杂的函数。
    • 可微性:连续并可导(允许少数点上不可导),优化器用梯度下降更新参数。
    • 单调性:激活函数单调性,确保梯度的方向一致,不会产生相反的梯度方向。
    • 近似恒等性(Approximate Identity)通常指的是激活函数在某个特定区域内接近恒等函数 f(x)=x 的特性。具有近似恒等性的激活函数在输入接近零或特定范围内时,输出接近输入的值。这一特性有助于在训练初期保留输入信号的强度,避免梯度消失或爆炸问题。

优化器

添加链接描述
梯度下降最常⻅见的三种变形:BGD、SGD、MBGD,这三种形式的区别是取决 于我们⽤多少数据来计算⽬标函数的梯度。
● 梯度下降(GD):使用所有训练数据的平均损失来近似目标函数。耗时大。
● 随机梯度下降(SGD):用单个训练样本的损失来近似平均损失。
○ 优点:适用于训练数据量大的情况。
○ 缺点:容易陷入局部最优。收敛不稳定。
● AdaGrad:随着时间推移,学习率逐渐减小,保证算法最终收敛。
● Adam:兼具动量(梯度更新的初始速度)和环境感知能力(记录梯度的一阶矩和二阶矩,分别是过往梯度与当前梯度的平均;过往梯度平方与当前梯度平方的平均)。
○ 优点:为不同参数产生自适应的学习率。

评估指标

请添加图片描述
请添加图片描述请添加图片描述
请添加图片描述

机器学习基础部分

逻辑回归

  1. 定义:逻辑回归 = 线性回归 + sigmoid
    逻辑回归是假设数据服从伯努利分布,通过极大似然估计方法,利用梯度下降来启动参数,达到二分类目的的一个模型。
  2. 优点:
    • 形式简单,可解释性好,训练速度快
    • 不仅预测类别,并且预测概率,应用场景广泛,ctr排序
    • 获得特征权重,方便特征筛选
  3. 缺点:
    • 模型表达能力有限
    • 样本不均衡难以处理
    • 在非线性可分数据集性能有限
  4. 逻辑回归处理多标签任务的分类任务怎么做?
    • 一个样本对应一个label,sigmoid二分类,softmax多分类。
    • 一个样本对应多个(k)label,训练k个二分类逻辑回归分类器,第i个样本用来区分每个样本是否可以归为第i类分类器

树模型

决策树

  1. 定义:决策树是一种自上而下,对样本数据进行树形分类的过程,由节点和有向边组成,内部节点表示一个feature,叶节点表示label。
  2. 熵相关
    • 请添加图片描述
      熵越大,随机变量的不确定性越大,H(X)表示随机变量X的熵,p(x)表示X取某个值x的概率。

    • 经验熵
      对于样本集合 D D D ,类别数 K K K,数据集D的经验熵为 H ( D ) = − ∑ K k = 1 ∣ C k ∣ ∣ D ∣ l o g 2 ∣ C k ∣ ∣ D ∣ H(D)= -\sum_{K}^{k=1}\frac{\left | C_k \right | }{\left | D \right | } log_2 \frac{\left | C_k \right | }{\left | D \right | } HD=Kk=1DCklog2DCk
      C k C_k Ck是样本集合 D D D k k k类的样本子集, | C k | |C_k| Ck表示该子集的元素个数, | D | |D| D表示样本集合的元素个数。

    • 条件熵
      指在给定一个随机变量的条件下,另一个随机变量的不确定性,用于度量一个变量在另一个变量已知的情况下的不确定性。某个特征A对于数据集D的经验条件熵H(D|A)为 H ( D | A ) = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ ( − ∑ i = 1 n ∣ D i k ∣ ∣ D i ∣ l o g 2 ∣ D i k ∣ ∣ D i ∣ ) H(D|A)= -\sum_{i=1}^{n}\frac{\left | D_i \right | }{\left | D \right | } (-\sum_{i=1}^{n}\frac{\left | D_{ik} \right | }{\left | D_i \right | } log_2 \frac{\left | D_{ik} \right | }{\left | D_i \right | }) HDA=i=1nDDi(i=1nDiDiklog2DiDik)

    • 信息增益(ID3)
      用于衡量在决策树算法中选择一个特征进行分裂后,分类结果的纯度提高了多少,是熵的减少量。
      g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A) = H(D) - H(D|A) g(D,A)=H(D)H(DA)

      • 缺点:
        1. 选择g(D,A)最大的特征,所有样本根据此特征,划分到不同的节点上。在经验熵不为0的节点中继续生长。ID3算法只有树的生成,容易产生过拟合。
        2. 倾向于选择取值更多的特征,信息增益反映的是给定条件以后不确定性减少的程度,特征取值越多确定性越高,特征DNA每个人都不同,条件熵为0,但是这种泛化能力差。C4.5对取值较多的特征进行惩罚
        3. 只能处理离散变量
    • C4.5 最大信息增益比
      类似于ID3,信息增益除以数据集关于A的取值熵,C4.5可以处理离散和连续特征,并且支持缺失值处理。因为信息增益对取值数目多的属性有所偏好,为了减少这种偏好带来的影响,使用信息增益比来选择最优划分属性。
      处理连续变量时对数据排序之后找到类别不同的分割线作为切分点,根据切分点讲连续属性转化成多个取值区间的离散型变量。

    • CART 基尼系数
      请添加图片描述
      gini稀疏描述的是数据的纯度可以处理分类和回归问题,使用基尼指数作为特征选择准则,对离散特征和连续特征进行处理。基尼系数Gini(D)用来表示集合D的不确定性。CART在每一次迭代中选择划分后基尼指数最小的特征及其对应的切分点进行分类。CART是一颗二叉树,每次将数据按特征A的区分分成两份,分别进入左右子树。

    • 交叉熵:刻画两个概率分布之间的距离,通过q来表示p的交叉熵为;一般p(x)为真实分布,q(x)为预测分布。交叉熵不对称。交叉熵越小,概率分布越接近。
      H ( p , q ) = − ∑ x p ( x ) l o g q ( x ) H(p,q) = -\sum_{x}^{} p(x)logq(x) H(pq)=xp(x)logq(x)

    • KL散度
      请添加图片描述

如何对决策树进行剪枝?

一颗完整生长的决策树会有过拟合的问题,修建一些枝叶,提高模型的繁华能力。

剪枝的方法

  • 减枝方法

    • 前剪枝:在建树过程中,在决策树的节点分裂之前进行判断,如果继续分裂不能显著提高模型性能,就停止分裂并将当前节点标记为叶节点。这样可以避免过度拟合训练数据,但可能会导致欠拟合。

    • 后剪枝:在建树完成后,对决策树进行剪枝操作。通过递归地从底部向上剪枝,将一些子树替换为叶节点。剪枝过程使用验证集来评估剪枝后的模型性能,如果剪枝后模型性能没有显著下降,则进行剪枝操作。这样可以在一定程度上减小过拟合。

  • 剪枝的条件通常包括:

    • 树的深度达到预定的最大深度。

    • 叶节点中的样本数小于某个阈值。

    • 分裂后的子节点的性能不能显著提升。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值