数学
数学
ZEROKO14记录一些基本的数学知识
卷积神经网络的底层是傅里叶变换,傅里叶变换的底层是希尔伯特空间坐标变换
LLM数学原理
平均
| 平均数类型 | 公式 | 适用场景 |
|---|---|---|
| 算术平均数 (AM) | $\frac{x_1 + x_2 + \dots + x_n}{n}$ | 用于一般数值,如温度、价格等 |
| 几何平均数(GM) | $\sqrt[n]{x_1 \times x_2 \times \dots \times x_n}$ | 适用于增长率、投资回报率等情况 |
| 调和平均数(HM) | $\frac{n}{\sum_{i=1}^{n} \frac{1}{x_i}}$ | 适用于计算比率或速率(如速度、工作效率、失效率等) |
意义:
| 类型 | 适用场景 | 特点 |
|---|---|---|
| 算术平均(AM) | 适用于加法关系的数据,如成绩、工资、价格 | 适合常规统计分析,最常用 |
| 几何平均(GM) | 适用于乘法关系的数据,如增长率、回报率 | 适用于计算**长期增长率(连续增长的情况)**,避免异常值过大干扰均值 |
| 调和平均(HM) | 适用于速率或比率的数据,如速度、失效率、生产效率 | 适用于计算加权平均速率,强调较小值的影响 |
调和平均
调和平均(Harmonic Mean, HM) 是一种计算平均值的方法,特别适用于计算速率(rates)或比率(ratios)等类型的数据,尤其是当数据具有倒数关系时。例如,在计算失效率、速率、浓度等情况时,使用调和平均比算术平均值更合适。
调和平均数(Harmonic Mean, 简写为 HM)是平均值的一种,计算公式如下:
$$
HM = \frac{n}{\sum_{i=1}^{n} \frac{1}{x_i}}
$$
其中:
- n 是数值的个数。
- $x_1, x_2, …, x_n$ 是一组数据。
- HM 是调和平均数。
调和平均数是各个数值倒数的算术平均值的倒数
例子
小明去上学,去程的速度是 60 km/h,回程的速度是 30 km/h,求平均速度?
使用算术平均:
$$
\frac{60 + 30}{2} = 45 \text{ km/h} \quad \text{(但这是错的!)}
$$
问题: 这样计算会高估实际速度。因为去程快,回程慢,但时间花在慢速上更多,所以影响更大。不能简单取两者的平均数!
使用调和平均:
$$
HM = \frac{2}{\frac{1}{60} + \frac{1}{30}} = \frac{2}{\frac{1+2}{60}} = \frac{2 \times 60}{3} = 40 \text{ km/h}
$$
→ 实际平均速度是 40 km/h,而不是算术平均 45 km/h!
这更符合实际情况,因为回程速度慢,影响了整体的平均速度。
在这个例子中,其实可以这么理解
- 算数平均是基于路程的算数平均
- 调和平均是基于时间的算数平均
如果只用算术平均的话,流速会被高估,因为它没有考虑时间对总量的影响
几何平均
例子
年化收益率(CAGR)
假设你投资了1000元,收益如下:
- 第一年增长 10%(变成1100)
- 第二年增长 20%(变成 1100 × 1.2 = 1320)
你想计算平均每年的收益率。如果你用算术平均:
$$
\frac{10% + 20%}{2} = 15%
$$
这个结果是错误的!因为投资增长是按比例变化,而非线性相加的
正确的计算方法是用几何平均数:
$$
\text{几何平均收益率} = \sqrt[2]{1.1 \times 1.2} - 1
$$
这才是每年的平均增长率,也就是复合年增长率(CAGR)。
最小公倍数/最大公约数
最大公约数和最小公倍数求解,常用的方法是短除法进行因式分解,然后最大公约数是所有公共因子的乘积,最小公倍数是所有因子的乘积。但在计算机中因式分解不是一个好办法,很耗性能
LCM是最小公倍数,GCD是最大公约数
本质上求最小公倍数就是求最大公倍数:x=m*a, y=m*b;m是最大公约数,那最小公倍数就是m*a*b。所以可以得到最大公约数与最小公倍数的关系:
$$
\operatorname{LCM}(A, B) \times \operatorname{GCD}(A, B)=A \times B
$$
下面罗列几种最大公约数的求法
辗转相除法
求最大公约数,可以使用欧几里得算法,又称辗转相除法
两个整数的最大公约数是能够同时整除它们的最大的正整数
辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数相除余数的最大公约数
计算公式如下
$$
\mathrm{gcd(a,b)=gcd(b,amodb)}
$$
证明过程可以参考此视频
编程方式实现: gcd(a,b){return b==0?a:gcd(b,a%b);}
计算过程例子: gcd(3,6) = gcd(6,3%6) = gcd(6,3) = gcd(3,6%3) = gcd(3,0) => 3
时间复杂度为O((log a)的3次方)
Stein算法
欧几里德算法是计算两个数最大公约数的传统算法,无论从理论还是从实际效率上都是很好的。但是却有一个致命的缺陷,这个缺陷在素数比较小的时候一般是感觉不到的,只有在大素数时才会显现出来:一般实际应用中的整数很少会超过64位(当然现在已经允许128位了),对于这样的整数,计算两个数之间的模是很简单的。对于字长为32位的平台,计算两个不超过32位的整数的模,只需要一个指令周期,而计算64位以下的整数模,也不过几个周期而已。但是对于更大的素数,这样的计算过程就不得不由用户来设计,为了计算两个超过64位的整数的模,用户也许不得不采用类似于多位数除法手算过程中的试商法,这个过程不但复杂,而且消耗了很多CPU时间。对于现代密码算法,要求计算128位以上的素数的情况比比皆是,比如说RSA加密算法至少要求500bit密钥长度,设计这样的程序迫切希望能够抛弃除法和取模。
Stein算法应运而生
Stein算法很好的解决了欧几里德算法中的这个缺陷,Stein算法只有整数的移位和加减法。下面就来说一下Stein算法的原理:
- 若a和b都是偶数,则记录下公约数2,然后都除2(即右移1位);
- 若其中一个数是偶数,则偶数除2,因为此时2不可能是这两个数的公约数了
- 若两个都是奇数,则a = |a-b|,b = min(a,b),因为若d是a和b的公约数,那么d也是|a-b|和min(a,b)的公约数。
代码如下:
1 | int SteinGCD(int a, int b) { |
同余原理
- x∣y 表示 x 整除 y(即 y÷x 余数为 0)。
- x mod y 表示 x÷y 的余数
当 x mod m=y mod m 时,我们说 x 和 y 关于 m 同余,表示为 x≡y*(mod*m)。
同余在计算机中的意义:
很多超大的数值如果只需要判断是否正确,可以使用余数来判断正确与否
超过系统中一个标准类型的数值的大小,尤其是类似python中的biginteger这类内部动态封装出来的类型,加减乘除的过程实际上已经不能视为O(1)时间复杂度了,为了可以使用余数来判断结果是否正确,同时又要求余而不超过标准类型的最大空间,同余原理就非常有价值了
同余的基本性质
同余运算
加法 (a+b)mod n=((a mod n)+(b mod n)) mod n
减法 (a-b)mod n=((a mod n)-(b mod n)+n)mod n
因为减法中可能出现负数,而余数只能为正,所以要进行加n操作
乘法 ab mod n=(a mod n)(b mod n)mod n
除法
$$
\left(\frac{a}{b}\right) \bmod m=\left(\left(\frac{a}{b}\right) \bmod m\right)((b k) \bmod m)=\left(\frac{a}{b} b k\right) \bmod m=(a k) \bmod m \text { ,其中 } \mathrm{k} \text { 是 } \mathrm{b} \text { 的逆元 }
$$
逆元:
- 作用:模运算中用来代替除法,把方程 $ a x \equiv b(\bmod m) $ 变成 $ x \equiv b \times a^{-1}(\bmod m) $
- 条件:a和m必须互质(公因数1)
- 找法:试数或用扩展欧几里得算法(大数时)
模运算的逆元:在“模4的世界里”,3的逆元是3,因为 3×3=93×3=9,而 9÷4=29÷4=2 余1,所以 3×3≡1(mod4)
→ 逆元的作用就是让两个数相乘后余1!
幂函数与指函数
- 幂函数是以变量为底数,常数为指数
- 指数函数是以常数为底数,变量为指数
- 幂指函数则是一种变量同时作为底数和指数的组合。
幂函数
- 形式:$ f(x) = x^n $
- 描述:幂函数是指自变量 $ x $ 提到某个常数幂 $ n $ 的函数,其中 $ n $ 可以是任何实数。典型的幂函数包括平方函数 $ f(x) = x^2 $、立方函数 $ f(x) = x^3 $ 等。
- 特点:当 $ n $ 为正整数时,函数在 $ x = 0 $ 点附近既可微分又连续。对于偶数幂,函数图像关于 $ y $ 轴对称;对于奇数幂,函数图像关于原点对称。
指数函数
- 形式:$ f(x) = a^x $
- 描述:指数函数是指以常数 $ a $ (通常 $ a > 0 $ 且 $ a \neq 1 $)为底数,自变量 $ x $ 为指数的函数。常见的指数函数有自然指数函数 $ e^x $。
- 特点:指数函数总是正的,且当 $ a > 1 $ 时为增长函数,当 $ 0 < a < 1 $ 时为衰减函数。指数函数的图像永远不会与 $ x $ 轴相交。
幂指函数
- 形式:$ f(x) = x^x $(特殊形式)
- 描述:幂指函数是一个更特殊的函数形式,可以视作既是幂函数又是指数函数的一种形式。常见的幂指函数是 $ f(x) = x^x $,在定义域为正实数的情况下是有意义的。
- 特点:幂指函数没有幂函数和指数函数的简单对称性,其行为在定义域之外可能不明确且不易延拓。
导数相关
基本求导公式
导数的运算性质
线性性质
$$
[af(x)+bg(x)]^{‘}=af^{‘}(x)+bg^{‘}(x)
$$
其中,a,b为常数
函数组的求导公式
和差函数的导数
$$
[f(x)\pm g(x)]^{‘}=f^{‘}(x)\pm g^{‘}(x)
$$
乘积函数的导数(乘积法则)
$$
[u(x)\cdot v(x)]^{‘}=u^{‘}(x)\cdot v(x)+u(x)\cdot v^{‘}(x)
$$
商函数的导数(商法则)
$$
\left[\frac{u(x)}{v(x)}\right]^{^{\prime}}=\frac{u^{^{\prime}}(x)\cdot v(x)-u(x)\cdot v^{^{\prime}}(x)}{[v(x)]^2}
$$
复合函数的导数(链式法则)
$$
[f(g(x))]^{‘}=f^{‘}(g(x))\cdot g^{‘}(x)
$$
高阶导数
二阶导数
$$
f^{‘’}(x)=\left[f^{‘}(x)\right]^{‘}
$$
n阶导数
$$
f^{(n)}(x)=\frac{d^nf(x)}{dx^n}
$$
对数求导法
取对数的运算可将幂函数、指数函数及幂指函数运算降格成为乘法运算,可将乘法运算或除法运算降格为加法或减法运算,使求导运算计算量大为减少。
对于形如下的函数,
$$
y=[f(x)]^{g(x)}
$$
可以两边取对数,简化求导过程:
$$
\ln y=g(x)\ln f(x)
$$
在上述公式继续往下推导:
对等式两边求导(使用链式法则):
$$
\frac{1}{y} \cdot \frac{dy}{dx} = g’(x) \ln f(x) + g(x) \cdot \frac{f’(x)}{f(x)}
$$
解出
$$
\frac{dy}{dx} = y \cdot [g’(x) \ln f(x) + g(x) \cdot \frac{f’(x)}{f(x)}]
$$
代入 $ y=[f(x)]^{g(x)} $
得到:
$$
\frac{dy}{dx}=[f(x)]^{g(x)}\left(g^{\prime}(x)\ln f(x)+g(x)\frac{f^{\prime}(x)}{f(x)}\right)
$$
实例
$$
y = x^x
$$
求y对x的导数
取对数
$$
\ln y=\ln(x^x)=x\ln x
$$对两边求导
$$
\frac1y\frac{dy}{dx}=\ln x+x\cdot\frac1x=\ln x+1
$$解出y对x的导数
$$
\frac{dy}{dx}=y(\ln x+1)=x^x(\ln x+1)
$$
隐函数的导数
隐函数是一种不能直接表示为 y = f(x) 形式的函数。它通常以方程的形式给出,其中 x 和 y 混合在一起
- $ x^2 + y^2 = 1 $ (圆的方程)
- $ xy = 1 $ (双曲线方程)
上述例子中,y 不能简单地用 x 来表示,但 y 仍然依赖于 x
对于由方程 $F(x,y)=0$ 定义的隐函数 $y=y(x)$,求导数:
$$
\frac{dy}{dx}=-\frac{\frac{\partial F}{\partial x}}{\frac{\partial F}{\partial y}}
$$
隐函数的导数公式的基本思想是利用全微分和链式法则来推导的
实例
$$
x^2 + y^2 = 1
$$
求y对x的导数
全微分
$$
2x + 2y \frac{dy}{dx} = 0
$$解出y对x的导数
$$
\frac{dy}{dx} = -\frac{x}{y}
$$
参数方程的导数
参数方程是用一个额外的变量(通常称为参数,常用 t 表示)来表示 x 和 y 的函数。参数方程通常以下面的形式给出:
1
2 x = f(t)
y = g(t)其中 t 是参数,f 和 g 是关于 t 的函数。
参数方程的优点:
- 可以表示更复杂的曲线
- 有时能简化计算
- 可以表示运动轨迹,其中 t 可以代表时间
参数方程的例子:
- 圆: x = r cos(t) y = r sin(t) 其中 r 是半径,t 是角度(0 ≤ t < 2π)
- 抛物线: x = t y = t^2
- 螺旋线: x = t cos(t) y = t sin(t)
它在描述运动轨迹时特别有用,其中 t 可以代表时间。
若函数由参数t表示:
$$
\quad\begin{cases}x=x(t)\y=y(t)\end{cases}
$$
则导数为:
$$
\frac{dy}{dx}=\frac{\frac{dy}{dt}}{\frac{dx}{dt}}
$$
即分别计算 $ \frac{dy}{dt} $ 和 $ \frac{dx}{dt} $,然后相除。
实例
$$
x = t^2 \quad,\quad y = t^3
$$
求y对x的导数
分别计算
x对t的导数和y对t的导数
$$
\frac{dx}{dt} = 2t \quad, \quad \frac{dy}{dt} = 3t^2
$$解出y对x的导数
$$
\frac{dy}{dx} =\frac{\frac{dy}{dt}}{\frac{dx}{dt}}= \frac{dy}{dt} \cdot \frac{dt}{dx} = \frac{3t^2}{2t} = \frac{3}{2} t
$$
离散求导
对于离散点求导的原理主要基于对导数定义的近似。
一阶导数的本质是函数在某一点的变化率。在离散情况下,由于没有连续的函数表达式,通过有限差分来近似这个变化率。
以中心差分为例,它利用了当前点前后两个相邻点的函数值来估计当前点的一阶导数。其原理是认为在这一小段区间内,函数的变化近似线性,所以通过前后两点的差值除以两点之间的距离(即步长 h),来近似表示这一点的瞬时变化率(一阶导数)。
二阶导数反映的是一阶导数的变化率。同样在离散情况下,通过相邻点的一阶导数的差分来近似二阶导数。或者直接基于函数值,利用当前点及其前后点的函数值关系来近似表示二阶导数。
总的来说,离散点求导的原理是在有限的离散数据中,通过合理的数值计算方法来尽量逼近连续情况下导数所表达的函数变化特征。
对于离散的点求一阶导和二阶导,常见的方法有有限差分法。
一阶导数可以使用前向差分、后向差分或者中心差分来近似计算。
前向差分:f'(x) ≈ (f(x + h) - f(x)) / h
后向差分:f'(x) ≈ (f(x) - f(x - h)) / h
中心差分:f'(x) ≈ (f(x + h) - f(x - h)) / (2 * h)
二阶导数可以通过对一阶导数再次差分来近似计算,或者直接从函数值计算。
例如,使用中心差分计算二阶导数:f''(x) ≈ (f(x + h) - 2 * f(x) + f(x - h)) / (h * h)
以函数的方式说明:
1 | using System; |
多变量微积分
- 偏导数
- 偏微分
- 全微分
从推导过程来看,我们应该是知道了偏导数,然后求出偏微分,再根据偏微分求出全微分
这个平面就是”全微分“
以两个变量的全微分计算的过程为例:
找两条曲线
出于简化计算的目的,一般会选择过某点,平行于x轴的曲线与平行于y轴的曲线
这两根曲线分别被称为
曲面在此点对x的偏微分与曲面在此点对y的偏微分,它们也被统称为”偏微分”做出它们的微分
两条切线 + 两条相交直线 => 唯一确定一个平面
两个曲线的微分公式分别都是将(x0,y0)点代入消除一个变量求导
通过微分确定平面
需要具备线性代数知识: 根据偏微分求出两条直线的方向向量 ,然后对他们进行叉积运算,运算的结果即为平面的法向量
平面上的一个点 + 平面的法向量 =根据点法式=> 得到平面的表达式
全微分
线性运算
线性运算的定义
一个运算是线性的,意味着它满足两个基本性质:
加法的可加性(加法保持性,Additivity):
对于两个函数 f(t) 和 g(t) ,如果运算是线性的,那么运算 \mathcal{L} 对它们的加法遵循以下规则:
$$
\mathcal{L}(f(t) + g(t)) = \mathcal{L}(f(t)) + \mathcal{L}(g(t))
$$数乘的齐次性(均匀性,Homogeneity):
$$
\mathcal{L}(c \cdot f(t)) = c \cdot \mathcal{L}(f(t))
$$
这两个定义共同定义了一个线性运算
微分方程
想解微分方程,首先要摸透微分方程的本质
差分与求和
从离散的差分说起,差分就是一个向量(数组)求后一项和前一项的差,求和就是前n项和
差分
如何以矩阵的形式表达差分呢,下图作为案例:
求和
差分/求和与微分/积分的关系
- 求导的本质就是在无限密集情况下的差分
- 积分的本质就是在无限密集情况下的求和
如果把函数理解成无穷维的向量,那么求导和积分有没有可能是无穷维的矩阵?
求导和积分矩阵的特征向量
什么样的函数,在求导和积分下,他的形状是不变的?指数函数的导数和积分结果仍然是指数函数,只不过会有不同的系数
通俗讲: 就是对于以e为底的指数不断的求导和积分只是改变它乘以的系数
$$
\frac{\mathrm{d}}{\mathrm{d}t}(\mathrm{e}^{st})=se^{st},\quad\int\mathrm{e}^{st} \mathrm{d}t=\frac{1}{s}e^{st}+C
$$
求导和积分的运算是线性的
特征函数解一阶微分方程
解法流程如下:
特征函数解二阶微分方程
解法流程如下:
有实数解的情况:
没有实数解的情况:
虽然上述的解是对的,但是我们都会用欧拉公式把它化简成一个看起来比较舒服的状态
线性代数
计算的目的不在于数字本身,而在于洞察其背后的意义。
——理查德•哈明
矩阵的用途
描述对空间的操纵
帮助求解特定的方程组(线性方程组)
$$
2x+5y+3z = -3 \
4x+0y+8z=0 \
1x+3y+0z=2
$$
基本矩阵理解
$$
A\vec{X}=\vec{V}
$$
A是线性变化所代表的矩阵,将X向量线性变换为与V向量完全重合
行列式
二维
$$
\det\left(
\begin{bmatrix}
a & b \
c & d
\end{bmatrix}\right)=ad-bc
$$
三维
$$
\begin{aligned}
\det\left(
\begin{bmatrix}
a & & b & & c \
d & & e & & f \
g & & h & & i
\end{bmatrix}\right) & =a\det\left(
\begin{bmatrix}
e & & f \
h & & i
\end{bmatrix}\right) \
& -b\det\left(
\begin{bmatrix}
d & & f \
g & & i
\end{bmatrix}\right) \
& +c\mathrm{~det}\left(\left[
\begin{array}
{cc}d & e \
g & h
\end{array}\right]\right)
\end{aligned}
$$
行列式的第一重意义在于描述向量构成的面积
行列式的第二重意义在于用于描述一个矩阵运算可以 对面积的倍率影响
如: 一个线性变换的行列式是1/2,就是说它将一个区域的面积缩小一半
如果一个二维线性变换的行列式为0,说明它将整个平面压缩到一条线,甚至是一个点上,因为此时任何区域的面积为0.也因此只需要检验一个矩阵的行列式是否为0,就能了解这个矩阵所代表的变换是否将空间压缩到更小的维度上
完整概念下的行列式是允许出现负数的,以平面理解,可以理解为纸的正反面反转了一面
在三维空间中,行列式的意义就是体积的缩放
三维空间是否反转了,可以通过右手定则,如果空间反转了,右手定则变成左手定则才能表示出来
逆矩阵,秩,列空间,零空间/核
计算方式包括: 高斯消元法,行阶梯型
逆矩阵
逆矩阵就是将原本的线性变换倒带
$$
A^{-1} = \frac{1}{\det(\mathbf{A})} \begin{bmatrix} d & -b \ -c & a \end{bmatrix} = \frac{1}{ad-bc} \begin{bmatrix} d & -b \ -c & a \end{bmatrix}
$$
一个矩阵,只要行列式不为零,就存在逆矩阵,因为行列式为0必然意味着维度坍缩,损失信息,则不可复原
秩
矩阵的秩本质是其对应线性变换的像空间(Image)的维度
“秩”代表着变换后空间的维数
“秩”更精确的定义是列空间的维数
满秩矩阵
若 $ A $ 是 $ n \times n $ 矩阵且 $\text{rank}(A) = n$,则变换后空间维度不变(例如三维空间仍为三维)
秩亏矩阵
若 $\text{rank}(A) = r < n$,则变换将空间压缩到 $ r $ 维子空间:
$\text{rank}(A) = 2$:三维空间被压缩到平面;
$\text{rank}(A) = 1$:三维空间被压缩到直线。
列空间
所有可能的输出向量构成的集合被称为矩阵的**”列空间”**
零向量一定在列空间中,因为线性变化必须保持原点不变
零空间/核
在变换后落在原点的向量集合称为**”零空间”或“核”**
👆🏻如果一个三维线性变换将空间压缩到一条直线上,那么就有一整个平面上的向量在变换后落在原点
乘法意义盘点
简单介绍几种乘法的计算,以及他们的现实意义
矩阵乘积:是矩阵之间的一种运算,结果是一个新的矩阵,涉及行与列的乘法和求和
一个矩阵可以看作是对空间中向量的线性变换,多个线性变换可以通过矩阵乘法组合在一起;工程、物理和经济等领域可以用来简洁地表示和求解线性方程组
点积/向量内积:是两个向量之间的运算,结果是一个标量,表示两个向量的相似度或投影。
$$
\mathbf{u} \cdot \mathbf{v} = u_1v_1 + u_2v_2 + \cdots + u_nv_n = \sum_{i=1}^{n} u_iv_i
$$
相似度- 指向相同:内积大,表示相似度高。
- 指向相反:内积小,表示相似度低。
- 垂直:内积为零,表示没有相似度(这时两个向量是正交的)。
投影
A对B计算向量内积可以理解为 A在B向量方向上的投影长度 乘以B的长度
$$
\mathbf{u} \cdot \mathbf{v} = |\mathbf{u}||\mathbf{v}| \cos \theta
$$- θ 是两向量夹角
- ∥u∥ 是模长 $| \mathbf{u} | = \sqrt{u_1^2 + \cdots + u_n^2}$
因此,多个向量如果内积为0,代表他们之间垂直
对应位元素乘积:是两个相同维度的矩阵或向量之间的逐元素乘法,结果也是一个相同维度的矩阵或向量。
元素级操作,如图像处理中的加权或滤波,如机器学习的激活函数等
叉积/向量积
仅适用于三维空间中的向量
$$
\mathbf{u \times v} = \begin{bmatrix}
v_1 \
v_2 \
v_3
\end{bmatrix}
\times
\begin{bmatrix}
w_1 \
w_2 \
w_3
\end{bmatrix}
\begin{bmatrix}
v_2 \cdot w_3 - w_2 \cdot v_3 \
v_3 \cdot w_1 - w_3 \cdot v_1 \
v_1 \cdot w_2 - w_1 \cdot v_2
\end{bmatrix}
$$
叉积的结果是一个向量,这个向量的长度是叉积的两个向量构成的面积/体积…
方向可以参考下图:
行列式计算公式为:
p.s. 转置不改变行列式的值
$$
\mathbf{u} \times \mathbf{v} = \begin{bmatrix} u_{1} \ u_{2} \ u_{3} \end{bmatrix} \times \begin{bmatrix} v_{1} \ v_{2} \ v_{3} \end{bmatrix} = \det \begin{pmatrix} \begin{matrix} \hat{i} & u_{1} & v_{1} \ \hat{j} & u_{2} & v_{2} \ \hat{k} & u_{3} & v_{3} \end{matrix} \end{pmatrix}=\begin{vmatrix} \mathbf{i} & \mathbf{j} & \mathbf{k} \ u_1 & u_2 & u_3 \ v_1 & v_2 & v_3 \end{vmatrix} = \mathbf{i}(u_2v_3 - u_3v_2) - \mathbf{j}(u_1v_3 - u_3v_1) + \mathbf{k}(u_1v_2 - u_2v_1)
$$
其中 i,j,k 是坐标轴单位向量
| 特性 | 点积 (Dot Product) | 叉积 (Cross Product) |
|---|---|---|
| 输入 | 同维任意向量 $ u, v $ | 仅限三维向量 $ u, v $ |
| 输出类型 | 标量(Scalar) | 向量(Vector) |
| 计算公式 | $\sum u_i v_i$ | $(u_2 v_3 - u_3 v_2, ; u_3 v_1 - u_1 v_3, ; u_1 v_2 - u_2 v_1)$ |
| 交换律 | $u \cdot v = v \cdot u$ | $u \times v = -v \times u$ |
| 几何意义 | 投影长度/夹角余弦 | 法向量/面积/右手系方向 |
| 零结果条件 | 两向量正交 ($\theta = 90^\circ$) | 两向量平行 ($\theta = 0^\circ$) |
| 维度扩展 | 任意 $\mathbb{R}^n$ | 仅 $\mathbb{R}^3$ (其他维度需外代数) |
乘法两边的顺序对叉积有影响,会决定其正负
$$
\vec{\mathbf{v}}\times\vec{\mathbf{w}}=-\vec{\mathbf{w}}\times\vec{\mathbf{v}}
$$
标准正交基
$$
e_xe_x=e_ye_y=1
$$
$$
e_x*e_y=0
$$
e为向量标志
基向量两两垂直且长度归一化
我们将满足上面两个公式的向量组合的称为标准正交基
空间坐标转换
投影到新的正交基
如果确定一个三维空间下的向量在新的基向量下的坐标$x_P^{\prime},\quad y_P^{\prime},\quad z_p^{\prime}$,使得
$$
\overrightarrow{OP}=x_P’\boldsymbol{i}’+y_P’\boldsymbol{j}’+z_p’\boldsymbol{k}’
$$
因为两个向量的向量内积计算出来为投影的长度,所以需要将$\overrightarrow{OP}$乘新的x轴基向量,得到的是在新正交基下的$\overrightarrow{OP}$的新的x值,计算过程如图:
可以推广得到:
总结
- 坐标系中的基向量,由两两正交(内积为零) 且长度为1(归一化)的n(n为空间维度) 个向量组成
- 坐标系中任意一个向量可表示为基向量的线性组合,其系数即为坐标
- 向量从一个坐标系变换到另一个坐标系,需要求向量在新坐标系的每个基向量下的投影
特征向量
矩阵作用于向量:假设 A 是一个矩阵, x 是一个向量。当矩阵 A 作用在向量 x 上时,通常向量的方向和长度都会改变。
矩阵作用在某一些向量上时,向量方向不变,只有长度发生变化,这些向量称之为矩阵的特征向量
特征向量和特征值:
特征向量(Eigenvector):某些特殊的向量,在被矩阵 A 作用时,方向不会改变,只有长度发生变化。这些特殊的向量称为矩阵的特征向量。
特征值(Eigenvalue):当矩阵 A 作用于特征向量时,特征向量的长度会按某个数值 $\lambda$ (特征值)进行缩放。
$$
Ax = \lambda x
$$
- A 是矩阵,
- x 是矩阵的特征向量,
- $\lambda$ 是与特征向量对应的特征值。
当矩阵 A 作用于特征向量 x 时,结果是向量 x 被缩放了 $\lambda$ 倍,但方向保持不变。
对于特征向量来说,矩阵作用等于数乘
现实意义:在许多数学和物理问题中,矩阵的特征向量和特征值具有重要意义。比如在动力系统中,它们可以用于描述系统的稳定性。在量子力学中,特征值和特征向量用于描述粒子的能量状态。
新世界大门
用线性代数理解积分变换的核心: 函数就是无穷维的数组
无穷维向量的
欧拉函数
欧拉函数(Euler’s Totient Function),又称为欧拉φ函数,是一个与数论相关的函数,通常用符号 φ(n) 表示。对于正整数 n,欧拉函数 φ(n) 定义为小于或等于 n 的正整数中与 n 互质的数的个数。
$$
e^{ix}=\cos x+i\sin x
$$
复数最初产生于对某些代数方程的根的研究.$x_2+1=0$或$x_2=-1$没有实数值解.因为它要求我们对一个负数取平方根,因此”虚数”i被定义为
$$
i = \sqrt-1
$$
因此 $x_2+1=0$有两个根,x=+i和x=-i,他们是-1的两个平方根
概念: 复数共轭:将虚部取负的复数。
贝塞尔曲线
[[算法#贝塞尔曲线|参考此处]]
傅里叶变换
任何一个函数都是不同频率简谐振动(即正余弦函数)的叠加
如果说线性代数是人工智能的数学基础,那么傅里叶变换则是计算机视觉的数学基础
在实际的工程问题中,一些异常复杂的公式和难以理解的问题,利用傅里叶变换转换到频率域后,一个杂乱无章的世界,瞬间整整齐齐,一切都豁然开朗.
傅里叶变化分为两种
- 傅里叶级数
- 连续傅里叶变换
基本概念
为什么正弦波是分解信号的基本元素?
实际物理意义
物理世界中许多振动现象都是通过正弦波来描述的,如声波,光波和电磁波,便于理解其物理含义
线性系统中的基础元素
物理学中的许多系统,如之前提到过的机械电子系统都可以用线性系统来描述(因为线性系统的特性:线性叠加性),正弦波是基本的一个输入信号.因此正弦波是分解复杂信号时理想的基础元素
正交性
正余弦函数具有非常好的数学特性: 正交性
意味着不同频率的正弦波彼此没有相互影响,可以独立处理这种性质.这种特性使得我们可以将复杂系统分解为若干个正弦波的叠加.
数学上正交基的这种性质使傅里叶变换成为了可能
周期性与频率的清晰表示
数学上的简便性
欧拉公式的应用
欧拉公式揭示了正弦波和复数的紧密结合
因此对于傅里叶变换,除了三角形式,通过欧拉公式还可以表示为复指数形式,这就为处理信号的变换提供了一个强大的数学工具,能够简化许多实际问题的求解过程
$$
f(t)=\sum_{n=0}^\infty[b_n\sin(nt)+a_n\cos(nt)]
$$
周期函数的频率分解
假定我们拥有一个f(t),该函数具备周期T
表示周期的两个参数分别是频率和角频率分别如下:
角频率 $\omega_0$ 表示周期函数每单位时间转过的相角,它通过弧度(rad)来度量
$$
f_0=\frac{1}{T}, \omega_0=\frac{2\pi}{T}=2\pi f_0
$$我们希望找到这个函数在复指数基函数下每个频率$f_0,2f_0,…,nf_0$上的投影,需要怎么做
傅里叶级数
傅里叶级数: 任何周期性函数一定 可以转换为一堆 正(余)弦函数的和
正(余)弦函数就是正交基?此处未理解完全
由此引入了时域和频域的概念
- 时域: 信号随着时间的变化
- 频域: 在不同的频率下每个信号的大小
频域中单个频包含相位和振幅信息
一个时域信号==可以拆分为=>多个频域信号==可以拆分为=>多组增幅和相位信息之和
连续傅里叶变换
可以将一个非周期函数看成是一个周期性无穷大的周期函数
复数
数学分析原理
在本科阶段,学生通常会学习基础的微积分和实分析等内容;而在研究生阶段,学生可能会深入学习复分析、泛函分析等更高级的数学分析原理
度量空间
泛函分析
一些概念
高斯分布
正态分布(Normal distribution)又名高斯分布(Gaussian distribution),是一个在数学、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响力。
标准差
方差是数据的平方,与检测值本身相差太大,人们难以直观地衡量,所以常用均方差代替方差判断数据的波动。
也称为均方差
标准差详解:用来衡量数据点相对于均值的分散程度或波动性的统计量(是方差的平方根)
所有样本的方差之和除以样本的个数,再把所得值开根号,所得之数就是这组数据的均方差,也叫标准差,常见的离散型公式:
$$
\sigma = \sqrt{\frac{1}{N} \sum_{i=1}^{N} (x_i - \bar{x})^2}
$$
其中,$\sigma$ 表示标准差,$N$ 表示数据点的数量,$x_i$ 表示第i个数据点的数值,$\bar{x}$ 表示数据集的均值。
在概率论中,$\bar{x}$ 应该替换成r,表示随机变量的数学期望
$$
\sigma(r)=\sqrt{\frac1N\sum_{i=1}^N(x_i-r)^2}
$$
协方差
下面视频是协方差公式推导流程
当舞台转向了多维随机变量时,方差就变成了协方差,这里的“协”是指几个变量的协同相关性。
如果(X, Y)是二维随机变量,且D(X)>0, D(Y)>0,则X,Y的协方差的定义是:
$$
COV(X,Y)=(X-E(X))(Y-E(Y))
$$
E(X)和E(Y)表示平均值或数学期望
从直观上来看,协方差表示的是两个变量总体误差的期望,当两个变量完全一致时,协方差就变成了方差:
$$
COV(X,X)=E(X^{2})-E(X)^{2}=D(X)
$$
协方差的性质:
协方差矩阵
协方差只能处理二维问题,对于三维以上数据,就需要计算多个协方差,然后用矩阵将其组织起来,这就是协方差矩阵。
以三维随机变量(X,Y,Z)为例,其协方差矩阵用∑表示:
$$
\Sigma=\begin{bmatrix}COV(X,X)&COV(X,Y)&COV(X,Z)\COV(Y,X)&COV(Y,Y)&COV(Y,Z)\COV(Z,X)&COV(Z,Y)&COV(Z,Z)\end{bmatrix}
$$
需要注意的是,协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的。
简单来说,协方差矩阵就是两两计算各维度之间的协方差,看看每两个维度之间的相关情况。如果各个变量之间相互独立,那么两个不同维度变量的协方差是0,此时协方差矩阵就是一个对角矩阵,并且对角线上的每个元素都是该维度的方差
圆参数方程
$$
x = h + r \cos(t)
$$
$$
y = k + r \sin(t)
$$
给定任何半斤和角度,可以找到圆上的相应坐标,(h,k)表示圆心
另有笛卡尔坐标系下的圆方程:
$$
(x - h)^2 + (y - k)^2 = r^2
$$
点到直线的距离
在二维坐标系下,已知三个点 A(x1, y1), B(x2, y2), C(x3, y3),求点 C 到直线 AB的距离。
计算直线 AB 的方程: 直线方程的一般式为 Ax + By + C = 0
我们可以通过以下公式计算 A, B, C:
A = y2 - y1B = x1 - x2C = x2 * y1 - x1 * y2
推导过程如下:
确定直线的斜率:
直线 $ AB $ 的斜率 $ k $ 可以通过点 $ A $ 和点 $ B $ 的坐标计算:
$$
k = \frac{y_2 - y_1}{x_2 - x_1}
$$
但我们不需要直接计算斜率,因为我们要用一般式来表示直线。使用点斜式公式:
直线的点斜式方程为:
$$
y - y_1 = k(x - x_1)
$$将斜率 $ k $ 代入:
$$
y - y_1 = \frac{y_2 - y_1}{x_2 - x_1}(x - x_1)
$$变换为一般式:
将上述方程变换为一般式 $ Ax + By + C = 0 $:
$$
(y_2 - y_1)(x - x_1) - (x_2 - x_1)(y - y_1) = 0
$$
展开并整理:
$$
(y_2 - y_1)x - (x_2 - x_1)y + (x_2y_1 - x_1y_2) = 0
$$
由此,我们可以得到:
- $A = y_2 - y_1 $
- $B = x_1 - x_2 $
- $C = x_2y_1 - x_1y_2 $
点 (x0, y0) 到直线 Ax + By + C = 0 的距离公式为:
$$
\text{distance} = \frac{|Ax_0 + By_0 + C|}{\sqrt{A^2 + B^2}}
$$
展开为:
$$
\text{distance} = \frac{|(y_2 - y_1)x_0 + (x_1 - x_2)y_0 + (x_2y_1 - x_1y_2)|}{\sqrt{(y_2 - y_1)^2 + (x_1 - x_2)^2}}
$$
求点到直线距离的推导过程参考此处
上面是一般式,下面是针对斜截式:
$$
d=\frac{|km+b-n|}{\sqrt{1+k^2}}
$$
斜截式推导流程
概率论相关
下面的概念都源自于对惊讶感和不确定性的直观理解,这些原理并不仅仅是抽象的数学结构,他们是我们在现实世界中进行数据量化,建模和学习的关键工具
概率分布
概率分布是一个数学函数,它描述了随机变量取不同值的概率。简单来说,概率分布提供了一个系统化的方法来表示某个随机现象的可能结果及其对应的概率。
- 离散概率分布:用于描述离散随机变量的分布,例如掷骰子、抽取扑克牌等。每个可能的结果都有一个对应的概率,所有可能结果的概率之和等于1。
- 连续概率分布:用于描述连续随机变量的分布,例如测量身高、体重等。在这种情况下,概率分布通常用概率密度函数(PDF)来表示,概率在某个区间内的值可以通过积分计算。
常见的概率分布包括正态分布、伯努利分布、二项分布、泊松分布等。
对于连续变量的概率分布是一个必须积分为1的函数
$$
\int_sp(s)=1
$$
意味着整个曲线下的面积等于1,这是求和的一个更一般的形式
采样
从概率分布中生成结果被称为采样
惊讶
我们希望为每种状态赋予一个正数,表示惊讶度,这个惊讶度应该是概率的一个函数,概率越小,惊讶度越大;当概率接近于1的时候,惊讶度则应该接近于0(毕竟,对于必然发生的事件,我们不应该有任何惊讶感)
惊讶的可加性: 多个概率的同时触发,惊讶度应该为三个惊讶度相加
一个骰子被掷出3次都为1的情况下,其总惊讶度应该是3个惊讶度相加的惊讶度,而这种事件的概率却是每个概率相乘的,如图(h表示惊讶度):
即:
符合这种性质的函数是概率的倒数的对数:
为每个状态定义它的惊讶度,求这些所有状态的惊讶度平均值来描述整个概率分布,这个平均惊讶度就是熵
熵
在数学上,熵可以通过对所有可能状态的求和来表示,每个状态的概率乘以它的惊讶度
$$
H=\sum_sp_s\log\left(\frac1{p_s}\right)
$$
代表的是内在不确定性
计算案例如下:
如果你的惊讶是因为你对概率分布的认知错误,而不是因为发生了真正意外的事情,这就引出了交叉熵的概念
交叉熵
用于衡量模型于现实之间差距的一种直观方法
本质上,交叉熵是一个衡量两个概率分布之间差异的函数,他量化了当你观察到一个随机过程的结果时,误以为他来自另一个分布的平均惊讶度
$$
H(P,Q)=\sum_{s}^\text{}{p_s}\log\left(\frac{1}{q_s}\right)
$$
P是真实分布,Q是假设的模型分布,交叉熵的计算与熵的定义相似
一个重要的数学性质是,如果p是实际的分布,而q是模型,那么交叉熵总是大于或等于p的熵.这个性质反映了,任何模型误差都会增加平均的惊讶度;换句话说,信任自己的随机变量模型,只会增加观察结果时的惊讶度,而不会减少.
交叉熵还有一个重要特性,它是不对称的.由于P和Q的角色不同,交换他们的位置会导致非常不同的结果
$$
H(P,Q)\neq H(Q,P)
$$
交叉熵引出了一个问题,我们如何量化信念与现实之间的差异,能否在某种程度上隔离出惊讶中纯粹源于模型不准确的部分,而不是数据本身的内在不确定性,这时kl散度(killback leibler散度)的概念就派上用场了
kl散度
它帮助我们剥离惊讶的层次
kl散度 = 交叉熵-熵
$$
kl散度=H(P,Q)-H(P)=\sum_{s}^\text{}{p_s}\log\left(\frac{1}{q_s}\right)-\sum_sp_s\log\left(\frac1{p_s}\right)=\sum_sp_s\log\left(\frac{p_s}{q_s}\right)=D_{\mathrm{KL}}(P,Q)
$$
kl散度衡量的是我们使用模型Q而非真实分布p时,我们所感受到的额外惊讶度,即超过p自身的惊讶度
这样就可以隔离出超过p自身的惊讶度
理想情况下,我们的目标是将KL散度降低到0,这意味着模型完美符合数据分布
三角函数相关
三角恒等式
$$
\cos^2(t) + \sin^2(t) = 1
$$
推导如下:
神经网络
神经网络可以看作是具有足够表达能力的数学函数,能够捕捉数据中的复杂模式
前进方向
复变函数,有限元计算原理
余元公式
高中数学->数学分析->高等代数->实变函数->泛函分析->偏微分方程








