Search
Duplicate

선형대수/ 의사 역(pseudo inverse)

의사 역(Pseudo inverse)

유한차원 내적공간 V,WV,W와 선형변환 T:VWT : V \to W를 생각하자. 이때 두 내적공간의 바탕이 되는 체는 같다. 선형변환 L:N(T)R(T)L : N(T)^\bot \to R(T)를 모든 xN(T)\bold{x} \in N(T)^\bot에 대하여 L(x)=T(x)L(\bold{x}) = T(\bold{x})라 정의하자.
여기서 \bot은 직교 여공간(orthogonal complement)을 의미한다. 따라서 N(T)N(T)^\bot은 널공간 N(T)N(T)에 속하는 모든 벡터와 직교하는 벡터들의 집합을 나타낸다.
다른 예로 R3\mathbb{R}^3에 대해 VVxx축 상의 모든 벡터를 포함한다면 VV^\botxx축에 직교하는 yzyz-평면 상의 모든 벡터를 포함하게 된다.
다음 조건을 만족하는 WW에서 VV로 가는 유일한 선형변환을 TT의 의사역변환(pseudo inverse) 또는 무어-펜로즈 의사 역변환(Moore-Penrose generalized inverse)라 하고 TT^\dag로 표기한다.
T(y)={L1(y)yR(T)0yR(T)T^\dag(\bold{y}) = \begin{cases} L^{-1}(\bold{y}) & \bold{y} \in R(T) \\ \bold{0} & \bold{y} \in R(T)^\bot \end{cases}
m×nm \times n 행렬 A\bold{A}에 대하여 (LA):FmFn(L_\bold{A})^\dag : F^m \to F^n이 좌측 곱 변환 LBL_\bold{B}와 같도록 하는 n×mn \times m 행렬 B\bold{B}가 유일하게 존재한다. 이 행렬 B\bold{B}A\bold{A}의 의사역행렬이라 하고 B=A\bold{B} = \bold{A}^\dag라 표기한다. 즉 다음이 성립한다.
(LA)=LA(L_\bold{A})^\dag = L_{\bold{A}^\dag}
랭크 rrm×nm \times n 행렬 A\bold{A}의 의사 역행렬은 특잇값 분해가 A=UΣV\bold{A} = \bold{U} \boldsymbol{\Sigma} \bold{V}^*이고 영이 아닌 특잇값이 σ1σ2...σr\sigma_1 \ge \sigma_2 \ge ... \ge \sigma_r라 하자. n×mn \times m 행렬 Σ\boldsymbol{\Sigma}^\dag를 다음과 같이 정의하자.
여기서 V\bold{V}^*V\bold{V}의 켤레 전치행렬을 의미한다.
Σij={1σi(i=jr)0otherwise\boldsymbol{\Sigma}_{ij}^\dag = \begin{cases} {1 \over \sigma_i} & (i = j \le r) \\ 0 & \text{otherwise} \end{cases}
쉽게 말해 Σ\boldsymbol{\Sigma}^\dagΣ\boldsymbol{\Sigma}를 전치하여 크기를 m×nn×mm \times n \to n \times m으로 바꾸고 특잇값 σi\sigma_i에 역수 1σi{1 \over \sigma_i}를 취한 행렬이다.
A=VΣU\bold{A}^\dag = \bold{V} \boldsymbol{\Sigma}^\dag \bold{U}^*이다. 이는 A\bold{A}^\dag의 특잇값 분해이다. 여기서 Σ\boldsymbol{\Sigma}^\dag는 실제로 Σ\boldsymbol{\Sigma}의 의사 역행렬이다.
특잇값 분해 A=UΣV\bold{A} = \bold{U} \boldsymbol{\Sigma} \bold{V}^\top를 이용해서 VΣU\bold{V} \boldsymbol{\Sigma}^\dag \bold{U}^*를 계산하면 psuedo inverse가 된다.
의사 역행렬은 다음의 4가지 속성을 만족한다.
AAA=AAAA=A(AA)T=AA(AA)T=AA\begin{aligned} \bold{AA}^\dag\bold{A} &= \bold{A} \\ \bold{A}^\dag\bold{A}\bold{A}^\dag &= \bold{A}^\dag \\ (\bold{A}\bold{A}^\dag)^T &= \bold{A}\bold{A}^\dag \\ (\bold{A}^\dag\bold{A})^T &= \bold{A}^\dag\bold{A} \end{aligned}
만일 A\bold{A}가 정사각이고 특이가 없다면 A=A1\bold{A}^\dag = \bold{A}^{-1}이 된다.
A\bold{A}가 정사각이고 fullrank 이면 의사 역행렬은 실제 역행렬과 같아진다.
만일 m>nm>n이고 A\bold{A}의 열이 선형 독립이라면 (따라서 A\bold{A}는 풀 컬럼 랭크), 다음과 같다.
A=(AA)1A\bold{A}^\dag = (\bold{A}^\top\bold{A})^{-1}\bold{A}^\top
이 경우에 A\bold{A}^\dag는 다음이 성립하므로 A\bold{A}의 왼쪽 역과 같다.
왼쪽에 곱하면 I\bold{I}가 만들어짐
AA=(AA)1AA=I\bold{A}^\dag\bold{A} = (\bold{A}^\top\bold{A})^{-1}\bold{A}^\top\bold{A} = \bold{I}
만일 m<nm < n이고 A\bold{A}의 행이 선형 독립이라면 (따라서 A\bold{A}^\top는 풀 로우 랭크), 다음과 같다.
이 경우에 A\bold{A}^\dagA\bold{A}의 오른쪽 역이다.
A=A(AA)1\bold{A}^\dag = \bold{A}^\top(\bold{AA}^\top)^{-1}
만일 A\bold{A}가 풀랭크가 아니면 I\bold{I}는 안되고, I\bold{I}에 부족한 행렬이 만들어진다.
이때 오른쪽에 곱하느냐 왼쪽에 곱하느냐에 따라 부족함의 정도가 달라지는데, 만일 m<nm < n이라면 AA\bold{AA}^\dag를 곱하는게 좀 더 I\bold{I}에 가깝고,
m>nm > n 이라면 AA\bold{A}^\dag\bold{A}를 곱하는게 좀 더 I\bold{I}에 가깝게 된다.
특잇값 분해 A=USV\bold{A} = \bold{USV}^\top를 이용해서 pseudo 역을 계산할 수 있다. 특히 하나는 다음처럼 보인다.
아래 식에서 rr은 행렬의 랭크이다.
S1=diag(σ11,...,σr1,0,...,0)\bold{S}^{-1} = \text{diag}(\sigma_1^{-1},...,\sigma_r^{-1},0,...,0)로 정의한다.
A=V[diag(1/σ1,...,1/σr,0,...,0)]U=VS1U\bold{A}^\dag = \bold{V}[\text{diag}(1/\sigma_1,...,1/\sigma_r,0,...,0)]\bold{U}^\top = \bold{VS}^{-1}\bold{U}^\top
행렬이 정사각이고 풀랭크이면 다음을 가질 수 있다.
(USV)1=VS1U(\bold{USV}^\top)^{-1} = \bold{VS}^{-1}\bold{U}^\top

참조