단일 값 분해 (SVD)에 대해 읽었습니다. 거의 모든 교과서에서 주어진 사양으로 행렬을 세 개의 행렬로 분해한다고 언급되어 있습니다.
그러나 행렬을 그러한 형태로 나누는 직관은 무엇입니까? 차원 축소를위한 PCA 및 기타 알고리즘은 알고리즘에 뛰어난 시각화 속성이 있지만 SVD에서는 그렇지 않다는 점에서 직관적입니다.
답변
행렬 (실제, n × p )
의 SVD를 X = U D V T
로 쓰십시오. 여기서 U 는 n × p 이고, D 는 대각선 p × p 이고 V T 는 p × p 입니다. 행렬 U 와 V 의 열의 관점에서 우리는
X = ∑ p i = 1 d i u i v T i
n×p
U
n×p
D
p×p
VT
p×p
U
V
X=∑i=1pdiuiviT
. 이것은 가 p 랭크 -1 행렬 의 합으로 쓰여진 것을 보여줍니다 . 순위 -1 매트릭스는 어떻게 생겼습니까? 보자 :
( 1 2 3 ) ( 4 5 6 ) = ( 4 5 6 8 10 12 12 15 18 ) 행이 비례하고, 열이 비례한다.
p
이제 를 흑백 이미지의 그레이 스케일 값을 포함하는 것으로 생각하십시오 . 매트릭스의 각 항목은 하나의 픽셀을 나타냅니다. 예를 들어 비비의 다음 그림 :
X그런 다음이 이미지를 R로 읽고 라이브러리를 사용하여 결과 구조의 행렬 부분을 가져옵니다 pixmap
.
결과를 재현하는 방법에 대한 단계별 가이드가 필요한 경우 여기 에서 코드를 찾을 수 있습니다 .
SVD를 계산하십시오.
baboon.svd <- svd(bab) # May take some time
512×512
512
512
1
20
baboon.1 <- sweep(baboon.svd$u[,1,drop=FALSE],2,baboon.svd$d[1],"*") %*%
t(baboon.svd$v[,1,drop=FALSE])
baboon.20 <- sweep(baboon.svd$u[,1:20,drop=FALSE],2,baboon.svd$d[1:20],"*") %*%
t(baboon.svd$v[,1:20,drop=FALSE])
다음 두 이미지가 생성됩니다.
왼쪽에서 순위 1 이미지의 세로 / 가로 줄무늬를 쉽게 볼 수 있습니다.
20
매우 흥미로운 점은 원본 이미지의 일부를 세로 / 가로 선, 주로 대각선 코털과 질감, 눈의 중첩으로 표현하기 어려운 부분입니다!
답변
A
m×n
m≥n
v
A
v1
A
v1,…,vn
Rn
Rn
A
합시다 (따라서 는 방향으로 의 폭발력을 정량화합니다 ). 단위 벡터 가 되도록 정의
되었다고 가정하자
식 (2)로 행렬 표기를 사용하여 간결하게 표현 될 수있다
은 IS 매트릭스 열째가 , 은 IS 그 행렬 열은 이며
σi
A
vi
ui
V
n×n
i
vi
U
m×n
i
ui
Σ
는 IS 가진 대각 행렬 토륨 대각선 엔트리이다 . 행렬 는 직교하므로 (3)의 양변에 를 곱하여 를 얻을 수
우리는 이제 거의 제로 노력 으로 의 SVD를 도출 한 것으로 보일 수 있습니다 . 지금까지 어떤 단계도 어려웠습니다. 그러나 그림의 중요한 부분이 빠져 있습니다. 우리는 가 직교 하다는 것을 아직 알지 못합니다 .
n×ni
σi
V
VT
A
U
중요한 사실은 누락 된 부분입니다 이 직교 함 :
이것이 사실이 아니라면
이라고 주장합니다 문제에 최적이 아닙니다 (1). 실제로, (4)가 만족되지 않으면, 방향으로 약간 섭동 함으로써 을 개선 하는 것이 것이다.
Av2
v1
v1
v2
(모순을 위해) (4)가 만족되지 않는다고 가정하십시오. 경우 직교 방향으로 약간 교란된다 의 규범 변경되지 않는다 (또는 최소한의 표준의 변경 무시할). 지구 표면을 걷더라도 지구 중심으로부터의 거리는 변하지 않습니다. 그러나 방향으로 교란되어 상기 벡터 에서 교란되는 비 직교 방향 등의 표준의 변경 있다 무시할 . 의 규범
v1v2
v1
v1
v1
v2
Av1
Av2
Av1
Av1
무시할 수없는 양으로 증가 될 수 있습니다. 이는 이 문제 (1)에 적합하지 않다는 것을 의미하며 이는 모순입니다. 나는이 주장을 좋아한다 : 1) 직관이 매우 분명하다. 2) 직관은 엄격한 증거로 직접 변환 될 수 있습니다.
v1비슷한 주장은 이 과 직교 함을 나타냅니다 . 벡터 은 쌍으로 직교합니다. 이것은 단위 벡터 이 쌍으로 직교하도록 선택 될 수 있음을 의미하며, 이는 상기 행렬 가 직교 행렬 임을 의미한다 . 이것으로 SVD 발견이 완료됩니다.
Av3Av1
Av2
Av1,…,Avn
u1,…,un
U
위의 직관적 인 주장을 엄격한 증거로 변환하려면 이 방향으로 교란되면 교란 벡터
가 실제로 단위 벡터가 아니라는 사실에 직면해야합니다 . (표준은 입니다.) 엄격한 증거를 얻으려면
벡터 진정 단위 벡터이다. 당신은 쉽게 표시 할 수 있습니다 (4)은 충분히 작은 값 다음, 만족하지 않는 경우에, 우리는 한
( 의 표시가 있다고 가정)
v1v2
1+ϵ2
v¯1(ϵ)
ϵ
ϵ
올바른 선택). 이것을 표시하려면 . 이는 이 문제 (1)에 적합하지 않다는 것을 의미하며 이는 모순입니다.
f′(0)≠0v1
(그런데, 여기 SVD에 대한 Qiaochu Yuan의 설명을 읽는 것이 좋습니다 . 특히, 위에서 논의한 “Key lemma # 1″을 살펴보십시오. Qiaochu가 말했듯이 키 lemma # 1은 “기술의 핵심입니다” 특이 값 분해 “).
답변
친구 하루의 시간을 가지고이 강의를보십시오 :
https://www.youtube.com/watch?v=EokL7E6o1AE
이 녀석은 매우 직설적입니다. 결국에는 모두 모이기 때문에 건너 뛰지 않는 것이 중요합니다. 처음에는 조금 느리게 보일지라도, 그는 중요한 포인트를 고정하려고 노력하고 있습니다.
다른 설명을 읽을 때 혼란 스러웠 기 때문에 모든 사람이하는 세 가지 행렬을 제공하는 것이 아니라 요약 해 드리겠습니다. 그 행렬은 어디에서 왔으며 왜 그렇게 설정합니까? 강의는 그것을 못 박는 다! 모든 행렬 (영원성 기록)은 동일한 차원의 기본 행렬로 구성한 다음 회전하고 늘릴 수 있습니다 (선형 대수의 기본 정리). 사람들이 던지는 세 가지 행렬 각각은 초기 행렬 (U), 스케일링 행렬 (시그마) 및 회전 행렬 (V)을 나타냅니다.
스케일링 매트릭스는 어떤 회전 벡터가 지배적인지를 보여 주며, 이것을 단일 값이라고합니다. 분해는 U, 시그마 및 V에 대해 해결됩니다.