1、余弦相似度的公式及核心解释
一、核心公式(向量形式,纯文本兼容版)
余弦相似度用于衡量两个非零向量在空间中的方向相似性,公式定义如下:
对于两个 n 维向量 A = (a₁, a₂, ..., aₙ) 和 B = (b₁, b₂, ..., bₙ),余弦相似度 cos(θ) 为:
cos(θ) = (A·B) / (||A|| × ||B||)
二、公式拆解说明(纯文本分步呈现)
-
分子:向量点积(内积)
向量 A 和 B 的点积计算:
A·B = a₁×b₁ + a₂×b₂ + ... + aₙ×bₙ = Σ(从 i=1 到 n)aᵢ×bᵢ
(注:Σ 表示求和,即所有对应维度元素相乘后累加)
-
分母:向量模长的乘积
- 向量 A 的模长(向量的长度):
||A|| = √(a₁² + a₂² + ... + aₙ²) = √[Σ(从 i=1 到 n)aᵢ²] - 向量 B 的模长:
||B|| = √(b₁² + b₂² + ... + bₙ²) = √[Σ(从 i=1 到 n)bᵢ²]
(注:√ 表示平方根,分母作用是归一化,消除向量长度对结果的影响)
- 向量 A 的模长(向量的长度):
三、关键特性与适用场景
-
取值范围:cos(θ) ∈ [-1, 1]
- cos(θ) = 1:两向量方向完全一致(相似度最高);
- cos(θ) = 0:两向量垂直(无方向相关性);
- cos(θ) = -1:两向量方向完全相反(相似度最低)。
-
核心优势 :
不依赖向量"长度",仅关注"方向"。例如:向量 (1,2,3) 和 (2,4,6)(长度不同但方向一致)的余弦相似度为 1,而欧氏距离会因长度差异显示为非零值。
-
典型应用:
- 文本相似度计算(词向量、句子嵌入对比);
- 图像特征匹配(如SIFT、CNN特征向量相似性判断);
- 推荐系统(用户偏好与物品特征向量匹配);
- 大模型语义相似度衡量(Embedding向量对比)。
四、面试延伸考点
- 与欧氏距离的区别:欧氏距离关注"向量空间绝对距离",余弦相似度关注"方向一致性";高维场景(如大模型Embedding)中,余弦相似度对长度不敏感的特性更优。
- 优化计算:若向量已归一化(模长=1),余弦相似度可直接简化为点积(A·B),降低计算复杂度(大模型工程落地常用此优化)。
2、牛顿迭代法:通俗解析 + 实战场景
一、核心思想:用"切线"逼近方程的根
牛顿迭代法是求解方程 ( f(x) = 0 ) 根的高效数值方法 ,本质是用函数在某点的切线替代曲线,通过迭代让近似根不断逼近真实根------好比从山坡上沿最陡的切线方向往下走,几步就能到谷底(方程的根)。
二、核心公式(CSDN兼容LaTeX)
1. 迭代递推公式
xn+1=xn−f(xn)f′(xn)x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}xn+1=xn−f′(xn)f(xn)
其中:
- ( x_n ):第( n )次迭代的近似根;
- ( x_{n+1} ):第( n+1 )次迭代的近似根(更接近真实解);
- ( f(x_n) ):函数( f(x) )在( x_n )处的函数值;
- ( f'(x_n) ):函数( f(x) )在( x_n )处的一阶导数值(切线斜率)。
2. 多项式函数导数公式
若 ( f(x) = a_kx^k + a_{k-1}x^{k-1} + \dots + a_1x + a_0 ),则导数为:
f′(x)=kakxk−1+(k−1)ak−1xk−2+⋯+a1f'(x) = ka_kx^{k-1} + (k-1)a_{k-1}x^{k-2} + \dots + a_1f′(x)=kakxk−1+(k−1)ak−1xk−2+⋯+a1
三、实战例子:用牛顿法求( \sqrt{2} )(解方程( f(x) = x^2 - 2 = 0 ))
目标:找到( x )使得( x^2 - 2 = 0 ),即( x = \sqrt{2} \approx 1.4142 )。
步骤1:确定函数与导数
函数:( f(x) = x^2 - 2 )
导数:( f'(x) = 2x )
步骤2:给定初始值( x_0 = 1 )
步骤3:迭代计算
- 第1次迭代:
x1=1−12−22×1=1−−12=1.5x_1 = 1 - \frac{1^2 - 2}{2 \times 1} = 1 - \frac{-1}{2} = 1.5x1=1−2×112−2=1−2−1=1.5 - 第2次迭代:
x2=1.5−1.52−22×1.5=1.5−0.253≈1.4167x_2 = 1.5 - \frac{1.5^2 - 2}{2 \times 1.5} = 1.5 - \frac{0.25}{3} \approx 1.4167x2=1.5−2×1.51.52−2=1.5−30.25≈1.4167 - 第3次迭代:
x3=1.4167−1.41672−22×1.4167≈1.4167−0.0072.8334≈1.4142x_3 = 1.4167 - \frac{1.4167^2 - 2}{2 \times 1.4167} \approx 1.4167 - \frac{0.007}{2.8334} \approx 1.4142x3=1.4167−2×1.41671.41672−2≈1.4167−2.83340.007≈1.4142
仅3次迭代就精准逼近( \sqrt{2} ),体现牛顿法二阶收敛优势(误差按平方级减小)。
四、适用场景(结合实际工作)
- 计算器/编程语言数值计算
求平方根、自然对数、三角函数等,本质是解非线性方程:
- 求( \ln 3 )(解方程( f(x) = e^x - 3 = 0 )),迭代公式:
xn+1=xn−exn−3exnx_{n+1} = x_n - \frac{e^{x_n} - 3}{e^{x_n}}xn+1=xn−exnexn−3
-
机器学习:参数优化
逻辑回归最小化损失函数( L(\theta) ),等价于求解( L'(\theta) = 0 ),迭代公式:
θn+1=θn−L′(θn)L′′(θn)\theta_{n+1} = \theta_n - \frac{L'(\theta_n)}{L''(\theta_n)}θn+1=θn−L′′(θn)L′(θn)其中( L''(\theta_n) )是损失函数的二阶导数(海森矩阵),收敛速度远快于梯度下降(适合小样本、低维模型)。
-
工程设计:非线性问题求解
- 二极管电流-电压关系(( I = I_0(e^{U/U_T} - 1) )),已知( I )求( U )的迭代公式:
Un+1=Un−I0(eUn/UT−1)−II0⋅eUn/UT/UTU_{n+1} = U_n - \frac{I_0(e^{U_n/U_T} - 1) - I}{I_0 \cdot e^{U_n/U_T}/U_T}Un+1=Un−I0⋅eUn/UT/UTI0(eUn/UT−1)−I - 机械结构受力平衡:求解含非线性形变的方程,牛顿法可快速得到工程解。
五、适用条件(面试核心考点)
- 函数( f(x) )在根附近连续且二阶可导;
- 初始值( x_0 )需靠近真实根(否则可能发散,如( x_0 = 100 )求( \sqrt{2} )会增加迭代步数);
- 迭代中( f'(x_n) \neq 0 )(分母不为0,避免切线平行于x轴);
- 单根(( f(x^) = 0 )且( f'(x^ ) \neq 0 ))时二阶收敛;重根(如( f(x) = (x-1)^2 = 0 ))需修正公式:
xn+1=xn−k⋅f(xn)f′(xn)x_{n+1} = x_n - k \cdot \frac{f(x_n)}{f'(x_n)}xn+1=xn−k⋅f′(xn)f(xn)
其中( k )为重根数(此处( k=2 ))。
六、总结
-
- 核心公式(必记):
xn+1=xn−f(xn)f′(xn)x_{n+1} = x_n - \frac{f(x_n)}{f^\prime(x_n)}xn+1=xn−f′(xn)f(xn)
- 核心公式(必记):
- 适用场景:计算器数值计算、机器学习小样本参数优化、工程非线性方程求解;
- 关键条件:函数可导、初始值靠近真实根、导数非零;
- 优势与局限:收敛快(二阶),但对初始值敏感、高维场景(如大模型)计算二阶导数成本高。