线性代数|机器学习-P11方程Ax=b求解研究

文章目录

  • 1. 变量数和约束条件数大小分类
  • 2. 最小二乘法和Gram-schmidt变换
    • 2.1 Gram-schmidt变换
    • 2.2 最小二乘法
      • 2.2.1 损失函数-Lasso 和regression
      • 2.2.2 损失函数-Lasso
      • 2.2.3 损失函数-regression
      • 2.2.4 Regression岭回归-矩阵验证
      • 2.2.5 Regression岭回归-导数验证
  • 3. 迭代和随机采样
    • 3.1 迭代
    • 3.2 随机采样

1. 变量数和约束条件数大小分类

  • 0 用伪逆矩阵 x = A + b x=A^{+}b x=A+b直接求解,[上一节已讲]
  • 1 当矩阵A大小适中,条件数 σ 1 σ r < 1000 时 \frac{\sigma_1}{\sigma_r}<1000时 σrσ1<1000, 用 x = A \ b x=A\backslash b x=A\b
  • 2 当矩阵A列满秩m>n=r时,方程数多于变量数,无法求解,只能择中找近似解,将b投影到矩阵A的列空间中后,再找到近似解 x ^ \hat{x} x^ A T A x ^ = A T b → x ^ = ( A T A ) − 1 A T b A^TA\hat{x}=A^Tb\rightarrow \hat{x}=(A^TA)^{-1}A^Tb ATAx^=ATbx^=(ATA)1ATb
  • 3 当矩阵m < n时,方程数小于变量数,有无穷多的解,约束不够,所以我们增加 L 1 , L 2 L_1,L2 L1,L2约束来在众多的解中拿到一个好的解,这是深度学习中最重要的损失函数解决思路。

2. 最小二乘法和Gram-schmidt变换

2.1 Gram-schmidt变换

  • 4 列向量情况很差,条件数 σ 1 σ r > 1000 \frac{\sigma_1}{\sigma_r}>1000 σrσ1>1000,就是病态矩阵,简单理解就是矩阵A的列向量之间相关性太大,导致无法用相关性的列表示其他向量;
    当我们矩阵A的列向量为 a 1 , a 2 a_1,a_2 a1,a2时候,我们用 a 1 , a 2 a_1,a_2 a1,a2表示 v 3 v_3 v3时候,特别不方便, a 1 , a 2 a_1,a_2 a1,a2越相近,越不方便,就是所说的列向量相关性太大,那gram-schmidt的方式就是,既然 a 1 , a 2 a_1,a_2 a1,a2太接近,那就改造其中一个,我们把 a 1 a_1 a1经过投影和相减后得到 a 11 a_{11} a11,那么 a 11 ⊥ a 2 a_{11}\perp a_2 a11a2,这样我们就用新的正交向量 a 11 , a 3 a_{11},a_3 a11,a3来表示 v 3 v_3 v3. 将A分解为QR后就可以得到最优解 x ^ \hat{x} x^,具体推导可以看上一节内容。另外一种是通过将列进行旋转,原理和行的交换一样,主要是关于数值稳定性的问题,保证不要出现大数吃小数的现象发生。
    在这里插入图片描述

2.2 最小二乘法

2.2.1 损失函数-Lasso 和regression

  • 5 矩阵A接近奇异矩阵,该矩阵的值不是满秩,无法进行直接求逆得到 A − 1 A^{-1} A1逆矩阵,就是会得到很多的解,我们的目的是从这么多的解中找到一个最好的解,目前加 L 1 L_1 L1项,即加 λ ∣ ∣ x ∣ ∣ 1 \lambda||x||_1 λ∣∣x1,即是我们的LASSO模型;加 L 2 L_2 L2项目,即加 δ 2 ∣ ∣ x ∣ ∣ 2 2 \delta^2||x||_2^2 δ2∣∣x22,即是我们的岭回归模型,是不是很神奇!!!,后面还有的是两个都加,后续会学习到的!!!

2.2.2 损失函数-Lasso

  • Lasso 模型
    arg ⁡ m i n 1 2 ∣ ∣ A x − b ∣ ∣ 2 2 + λ ∣ ∣ x ∣ ∣ 1 \begin{equation} \arg\limits_{min}\frac{1}{2}||Ax-b||_2^2+\lambda||x||_1 \end{equation} minarg21∣∣Axb22+λ∣∣x1
  • Redge 模型,在 δ \delta δ较小的时候 1 2 δ 2 \frac{1}{2}\delta^2 21δ2 δ 2 \delta^2 δ2无区别

2.2.3 损失函数-regression

z = arg ⁡ m i n 1 2 ∣ ∣ A x − b ∣ ∣ 2 2 + 1 2 δ 2 ∣ x ∣ ∣ 1 2 \begin{equation} z=\arg\limits_{min}\frac{1}{2}||Ax-b||_2^2+\frac{1}{2}\delta^2|x||_1^2 \end{equation} z=minarg21∣∣Axb22+21δ2x12

  • z的矩阵表达式
    z = arg ⁡ m i n 1 2 ∣ ∣ A x − b ∣ ∣ 2 2 + 1 2 ∣ ∣ δ I x − 0 ∣ ∣ 1 2 \begin{equation} z=\arg\limits_{min}\frac{1}{2}||Ax-b||_2^2+\frac{1}{2}||\delta Ix-0||_1^2 \end{equation} z=minarg21∣∣Axb22+21∣∣δIx0∣12
  • 也就是说惩罚项重新构成了增广矩阵 A ∗ , b ∗ A^*,b^* A,b
    [ A σ I ] [ x ] = [ b 0 ] → A ∗ x = b ∗ → ( A T A + σ 2 I ) x = A T b \begin{equation} \begin{bmatrix}A\\\\ \sigma I\end{bmatrix}\begin{bmatrix}x\end{bmatrix}=\begin{bmatrix}b\\\\0\end{bmatrix}\rightarrow A^*x=b^*\rightarrow (A^TA+\sigma^2 I)x=A^Tb \end{equation} AσI [x]= b0 Ax=b(ATA+σ2I)x=ATb
  • 对于一般矩阵A,不是特别大的矩阵A,解如下:
    ( A T A + σ 2 I ) x = A T b → x ^ = ( A T A + σ 2 I ) − 1 A T b \begin{equation} (A^TA+\sigma^2 I)x=A^Tb\rightarrow \hat{x}=(A^TA+\sigma^2I)^{-1}A^Tb \end{equation} (ATA+σ2I)x=ATbx^=(ATA+σ2I)1ATb

2.2.4 Regression岭回归-矩阵验证

  • 验证上述是否正确,假设矩阵A为[a],整理可得如下:
    ( A T A + σ 2 I ) x = A T b → ( a 2 + σ 2 ) x = a b \begin{equation} (A^TA+\sigma^2 I)x=A^Tb\rightarrow (a^2+\sigma^2)x=ab \end{equation} (ATA+σ2I)x=ATb(a2+σ2)x=ab
    – 当 a 2 + σ 2 ≠ 0 a^2+\sigma^2 \neq 0 a2+σ2=0:
    ( a 2 + σ 2 ) x = a b → x ^ = a a 2 + σ 2 b \begin{equation} (a^2+\sigma^2)x=ab\rightarrow \hat{x}=\frac{a}{a^2+\sigma^2}b \end{equation} (a2+σ2)x=abx^=a2+σ2ab
  • σ = 0 , a ≠ 0 \sigma=0,a\ne 0 σ=0,a=0时,可得:
    ( a 2 + σ 2 ) x = a b → x ^ = a a 2 + σ 2 b → x ^ = b a \begin{equation} (a^2+\sigma^2)x=ab\rightarrow \hat{x}=\frac{a}{a^2+\sigma^2}b\rightarrow \hat{x}=\frac{b}{a} \end{equation} (a2+σ2)x=abx^=a2+σ2abx^=ab
    – 当 a 2 + σ 2 = 0 → a = σ = 0 a^2+\sigma^2 =0\rightarrow a=\sigma=0 a2+σ2=0a=σ=0:
    z = arg ⁡ m i n 1 2 ∣ ∣ A x − b ∣ ∣ 2 2 + 1 2 δ 2 ∣ x ∣ ∣ 1 2 → z = 1 2 ( a x − b ) 2 \begin{equation} z=\arg\limits_{min}\frac{1}{2}||Ax-b||_2^2+\frac{1}{2}\delta^2|x||_1^2\rightarrow z=\frac{1}{2}(ax-b)^2 \end{equation} z=minarg21∣∣Axb22+21δ2x12z=21(axb)2
    此时的z是向上的抛物线,那么可得最小值就一定在x=0处。

2.2.5 Regression岭回归-导数验证

z = arg ⁡ m i n 1 2 ∣ ∣ A x − b ∣ ∣ 2 2 + 1 2 δ 2 ∣ x ∣ ∣ 1 2 = 1 2 ( a x − b ) 2 + 1 2 δ 2 x 2 \begin{equation} z=\arg\limits_{min}\frac{1}{2}||Ax-b||_2^2+\frac{1}{2}\delta^2|x||_1^2=\frac{1}{2}(ax-b)^2+\frac{1}{2}\delta^2x^2 \end{equation} z=minarg21∣∣Axb22+21δ2x12=21(axb)2+21δ2x2

  • 求导可得:
    ∂ z ∂ x = a ( a x − b ) + σ 2 x = 0 → ( a 2 + σ 2 ) x ^ = a b → 居然跟矩阵表达式一样 \begin{equation} \frac{\partial z}{\partial x}=a(ax-b)+\sigma^2x=0\rightarrow (a^2+\sigma^2)\hat{x}=ab\rightarrow 居然跟矩阵表达式一样 \end{equation} xz=a(axb)+σ2x=0(a2+σ2)x^=ab居然跟矩阵表达式一样
    所以我们暂时简单验证我们在最小二乘法中加二范数惩罚项是对的!!!

  • 以上是损失函数的设计,也就是我们通过添加损失函数的约束条件来明确我们的目标,那么目标有了,现在缺少怎么找到目标的方法,常见的有随机梯度下降等方法,里面设计到学习率,迭代次数等,目的是怎么快速的找到最小的损失函数值,并根据结果来更新权重参数,这样矩阵就和深度学习联系上啦!

  • 好的解指的是我们的解不仅对已知的数据集有好的损失函数值,同时我们的解还能对未知的数据有好的结果!有效性和泛化性都要有!!!

3. 迭代和随机采样

3.1 迭代

  • 6 迭代
    当矩阵很大的时候,但是不是超级巨大,我们可以用迭代的方法处理,将矩阵A分解为
    A = S − T → A x = b → S x = T x + b \begin{equation} A=S-T\rightarrow Ax=b\rightarrow Sx=Tx+b \end{equation} A=STAx=bSx=Tx+b
  • 迭代可得:
    S x k + 1 = T x k + b ; S x k = T x k − 1 + b ; → S ( x − x k + 1 ) = T ( x − x k ) \begin{equation} Sx_{k+1}=Tx_k + b;Sx_{k}=Tx_{k-1} + b;\rightarrow S(x-x_{k+1})=T(x-x_k) \end{equation} Sxk+1=Txk+b;Sxk=Txk1+b;S(xxk+1)=T(xxk)
  • 误差比可得:
    x − x k + 1 x − x k = S − 1 T \begin{equation} \frac{x-x_{k+1}}{x-x_k}=S^{-1}T \end{equation} xxkxxk+1=S1T
  • S − 1 T S^{-1}T S1T<1时,随着 S − 1 T S^{-1}T S1T越小, x k x_k xk收敛的快。

3.2 随机采样

  • 7 随机采样
    当矩阵A超级大的时候,我们用电脑计算已经无法直接计算 A T A A^TA ATA的时候,我们就需要用到神奇的概率采样技术了,我们通过一定的概率去采样得到新的矩阵 A s A_s As时,用 A s A_s As近似替代A。
    我们知道矩阵A左乘行变换,右乘列变换,当我们用x来采样A列向量时,得到 A x = A s l Ax=A_{sl} Ax=Asl,实现列采样,当我们用x来采样A行向量时,得到 A T x = A s r A^Tx=A_{sr} ATx=Asr,实现行采样,这样我们就可以用采样的小样本来代替大样本矩阵A了。

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

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

相关文章

【数据结构】队列——循环队列(详解)

目录 0 循环队列 1 特定条件下循环队列队/空队满判断条件 1.1 队列为空的条件 1.2 队列为满的条件 2 循环队列的实现 3 示例 4 注意事项 0 循环队列 循环队列&#xff08;Circular Queue&#xff09;是队列的一种实现方式&#xff0c;它通过将队列存储空间的最后一…

MySQL之多表查询—行子查询

一、引言 上篇博客学习了列子查询。 接下来学习子查询中的第三种——行子查询。 行子查询 1、概念 子查询返回的结果是一行&#xff08;当然可以是多列)&#xff0c;这种子查询称为行子查询。 2、常用的操作符 、 <> (不等于) 、IN 、NOT IN 接下来通过一个需求去演示和…

locale本地化库学习

std::locale 类型的对象&#xff08;本地环境对象&#xff09;是不可变刻面的一个不可变索引集。C 输入/输出库的每个流对象都与一个 std::locale 对象关联&#xff0c;并用它的各刻面来分析及格式化所有数据。另外&#xff0c;每个 std::basic_regex 对象也都与一个本地环境对…

Linux下软件安装

提示&#xff1a;制作不易&#xff0c;可以点个关注和收藏哦。 前言 介绍 Ubuntu 下软件安装的几种方式&#xff0c;及 apt&#xff0c;dpkg 工具的使用。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考. 一、先体验一下 比如我们想安装一个软件&…

Diffusers代码学习: 多个Adapter

T2I Adapter也是可组合的&#xff0c;允许您使用多个适配器对图像施加多个控制条件。例如&#xff0c;可以使用姿势贴图提供结构控制&#xff0c;使用深度贴图进行深度控制。这是由[MultiAdapter]类启用的。 让我们用姿势和深度适配器来调节文本到图像的模型。创建深度和姿势图…

IT闲谈-Kylin入门教程

目录 一、引言二、Kylin简介三、环境准备四、安装与配置五、数据导入与建模六、查询与分析七、总结 一、引言 Apache Kylin是一个开源的分布式分析引擎&#xff0c;旨在提供Hadoop/Spark之上的SQL接口及多维分析&#xff08;OLAP&#xff09;能力以支持超大规模数据。Kylin通过…

TinyVision V851s 使用 OpenCV + NPU 实现 Mobilenet v2 目标分类识别

用39块钱的V851se视觉开发板做了个小相机。 可以进行物品识别、自动追焦&#xff01; 这个超低成本的小相机是在V851se上移植使用全志在线开源版本的Tina Linux与OpenCV框架开启摄像头拍照捕获视频&#xff0c;并结合NPU实现Mobilenet v2目标分类识别以及运动追踪等功能......并…

以无厚,入有间,做一件事为什么靠努力不行,不能长期维持

庖丁解牛&#xff0c;并不是在说人和技巧&#xff0c;而是在说解牛不在于刀的锋利&#xff0c;而是怎样才能做到让刀不产生损耗&#xff0c;就是熟悉牛肉纹路&#xff0c;按照纹路和肉骨间隙进行操刀。这就是尊重自然规律&#xff0c;对于人也是一样的&#xff0c;如果所有事情…

C++输入输出与IO流

C 输入输出与I/O流 文章目录 C 输入输出与I/O流IO类型与基础特性概念与特性IO状态输出缓冲区 文件输入输出文件模式 string流IO处理中常用的函数及操作符综合练习与demo一、 创建文件并写入二、控制台输入数据并拆分存储三、读写电话簿 IO类型与基础特性 C11标准提供了几种IO处…

android 抓取 logcat 日志的方法

1.找到这个路径 2.然后执行命令&#xff08;adb logcat -v time >.\\logcat.log&#xff09;&#xff0c;开始抓取日志 3.这个时候就可以去操作APP了&#xff0c;复现BUG了。 Ctrlc 结束日志抓取 adb logcat -c 清空旧日志

逆市创新高!水电“双雄“是怎样炼成的? 博通,赢麻了!

高分红夏季用电高峰AI的尽头是电力 6月7日&#xff0c;长江电力&#xff08;600900&#xff09;、华能水电&#xff08;600025&#xff09;股价双双上涨。截至收盘&#xff0c;长江电力股价上涨1%&#xff0c;收于28.31元/股&#xff1b;华能水电股价上涨1.52%&#xff0c;收于…

Matlab|遗传粒子群-混沌粒子群-基本粒子群

目录 1 主要内容 2 部分代码 3 效果图 4 下载链接 1 主要内容 很多同学在发文章时候最犯愁的就是创新点创新点创新点&#xff08;重要的事情说三遍&#xff09;&#xff0c;对于采用智能算法的模型&#xff0c;可以采用算法改进的方式来达到提高整个文章创新水平的目的&…

基于STM32开发的智能机器人导航系统

目录 引言环境准备智能机器人导航系统基础代码实现&#xff1a;实现智能机器人导航系统 4.1 距离传感器数据读取4.2 电机控制4.3 实时路径规划与避障4.4 用户界面与状态显示应用场景&#xff1a;智能机器人导航与控制问题解决方案与优化收尾与总结 1. 引言 智能机器人导航系…

中国西部AI创新港,数字经济的新引擎

编辑&#xff1a;阿冒 设计&#xff1a;沐由 时间&#xff1a;2024年5月31日。 地点&#xff1a;西安交通大学创新港校区涵英楼千人报告厅。 人物&#xff1a;近千位政府、高校和企事业单位的代表&#xff0c;还有我。 我们的脚下&#xff0c;就是八百里秦川。 三秦自古多才俊。…

Linux基础指令(一)

前言 Linux基础指令主要学习&#xff1a;对目录、文件、压缩包、匹配查找&#xff0c;权限等操作 第一次接触ubuntu需要知道的基本知识 sudo passwd root 先给root用户设置密码 su root 切换到root用户 su zhangsan …

Django里的Form组件

Form组件提供 自动生成HTML标签和半自动读取关联数据 (“半自动”是指还得需要自己手写输入数据进来)表单验证和错误提示 要想创建并使用该组件&#xff0c;操作步骤如下&#xff1a; 在 views.py 里创建类 # 在 views.py 文件里from django import formsclass AssetForm(fo…

core dump核心转储

检查核心转储是否开启&#xff0c;否则无法生成core文件 ulimit -a 如果为0就需要修改 ulimit -c 10240 写一个会触发core命令的程序 以浮点数运算为例 #include <iostream>int main() {int i 1/0; } 在编译时使用-g选项 运行程序&#xff0c;生成core文件 gdb调试 g…

C++ MPI多进程并发

下载 用法 mpiexec -n 8 $PROCESS_COUNT x64\Debug\$TARGET.exe 多进程并发启动 mpiexec -f hosts.txt -n 3 $PROCESS_COUNT x64\Debug\$TARGET.exe 联机并发进程&#xff0c;其它联机电脑需在相同路径下有所有程序 //hosts.txt 192.168.86.16 192.168.86.123 192.168…

MySQL-备份(三)

备份作用&#xff1a;保证数据的安全和完整。 一 备份类别 类别物理备份 xtrabackup逻辑备份mysqldump对象数据库物理文件数据库对象&#xff08;如用户、表、存储过程等&#xff09;可移植性差&#xff0c;不能恢复到不同版本mysql对象级备份&#xff0c;可移植性强占用空间占…

java中集合List,Set,Queue,Map

Java SE中的集合框架是一组用于存储和操作对象的类和接口。它提供了丰富的数据结构&#xff0c;可以用于解决各种问题。Java SE中的集合框架包含以下主要类和接口&#xff1a; 一. Collection接口&#xff1a; 是集合框架的根接口&#xff0c;它定义了一些通用的集合操作方法…