고윳값
\(8,\;2\)
24차시 · 정의와 표기
실수 행렬 \(A\in\mathbb R^{m\times n}\)에 대해 다음 분해를 특잇값 분해(SVD)라고 한다. 직사각행렬에도 정의된다.
\(U\)는 \(m\times m\), \(V\)는 \(n\times n\) 직교행렬이다. \(\Sigma\)는 \(m\times n\) 대각형 행렬이며 대각성분 \(\sigma_1\ge\cdots\ge\sigma_p\ge0\), \(p=\min(m,n)\)을 특잇값이라고 한다.
\(V\)의 열 \(v_i\)는 오른쪽 특이벡터(입력 방향), \(U\)의 열 \(u_i\)는 왼쪽 특이벡터(출력 방향)이다. \(1\le i\le p\)에서 \(Av_i=\sigma_i u_i\)가 성립한다.
24차시 · 설명과 유도
\(A^TA\)는 대칭이고 \(v^TA^TAv=\|Av\|^2\ge0\)이다. 따라서 직교 고유기저를 고를 수 있고 고윳값은 음이 아니다.
정규화한 두 출력은 \(u_i^Tu_j=v_i^TA^TAv_j/(\sigma_i\sigma_j)=0\ (i\ne j)\)이므로 서로 직교한다. \(\sigma_i=0\)이면 나누지 않고 출력의 직교기저를 보충한다.
24차시 · 특잇값 분해
입력 방향은 서로 직교하게 고른다. 그 방향을 변환한 출력의 길이가 각각 특잇값이다.
이 예에서는 두 배율을 직접 계산한 뒤, 단위원의 상에서 확인한다.
오른쪽 특이벡터
\(8,\;2\)
\(\mathbf{v}_1=(1,1)/\sqrt2\)
\(\mathbf{v}_2=(1,-1)/\sqrt2\)
오른쪽 특이벡터는 \(A^\mathsf TA\)의 단위 고유벡터입니다. 특잇값은 그 고윳값의 음이 아닌 제곱근이므로, 여기서는 \(\sigma_1=2\sqrt2\), \(\sigma_2=\sqrt2\)입니다.
오른쪽 특이벡터 · 특잇값 · 왼쪽 특이벡터
\(\mathbf{u}_1=(1,0)\)
\(\mathbf{u}_2=(0,1)\)
\(U=I\), \(\Sigma=\operatorname{diag}(2\sqrt2,\sqrt2)\)
24차시 · 정의와 표기
외적 \(u_iv_i^T\)는 입력 \(x\)에서 스칼라 \(v_i^Tx\)를 읽어 \(u_i\) 방향으로 보내는 행렬이다. 각 항의 랭크는 1이다.
랭크는 열공간의 차원이며 0이 아닌 특잇값의 개수이다. 근사가 좋다는 말에는 오차의 기준이 필요하다.
단위원의 상
\(\mathbf{x}=\mathbf{v}_1\)이다. 배율은 \(\sigma_1=2\sqrt2\)이다.
특잇값 절단
행렬의 랭크는 서로 독립인 열벡터의 최대 개수이며 0이 아닌 특잇값의 개수와 같습니다. 특잇값이 큰 랭크 1 성분부터 \(k\)개 남겨 봅시다.
최적의 낮은 랭크 근사
가정: \(A\in\mathbb R^{m\times n}\), \(p=\min(m,n)\), \(0\le k<p\)
\(\sigma_1\ge\cdots\ge\sigma_p\ge0\), \(A_k=\sum_{i=1}^k\sigma_i\mathbf{u}_i\mathbf{v}_i^\mathsf T\)
\(\lVert\cdot\rVert_F\): 성분별 오차 제곱합의 제곱근 · \(\lVert\cdot\rVert_2\): 단위벡터에서 생기는 가장 큰 출력 오차
비교 대상은 랭크가 \(k\) 이하인 모든 행렬이다. 같은 오차를 얻는 행렬이 여러 개일 수 있으므로 '최적'이 곧 '유일'을 뜻하지는 않는다.
24차시 · 계산과 논증
① 최소 프로베니우스 오차를 구하라. ② 서로 다른 최적 랭크 1 근사행렬 두 개를 제시하라. ③ '항상 첫 번째 열을 남기면 최적이다'라는 주장을 반박하라.
\(B_1=\operatorname{diag}(3,0,0)\), \(B_2=\operatorname{diag}(0,3,0)\)은 모두 오차가 \(\sqrt{10}\)이다. 가장 큰 특잇값이 중복되어 최적 방향이 유일하지 않다.
열 선택은 좌표에 의존한다. \(\operatorname{diag}(1,3)\)에서 첫 열만 남기면 오차는 3이지만 둘째 열을 남기면 1이다. SVD는 열 번호가 아니라 특잇값의 크기로 성분을 고른다.
데이터의 저차원 표현
작은 \(k\)로 원래 영상을 잘 나타낼 때의 저장량 감소
버린 특잇값으로 계산하는 오차의 크기
대표 공간 모양 \(U_k\)와 시간에 따른 크기 \(\Sigma_kV_k^\mathsf T\)로 분리
24차시 · 계산과 논증
\(100\times80\) 행렬의 특잇값은 \(10,4,1\)이고 나머지는 0이다. 절단 SVD를 \(U_k,\sigma_1,\ldots,\sigma_k,V_k\)로 저장한다.
오차 \(\|A-A_k\|_F\le1.1\)을 만족하는 최소 \(k\)와 저장할 실수의 개수를 구하라. 작은 랭크만 택하면 언제나 좋은 압축인지 설명하라.
\(k=1\)이면 오차가 \(\sqrt{17}>1.1\), \(k=2\)이면 1이므로 최소 \(k=2\)이다. 저장량은 \(k(100+80+1)=362\)개로 원래 8000개보다 작다.
오차 허용범위와 저장량을 둘 다 확인해야 한다. \(k(m+n+1)\ge mn\)이면 이 저장 방식은 압축이 아니며, 작은 \(k\)라도 버린 특잇값이 크면 오차가 크다.