50x50 행렬의 가장 큰 고유 값을 찾는 SVD – 상당한 시간을 낭비하고 있습니까?


13

모든 단일 대칭 분해를 수행하여 많은 실제 대칭 50x50 행렬의 최대 고유 값을 계산하는 프로그램이 있습니다. SVD는 프로그램의 병목 현상입니다.

가장 큰 고유 값을 찾는 데 훨씬 더 빠른 알고리즘이 있습니까?


예를 들어, 구조, 고유 값의 범위 또는 서로의 유사성에 대해 알려진 것이 있으면 행렬에 대한 추가 정보를 줄 수 있습니까?
Pedro

공분산 행렬입니다 ( ). 테스트 결과 5 개 이상의 고유 값을 제외한 모든 고유 값이 0에 가까우며 가장 큰 고유 값은 두 번째로 큰 고유 값보다 ~ 20 % 이상 더 큰 것으로 나타났습니다. 0에 가까운 고유 값이 많으므로 범위가 중요하지 않다고 생각합니까? 모든 범위로 크기를 조정할 수 있습니다. 현재 사용중인 스케일은 150 ~ 200 범위입니다. XXT
Anna

또한 행렬은 매우 특이 적이 지 않으므로 SVD 문제는 잘 조정됩니다.
Anna

이후 대칭 긍정적이다 (반) 명확한 대신 SVD의 콜레 인수 분해를 사용할 수 있습니다. Cholesky 인수 분해는 SVD보다 계산하는 데 플롭이 훨씬 적지 만 정확한 방법은 여전히 플롭이 필요합니다. O ( n 3 )XXTO(n3)
Ken

@Anna : 여기에 제안 된 많은 접근법 중 하나를 시도해 보셨습니까? 실제로 가장 적합한 것이 무엇인지 궁금합니다.
Pedro

답변:


12

최대 고유 값에 필요한 정밀도에 따라 Power Iteration을 사용해 볼 수 있습니다.

구체적인 예를 들어, 명시 적으로 작성하지는 않지만 각 반복에서 를 계산합니다. 계산 하려면 연산이 필요하지만 행렬-벡터 곱에는 만 필요합니다 . x X ( X T x ) A O ( n 3 ) O ( n 2 )A=XXTxX(XTx)AO(n3)O(n2)

수렴 률은 가장 큰 두 고유 값 사이의 분리에 따라 다르므로 모든 경우에 좋은 해결책이 아닐 수 있습니다.


1
최대 고유 값이 다음 고유 값보다 20 % 더 크면 전력 반복이 매우 빠르게 수렴해야합니다 (다른 모든 고유 값은 각 반복에서 5/6의 계수로 감쇠되므로 13 회 반복마다 한 자리수를 얻습니다.
Wolfgang Bangerth

2
Krylov 부분 공간 방법은 동일한 반복 횟수를 가진 전원 반복의 벡터를 포함하므로 전원 방법보다 엄청나게 좋습니다.
잭 폴슨

1
@ JackPoulson : 예, 그러나 각 반복은 계산하는 데 더 비쌉니다 ... 그런 작은 문제에 실제로 가치가 있습니까?
Pedro

@Pedro : 물론 matvecs는 2 차 연산이 필요하고 Rayleigh 몫 eigensolve 및 후속 확장은 사소합니다.
잭 폴슨

1
코드 비용? @JackPoulson이 문제를 해결 한 이래 B. Parlett et al (1982) ( "Lanczos 알고리즘으로 최대 고유 값 추정")은 전력 방법, 전력 방법 + Aitken 가속도 및 Lanczos의 적용을 통해 실제 최대 고유 값을 목표로합니다. 대칭 (또는 에르 미트) pos. 데프. 매트릭스. 그들은 초소형 정확도 (두 번째에 비해 고유 한 값)가 필요한 경우 Lanczos 방법이 더 효율적이며, 수렴을 피하는 데 더 효과적이라고 결론을 내 렸습니다.
hardmath

5

5 개의 고유 값 만 매우 중요한 경우 행렬 벡터로 곱하는 를 사용하는 Lanczsos 알고리즘은 5 개의 초기 단계 후에 빠른 선형 수렴을 제공하므로 반복 횟수가 거의없는 상당히 정확한 고유 값입니다.X(XTx)


당신은 (@ArnoldNeumaier) 이와 같이 , 적절하게 단순화 된 것을 생각하고 있습니까 ( )? 동일한 Krylov 부분 공간에서 세 번째 벡터가 유지되는 경우 Lanczos와 다른 근사치를 제공한다는 점이 흥미 롭습니다. B=T=I
hardmath

아니; 나는 표준 Lanczsos 알고리즘을 의미했지만 서둘러 CG를 작성했습니다. 이제 수정되었습니다.
Arnold Neumaier 2018 년

4

와 같은 양의 반 정규 행렬의 경우 스펙트럼 시프트로 수렴을 가속화하는 노력이 필요합니다 . 즉, 적당한 스칼라 μ가 선택되고 전원 방법에 적용 - μ I 대신 .A=XXTμAμIA

||Ax||/||x||λ1[0,56λ1]A512λ1I712λ1[512λ1,512λ1]

AμIλ1μ

AμI(AμI)x=X(XTx)μxO(n2)


이것은 두 번째로 큰 고유 값의 크기가 무엇인지에 대한 좋은 아이디어를 요구하는 것 같습니다. 그러한 경우에 어떻게 근사합니까?
Pedro

λ1|λ2|/|λ1||λ2|/|λ1|λ2λ1만약 원한다면. 나는 Anna와 같은 사건에서 당신이 볼 수있는 이점을 질문 아래에 설명했습니다.
hardmath
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.