torch.linalg.matrix_sqrth로 대칭 양의정부호 행렬의 제곱근을 구하면 고유분해를 손으로 짜지 않아도 됩니다 | DAKER 커뮤니티

한 줄 요약
PyTorch 2.14의 torch.linalg.matrix_sqrth는 대칭(또는 에르미트) 양의정부호 행렬의 제곱근을 바로 계산합니다. 예전처럼 고유분해를 직접 조합하지 않아도 됩니다. 에르미트는 켤레 전치가 자기 자신인 행렬입니다.
행렬 제곱근이 필요할 때 고유값·고유벡터를 구한 뒤 제곱근을 다시 곱하는 코드를 직접 짜면, dtype·대칭성·수치 안정 조건을 빠뜨리기 쉽습니다. 오늘은 작은 대칭 양의정부호 행렬 하나에서 torch.linalg.matrix_sqrth 결과와, 같은 행렬을 고유분해로 재구성한 제곱근이 가까운지부터 확인하십시오. 참가자 노트에는 행렬 크기, dtype, A_sqrt @ A_sqrt가 원래 행렬에 얼마나 가까운지를 적습니다. “빨라졌다”보다 “직접 조합 없이 같은 제곱근이 나오는지”가 재현에 도움이 됩니다.
재현해 볼 실험 조건
- 작은 대칭 양의정부호 행렬(예: 무작위 행렬을
A.T @ A + I로 만든 것)에서torch.linalg.matrix_sqrth를 호출합니다. - 같은 행렬을 고유분해로 제곱근을 재구성한 결과와 비교하고,
A_sqrt @ A_sqrt가 원래 행렬에 가까운지 오차를 적습니다. - 비대칭이거나 음의 고유값이 있는 행렬에서는 어떤 오류가 나는지 한 줄을 남깁니다. 양의정부호 가정이 깨지는 경계를 같이 봅니다.
torch.linalg.polar는 극분해이고, matrix_sqrth는 제곱근입니다. 둘은 다른 API입니다. 이번 글에서는 제곱근 한 함수에만 초점을 둡니다. 실험이 끝나면 사용한 PyTorch 버전·행렬 크기·dtype을 한 줄로 고정해 두면, 다음 참가자가 같은 조건을 바로 따라올 수 있습니다.
실무에서 바로 볼 포인트
- 대칭·양의정부호 가정이 맞는지 먼저 확인하십시오. 가정이 깨지면 이 함수를 쓰지 않습니다.
- 학습 노트에 “고유분해 직접 조합 vs
matrix_sqrth” 오차와 dtype을 남깁니다. - 극분해가 필요하면 별도 API를 쓰고, 제곱근과 섞어 쓰지 마십시오.
관련 DAKER 학습
설명용 생성 이미지입니다. 동작은 로컬에서 torch.linalg.matrix_sqrth 결과로 확인하십시오.