2023年4月20日 星期四

矩陣向量一些概念

 用內積來表示兩向量 r̂, n̂ 之間的正投影長度 r̂•n̂ =|r̂||n̂|cosθ, 假設 r̂, n̂ 是 k 維空間的向量:
        r̂•n̂ = r₁*n₁ + r₂*n₂ + ... + rₖ*nₖ =  Σ(rₖ * nₖ) = Σ(nₖ*rₖ) = n̂•r̂
        |r̂| = √(r₁² + r₂² + ..., rₖ²)
        |n̂| = √(n₁² + n₂² + ..., nₖ²)
        cosθ = r̂•n̂/(|r̂||n̂|)

    想像空間是由一群向量 r̂₁, r̂₂, ... , r̂ₖ 等獨立基底向量 [r̂], 以原點 ô 為中心, 所展示的 k 維輻射空間,   描述任一向量 n̂ 是 r̂ 的線性組合, 用內積代表的座標, 就是在基底向量上的投影分量:
        n̂ = Σ nₖr̂ₖ = Σ(n̂•r̂ₖ)r̂ₖ = Σ(r̂ₖ•n̂)r̂ₖ
            n₁ = r̂₁•n̂
            n₂ = r̂₂•n̂
            .........
            nₖ = r̂ₖ•n̂

    底下符號 M 用來代表一個 nxn 方陣, 行向量彼此獨立, 而且列向量都是獨立向量
    底下符號 λ 用來代表 eigenvalue, 它是一個純量, 用一個數字來量化
    底下符號 ê 用來代表 eigenvector 它是一個向量, 用一組數字來量化(e₁, e₂,...,eₖ), 向量的元素個數 k, 用來描述該空間的維度, 用 [ê] 代表 eigenvector 行向量形成的矩陣 V
    底下符號 Λ 用來代表對角線矩陣, 除對角線上有數值外, 其餘位置都為 0
    底下符號 [λ] 用來代表由 eigenvalue 形成的對角線矩陣 Λ

    將 M 分解為由 eigenvalue 所組成對角線矩陣 Λ, 及 eigenvector 行向量 ê 所組成矩陣 V = [ê] 時: [V, D] = eig(M)
        M = V Λ V⁻ = [ê] [λ] [ê]⁻
            V = [ê₁, ê₂, ê₃, ..., êₖ]
            V⁻ 是 V 的反矩陣 = [ê]⁻
            Λ = D = [λ₁,0,...,0; 0,λ₂,0, ...,0; ... ; 0,0,0,...,λₖ] = [λ]
    就可以看出 M 是將向量先經反矩陣 V⁻ 轉換, 用 eigenvalue 伸縮座標軸, 投影在 eigenvector 上:
        M x̂ᵗ = (V Λ V⁻)x̂ᵗ
    eigenvalue λ , eigenvector ê 與矩陣 M 的關係式: M•ê = λ•ê
    當 Mᵢⱼ= Mⱼᵢ 時, M 就是一個對稱矩陣, 其 eigenvector 必定互相垂直, 由 eigenvector 組成矩陣的轉置矩陣就是反矩陣  
        ∵ Mᵢⱼ= Mⱼᵢ
        ∴ V⁻ = Vᵗ
        ∴ M  = V Λ Vᵗ
        M x̂ᵗ = (V Λ Vᵗ)x̂ᵗ = V Λ Vᵗ x̂ᵗ
   方陣轉置(將行列互換)後 eigenvalue 不會變
    任何一個矩陣轉置後, 再與原矩陣相乘就會形成一個對稱方陣:
        T = AᵗA = AₙxₘAₘxₙ= Tₙxₙ
    如果相乘的順序反過來也會形成另一個對稱方陣:
        N = AAᵗ =AₘxₙAₙxₘ= Nₘxₘ
    當矩陣不是方陣時, 任何一個 ₘxₙ的矩陣 A 可以透過 svd 分解成 3 個矩陣: [U, S, V] = svd(A)
    其中 S 是 singular value [σ] 形成的矩陣, V 是AᵗA 的 eigenvector 形成的矩陣 [v̂],  但 U 是 AAᵗ 的 eigenvector 形成的矩陣 [û], 要注意的是  AᵗA 與 AAᵗ 乘積是兩個不同的矩陣

              A = U S Vᵗ
        Aₘxₙ = Uₘxₘ • Sₘxₙ • Vᵗₙxₙ
        U 是由 AAᵗ 轉置矩的 eigenvector 行向量所組成 ₘxₘ 方陣 [û], m 是目標空間維度
            U = [û₁; û₂; û₃; ...; ûₘxₘ]ᵗ = [û₁, û₂, û₃, ..., ûₘxₘ] = [û]
        Uᵗ 是 U 的轉置矩陣也是 U 的反矩陣
            Uᵗ = [û₁, û₂, û₃, ..., ûₘ]⁻ = [û₁; û₂; û₃; ...; ûₘ] = [û]⁻
        S 對角線由 singular value σ 所組成, 其餘為 0, 組成一個 ₘxₙ 矩陣
            S =  [σ]ₘxₙ = [σ]
        V 是由 AᵗA 的 eigenvector 行向量所組成 ₙxₙ 方陣 [v̂], n 是來源空間維度
            V  = [v̂₁; v̂₂; v̂₃; ...; v̂ₙ]ᵗ = [v̂₁, v̂₂, v̂₃, ..., v̂ₙ] = [v̂]
        Vᵗ 是 V 的轉置矩陣也是 V 的反矩陣, n 是來源空間維度
            Vᵗ = [v̂₁, v̂₂, v̂₃, ..., v̂ₙ]⁻ = [v̂₁; v̂₂; v̂₃; ...; v̂ₙ] = [v̂]⁻

  備註: 只有方陣才能計算出 eigenvalue 與 eigenvector, 非方陣由 SVD 算出的是 singular value 矩陣及左右伴隨矩陣, 伴隨矩陣分別由 right singular vector及 left singular vector 行向量所組成的矩陣 V=[v̂], U=[û]
    1.矩陣 A = Aₘxₙ = Uₘxₘ•Sₘxₙ•Vᵗₙxₙ 若 singular value 只有 k 組 (m!=n, k=m 或是  k=n)時,  改用 Uₘxₖ•Sₖxₖ•Vᵗₖxₙ, 也就是說讓 S 組成稀疏對角線 ₖxₖ 方陣 S=Λ=[σ], U 變成瘦型矩陣 ₘxₖ, V 也順勢成瘦型矩陣 ₙxₖ, 較省記憶空間
    2.矩陣 AᵗA 的 eigenvalue 是 A singular value 的二次方:
        T = AᵗA = (U S Vᵗ)ᵗ U S Vᵗ = VSUᵗUSVᵗ = VS²Vᵗ = VΛVᵗ
        因此 A 的 singular value 平方就是 AᵗA eigenvalue, 反過來說 A 的 singular value 是 AᵗA eigenvalue 開根號
    3. AAᵗ 的 eigenvalue 也是  A的 singular value 二次方, 反過來說 A 的 singular value 是 AAᵗ eigenvalue 開根號
        AAᵗ= U S Vᵗ (U S Vᵗ)ᵗ = USVᵗ VSUᵗ= US²Uᵗ = UΛUᵗ
    4.矩陣 A 的 SVD 算法: Aₘxₙ = Uₘxₘ • Sₘxₙ • Vᵗₙxₙ
        a. 計算 T = AᵗA 用來找尋 A 的 singular value 及左右伴隨矩陣 UV
        b. Tv̂ = σ²v̂,透過 QR decoposition 解出 T 的 eigenvalue 矩陣 [σ²]ₘxₙ 及 eigenvector 所組成的矩陣 Vₙxₙ= [v̂]
        c. 將上述 eigenvalue 開根號得出 σ,  S = Λ = [σ] ₘxₙ, 將 σ 取倒數放入矩陣的對角線形成反矩陣,  注意反矩陣行列要交換才能與後續 V相乘
           S⁻ = Λ⁻ = [1/σ] ₙxₘ,
        d. U = U (Λ (Vᵗ V) Λ⁻) = (UΛVᵗ) V Λ⁻ = A V Λ⁻
           AV 先相乘, 最後再乘步驟 c. 的 singular value 反矩陣 Λ⁻, 就能算出 U = A • V • Λ⁻

沒有留言:

張貼留言

使用 pcie 轉接器連接 nvme SSD

之前 AM4 主機板使用 pcie ssd, 但主機板故障了沒辦法上網, 只好翻出以前買的 FM2 舊主機板, 想辦法讓老主機復活, 但舊主機板沒有 nvme 的界面, 因此上網買了 pcie 轉接器用來連接 nvme ssd, 遺憾的是 grub2 bootloader 無法識...