特征分解(Eigen decomposition)在深度學習中的應用與理解

特征分解在深度學習中的應用與理解

特征分解(Eigendecomposition)是線性代數中的一個核心工具,在深度學習領域有著廣泛的應用,尤其是在涉及矩陣操作和概率模型時。對于研究者來說,理解特征分解不僅有助于掌握數學基礎,還能加深對模型設計和優化的洞察。本文將面向深度學習研究者,詳細介紹特征分解的基本概念、計算方法,以及其在高斯分布采樣(如 VAE)中的具體應用。


什么是特征分解?

特征分解是將一個方陣分解為特征值和特征向量的形式的過程。假設我們有一個 ( d × d d \times d d×d ) 的方陣 ( A A A ),如果它可以寫成以下形式:

A = U S U T A = U S U^T A=USUT

那么我們說 ( A A A ) 被特征分解了,其中:

  • ( U U U ) 是一個正交矩陣(即 ( U T U = I U^T U = I UTU=I )),其列是 ( A A A ) 的特征向量。
  • ( S S S ) 是一個對角矩陣,其對角線元素是 ( A A A ) 的特征值。
  • ( U T U^T UT ) 是 ( U U U ) 的轉置。

這種分解的前提是 ( A A A ) 必須是對稱矩陣(即 ( A = A T A = A^T A=AT )),并且通常要求 ( A A A ) 是可對角化的(即有 ( d d d ) 個線性無關的特征向量)。在深度學習中,許多矩陣(如協方差矩陣)是對稱的,因此特征分解特別有用。

特征值與特征向量的物理意義

  • 特征向量:( A A A ) 的特征向量 ( u i u_i ui? ) 滿足 ( A u i = λ i u i A u_i = λ_i u_i Aui?=λi?ui? ),其中 ( λ i λ_i λi? ) 是對應的特征值。直觀來說,特征向量是矩陣 ( A A A ) 作用下僅被拉伸或壓縮(而不改變方向)的向量。
  • 特征值:特征值 ( λ i λ_i λi? ) 表示特征向量被拉伸或壓縮的幅度。如果 ( λ i < 0 λ_i < 0 λi?<0 ),方向會反轉。

在特征分解中,( U U U ) 的列將原始空間變換到一個新坐標系(特征向量基),而 ( S S S ) 描述了在這個新坐標系下矩陣 ( A A A ) 的作用僅是對各個維度進行縮放。


如何計算特征分解?

計算特征分解的過程通常分為兩步:

  1. 求解特征值:通過特征方程 ( det ? ( A ? λ I ) = 0 \det(A - λI) = 0 det(A?λI)=0 ) 找到 ( A A A ) 的特征值 ( λ 1 , λ 2 , … , λ d λ_1, λ_2, \dots, λ_d λ1?,λ2?,,λd? )。這是一個多項式方程,解出所有的根。
  2. 求解特征向量:對于每個特征值 ( λ i λ_i λi? ),解線性方程組 ( ( A ? λ i I ) u i = 0 (A - λ_i I) u_i = 0 (A?λi?I)ui?=0 ) 得到對應的特征向量 ( u i u_i ui? )。然后將 ( u i u_i ui? ) 歸一化并正交化,構成 ( U U U )。

在實踐中,我們通常使用數值方法(如 QR 算法)通過庫(如 NumPy 或 PyTorch)直接計算。例如,在 Python 中:

import numpy as npA = np.array([[4, 1], [1, 3]])  # 對稱矩陣
eigenvalues, eigenvectors = np.linalg.eigh(A)  # eigh 用于對稱矩陣
S = np.diag(eigenvalues)
U = eigenvectors
A_reconstructed = U @ S @ U.T  # 重構 A
print(np.allclose(A, A_reconstructed))  # True

這里 ( \text{eigh} ) 返回的 ( U ) 已保證正交,( S ) 是對角矩陣。


特征分解在深度學習中的應用

特征分解在深度學習中有許多實際應用,以下以高斯分布采樣為例,展示其重要性。

高斯分布的采樣與協方差矩陣

在概率模型(如 VAE)中,我們常需要從多元高斯分布 ( z ~ N ( μ , Σ ) z \sim \mathcal{N}(μ, Σ) zN(μ,Σ) ) 中采樣,其中 ( Σ Σ Σ ) 是協方差矩陣。為了生成這樣的樣本,可以利用重參數化技巧:具體請參考筆者的另一篇博客:VAE中的編碼器(Encoder)詳解

z = μ + Σ 1 / 2 ? , ? ~ N ( 0 , I ) z = μ + Σ^{1/2} ?, \quad ? \sim \mathcal{N}(0, I) z=μ+Σ1/2?,?N(0,I)

這里的 ( Σ 1 / 2 Σ^{1/2} Σ1/2 ) 是 ( Σ Σ Σ ) 的“平方根”,即滿足 ( Σ 1 / 2 ( Σ 1 / 2 ) T = Σ Σ^{1/2} (Σ^{1/2})^T = Σ Σ1/2(Σ1/2)T=Σ ) 的矩陣。特征分解提供了一種計算 ( Σ 1 / 2 Σ^{1/2} Σ1/2 ) 的方法。

假設 ( Σ Σ Σ ) 是對稱正定矩陣(常見于協方差矩陣),其特征分解為:

Σ = U S U T Σ = U S U^T Σ=USUT

  • ( S = diag ( λ 1 , λ 2 , … , λ d ) S = \text{diag}(λ_1, λ_2, \dots, λ_d) S=diag(λ1?,λ2?,,λd?) ),( λ i ≥ 0 λ_i \geq 0 λi?0 ) 是特征值(正定性保證)。
  • ( U U U ) 是正交矩陣。

則 ( Σ 1 / 2 Σ^{1/2} Σ1/2 ) 可以定義為:

Σ 1 / 2 = U S 1 / 2 U T Σ^{1/2} = U S^{1/2} U^T Σ1/2=US1/2UT

其中 ( S 1 / 2 = diag ( λ 1 , λ 2 , … , λ d ) S^{1/2} = \text{diag}(\sqrt{λ_1}, \sqrt{λ_2}, \dots, \sqrt{λ_d}) S1/2=diag(λ1? ?,λ2? ?,,λd? ?)),因為:

Σ 1 / 2 ( Σ 1 / 2 ) T = ( U S 1 / 2 U T ) ( U S 1 / 2 U T ) T = U S 1 / 2 U T U S 1 / 2 U T = U S 1 / 2 S 1 / 2 U T = U S U T = Σ Σ^{1/2} (Σ^{1/2})^T = (U S^{1/2} U^T) (U S^{1/2} U^T)^T = U S^{1/2} U^T U S^{1/2} U^T = U S^{1/2} S^{1/2} U^T = U S U^T = Σ Σ1/2(Σ1/2)T=(US1/2UT)(US1/2UT)T=US1/2UTUS1/2UT=US1/2S1/2UT=USUT=Σ

驗證采樣正確性:

  • 期望:( E [ z ] = E [ μ + Σ 1 / 2 ? ] = μ \mathbb{E}[z] = \mathbb{E}[μ + Σ^{1/2} ?] = μ E[z]=E[μ+Σ1/2?]=μ )。
  • 協方差:( Cov ( z ) = E [ Σ 1 / 2 ? ( Σ 1 / 2 ? ) T ] = Σ 1 / 2 E [ ? ? T ] ( Σ 1 / 2 ) T = Σ 1 / 2 I ( Σ 1 / 2 ) T = Σ \text{Cov}(z) = \mathbb{E}[Σ^{1/2} ? (Σ^{1/2} ?)^T] = Σ^{1/2} \mathbb{E}[? ?^T] (Σ^{1/2})^T = Σ^{1/2} I (Σ^{1/2})^T = Σ Cov(z)=E[Σ1/2?(Σ1/2?)T]=Σ1/2E[??T](Σ1/2)T=Σ1/2I(Σ1/2)T=Σ )。

在 VAE 中,若 ( Σ = σ 2 I Σ = σ^2 I Σ=σ2I )(對角協方差),則 ( Σ 1 / 2 = σ I Σ^{1/2} = σ I Σ1/2=σI ),采樣簡化為 ( z = μ + σ ? z = μ + σ ? z=μ+σ? )。但對于一般 ( Σ Σ Σ ),特征分解是不可或缺的。

其他應用場景

  1. 主成分分析(PCA):PCA 通過對數據協方差矩陣進行特征分解,提取主要特征方向,用于降維。
  2. 優化問題:在二階優化(如牛頓法)中,特征分解可用于分析 Hessian 矩陣的正定性。
  3. 譜分解:在圖神經網絡(GNN)中,拉普拉斯矩陣的特征分解用于頻譜分析。

特征分解的優勢與局限

優勢

  • 幾何直觀:特征分解將矩陣分解為旋轉(( U U U ))和縮放(( S S S )),便于理解矩陣作用。
  • 數值穩定性:對于對稱矩陣,特征分解通常有較好的數值性質。
  • 解析性:在概率模型中提供閉式解,如 KL 散度計算。

局限

  • 計算復雜度:特征分解的時間復雜度為 ( O ( d 3 ) O(d^3) O(d3) ),對高維矩陣可能較慢。深度學習中常用 Cholesky 分解(復雜度 ( O ( d 3 / 3 ) O(d^3/3) O(d3/3) ))替代。
  • 適用范圍:僅適用于對稱矩陣,非對稱矩陣需用奇異值分解(SVD)。

在 VAE 等場景中,若協方差是對角形式(如 ( σ 2 I σ^2 I σ2I )),直接逐元素開方即可,避免特征分解的計算開銷。


總結

特征分解是線性代數與深度學習的橋梁,為理解矩陣變換和概率分布提供了強有力的工具。在 VAE 的高斯采樣中,它通過計算 ( Σ 1 / 2 Σ^{1/2} Σ1/2 ) 實現任意協方差的采樣,展示了理論與實踐的結合。對于深度學習研究者來說,掌握特征分解不僅能加深對模型的理解,還能在優化和設計中帶來更多靈感。

希望這篇博客能為你提供清晰的視角!如果有進一步的疑問或想探討其他應用,歡迎留言交流。

后記

2025年3月3日20點09分于上海,在grok 3大模型輔助下完成。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/71492.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71492.shtml
英文地址,請注明出處:http://en.pswp.cn/web/71492.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

分布式ID生成方案:數據庫號段、Redis與第三方開源實現

分布式ID生成方案&#xff1a;數據庫號段、Redis與第三方開源實現 引言 在分布式系統中&#xff0c;全局唯一ID生成是核心基礎能力之一。本文針對三種主流分布式ID生成方案&#xff08;數據庫號段模式、Redis方案、第三方開源框架&#xff09;進行解析&#xff0c;從實現原理…

rabbitmq-amqp事務消息+消費失敗重試機制+prefetch限流

1. 安裝和配置 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency><dependency> <groupId>com.fasterxml.jackson.core</groupId> <arti…

【Python】05、Python運算符

文章目錄 1.算術運算符2.賦值運算符3.關系運算符4.邏輯運算符4.1 布爾值邏輯運算4.2 非布爾值的邏輯運算符 5.條件運算符6.運算符優先級 運算符也稱為操作符&#xff0c;可以對一個或多個值進行運算或各種操作。比如、-、都屬于運算符 1.算術運算符 加法 如果是兩個字符串之間…

2025-03-06 學習記錄--C/C++-PTA 習題6-6 使用函數輸出一個整數的逆序數

合抱之木&#xff0c;生于毫末&#xff1b;九層之臺&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、題目描述 ?? 二、代碼&#xff08;C語言&#xff09;?? #include <stdio.h>int reverse( int number );int main…

簡記_硬件系統設計之需求分析要點

目錄 一、 功能需求 二、 整體性能需求 三、 用戶接口需求 四、 功耗需求 五、 成本需求 六、 IP和NEMA防護等級需求 七、 認證需求 功能需求 供電方式及防護 供電方式&#xff1a;市電供電、外置直流穩壓電源供電、電池供電、PoE&#xff08;Power Over Ether…

[原創](Modern C++)現代C++的關鍵性概念: 利用“概念(Concepts)“,可以優雅地約束模板參數

[作者] 常用網名: 豬頭三 出生日期: 1981.XX.XX 企鵝交流: 643439947 個人網站: 80x86匯編小站 編程生涯: 2001年~至今[共24年] 職業生涯: 22年 開發語言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 開發工具: Visual Studio、Delphi、XCode、Eclipse…

Self-Pro: A Self-Prompt and Tuning Framework for Graph Neural Networks

Self-Pro: A Self-Prompt and Tuning Framework for Graph Neural Networks ?#paper/GFM/GNN-BASED#? #paper/???#? 注意&#xff1a;這篇文章是每個圖一個GCN模型&#xff0c;而不是所有圖一個GCN 模型 算是最早的涉及異配圖的prompt了 貢獻和動機&#xff1a; 非對…

寶塔 Linux 計劃任務中添加運行項目網站PHP任務-定時任務

一、指定php版運行&#xff0c; cd /www/wwwroot/www.xxx.com/ && /www/server/php/56/bin/php think timedtasks start >> /tmp/timedtasks.log 2>&1 二、不指定php版 cd /www/wwwroot/www.xxx.com/ && php think timedtasks start >> …

【電控筆記z29】擾動估測器DOB估測慣量J-摩擦系數B

基本原理 擾動估測器的核心思想是通過向電機系統施加特定的擾動信號&#xff0c;觀察系統響應的變化&#xff0c;然后利用系統的動態模型和控制理論來估計未知參數&#xff0c;如慣量和摩擦系數 。一般基于電機的運動方程建立數學模型&#xff0c;結合觀測到的電機實際運行數據…

要查看 SQLite 數據庫中的所有表,可以通過查詢 SQLite 的系統表 sqlite_master

要查看 SQLite 數據庫中的所有表&#xff0c;可以查詢 SQLite 的系統表 sqlite_master。 每個 SQLite 數據庫都包含一個名為 sqlite_master 的系統表。該表定義了數據庫的模式&#xff0c;存儲了數據庫中所有表、索引、視圖和觸發器等對象的信息。 通過查詢 sqlite_master&am…

如何在Spring Boot中讀取JAR包內resources目錄下文件

精心整理了最新的面試資料和簡歷模板&#xff0c;有需要的可以自行獲取 點擊前往百度網盤獲取 點擊前往夸克網盤獲取 以下是如何在Spring Boot中讀取JAR包內resources目錄下文件的教程&#xff0c;分為多種方法及詳細說明&#xff1a; 方法1&#xff1a;使用 ClassPathResour…

清華大學DeepSeek賦能家庭教育【附下載鏈接】

核心要點&#xff1a; DeepSeek通過基礎模型&#xff08;V3&#xff09;、深度思考模型&#xff08;R1&#xff09;及聯網模型&#xff0c;為家庭教育提供分層支持&#xff1a;V3用于作業輔導&#xff0c;R1培養批判性思維&#xff0c;聯網模型助力探究性學習。家長需遵循目標導…

C語言番外篇(5)-------------->作用域與生命周期

作用域與生命周期是非常重要的編程知識。本篇文章使用C語言講述作用域與生命周期。 一、作用域 在程序設計中&#xff0c;變量并非總是有效的&#xff0c;可以使用的區域就是作用域。 1.1局部變量的作用域 在{}中的都是局部變量&#xff0c;只是作用大小不一樣而已。我們可…

若依前后端分離版使用Electron打包前端Vue為Exe文件

1.前言 本文詳細介紹如何使用electron將若依框架前后端分離版的前端Vue頁面打包為Exe文件&#xff0c;并且包括如何實現應用更新。使用若依基礎代碼體現不出打包功能&#xff0c;因此我使用開發的文件管理系統&#xff0c;介紹上述過程&#xff0c;具體可以查看我的文章《若依…

Linux——Docker容器內MySQL密碼忘記了如何查看

目錄 查看正在運行的MySQL的容器ID 方法一&#xff1a;查看MySQL容器的日志里的密碼 方法二&#xff1a;通過環境變量密碼登錄 方法三&#xff1a;修改密碼 查看正在運行的MySQL的容器ID docker ps 方法一&#xff1a;查看MySQL容器的日志里的密碼 docker logs [MySQL的容器…

康謀分享 | 3DGS:革新自動駕駛仿真場景重建的關鍵技術

隨著自動駕駛技術的迅猛發展&#xff0c;構建高保真、動態的仿真場景成為了行業的迫切需求。傳統的三維重建方法在處理復雜場景時常常面臨效率和精度的挑戰。在此背景下&#xff0c;3D高斯點陣渲染&#xff08;3DGS&#xff09;技術應運而生&#xff0c;成為自動駕駛仿真場景重…

大模型架構記錄2

一 應用場景 1.1 prompt 示例 1.2 自己搭建一個UI界面&#xff0c;調用接口 可以選用不同的模型&#xff0c;需要對應的API KEY 二 Agent 使用 2.1 構建GPT

【C++】二叉樹相關算法題

一、根據二叉樹創建字符串 題目描述&#xff1a; 給你二叉樹的根節點 root &#xff0c;請你采用前序遍歷的方式&#xff0c;將二叉樹轉化為一個由括號和整數組成的字符串&#xff0c;返回構造出的字符串。 空節點使用一對空括號對 “()” 表示&#xff0c;轉化后需要省略所有…

【機械視覺】C#+visionPro聯合編程———【一、C# + VisionPro 聯合編程詳解以及如何將visionPro工具加載到winform】

機械視覺與 C# VisionPro 聯合編程詳解 目錄 機械視覺與 C# VisionPro 聯合編程詳解 概念 應用場景 1. 工業檢測與質量控制缺陷檢測 2. 定位與機器人引導 3. 識別與分類 4. 復雜流程控制 將visionPro工具加載到winform 環境準備 一、創建winform項目 二、打開窗體…

修改hosts文件,修改安全屬性,建立自己的DNS

初級代碼游戲的專欄介紹與文章目錄-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代碼都將會位于ctfc庫中。已經放入庫中我會指出在庫中的位置。 這些代碼大部分以Linux為目標但部分代碼是純C的&#xff0c;可以在任何平臺上使用。 源碼指引&#xff1a;github源…