机器学习/算法工程师面试题目与答案-数学基础部分

news/2024/5/5 3:41:30

机器学习/算法工程师面试题目--数学基础部分

  • 一、数学基础
    • 1、微积分
      • SGD,Momentum,Adagard,Adam原理
      • L1不可导的时候该怎么办
      • sigmoid函数特性
    • 2、统计学,概率论
      • 求 Max(a, b) 期望
      • 拿更长的玫瑰花的最好策略
      • 最大化工作天数的员工数
      • 切比雪夫不等式
      • 随机截成三段组成三角形的概率
      • 最大似然估计和最大后验概率的区别
      • 什么是共轭先验分布
      • 概率和似然的区别
      • 频率学派和贝叶斯学派的区别
      • 从均匀分布变换到标准正态分布
      • Lasso的损失函数
      • Sfit特征提取和匹配的具体步骤
    • 3、线性代数
      • 求mk矩阵A和nk矩阵的欧几里得距离?
      • PCA中第一主成分是第一的原因?
      • 欧拉公式
      • 矩阵正定性的判断,Hessian矩阵正定性在梯度下降中的应用
      • 概率题:抽蓝球红球,蓝结束红放回继续,平均结束游戏抽取次数
      • 讲一下PCA
      • 拟牛顿法的原理
      • 编辑距离

请添加图片描述

一、数学基础

1、微积分

SGD,Momentum,Adagard,Adam原理

  • SGD
    -原理: SGD 是最简单的优化方法之一,它通过计算损失函数相对于参数的梯度来更新模型的参数。每次更新时,SGD 选择一个随机的样本或一小批样本来计算梯度,而不是整个数据集的梯度,这样可以显著减少计算成本。
    -更新规则: θ = θ − η ∇ θ J ( θ ; x ( i ) , y ( i ) ) \theta = \theta - \eta \nabla_{\theta} J(\theta; x^{(i)}, y^{(i)}) θ=θηθJ(θ;x(i),y(i)), 其中, η \eta η 是学习率

  • Momentum
    -Momentum 方法借鉴了物理中的动量概念,帮助SGD在相关方向上加速SGD并抑制震荡,通过引入“惯性”来更快地收敛。
    -更新规则:引入变量 𝑣 代表动量,更新规则为 v ← γ v + η ∇ θ J ( θ ) v \leftarrow \gamma v + \eta \nabla_{\theta} J(\theta) vγv+ηθJ(θ), 然后 θ ← θ − v \theta \leftarrow \theta - v θθv, 其中, η \eta η 是学习率, γ \gamma γ 是动量系数,通常设置为接近 1 的值(例如 0.9)以保持之前梯度的贡献。

  • Adagard
    -原理: Adagrad 自适应地调整每个参数的学习率,对于出现频率较低的特征给予更大的学习率,适合处理稀疏数据。
    -更新规则: θ = θ − η G t + ϵ ⊙ ∇ θ J ( θ ) \theta = \theta - \frac{\eta}{\sqrt{G_t + \epsilon}} \odot \nabla_{\theta} J(\theta) θ=θGt+ϵ ηθJ(θ), 其中, η \eta η 是初始学习率, ϵ \epsilon ϵ 是一个很小的数(例如 1 0 − 8 10^{-8} 108)以避免除以零, G t G_t Gt 是一个对角矩阵,其对角线元素等于参数的梯度平方的累积,即 G t = G t − 1 + ∇ θ J ( θ ; x ( i ) , y ( i ) ) ⊗ ∇ θ J ( θ ; x ( i ) , y ( i ) ) G_t = G_{t-1} + \nabla_{\theta} J(\theta; x^{(i)}, y^{(i)}) \otimes \nabla_{\theta} J(\theta; x^{(i)}, y^{(i)}) Gt=Gt1+θJ(θ;x(i),y(i))θJ(θ;x(i),y(i))

  • Adam
    -原理: Adam(Adaptive Moment Estimation)结合了Momentum和RMSprop(一种自适应学习率方法)的思想,不仅考虑了梯度的一阶矩估计(即均值,Momentum)也考虑了二阶矩估计(即未根号的方差,RMSprop)。
    -更新规则: Adam 更新规则复杂一些,包括偏差校正和自适应学习率。主要步骤为计算梯度的一阶矩和二阶矩的指数移动平均,然后对这些矩估计进行偏差校正,最后用校正后的值更新参数。即:
    First Moment Estimation: m t = β 1 m t − 1 + ( 1 − β 1 ) ∇ θ J ( θ ; x ( i ) , y ( i ) ) m_t = \beta_1 m_{t-1} + (1 - \beta_1) \nabla_{\theta} J(\theta; x^{(i)}, y^{(i)}) mt=β1mt1+(1β1)θJ(θ;x(i),y(i))
    Second Moment Estimation: v t = β 2 v t − 1 + ( 1 − β 2 ) ( ∇ θ J ( θ ; x ( i ) , y ( i ) ) ) 2 v_t = \beta_2 v_{t-1} + (1 - \beta_2) (\nabla_{\theta} J(\theta; x^{(i)}, y^{(i)}))^2 vt=β2vt1+(1β2)(θJ(θ;x(i),y(i)))2
    Bias Correction: m ^ t = m t 1 − β 1 t \hat{m}_t = \frac{m_t}{1 - \beta_1^t} m^t=1β1tmt, v ^ t = v t 1 − β 2 t \hat{v}_t = \frac{v_t}{1 - \beta_2^t} v^t=1β2tvt (由于 m t , v t m_t,v_t mt,vt是从初始化为0的向量开始的,它们会偏向于0,特别是在初始阶段。因此,需要进行偏差修正,以得到更准确的估计。)
    参数更新: θ = θ − η v ^ t + ϵ m ^ t \theta = \theta - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t θ=θv^t +ϵηm^t
    其中, η \eta η 是学习率, β 1 \beta_1 β1 β 2 \beta_2 β2 是衰减率通常分别设为 0.9 和 0.999, ϵ \epsilon ϵ 是一个很小的数(例如 1 0 − 8 10^{-8} 108),以避免除以零的情况。

L1不可导的时候该怎么办

L1 正则化由于在 θ = 0 \theta=0 θ=0 处不可导,常常在优化过程中带来问题。解决这个问题的常用方法是使用次梯度(subgradient)方法:

  • 次梯度: 在不可导点,L1正则化的次梯度可以定义为符号函数,即 sgn( θ \theta θ), 当 θ ≠ 0 \theta \neq 0 θ=0 时,有 sgn ⁡ ( θ ) = θ ∣ θ ∣ \operatorname{sgn}(\theta) = \frac{\theta}{|\theta|} sgn(θ)=θθ, 当 θ = 0 \theta = 0 θ=0 时,次梯度的取值范围为 [ − 1 , 1 ] [-1, 1] [1,1]

sigmoid函数特性

Sigmoid 函数定义为: σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+ex1
该函数具有以下特性:

  • 输出范围:Sigmoid 函数的输出始终在 ( 0 , 1 ) (0, 1) (0,1) 之间,适用于将任意实数映射到概率区间,常用于二分类问题。

  • S 形曲线:Sigmoid 函数是一个 S 形的曲线,能够从 0 平滑过渡到 1

  • 非线性:作为一个非线性函数,Sigmoid 可用于神经网络中的激活函数,帮助网络学习复杂的模式。

  • 导数:Sigmoid 函数的导数可以用其自身表示: σ ′ ( x ) = σ ( x ) ( 1 − σ ( x ) ) \sigma'(x) = \sigma(x)(1 - \sigma(x)) σ(x)=σ(x)(1σ(x)),这一性质使得在梯度计算中非常方便。

  • 饱和性:当输入 x x x 非常大或非常小时,Sigmoid 函数的导数接近于 0,可能导致梯度消失问题,这会使得网络训练中的权重更新非常缓慢。

  • 虽然 Sigmoid 函数在早期的神经网络模型中被广泛使用,但由于易于饱和和梯度消失的问题,现代深度学习通常更倾向于使用 ReLU 及其变种作为激活函数。

2、统计学,概率论

求 Max(a, b) 期望

a,b~U[0,1],互相独立,求Max(a,b)期望
a , b a, b a,b 独立且均匀分布于 [ 0 , 1 ] [0, 1] [0,1]。设 Z = max ⁡ ( a , b ) Z = \max(a, b) Z=max(a,b)。概率 P ( Z ≤ z ) P(Z \leq z) P(Zz) 表示 a ≤ z a \leq z az b ≤ z b \leq z bz 的概率,因为 a a a b b b 独立,所以: P ( Z ≤ z ) = P ( a ≤ z ) P ( b ≤ z ) = z 2 P(Z \leq z) = P(a \leq z)P(b \leq z) = z^2 P(Zz)=P(az)P(bz)=z2
概率密度函数 f Z ( z ) f_Z(z) fZ(z) P ( Z ≤ z ) P(Z \leq z) P(Zz) 的导数: f Z ( z ) = 2 z f_Z(z) = 2z fZ(z)=2z
期望 E ( Z ) E(Z) E(Z) 为: E ( Z ) = ∫ 0 1 z ⋅ 2 z d z = 2 ∫ 0 1 z 2 d z = 2 ⋅ 1 3 = 2 3 E(Z) = \int_0^1 z \cdot 2z \, dz = 2 \int_0^1 z^2 \, dz = 2 \cdot \frac{1}{3} = \frac{2}{3} E(Z)=01z2zdz=201z2dz=231=32

拿更长的玫瑰花的最好策略

一个活动,n个女生手里拿着长短不一的玫瑰花,无序的排成一排,一个男生从头走到尾,试图拿更长的玫瑰花,一旦拿了一朵就不能再拿其他的,错过了就不能回头,问最好的策略?
最优策略通常是“分段选择法”。具体地,可以设定一个阈值,例如只在前 k k k 朵中观察而不选择,然后从第 k + 1 k+1 k+1 朵开始,选择第一朵比之前所有 k k k 朵都要长的玫瑰花。这里 k k k 的最优选择通常依赖于总数 n n n 的一个函数,如 k ≈ n / e k \approx n/e kn/e

最大化工作天数的员工数

问题:某大公司有这么一个规定:只要有一个员工过生日,当天所有员工全部放假一天。但在其余时候,所有员工都没有假期,必须正常上班。这个公司需要雇用多少员工,才能让公司一年内所有员工的总工作时间期望值最大?
这个问题可以转化为求解最大化非休息天数的期望值。每个员工生日独立,每天有员工过生日的概率是 1 − ( 364 / 365 ) n 1 - (364/365)^n 1(364/365)n。总工作天数的期望值是 365 × k × ( 364 / 365 ) n 365\times k \times (364/365)^n 365×k×(364/365)n。通过求导找到此函数的最大值即可,求导设为0,得求解得到答案为365。

切比雪夫不等式

切比雪夫不等式提供了任意随机变量 X X X 的概率上界,其数学形式是:
P ( ∣ X − μ ∣ ≥ k σ ) ≤ 1 k 2 P(|X - \mu| \geq k\sigma) \leq \frac{1}{k^2} P(Xμ)k21
其中 μ \mu μ X X X 的均值, σ \sigma σ 是标准差, k k k 是任意正数。

随机截成三段组成三角形的概率

一根绳子,随机截成3段,可以组成一个三角形的概率有多大
这个经典问题的答案是 1 4 \frac{1}{4} 41。简单解释是,只有当三段中的每一段都小于另外两段之和时,才能形成三角形。在均匀随机切割的情况下,这一条件的概率是 1 4 \frac{1}{4} 41

最大似然估计和最大后验概率的区别

最大似然估计和最大后验概率的区别?
最大似然估计(MLE):估计参数以最大化观测数据的似然函数。
最大后验概率(MAP):除了似然函数,还考虑了参数的先验分布,估计参数以最大化后验概率

什么是共轭先验分布

在贝叶斯分析中,如果后验分布和先验分布属于同一类分布族,则称这两个分布为共轭分布。共轭先验使得数学处理和分析变得更加简便。

概率和似然的区别

概率:描述了在给定参数的情况下观测到某数据的可能性。
似然:在给定观测数据的情况下,描述不同参数可能性的函数。

频率学派和贝叶斯学派的区别

频率学派:将概率理解为长期频率,假设参数是固定的未知量,重点在于通过数据推断。
贝叶斯学派:将概率理解为对不确定性的度量,参数是随机变量,使用先验分布和数据来更新对参数的信念。

从均匀分布变换到标准正态分布

0~1均匀分布的随机器如何变化成均值为0,方差为1的随机器
假设变量 U U U 服从均匀分布 U ∼ Uniform ( 0 , 1 ) U \sim \text{Uniform}(0,1) UUniform(0,1)。要将 U U U 变换为标准正态分布 Z ∼ N ( 0 , 1 ) Z \sim N(0,1) ZN(0,1),我们可以使用逆变换法。具体步骤如下:

  1. 定义变量:设 U U U 是在区间 ( 0 , 1 ) (0,1) (0,1) 上均匀分布的随机变量。
  2. 用逆变换:计算 Z = Φ − 1 ( U ) Z = \Phi^{-1}(U) Z=Φ1(U),其中 Φ − 1 \Phi^{-1} Φ1 是标准正态分布的逆累积分布函数。

这里的 Φ − 1 \Phi^{-1} Φ1 通常无法用封闭形式表达,但可以通过数值方法如查表或特定的数学软件函数(如 MATLAB 的 norminv 或 Python 的 scipy.stats.norm.ppf)来实现。

标准正态分布的累积分布函数 Φ ( z ) \Phi(z) Φ(z) 定义为:
Φ ( z ) = 1 2 π ∫ − ∞ z e − t 2 2 d t \Phi(z) = \frac{1}{\sqrt{2\pi}} \int_{-\infty}^z e^{-\frac{t^2}{2}} \, dt Φ(z)=2π 1ze2t2dt,因此,逆变换 Φ − 1 ( u ) \Phi^{-1}(u) Φ1(u) 是求解 u = Φ ( z ) u = \Phi(z) u=Φ(z) z z z 的解。

Lasso的损失函数

Lasso回归的损失函数是线性回归损失与 L ( β ) L(\beta) L(β) 正则化项的组合:
L ( β ) = ∥ Y − X β ∥ 2 + λ ∥ β ∥ 1 L(\beta) = \lVert Y - X\beta \rVert^2 + \lambda \lVert \beta \rVert_1 L(β)=Y2+λβ1
其中:
- Y Y Y 是响应变量向量,
- X X X 是设计矩阵,
- β \beta β 是系数向量,
- λ \lambda λ 是正则化参数,用于控制系数的稀疏性。

Sfit特征提取和匹配的具体步骤

  1. 尺度空间极值检测
    构建尺度空间:这是通过对图像使用高斯模糊并逐步增加模糊程度来完成的,每个新图像都是在前一个图像的基础上进一步模糊得到的。
    查找尺度空间极值:在尺度空间中,每个像素都与它的邻居(同尺度的8个邻居和相邻尺度的18个邻居,共26个邻居)比较,以找到局部最大值和最小值,这些极值点是潜在的关键点。
  2. 精确定位关键点
    关键点定位:对尺度空间的极值点进行精确定位。这一步包括通过拟合三维二次函数来确定关键点的位置、尺度和比例。
    消除边缘响应:因为边缘的响应值比角点的大,所以需要消除稳定性差的边缘响应点。
  3. 关键点方向赋值
    方向赋值:每个关键点根据其局部图像性质赋予一个或多个方向,这使得 SIFT 描述符不受图像旋转的影响。
    计算梯度和方向:在关键点的邻域内计算图像梯度和方向,基于这些梯度分布,每个关键点被赋予主方向。
  4. 生成关键点描述符
    关键点描述:在每个关键点周围的区域内,根据关键点的尺度,选取相应的区域,然后在这个区域内创建描述符。描述符是通过计算图像梯度方向直方图来生成的,通常形成一个包含多个方向的直方图。
  5. 关键点匹配
    特征匹配:两幅图像中的 SIFT 特征通过比较它们的描述符来进行匹配。最常用的方法是寻找最近邻描述符,通常使用欧氏距离来度量。
    比例测试:为了提高匹配的可靠性,可以采用 Lowe 的比例测试,即保留那些比第二近邻距离小很多的匹配点(例如,最近邻距离是第二近邻距离的50%)。
    这些步骤概述了 SIFT 算法的核心过程,从特征提取到特征描述再到特征匹配。在计算机视觉应用中,这些步骤广泛用于图像识别、机器人导航、3D 建模等多种场景。

3、线性代数

求mk矩阵A和nk矩阵的欧几里得距离?

若要求两个矩阵 𝐴 和 𝐵 的欧几里得距离,首先需要注意的是,矩阵 𝐴 和 𝐵 必须具有相同的维度。假设矩阵 𝐴 是m×k 维度,矩阵 𝐵必须也是 m×k 维度。如果 𝐵是 n×k 维度,且 𝑛 ≠ 𝑚,那么直接求这两个矩阵的欧几里得距离是不合适的,因为它们的形状不一致。但如果确实有 m=n,则两个矩阵 𝐴 和 𝐵 的欧几里得距离可以通过以下方式计算:
dist ( A , B ) = ∑ i = 1 m ∑ j = 1 k ( A i j − B i j ) 2 \text{dist}(A, B) = \sqrt{\sum_{i=1}^{m} \sum_{j=1}^{k} (A_{ij} - B_{ij})^2} dist(A,B)=i=1mj=1k(AijBij)2
当 𝑛 ≠ 𝑚,替代方法有:

  • 填充
    如果可能,重新定义问题或调整数据,使两个矩阵具有相同的维度。例如,可以通过添加额外的零行或列来对较小的矩阵进行“填充”,使其尺寸与较大的矩阵匹配。
  • 使用不同的相似性/距离度量
    采用适用于不同维度数据的度量方式,例如:
    最大均值差异(Maximum Mean Discrepancy, MMD):这是一种衡量两个概率分布差异的方法,可以通过在两个矩阵的行上计算应用,尤其是在机器学习中用于比较样本分布。
    曼哈顿距离 或 余弦相似性:这些度量可以在某种程度上调整应用于不同维度的数据,特别是在处理文本或频率数据时。
  • 特征提取或降维
    对两个矩阵应用特征提取或降维技术(如主成分分析(PCA),自动编码器等),以生成具有相同维度的新表示,然后再计算这些新表示之间的欧几里得距离。
  • 核方法
    使用核技术将原始空间映射到一个更高维的特征空间,在这个新空间中可能更容易比较不同维度的数据。

PCA中第一主成分是第一的原因?

在PCA中,每个主成分都是正交的(互相垂直),并且每个新的主成分都捕获了剩余数据中最大的方差。因此,第一主成分是最重要的,因为它单独包含了最大的信息量。
PCA 目标: max ⁡ ∥ v ∥ = 1 { v T Σ v } \quad \max_{\|v\| = 1} \{ v^T \Sigma v \} maxv=1{vTΣv}
第一主成分: PC1 = X v 1 \quad \text{PC1} = X v_1 PC1=Xv1

欧拉公式

e i x = cos ⁡ ( x ) + i sin ⁡ ( x ) e^{ix} = \cos(x) + i\sin(x) eix=cos(x)+isin(x)
其中 e 是自然对数的底数(大约等于 2.71828), i i i 是虚数单位(满足 i 2 = − 1 i^2=-1 i2=1).
欧拉公式提供了一个强大的连接,将指数函数(通常在实数域中定义)扩展到复数域。这个公式可以用于将复指数函数表示为正弦和余弦函数的和,这在分析振动或波动现象时非常有用。
特殊情况:欧拉恒等式
x = π x=π x=π 时,欧拉公式变为著名的欧拉恒等式:
e i π + 1 = 0 e^{i\pi} + 1 = 0 e+1=0
这个恒等式被称为“数学中最漂亮的公式”,因为它简洁地联系了五个基本数学常数.

矩阵正定性的判断,Hessian矩阵正定性在梯度下降中的应用

  • 矩阵正定性的判断
    一个实对称矩阵 ( A ) 被称为正定的,如果对所有非零向量 ( x ),都有 ( x^T A x > 0 )。判断一个矩阵是否正定可以通过以下方法:
    -特征值:一个实对称矩阵是正定的当且仅当它的所有特征值都是正的。
    -主子式:矩阵的所有主子式(从左上角开始的子矩阵的行列式)必须为正。
    -Cholesky 分解:如果一个矩阵可以进行 Cholesky 分解(即 ( A = LL^T ) 其中 ( L ) 是下三角矩阵),那么这个矩阵是正定的。
  • Hessian 矩阵正定性在梯度下降中的应用
    在优化问题中,Hessian 矩阵是目标函数的二阶导数矩阵。它描述了目标函数的局部曲率,对算法的收敛速度和稳定性有重要影响。
    -正定性的意义
    正定 Hessian 矩阵:如果在某点的 Hessian 矩阵是正定的,那么该点是局部最小点。在这种情况下,梯度下降或牛顿方法等优化算法可以有效地收敛到最小点。
    负定或非正定:如果 Hessian 矩阵在某点非正定(包括负定或有零特征值),那么该点可能是局部最大点或鞍点,梯度下降法在这些点可能会遇到问题,如收敛缓慢或根本不收敛。
    -牛顿方法中的应用
    在牛顿方法中,更新规则为: x k + 1 = x k − H − 1 ∇ f ( x k ) x_{k+1} = x_k - H^{-1} \nabla f(x_k) xk+1=xkH1f(xk)
    其中, H H H 是在 x k x_k xk 处计算的 Hessian 矩阵, ∇ f ( x k ) \nabla f(x_k) f(xk) 是梯度。如果 H H H 是正定的,那么 H − 1 H^{-1} H1 也是正定的,这保证了搜索方向是下降方向,有助于快速收敛。
    -实际应用中的挑战
    在实际应用中,Hessian 矩阵可能非常大且计算成本高,同时其正定性也不总是保证的。因此,实际算法中常用的是梯度下降法的变体(如Adam、RMSprop等),或者在牛顿法中使用对Hessian矩阵的近似(如拟牛顿法)来提高效率和稳定性。

总结而言,Hessian 矩阵的正定性在优化问题中非常关键,特别是在使用基于二阶导数的方法时,如牛顿法。理解并计算 Hessian 矩阵的正定性可以显著影响算法选择和优化过程的效率。

概率题:抽蓝球红球,蓝结束红放回继续,平均结束游戏抽取次数

设有蓝球和红球,蓝球数量为 ( b ),红球数量为 ( r )。游戏规则如下:每次随机抽取一个球,如果抽到蓝球,则游戏结束;如果抽到红球,则将红球放回后继续抽取。我们的目标是计算游戏结束的平均抽取次数。
设 ( E(b, r) ) 表示当有 ( b ) 个蓝球和 ( r ) 个红球时,游戏结束的平均抽取次数。可以建立以下递归关系:
E ( b , r ) = 1 × b b + r + ( 1 + E ( b , r ) ) × r b + r E(b, r) = 1 \times \frac{b}{b+r} + (1 + E(b, r)) \times \frac{r}{b+r} E(b,r)=1×b+rb+(1+E(b,r))×b+rr
这个方程表明,如果第一次抽到蓝球(概率为 b b + r \frac{b}{b+r} b+rb),游戏立即结束;如果抽到红球(概率为 r b + r \frac{r}{b+r} b+rr)则继续游戏,此时期望抽取次数增加 E(b, r)。
化简上述方程得到:
E ( b , r ) = 1 + r b + r E ( b , r ) E(b, r) = 1 + \frac{r}{b+r} E(b, r) E(b,r)=1+b+rrE(b,r)
E ( b , r ) ( 1 − r b + r ) = 1 E(b, r) \left(1 - \frac{r}{b+r}\right) = 1 E(b,r)(1b+rr)=1
E ( b , r ) b b + r = 1 E(b, r) \frac{b}{b+r} = 1 E(b,r)b+rb=1
E ( b , r ) = b + r b E(b, r) = \frac{b+r}{b} E(b,r)=bb+r
因此,当有 ( b ) 个蓝球和 ( r ) 个红球时,游戏结束的平均抽取次数 E(b, r) 为 b + r b \frac{b+r}{b} bb+r。这表明平均抽取次数与蓝球的数量成反比,与总球数成正比。

讲一下PCA

PCA是一种常用的数据降维技术,它通过线性变换将原始数据转化为一组各维度线性无关的表示,称为主成分。PCA 主要用于提取数据中的重要特征,通过这些特征可以捕捉大部分数据集的方差。
工作原理:
标准化数据:使得每个特征均值为0,方差为1。
构建协方差矩阵:反映特征间的相关性。
特征分解:计算协方差矩阵的特征值和特征向量。
选择主成分:基于特征值大小,选取最重要的特征向量。
数据投影:将原数据映射到选定的特征向量上,实现降维。
优缺点:
优点:有效去除数据冗余和噪声,提升解释性。
缺点:仅适用于线性关系,对异常值敏感,需要数据标准化。

拟牛顿法的原理

拟牛顿法是一种用于寻找多变量函数的局部最小值的优化算法,属于无约束优化问题的求解方法。这类方法是牛顿法的改进版本,旨在通过近似牛顿法中的Hessian矩阵(二阶导数矩阵)或其逆矩阵来减少计算量和提高算法的稳定性。
核心原理
拟牛顿法使用一个矩阵 B k B_k Bk 来近似Hessian矩阵的逆。通过更新 B k B_k Bk,算法在迭代中逐步逼近函数的最小值。更新公式通常基于以下条件:
B k + 1 ( x k + 1 − x k ) = ∇ f ( x k + 1 ) − ∇ f ( x k ) B_{k+1} (x_{k+1} - x_k) = \nabla f(x_{k+1}) - \nabla f(x_k) Bk+1(xk+1xk)=f(xk+1)f(xk)
这称为拟牛顿条件,确保 B k B_k Bk 的更新能保持对梯度变化的有效逼近。

常用算法
DFP(Davidon-Fletcher-Powell)算法
BFGS(Broyden-Fletcher-Goldfarb-Shanno)算法
这两种算法通过不同的方式更新矩阵 B k B_k Bk,以保持或提高优化的效率和稳定性。

优点
不需要计算Hessian矩阵,减少了计算量。
特别适合于大规模优化问题。
拟牛顿法通过近似二阶导数信息,提供了一种在不牺牲太多精确度的情况下加速收敛的方法。它在机器学习和深度学习等领域的参数优化中非常有用。

编辑距离

编辑距离(Edit Distance),又称莱文斯坦距离(Levenshtein Distance),是一种衡量两个字符串之间差异的度量。它定义为将一个字符串转换成另一个字符串所需的最少单字符编辑操作的数量。常用的编辑操作包括插入(insertion)、删除(deletion)和替换(substitution)。
计算两个字符串之间的编辑距离的常用算法是动态规划。设有两个字符串 A 和 B ,其长度分别为 m 和 n 。创建一个大小为 ( m + 1 ) × ( n + 1 ) (m+1) \times (n+1) (m+1)×(n+1) 的矩阵D,其中 D [ i ] [ j ] D[i][j] D[i][j] 表示字符串 A 的前 i 个字符与字符串 B 的前 j 个字符之间的编辑距离。
初始化
D [ i ] [ 0 ] = i D[i][0] = i D[i][0]=i ( i 从 0 到 m )
D [ 0 ] [ j ] = j D[0][j] = j D[0][j]=j( j 从 0 到 n)

填充矩阵
对于每个 i(从 1 到 m )和每个 j(从 1 到 n ):
D [ i ] [ j ] = min ⁡ ( D [ i − 1 ] [ j ] + 1 , // 删除操作 D [ i ] [ j − 1 ] + 1 , // 插入操作 D [ i − 1 ] [ j − 1 ] + cost // 替换操作 ) D[i][j] = \min \left( \begin{array}{l} D[i-1][j] + 1, \text{ // 删除操作} \\ D[i][j-1] + 1, \text{ // 插入操作} \\ D[i-1][j-1] + \text{cost} \text{ // 替换操作} \end{array} \right) D[i][j]=min D[i1][j]+1, // 删除操作D[i][j1]+1, // 插入操作D[i1][j1]+cost // 替换操作
其中,如果 A [ i ] = B [ j ] A[i] = B[j] A[i]=B[j] 则 cost = 0,否则 cost = 1。

结果
最终的编辑距离是矩阵 D 中 D [ m ] [ n ] D[m][n] D[m][n] 的值。


http://www.mrgr.cn/p/30702226

相关文章

详细谈电脑ip、域名、内网、外网、localhost、127.0.0.1、网关等通讯基础知识(易懂)

1. ip地址与域名的定义以及其关系 ip地址的定义: IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。 IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一…

如何查看eclipse版本

进入eclipse文件夹 点击readme 点击readme_eclipse.html 所跳转页面中release后的数字就是eclipse版本了 参考—— https://www.php.cn/faq/420634.html

链式栈————出栈、入栈

链式栈————出栈、入栈以链表作为基础实现栈空间(链式栈) 如果打算实现链式栈,一般是以链表作为基础,一般是把链表头部作为栈顶,方便数据的插入和删除(头插+头删),链式栈相当于是一个单向不循环的链表。链式栈要注意的点:出栈要考虑栈是否为空 入栈要考虑栈中是否有…

半导体晶圆厂内外网数据单向导出,什么样的方案才安全又便捷?

半导体晶圆厂企业为了隔绝外部⽹络有害攻击、保护⽹络和数据安全,通常采⽤物理隔离的⽅式,将企业内⽹与互联⽹隔离。⽹络隔离后,基于业务开展需求,部分重要数据仍需由内⽹导⼊及导出⾄外部⽹络区域。为保障数据的安全合规性,企业需要对⽂件导出导出⾏为进⾏管控。 不少晶圆…

打破国外垄断|暴雨发布纯血国产电脑

要说现在国产手机这边已然进入纯自研模式,但电脑这边却还是仍未打破国外技术垄断。但就在刚刚,暴雨发布自研架构台式机open Station X ,这是纯血鸿蒙系统之后国产又一款纯血产品发布!标志的我们已经彻底打破西方在硬件及软件方面的…

用斐波那契数列感受算法的神奇(21亿耗时0.2毫秒)

目录 一、回顾斐波那契数列 二、简单递归方法 (一)解决思路 (二)代码展示 (三)性能分析 三、采用递归HashMap缓存 (一)解决思路 (二)代码展示 &…

UE5 GAS开发P34 游戏效果理论

GameplayEffects Attributes(属性)和Gameplay Tags(游戏标签)分别代表游戏中实体的特性和标识。 Attributes(属性):Attributes是用来表示游戏中实体的特性或属性的值,例如生命值、…

docker - [10] 容器数据卷

1、什么是容器数据卷?2、容器数据卷的使用将应用和环境打包成一个镜像,然后发布启动就成为一个容器了。 一、什么是容器数据卷容器数据卷(Container Data Volumes)是Docker管理的一种特殊类型的存储区域,它为容器提供了一种持久化数据、共享数据以及与宿主机或其他容器之…

dial tcp 192.168.0.190:443: connect: connection refused

1、场景 用nerdctl登录镜像仓库192.168.0.190(Harbor),报错 ERRO[0006] failed to call tryLoginWithRegHost error"failed to call rh.Client.Do: Get \"https://192.168.0.190/v2/\": dial tcp 192.168.0.190:…

shell脚本文本处理工具

声明: 以下内容为个人笔记,内容不完全正确,请谨慎参考。 文本处理工具 cut: cut 工作是“剪”,具体来说就是在文件中负责剪切数据。cut 命令从文件的每个行剪切字节、字符和字段输出。 1、基本语法: cut [选项参数] filename 说明:默认分隔符是副表符 2、选项参数说明 选…

网络隔离的最小配置

作者:任云康,青云科技研发工程师前言 对于项目下的网络隔离,有用户提出了以下疑问:网络隔离是针对 Pod 的吗? 网络隔离的最小配置是什么?配置后,哪些是可以访问的,哪些是不可以访问的? 通过 Ingress 暴露、LB 类型的 Service 暴露、NodePort 类型的 Service 暴露的流量…

输入‘(’和‘)’判断字符串有效的函数算法

`// 设置一个函数,通过输入键盘中的‘(’和‘)’判断字符串是否有效 // 顺序表中的元素数据类型是char类型 typedef char DataType_t; // 创建顺序栈SequenceStack各项数据(栈底地址 栈容量 栈顶元素下标)的结构体 typedef struct SequenceStack { DataType_t *Bottom;…

ctfshow web41-web50

web41 代码审计 <?php if(isset($_POST[c])){$c $_POST[c]; if(!preg_match(/[0-9]|[a-z]|\^|\|\~|\$|\[|\]|\{|\}|\&|\-/i, $c)){eval("echo($c);");} }else{highlight_file(__FILE__); } ?> 过滤了&#xff1a;[0-9] [a-z] ^ ~ $ [ ] { } & -…

Suno:一键生成原创音乐的AI!还不赶紧体验一下?

最近一两年,AI的发展是飞速的,从AI聊天到AI绘画,再到AI视频,一次一次的刷新我们的认知,最近AI一键生成音乐也出来了。不知道大家有没有刷到过。今天盘哥就来把它分享给大家,你也可以一键生成专属于自己的音乐。01 - Suno(网站) 它就是一个可以一键生成音乐的AI网站,我…

详解Al作画算法原理

ChatGPT AI作画算法&#xff0c;又称为AI图像生成算法&#xff0c;是一种人工智能技术&#xff0c;它可以根据给定的输入自动生成图像。这类算法近年来变得非常流行&#xff0c;尤其是随着深度学习技术的发展。这里我将聚焦于目前最先进的一类AI作画算法&#xff0c;即生成对抗…

3种方式自动化控制APP

自动化控制APP不管是在工作还是生活方面,都可以帮助我们高效地完成任务,节省时间和精力。本文主要介绍自动化控制APP的3种常用方式。 1、Python + adb这种方式需要对Android有一些基本的了解。adb是一种用于调试Android应用程序的工具。使用Python和adb可以轻松实现自动化控制…

Appium控件交互策略:优化自动化测试效率的关键方法

简介 与 Web 元素操作一样(参考 Selenium Web 元素操作),定位到 APP 控件元素后,可以对控件进行一系列的操作,实现与 APP 交互,比如点击、文本输入、元素属性获取等。 控件交互常用方法 常见操作点击方法 element.click()。 输入操作 element.send_keys(appium)。 清除操…

STM32玩转物联网实战篇:5.ESP8266 WIFI模块MQTT通信示例详解

1、准备开发板 开发板功能区分布图 开发板俯视图 2、实验讲解 在之前的章节中&#xff0c;已经讲解过了MQTT的通讯原理和组包过程&#xff0c;现在开始手把手的教大家用代码来实现连接MQTT平台以及数据的交互&#xff0c;实际上这篇文章已经拖更接近两年了&#xff0c;非常…

Part-DB 配置流程

介绍 Part-DB是一个开源的器件管理工具,博主用于管理个人的电子器材,最近捣鼓了一下这个工具,由于手头还有一块闲置的赛昉星光2的开发板,所以我打算一起拿来捣鼓一下,如果不成功,就用树莓派(生气😠) 1.安装 大家可以直接按照 官方安装指导 来安装即可,我也是参考官方…

【已解决简单好用】notepad++怎么设置中文

打开Notepad软件。点击软件界面顶部菜单栏中的“Settings”选项。在下拉菜单中选择“Preferences”进行语言设置。在打开的设置窗口中&#xff0c;找到“General”选项。在“General”选项中&#xff0c;找到“Localization”&#xff08;界面语言&#xff09;项。在下拉菜单中…