线性代数|机器学习-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.rhkb.cn/news/345598.html

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

相关文章

CS1061 “HtmlHelper”未包含“Partial”的定义,并且找不到可接受第一个“HtmlHelper”类型参数的可访问扩展方法“Partial”

严重性 代码 说明 项目 文件 行 禁止显示状态 错误 CS1061 “HtmlHelper”未包含“Partial”的定义&#xff0c;并且找不到可接受第一个“HtmlHelper”类型参数的可访问扩展方法“Partial”(是否缺少 using 指令或程序集引用?) 14_Views_Message_E…

【车载开发系列】MCU选型

【车载开发系列】MCU选型 【车载开发系列】MCU选型 【车载开发系列】MCU选型一. 重要概念二. MCU选型的风险风险1风险2 三. MCU选型要点四. MCU选型维度五. MCU 选型需要考虑的因素1&#xff09;ROM/RAM2&#xff09;速度/主频3&#xff09;分析外设需求4&#xff09;工作电压(…

算法家族之一——二分法

目录 算法算法的打印效果如果算法里的整型“i”为1如果算法里的整型“i”为11 算法的流程图算法的实际应用总结 大家好&#xff0c;我叫 这是我58&#xff0c;现在&#xff0c;请看下面的算法。 算法 #define _CRT_SECURE_NO_WARNINGS 1//<--预处理指令 #include <stdi…

html--万年历

<!DOCTYPE html> <html lang"zh_CN"><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8" /><meta charset"utf-8" /><title>万年历</title><link rel"styles…

压力测试-性能指标-Jmeter使用-压力测试报告

文章目录 1.压测目的2.性能指标3.Jmeter3.1Jmeter使用3.1.1 运行Jmeter3.1.2 添加线程组3.1.3设置HTTP请求3.1.4 设置监视器 3.2 查看Jmeter压测结果3.2.1 查看结果树3.2.2 查看汇总报告3.2.3 查看聚合报告3.2.4 查看汇总图 1.压测目的 内存泄漏&#xff1a;OOM&#xff0c;重…

Llama模型家族之Stanford NLP ReFT源代码探索 (四)Pyvene论文学习

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 基于 LlaMA…

【嵌入式】波特率9600,发送8个字节需要多少时间,如何计算?

问题&#xff1a; 波特率9600&#xff0c;发送 01 03 00 00 00 04 44 09 (8字节) 需要多少时间&#xff0c;如何计算&#xff1f; 在计算发送数据的时间时&#xff0c;首先要考虑波特率以及每个字符的数据格式。对于波特率9600和标准的UART数据格式&#xff08;1个起始位&…

彩虹易支付最新版源码

源码简介 彩虹易支付最新版源码&#xff0c;更新时间为5.1号 2024/05/01&#xff1a; 1.更换全新的手机版支付页面风格 2.聚合收款码支持填写备注 3.后台支付统计新增利润、代付统计 4.删除结算记录支持直接退回商户金额 安装环境 1.PHP版本>7.4 2.Mysql数据库 安装教…

C++ Qt实现http url启动本地应用程序

更多Qt文章,请访问《深入浅出C++ Qt开发技术专栏》:https://blog.csdn.net/yao_hou/category_9276099.html 文章目录 1、注册自定义协议2、编写web页面3、编写C++应用程序我们在使用腾讯会议时经常会通过http链接打开本地的腾讯会议,例如下图: 打开会议发起人给的链接,会出…

⾃动化批量管理-Ansible

目录 一、ansible 简介 自动化工具选择 &#xff08;了解&#xff09;​编辑 1、ansible 是什么&#xff1f; 2、ansible 特点 3、ansible 架构图 二、ansible 任务执行 1、ansible 任务执行模式 2、ansible 执行流程 3、ansible 命令执行过程 三、ansible 配置详解 …

【iOS】UI学习——登陆界面案例、照片墙案例

文章目录 登陆界面案例照片墙案例 登陆界面案例 这里通过一个登陆界面来复习一下前面学习的内容。 先在接口部分定义两个UILabel、两个UITextField、两个UIButton按键&#xff1a; #import <UIKit/UIKit.h>interface ViewController : UIViewController {UILabel* _lb…

基于AT89C51单片机的红外防盗报警器设计

第一章 绪论1.1 选题背景 随着社会科学的不断进步和发展,人们生活水平得到很大的提高,对个人私有财产的保护越来越重视,因而对于防盗的措施提出了更高的要求。本设计就是为了满足现代生活防盗的需要而设计的应用于家庭、车库、仓库和保险柜等处进行防盗监控的无线防盗报警装…

【RAG入门教程03】Langchian框架-文档加载

Langchain 使用文档加载器从各种来源获取信息并准备处理。这些加载器充当数据连接器&#xff0c;获取信息并将其转换为 Langchain 可以理解的格式。 LangChain 中有几十个文档加载器&#xff0c;可以在这查看https://python.langchain.com/v0.2/docs/integrations/document_lo…

Hive日志介绍

日志描述 日志路径&#xff1a;Hive相关日志的默认存储路径为“/var/log/Bigdata/hive/角色名”&#xff0c;Hive1相关日志的默认存储路径为“/var/log/Bigdata/hive1/角色名”&#xff0c;以此类推。 HiveServer&#xff1a;“/var/log/Bigdata/hive/hiveserver”&#xff0…

【算法】常用排序算法(插入排序、希尔排序、堆排序、选择排序、冒泡排序、快速排序、归并排序、计数排序)超详细

排序算法是数据结构相关知识中非常重要的一节&#xff0c;相信很多小伙伴对这部分知识一知半解。那么接下来&#xff0c;小编就要带领大家一起来进行对排序算法的深入剖析学习&#xff0c;希望本篇文章能够使你有所收获&#xff01; 一.常见的排序算法 排序算法有很多种&#…

‘AndroidStudio工具平台’尝试运行‘Android原生项目’

AndroidStudio工具平台 (内嵌Intelli IDEA集成环境) /Users/haijunyan/Library/Android/sdk 配置环境变量: #adb命令&#xff0c;安装APK查看连接设备 platform-tools #emulator命令&#xff0c;通过命令创建模拟器 tools #用NDK框架搭建的项目&#xff0c;用到下面的命令编译 …

【Oracle】Oracle导入导出dmp文件

文章目录 前言一、什么是dmp&#xff1f;二、imp/impdp、exp/expdp对比及示例1.区别2.imp/impdp对比及示例a. impb. impbp 3.exp/expdp对比及示例a. expb.expdp 3.其他事项 三、执行导入导出前置条件1.创建角色并授权2.创建目录映射 前言 在工作中&#xff0c;经常会遇到需要备…

Serif Affinity 2.5 (macOS, Windows) - 专业创意软件

Serif Affinity 2.5 (macOS, Windows) - 专业创意软件 Affinity Designer 2, Affinity Photo 2, Affinity Publisher 2 请访问原文链接&#xff1a;Serif Affinity 2.5 (macOS, Windows) - 专业创意软件&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主…

【数据结构(邓俊辉)学习笔记】图06——最小支撑树

文章目录 0. 概述1. 支撑树2. 最小支撑树3. 歧义性4. 蛮力算法5. Prim算法5.1 割与极短跨越边5.2 贪心迭代5.3 实例5.4 实现5.5 复杂度 0. 概述 学习下最小支撑树和prim算法。 1. 支撑树 最小的连通图是树。 连通图G的某一无环连通子图T若覆盖G中所有的顶点&#xff0c;则称…

【算法小记】深度学习——时间序列数据分析 Time series Data Analysis

在本篇博客中将简单介绍常见的几种循环神经网络和一维卷积神经网络&#xff0c;并使用一些简答的数据进行拟合分析。本文相对适合刚入门的同学&#xff0c;同时也作为自己过去一段时间学习的总结和记录&#xff0c;现在神经网络框架已经非常完善的支持了很多常见和有效的深度学…