태그 보관물: matrix

matrix

SVD의 직관은 무엇입니까? (SVD)에 대해 읽었습니다. 거의 모든

단일 값 분해 (SVD)에 대해 읽었습니다. 거의 모든 교과서에서 주어진 사양으로 행렬을 세 개의 행렬로 분해한다고 언급되어 있습니다.

그러나 행렬을 그러한 형태로 나누는 직관은 무엇입니까? 차원 축소를위한 PCA 및 기타 알고리즘은 알고리즘에 뛰어난 시각화 속성이 있지만 SVD에서는 그렇지 않다는 점에서 직관적입니다.



답변

행렬 (실제, n × p )
의 SVD를 X = U D V T
로 쓰십시오. 여기서 Un × p 이고, D 는 대각선 p × p 이고 V Tp × p 입니다. 행렬 UV 의 열의 관점에서 우리는
X = p i = 1 d i u i v T i

X

n×p

X=UDVT

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 ) 행이 비례하고, 열이 비례한다.

X

p

(123)(456)=(45681012121518)

이제 를 흑백 이미지의 그레이 스케일 값을 포함하는 것으로 생각하십시오 . 매트릭스의 각 항목은 하나의 픽셀을 나타냅니다. 예를 들어 비비의 다음 그림 :

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

(1)v1=arg⁡maxv∈Rn‖Av‖2subject to ‖v‖2=1.

v1

A

v2=arg⁡maxv∈Rn‖Av‖2subject to ⟨v1,v⟩=0,‖v‖2=1.

v1,…,vn

Rn

Rn

A

합시다 (따라서 는 방향으로 의 폭발력을 정량화합니다 ). 단위 벡터 가 되도록 정의
되었다고 가정하자
식 (2)로 행렬 표기를 사용하여 간결하게 표현 될 수있다
은 IS 매트릭스 열째가 , 은 IS 그 행렬 열은 이며

σi=‖Avi‖2

σi

A

vi

ui

(2)Avi=σiuifor i=1,…,n.

(3)AV=UΣ,

V

n×n

i

vi

U

m×n

i

ui

Σ

는 IS 가진 대각 행렬 토륨 대각선 엔트리이다 . 행렬 는 직교하므로 (3)의 양변에 를 곱하여 를 얻을 수

우리는 이제 거의 제로 노력 으로 의 SVD를 도출 한 것으로 보일 수 있습니다 . 지금까지 어떤 단계도 어려웠습니다. 그러나 그림의 중요한 부분이 빠져 있습니다. 우리는 가 직교 하다는 것을 아직 알지 못합니다 .

n×n

i

σi

V

VT

A=UΣVT.

A

U

중요한 사실은 누락 된 부분입니다 이 직교 함 :
이것이 사실이 아니라면
이라고 주장합니다 문제에 최적이 아닙니다 (1). 실제로, (4)가 만족되지 않으면, 방향으로 약간 섭동 함으로써개선 하는 것이 것이다.

Av1

Av2

(4)⟨Av1,Av2⟩=0.

v1

v1

v2

(모순을 위해) (4)가 만족되지 않는다고 가정하십시오. 경우 직교 방향으로 약간 교란된다 의 규범 변경되지 않는다 (또는 최소한의 표준의 변경 무시할). 지구 표면을 걷더라도 지구 중심으로부터의 거리는 변하지 않습니다. 그러나 방향으로 교란되어 상기 벡터 에서 교란되는 비 직교 방향 등의 표준의 변경 있다 무시할 . 의 규범

v1

v2

v1

v1

v1

v2

Av1

Av2

Av1

Av1

무시할 수없는 양으로 증가 될 수 있습니다. 이는 이 문제 (1)에 적합하지 않다는 것을 의미하며 이는 모순입니다. 나는이 주장을 좋아한다 : 1) 직관이 매우 분명하다. 2) 직관은 엄격한 증거로 직접 변환 될 수 있습니다.

v1

비슷한 주장은 이 과 직교 함을 나타냅니다 . 벡터 은 쌍으로 직교합니다. 이것은 단위 벡터 이 쌍으로 직교하도록 선택 될 수 있음을 의미하며, 이는 상기 행렬 가 직교 행렬 임을 의미한다 . 이것으로 SVD 발견이 완료됩니다.

Av3

Av1

Av2

Av1,…,Avn

u1,…,un

U

위의 직관적 인 주장을 엄격한 증거로 변환하려면 이 방향으로 교란되면 교란 벡터

가 실제로 단위 벡터가 아니라는 사실에 직면해야합니다 . (표준은 입니다.) 엄격한 증거를 얻으려면

벡터 진정 단위 벡터이다. 당신은 쉽게 표시 할 수 있습니다 (4)은 충분히 작은 값 다음, 만족하지 않는 경우에, 우리는 한

( 의 표시가 있다고 가정)

v1

v2

v~1=v1+ϵv2

1+ϵ2

v¯1(ϵ)=1−ϵ2v1+ϵv2.

v¯1(ϵ)

ϵ

f(ϵ)=‖Av¯1(ϵ)‖22>‖Av1‖22

ϵ

올바른 선택). 이것을 표시하려면 . 이는 이 문제 (1)에 적합하지 않다는 것을 의미하며 이는 모순입니다.

f′(0)≠0

v1

(그런데, 여기 SVD에 대한 Qiaochu Yuan의 설명을 읽는 것이 좋습니다 . 특히, 위에서 논의한 “Key lemma # 1″을 살펴보십시오. Qiaochu가 말했듯이 키 lemma # 1은 “기술의 핵심입니다” 특이 값 분해 “).


답변

친구 하루의 시간을 가지고이 강의를보십시오 :
https://www.youtube.com/watch?v=EokL7E6o1AE

이 녀석은 매우 직설적입니다. 결국에는 모두 모이기 때문에 건너 뛰지 않는 것이 중요합니다. 처음에는 조금 느리게 보일지라도, 그는 중요한 포인트를 고정하려고 노력하고 있습니다.

다른 설명을 읽을 때 혼란 스러웠 기 때문에 모든 사람이하는 세 가지 행렬을 제공하는 것이 아니라 요약 해 드리겠습니다. 그 행렬은 어디에서 왔으며 왜 그렇게 설정합니까? 강의는 그것을 못 박는 다! 모든 행렬 (영원성 기록)은 동일한 차원의 기본 행렬로 구성한 다음 회전하고 늘릴 수 있습니다 (선형 대수의 기본 정리). 사람들이 던지는 세 가지 행렬 각각은 초기 행렬 (U), 스케일링 행렬 (시그마) 및 회전 행렬 (V)을 나타냅니다.

스케일링 매트릭스는 어떤 회전 벡터가 지배적인지를 보여 주며, 이것을 단일 값이라고합니다. 분해는 U, 시그마 및 V에 대해 해결됩니다.


답변