이 단원 목차
낮은 정밀도 인수로 더 정확한 답을 얻기
Mixed-precision iterative refinement는 낮은 정밀도의 인수를 재사용해 correction을 풀고, 잔차와 해 갱신은 더 정확하게 수행합니다. 비싼 인수분해를 다시 하지 않으면서 처음 해의 오차를 줄이려는 방법입니다. 성공 여부는 조건수·인수 품질·각 단계의 정밀도에 달려 있습니다.
실험은 A=[[1,1],[1,1+delta]], delta=2^-k, b=(2,2+delta)를 쓰며 정확한 해는 (1,1)입니다. Toy low precision은 유효 p binary bit와 ties-to-even, 제한 없는 지수를 뜻합니다. 특정 하드웨어 dtype의 모든 동작을 모사하지는 않습니다.
반올림 소거를 따라가기
첫 pivot은 1이고 두 번째는 fl(fl(1+delta)-1)입니다. 우변도 별도로 반올림되며 더 큰 크기 때문에 표현 간격이 다릅니다.
delta=1/8, p=4에서 1.125는 표현되지만 2.125는 중간값이라 2로 반올림됩니다. 소거 뒤 우변의 두 번째 값이 사라져 저정밀 해는 (2,0)이 됩니다. 정확한 해에 임의의 잡음을 붙인 것이 아니라 실제 반올림 순서에서 발생하는 오차입니다.
잔차 정밀도가 보정을 바꾼다
Refinement는 다음 순서로 진행합니다.
잔차는 원래 데이터의 binary64 또는 선택한 toy 산술로 계산합니다. 인수와 correction solve는 계속 낮은 정밀도이고 해의 누적 갱신은 binary64입니다. 각 단계의 역할을 구별해야 혼합 정밀도라고 부르는 이유가 분명해집니다.
(2,0)의 true residual은 (0,1/8)입니다. Correction은 (-1,1)이므로 한 번에 (1,1)을 복원합니다. 반면 저정밀 잔차는 우변을 이미 (2,2)로 보아 0이 됩니다. 계산 잔차가 0인데도 원래 시스템 잔차 노름은 0.125, 상대 해 오차는 1로 남습니다.
사용할 수 없는 인수도 있다
정밀도에 비해 delta가 너무 작으면 fl(1+delta)=1이라 두 번째 pivot이 0이 됩니다. 이때는 인수분해 실패를 표시하고 해와 오차를 비워 둡니다. 오차 0을 그리면 실패를 성공으로 잘못 전달하기 때문입니다.
이 SPD 행렬의 determinant는 delta입니다. 최소 고유값을 delta/lambda_max로 구하면 큰 값끼리 빼는 상쇄를 피할 수 있습니다. 일반 refinement 수렴 정리를 적용하려면 조건수·정밀도·인수 오차 가정을 별도로 확인해야 합니다. 한 예의 성공이 모든 악조건 문제의 보장은 아닙니다.
직접 풀기: 잘못된 중단 기준
k=3, p=4, 보정 0회에서 우변의 반올림을 따라 (2,0)을 얻으세요. 고정밀 잔차로 한 번 보정한 뒤 저정밀 잔차로 같은 작업을 반복하세요. 저정밀 잔차 0만으로 중단하면 왜 잘못된 해를 수용하는지 설명하세요. k=6, p=3에서는 pivot이 0이 되어 아예 시작하지 못하는 과정도 확인하세요.
더 읽기: LAPACK 오차 측정과 정확도.
설명할 수 있나요?
실험 설정과 무관한 기준 예제를 묻습니다. 답을 고르고 설명을 확인해보세요.
선택한 답과 학습 표시는 이 브라우저에 저장됩니다. 다시 풀거나 표시를 해제할 수 있습니다.