线性代数|机器学习-P20鞍点和极值

news2024/7/4 1:17:24

文章目录

1 . 瑞利商的思考

1.1 瑞利商的定义

假设A是n阶实对称矩阵,x是n维非零列向量,那么瑞利商表示如下:
R ( A , x ) = x T A x x T x \begin{equation} R(A,x)=\frac{x^TAx}{x^Tx} \end{equation} R(A,x)=xTxxTAx

  • 在看到上面式子时候,感觉很奇怪,为什么瑞利商就能够计算出鞍点和极值点的位置?我发现瑞利商的形式就像投影公式样。。。

1.2 投影向量

假设我们有两个向量 x , a 1 x,a_1 x,a1,我们想求向量 a 1 a_1 a1在向量x方向上的投影向量 p 1 p_1 p1

在这里插入图片描述

  • ∣ p 1 ∣ |p_1| p1
    ∣ p 1 ∣ = ∣ a 1 ∣ cos ⁡ ( θ ) , x T a 1 = ∣ a 1 ∣ cos ⁡ ( θ ) ⋅ ∣ x ∣ → ∣ p 1 ∣ = x T a 1 ∣ x ∣ \begin{equation} |p_1|=|a_1|\cos(\theta),x^Ta_1=|a_1|\cos(\theta)\cdot|x|\rightarrow |p_1|=\frac{x^Ta_1}{|x|} \end{equation} p1=a1cos(θ),xTa1=a1cos(θ)xp1=xxTa1
  • p 1 p_1 p1的单位向量为:
    e 1 = x ∣ x ∣ \begin{equation} e_1=\frac{x}{|x|} \end{equation} e1=xx
  • p p p向量为:
    p 1 = ∣ p 1 ∣ ⋅ e 1 = x T a ∣ x ∣ x ∣ x ∣ = x T a 1 x x T x \begin{equation} p_1=|p_1|\cdot e_1=\frac{x^Ta}{|x|}\frac{x}{|x|}=\frac{x^Ta_1x}{x^Tx} \end{equation} p1=p1e1=xxTaxx=xTxxTa1x
  • 小结:
    当我们对一个向量 a 1 a_1 a1进行瑞利商时,得到了居然是这个向量 a 1 a_1 a1在给定 x 1 x_1 x1向量上的投影向量,我们发现投影向量中只需要知道 x x x向量的方向,跟 x x x的大小无关,这点很重要,
  • 转换:
    -那么我们有一个矩阵实对称A,它可以由如下组成:
    A = [ a 1 a 2 ⋯ a n ] \begin{equation} A=\begin{bmatrix}a_1&a_2&\cdots&a_n\end{bmatrix} \end{equation} A=[a1a2an]
  • 那么瑞利商可以表示为:
    R ( A , x ) = x T [ a 1 a 2 ⋯ a n ] x x T x = [ x T a 1 x x T x x T a 2 x x T x ⋯ x T a n x x T x ] \begin{equation} R(A,x)=\frac{x^T\begin{bmatrix}a_1&a_2&\cdots&a_n\end{bmatrix}x}{x^Tx}=\begin{bmatrix}\frac{x^Ta_1x}{x^Tx}&\frac{x^Ta_2x}{x^Tx}&\cdots&\frac{x^Ta_nx}{x^Tx}\end{bmatrix} \end{equation} R(A,x)=xTxxT[a1a2an]x=[xTxxTa1xxTxxTa2xxTxxTanx]
  • 小结 : 瑞利商表示的是实对称矩阵A在给定x向量的投影向量组合。这里x的大小不影响投影向量的值。所以为了后续计算,我们可以定义 x T x = 1 x^Tx=1 xTx=1,这样瑞利商问题可以变成如下:
    R ( A , x ) = x T A x x T x → R ( A , x ) = x T A x , s t : x T x = 1 \begin{equation} R(A,x)=\frac{x^TAx}{x^Tx}\rightarrow R(A,x)=x^TAx,st:x^Tx=1 \end{equation} R(A,x)=xTxxTAxR(A,x)=xTAx,st:xTx=1
  • 那么瑞利商的极值问题就变成了一个二次型 x T A x x^TAx xTAx在约束条件下的 x T x = 1 x^Tx=1 xTx=1的最优化问题。一般我们解决最优化问题,会引入拉格朗日乘子法:

2. 拉格朗日乘子法

我们的目标是要求实对称矩阵S的二次型 x T S x x^TSx xTSx x T x = 1 x^Tx=1 xTx=1的约束情况下的最优化问题:这里为了方便,一般用S来表示实对称矩阵来代替上面的A,不影响后续理解和计算。纯粹为了方便。
L ( S , λ ) = x T S x − λ ( x T x − 1 ) \begin{equation} L(S,\lambda)=x^TSx-\lambda(x^Tx-1) \end{equation} L(S,λ)=xTSxλ(xTx1)

  • 求偏导可得:
    ∂ L ( S , λ ) ∂ x = 2 S x − λ ⋅ 2 x = 0 → S x = λ x \begin{equation} \frac{\partial L(S,\lambda)}{\partial x}=2Sx-\lambda \cdot 2x=0\rightarrow Sx=\lambda x \end{equation} xL(S,λ)=2Sxλ2x=0Sx=λx
  • 说明了瑞利商的偏导数为0的值一定在矩阵S的特征值 λ \lambda λ上和其对应的特征向量x上。
    ∂ L ( S , λ ) ∂ λ = − x T x + 1 = 0 → x T x = 1 \begin{equation} \frac{\partial L(S,\lambda)}{\partial \lambda}=-x^Tx+1=0\rightarrow x^Tx=1 \end{equation} λL(S,λ)=xTx+1=0xTx=1
    本来都是约束条件。
  • 那问题就简单了,瑞利商的极值问题的点分别为特征值 λ 1 , λ 2 , ⋯   , λ n \lambda_1,\lambda_2,\cdots,\lambda_n λ1,λ2,,λn,其对应的特征向量 x 1 , x 2 , ⋯   , x n x_1,x_2,\cdots,x_n x1,x2,,xn
  • 那么我们代入到瑞利商原来式子中,可得极值特解方程,注意不是一般式:
    R ( S , x ) = x T S x x T x = x T λ x x T x = λ \begin{equation} R(S,x)=\frac{x^TSx}{x^Tx}=\frac{x^T\lambda x}{x^Tx}=\lambda \end{equation} R(S,x)=xTxxTSx=xTxxTλx=λ
  • 由于 λ n ≤ λ n − 1 ≤ ⋯ ≤ λ 2 ≤ λ 1 \lambda_n\le \lambda_{n-1}\le\cdots\le\lambda_2\le\lambda_1 λnλn1λ2λ1
    arg ⁡ m i n R ( S , x n ) = λ n ; arg ⁡ m a x R ( S , x 1 ) = λ 1 ; \begin{equation} \arg\limits_{min}R(S,x_n)=\lambda_n;\arg\limits_{max}R(S,x_1)=\lambda_1; \end{equation} minargR(S,xn)=λn;maxargR(S,x1)=λ1;
  • 那么其他的特征值 λ 2 , λ 3 , ⋯   , λ n − 1 \lambda_2,\lambda_3,\cdots,\lambda_{n-1} λ2,λ3,,λn1对应的就是鞍点!!!这样我们就可以通过瑞利商来快速的找到鞍点。

3. 鞍点

在深度学习中,我们希望快速的找到极值点,一般就对损失函数求一次偏导后得到所有的极值点,但是有一种鞍点,其偏导数也为0,但是它既不是极大值点,又不是极小值点,但它的一阶偏导为0,所以我们需要排除鞍点的干扰,。如图所示:
在这里插入图片描述

  • 鸡头法,先求最小值,再求最大值
    为了求得几何上的鞍点,我们需要先求最小值,在求最大值,数学表达式如下:
    λ = max ⁡ y min ⁡ x , z x T S x \begin{equation} \lambda=\max\limits_{y}\min\limits_{x,z}x^TSx \end{equation} λ=ymaxx,zminxTSx
    在这里插入图片描述

  • 凤尾法,先求最大值,再求最小值
    λ = min ⁡ x max ⁡ y , z x T S x \begin{equation} \lambda=\min\limits_{x}\max\limits_{y,z}x^TSx \end{equation} λ=xminy,zmaxxTSx
    在这里插入图片描述

  • 我们可以简单理解,鸡头不如凤尾,那么我们一般是使用鸡头法,这样求得的鞍点值更小。
    λ = max ⁡ y min ⁡ x , z x T S x \begin{equation} \lambda=\max\limits_{y}\min\limits_{x,z}x^TSx \end{equation} λ=ymaxx,zminxTSx

  • 我们就把一个鞍点问题转换成对偶问题,通过瑞利商和拉格朗日乘子法结合求得鞍点。

4. 线性拟合

4.1 范德蒙矩阵线性拟合

假设我们二维平面上有 6 个点,根据多项式拟合条件来说,6个点可以用一个五次方函数进行拟合。比如说我们平面上如果需要确定一条直线 ( y = k x + b ) (y=kx+b) (y=kx+b),一般需要两个点,确定一个抛物线 ( y = a x 2 + b x + c ) (y=ax^2+bx+c) (y=ax2+bx+c),一般需要三个点,所以6个点可以用
y = c 5 x 5 + c 4 x 4 + c 3 x 3 + c 2 x 2 + c 1 x + c 0 \begin{equation} y=c_5x^5+c_4x^4+c_3x^3+c_2x^2+c_1x+c_0 \end{equation} y=c5x5+c4x4+c3x3+c2x2+c1x+c0

  • 这里我们可以用范德蒙矩阵进行表示:
    A C = b \begin{equation} AC=b \end{equation} AC=b
  • A为范德蒙矩阵,C为相关系数。
    在这里插入图片描述

4.2 python 代码

  • jupyter 下运行
import numpy as np
import matplotlib.pyplot as plt

# 生成6个随机点
np.random.seed(42)  # 固定随机种子以获得可重复的结果
x = np.random.rand(6)
y = np.random.rand(6)

# 构造范德蒙矩阵
V = np.vander(x, increasing=True)

# 求解系数向量
a = np.linalg.solve(V, y)

# 生成用于绘制拟合曲线的x值
x_fit = np.linspace(0, 1, 100)
y_fit = np.polyval(a[::-1], x_fit)

# 绘制原始点和拟合曲线
plt.scatter(x, y, color='red', label='Original Points')
plt.plot(x_fit, y_fit, color='blue', label='Fitted Polynomial')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Vandermonde Matrix Polynomial Fitting')
plt.legend()
plt.grid(True)
plt.show()

# 输出结果
print("随机生成的点:")
for xi, yi in zip(x, y):
    print(f"({xi:.4f}, {yi:.4f})")

print("\n范德蒙矩阵:")
print(V)

print("\n多项式系数:")
print(a)

# 打印多项式表达式
poly_str = "P(x) = " + " + ".join([f"{a[i]:.4f}x^{i}" for i in range(len(a))])
print("\n多项式:")
print(poly_str.replace("x^0", "").replace(" + -", " - ").replace("x^1", "x"))
  • 结果:
    在这里插入图片描述
    在这里插入图片描述

4.3 范德蒙矩阵缺点

我们之前在P18快速奇异值那章节学过,范德蒙矩阵的缺点是其矩阵的逆的秩特别大,不好求,导致计算范德蒙矩阵的逆是巨复杂的。还有就是希尔伯特矩阵。

5. 均值和方差

5.1 样本均值和方差

假设我们有N个样本 x 1 , x 2 , ⋯   , x n x_1,x_2,\cdots,x_n x1,x2,,xn,那么样本 X ˉ \bar{X} Xˉ均值为
X ˉ = 1 N ( x 1 + x 2 + ⋯ + x n ) \begin{equation} \bar{X}=\frac{1}{N}(x_1+x_2+\cdots+x_n) \end{equation} Xˉ=N1(x1+x2++xn)

  • 那么样本方差 S 2 S^2 S2由公式可得:
    S 2 = 1 n − 1 ∑ i = 1 n ( x i − X ˉ ) \begin{equation} S^2=\frac{1}{n-1}\sum_{i=1}^n(x_i-\bar{X}) \end{equation} S2=n11i=1n(xiXˉ)

5.2 总体期望 μ \mu μ,总体方差 σ 2 \sigma^2 σ2

  • 总体期望
    假设有无穷个样本 x i x_i xi,每个样本对应的概率为 p i p_i pi,那么可得:
    ∑ i = 1 ∞ p i = 1 , μ = E ( x ) = ∑ i = 1 ∞ p i x i \begin{equation} \sum_{i=1}^{\infty}p_i=1,\mu=E(x)=\sum_{i=1}^{\infty}p_ix_i \end{equation} i=1pi=1,μ=E(x)=i=1pixi
  • 总体方差
    D ( X ) = E ( X 2 ) − [ E ( X ) ] 2 \begin{equation} D(X)=E(X^2)-[E(X)]^2 \end{equation} D(X)=E(X2)[E(X)]2
    σ 2 = ∑ i = 1 ∞ p i ( x i − μ ) 2 \begin{equation} \sigma^2=\sum_{i=1}^{\infty}p_i(x_i-\mu)^2 \end{equation} σ2=i=1pi(xiμ)2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1884063.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法金 | Transformer,一个神奇的算法模型!!

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 抱个拳,送个礼 在现代自然语言处理(NLP)领域,Transformer 模型的出现带来了革命性的变…

算法 —— 滑动窗口

目录 长度最小的子数组 无重复字符的最长子串 最大连续1的个数 将x减到0的最小操作数 找到字符串中所有字母异位词 长度最小的子数组 sum比target小就进窗口,sum比target大就出窗口,由于数组是正数,所以相加会使sum变大,相减…

云计算与生成式AI的技术盛宴!亚马逊云科技深圳 Community Day 社区活动流程抢先知道!

小李哥最近要给大家分享7月7日在深圳的即将举办的亚马逊云科技生成式AI社区活动Community Day ,干货很多内容非常硬核,不仅有技术分享学习前沿AI技术,大家在现场还可以动手实践沉浸式体验大模型,另外参与现场活动还可以领取诸多精…

高优先线程

你开发的时候有么有遇到过一个问题:服务器的一个服务线程过几个小时断连一次,断连之后会马上重连这种情况。这是由于CPU负载较高,线程调度时将处理数据的线程挂起了一段时间导致的。 因此,我有考虑到把cpu的核心进行分散开来,就类…

关于发那科机器人系统升级方法

首先需要镜像备份和全备份,最好把机器人要到刻度线位置,零点位置 选择控制器启动,也可以按preevnext进入控制器模式

技术革新:如何用数据中台实现数字化转型

作为程序员,我们总是对技术如何改变企业运作充满好奇。今天,我们将深入探讨森马集团如何利用数据中台技术,实现从传统数据分析到数字化转型的华丽转身。 1. 技术背景:森马集团的数字化挑战 森马集团,一个在服饰行业占…

幻兽帕鲁服务器如何安装模组安装

由于模组多数为Window版本的,所以本教程以服务端为Window的作为演示(Linux服务端的也是一样的操作)百度莱卡云开服 如果你你是Linux版本的,请点击跳转切换服务端教程 接下来是本地安装模组包的方法(服务器自带&#xf…

浅谈定时器之同步定时器

浅谈定时器之同步定时器 “同步定时器”(Synchronizing Timer)是一个特别的定时器,它用于确保在特定时间点上多个线程(或虚拟用户)同时发起请求,这对于测试系统在高并发情况下的表现尤为重要。本文将深入解…

通义灵码 Visual Studio 小白上手指南

一、下载和安装指南 本安装步骤适用于 Windows 10 及以上操作系统中安装和使用通义灵码。 步骤 1:准备工作 操作系统:Windows 10 及以上;下载并安装 ****Visual Studio 2022 17.3.0 及以上版本。 步骤 2:在 Visual Studio 202…

【Linux】:命令行参数

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux命令行参数的相关知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入…

分享一个超级实用的东西——巴比达远程访问

前言 🎈家人们,今天我要和你们分享一个超级实用的东西——巴比达远程访问!🎉 💻有了它,无论你身在何处,都能轻松访问家中的电脑💻,就像在身边一样方便!&…

C++类型转换可调用对象

目录 C的四种可视性类型转换 1.static_cast 2.reinterpret_cast 3.const_cast 4.dynamic_cast C中的可调用对象 普通函数 函数指针 仿函数 Lambda表达式 包装器function bind C的四种可视性类型转换 C语言中的类型转换是不安全、不明确的,于是C就出了更…

JavaFX布局-BorderPane

JavaFX布局-BorderPane 实现方式Java实现FXML实现 综合案例 将容器空间分成五个区域:顶部(Top)、底部(Bottom)、左侧(Left)、右侧(Right)和中心(Center&#…

专题六:Spring源码之初始化容器BeanFactory

上一篇咱们通过一个例子介绍初始化容器上下文相关内容,并通过两个示例代码看到了Spring在设计阶段为我预留的扩展点,和我们应该如何利用这两个扩展点在Spring初始化容器上下文阶段为我们提供服务。这一篇咱们接着往下看。 老这样子下回到refresh方法上来…

OFDM关键技术——同步技术

同一符号内各子载波受到不同的相位偏转及幅度衰减, k 越大偏差越大;相位偏转与子载波序号 k 和符号序号 i 均有关,序号越大,相位偏转越大;引入了 ICI ,系统信噪比降低;当采样偏差效果累积到一定…

苍穹外卖项目 常用注解 + 动态sql

常用注解 常见的注解解析方法有两种: 编译期直接扫描:编译器在编译 Java 代码的时候扫描对应的注解并处理,比如某个方法使用Override 注解,编译器在编译的时候就会检测当前的方法是否重写了父类对应的方法。运行期通过反射处理&…

CesiumJS【Basic】- #038 绘制轮廓线(Primitive方式)

文章目录 绘制轮廓线(Primitive方式)1 目标2 代码2.1 main.ts绘制轮廓线(Primitive方式) 1 目标 使用Primitive方式绘制轮廓线 2 代码 2.1 main.ts var start = Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883);v

设备通信-MODBUS协议和485接口

因水表远程监控和水泵数据监控系统,需了解物联网开发协议。 通信协议 通信协议说白了就是一种语言,一种通信双方都能听的懂得语言。 设备常用的通信协议有MODBUS RTU,PPI,MPI等,通信协议和我们常用的语言只是叫法不一样&#x…

预约小程序源码,云开发技术,无需服务器

介绍: 很多企业的业务都需要通过服务预约来完成,比如酒店、美容、家政等等。 但很多商家因缺少合适的服务预订工具,而不知道如何让客户尽快预约。 这种情况下,制作一个自己的预约小程序,客户只需要扫码或者在微信里…

8605 删数问题

这是一个典型的贪心算法问题。我们可以从高位开始,找到第一个比后面数字大的数字,删除它,然后继续这个过程,直到删除k个数字。如果我们已经删除了k个数字,但是还没有找到一个比后面数字大的数字,那么我们就…