이 단원 목차
익숙한 소수 뒤의 유한한 격자
컴퓨터는 모든 실수를 저장하지 못하고 유한한 이진 유리수 중 하나를 저장합니다. 정규화 구간 [2^e,2^(e+1))에서 p가 선행 1을 포함하는 유효 bit 수이면 이웃 값의 간격은 2^(e-p+1)입니다. 유효 자릿수가 같아도 지수가 커지면 절대 간격이 커집니다. 따라서 작은 값에서 적절한 절대 허용오차를 큰 값에 그대로 적용하면 잘못 판단할 수 있습니다.
실험은 지수 범위를 제한하지 않은 toy format입니다. 가장 가까운 값으로 반올림하고 정확히 중간이면 유효 정수의 마지막 bit가 짝수인 쪽을 택합니다. IEEE 형식의 exponent 한계·subnormal·예외까지 모사하지는 않습니다. 지수 범위의 실패는 다음 단원에서 따로 다룹니다.
이 상대 오차 상한은 정규화된 값의 한 번 반올림에 대한 것입니다. 긴 알고리즘 전체의 오차가 항상 u 이하라는 뜻은 아닙니다.
입력 표현과 누적 계산을 구별하기
먼저 입력을 s0=fl(x)로 저장하고 이진 증분 d=2^-k를 여러 번 더합니다. n번째 기준값은 s0+nd입니다. 선택 범위에서 이 dyadic 기준값은 binary64로 정확히 표현되므로 그림은 toy 연산의 오차를 분리해서 보여줍니다. 입력 표현 오차 |s0-x|는 별도 수치로 읽습니다.
p=4일 때 1 위쪽의 간격은 1/8입니다. 여기에 1/32를 더하면 다시 1로 반올림됩니다. 열여섯 번 순차적으로 더해도 결과는 1이지만 기준값은 1.5입니다. 실수의 덧셈 법칙이 틀린 것이 아니라, 중간마다 반올림하는 연산을 반복한 결과입니다.
보상 변수가 잃은 부분을 전달한다
보상 합은 다음처럼 낮은 부분을 추정해 다음 덧셈에 전달합니다.
실험은 이 식의 각 연산에도 선택한 bit 수의 반올림을 적용합니다. 위 예에서는 1.5를 복원하지만 모든 입력을 정확하게 더한다는 보장은 없습니다. 처음부터 표현하지 못한 입력 정보도 복원할 수 없습니다. 주황 오차가 0이면 저장된 입력에서 출발한 기준값과 맞는다는 뜻입니다.
직접 풀기: 중간 값과 경계
p=4에서 1.0625와 1.1875를 반올림하세요. 간격은 0.125입니다. 첫 값은 유효 정수 8이 짝수여서 1로, 둘째는 10이 짝수여서 1.25로 갑니다. 1.9375는 다음 binade의 경계인 2로 갑니다.
이제 입력 0.1, 덧셈 횟수 0으로 설정하세요. 두 누적 오차는 0이어도 입력 표현 오차는 남습니다. 두 오차가 서로 다른 기준을 사용하기 때문입니다. AI 실험에서 reduction 순서·재현성·gradient 허용오차를 해석할 때 이 구분부터 확인하세요.
더 읽기: Python 부동소수점 설명. 이 단원의 toy 연산과 손계산 예는 별도로 구성했습니다.
설명할 수 있나요?
실험 설정과 무관한 기준 예제를 묻습니다. 답을 고르고 설명을 확인해보세요.
선택한 답과 학습 표시는 이 브라우저에 저장됩니다. 다시 풀거나 표시를 해제할 수 있습니다.