오류 정정 부호(Error-correcting code)
여분의 비트를 규칙적으로 덧붙여 전송 중 뒤집힌 비트를 찾아 고치는 부호. 해밍 부호(7,4)는 4비트에 3비트를 더해 한 비트 오류를 고친다.
전파는 잡음에 섞이고, 디스크는 긁히고, 메모리의 비트는 우주선(cosmic ray)에 맞아 뒤집힙니다. 믿을 수 없는 통로로 믿을 만하게 보내는 방법은 여분을 덧붙이는 것입니다. 가장 단순한 예는 비트마다 세 번씩 보내고 받는 쪽에서 다수결로 읽는 반복 부호입니다. 셋 중 하나가 뒤집혀도 원래 비트를 되찾습니다. 부호의 성능은 두 수로 잽니다. 보낸 비트 가운데 진짜 정보의 비율인 전송률(code rate) R과, 부호어끼리 가장 가까운 해밍 거리(Hamming distance) d입니다. d가 3이면 오류 하나를 고치고, 일반적으로
20×14 = 280비트짜리 그림을, 비트마다 확률(probability)
그렇다면 믿을 만하게 보내려면 전송률을 0 가까이 낮춰야 할까요? 1948년 섀넌의 통로 부호화 정리(noisy-channel coding theorem)는 아니라고 답합니다. 이 통로에는 용량(capacity)
해밍 부호(Hamming code)처럼 많이 쓰는 부호는 선형입니다. 두 부호어를 자리마다 XOR로 더해도 다시 부호어가 된다는 뜻입니다. 비트를 2로 나눈 나머지(remainder)의 수로 보면 데이터 벡터(vector)에 생성 행렬(matrix)을 곱한 것이 부호어이니, 부호어들은 생성 행렬(generator matrix)의 열공간(column space)입니다. 받은 비트열에 검사 행렬을 곱하면(행렬의 곱, matrix multiplication) 부호어일 때는 0이 나오고, 비트 하나가 뒤집혔을 때는 그 자리에 따라 정해진 값이 나옵니다. 이 결과를 신드롬(syndrome)이라 하며, 신드롬이 오류의 위치를 알려 줍니다. 1960년 미국의 어빙 리드와 구스타브 솔로몬이 내놓은 리드–솔로몬 부호(Reed–Solomon code)는 데이터 k개를 다항식(polynomial)의 계수로 보고, 그 다항식의 값 n개(n > k)를 보냅니다. 차수가 k − 1 이하인 서로 다른 두 다항식은 많아야 k − 1곳에서만 값이 같으니, 두 부호어는 적어도 n − k + 1자리에서 다릅니다(d = n − k + 1). 그래서 어느 값이 망가졌는지 몰라도
이어지는 곳. 받은 비트열을 가장 가까운 부호어로 읽는 것은 부호어들로 나눈 보로노이 영역(Voronoi region) 가운데 어디에 떨어졌는지 보는 것이고, 좋은 부호를 찾는 일은 고차원 공간에 공을 빽빽이 채우는 문제와 닮았습니다. 오류를 t개까지 고치려면 부호어마다 해밍 거리 t 이내의 비트열들로 이루어진 '공'이 서로 겹치지 않아야 하는데, 공을 겹치지 않게 많이 넣을수록 부호어가 많아져 전송률이 올라가기 때문입니다. 압축(원천 부호화 정리(source coding theorem), 허프만 부호(Huffman coding))은 쓸모없는 여분을 없애고, 오류 정정 부호는 쓸모 있는 여분을 규칙적으로 되돌려 놓습니다. 실제 통신은 이 둘을 차례로 씁니다.
이 개념이 나오는 긴 글
이 개념 위에 세워진 것
이 개념을 언급하는 페이지
- 모듈러 연산
… 붙이면 전송 중 뒤집힌 비트가 부호마다 정해진 개수 이하일 때 그 자리를 찾아 고칠 수 있는데, 이것이오류 정정 부호입니다. 저장할 자료를 찾는 데 쓰는 번호(키)를 칸 수 m으로 나눈 나머지를 칸 번호로 쓰는 것은 가장 …
- 보로노이 다이어그램
… 대원을 따른 측지선 거리로 구면을 나눕니다(구면기하). 비트열을 해밍 거리로 나눈 영역은오류 정정 부호의 해독 규칙입니다. 받은 비트열을 가장 가까운 부호어로 읽기 때문입니다. 연속적인 신호 값을 몇 단계의 …
- 해밍 거리
… 1비트만 전하니 낭비가 큽니다. 벨 연구소의 해밍은 7비트로 4비트를 보내면서도 오류 하나를 고치는오류 정정 부호를 만들어 1950년에 발표했습니다. 데이터 비트 d₁…d₄에 검사 비트 p₁, p₂, p₃를 더하는데, …
- 은닉 마르코프 모델
… 최선의 날씨열'만 기억합니다. 1967년 이탈리아 태생 미국 공학자 앤드루 비터비가 잡음 섞인 신호에서오류 정정 부호를 풀려고 만든 방법입니다. 이것으로 충분한 까닭은 이렇습니다. 내일 '더움'에서 끝나는 최선의 날씨열에서 …
- 확률적 방법
… 오류율을 계산해, 잡음이 있는 통로에서도 보내는 속도가 통로 용량보다 낮기만 하면 오류를 얼마든지 줄이는오류 정정 부호가 존재함을 보였습니다(통로 부호화 정리). 이 증명도 '어느 부호인지'는 알려 주지 않았고, 실제로 …
- 원천 부호화 정리
… 얼마나 빨리 믿을 만하게 보낼 수 있는지를 말하는 통로 부호화 정리이고, 이를 실제로 해내는 방법이오류 정정 부호입니다. 산술 부호화는 기호를 묶는 대신 글 전체를 수 하나로 적어 올림 손해를 거의 없앱니다. 조금 …
- 상호 정보량
… q에서는 비트입니다. 섀넌의 통로 부호화 정리는 이 용량보다 느리게 보내면, 부호를 충분히 길게 한오류 정정 부호로 오류를 얼마든지 줄일 수 있다고 말합니다. 상호 정보량은 상관계수와 무엇이 다를까요? 상관계수는 …
- 통로 용량
… 섀넌–하틀리 정리 C = B\log_2(1 + S/N) 비트/초입니다. 용량을 실제로 끌어내는 방법이오류 정정 부호이고, 부호어끼리 서로 다른 비트의 개수인 해밍 거리가 설계의 잣대입니다. 상호 정보량을 입력에 …
- 통로 부호화 정리
… 증명된 첫 부호로 꼽힙니다. 5G 이동통신은 데이터에 LDPC 부호를, 제어 신호에 극 부호를 씁니다(오류 정정 부호). 이어지는 곳. 섀넌은 같은 논문에서 압축(원천 부호화 정리)과 이 정리를 합쳐, 원천을 먼저 …
- 섀넌–하틀리 정리
… 다시 설명했습니다. 단계를 이 어림대로 나누면 기호가 아직 몇 %씩 틀립니다. 섀넌 정리의 힘은 긴부호를 쓰면 바로 이 속도에서 오류를 얼마든지 줄일 수 있다는 데 있습니다(통로 부호화 정리). 잡음이 …
- 다항식
… 데이터를 다항식으로 보고 필요한 것보다 많은 점의 값을 보내, 몇 개가 망가져도 다항식을 되찾습니다(오류 정정 부호). 점을 모두 지나는 대신 점들에 가장 가깝게 지나는 다항식을 찾으면 최소제곱 회귀가 됩니다. …
- 라틴 방진
… 기호)를 적으면, 어느 두 줄도 해밍 거리가 3 이상인 부호어 n²개가 되어 오류 하나를 고칠 수 있는오류 정정 부호가 됩니다. 그래프로 보면 n × n 라틴 방진은 가로줄 n개와 세로줄 n개를 꼭짓점으로 하는 완전 이분 …
- 반환
… 표현식⟧과 유한 오토마톤이 같은 언어들을 나타낸다는 클리니의 정리로 이어집니다. 확률 그물의 추론과오류 정정 부호의 복호에 쓰는 여러 알고리즘도 가환 반환 위의 메시지 전달로 한데 묶이는데, 이 틀을 '일반화된 …
- 배타적 논리합
… 리처드 해밍이 1950년 발표한 해밍 부호는 이런 검사를 여러 개 겹쳐 뒤집힌 자리까지 찾아냅니다(오류 정정 부호). 7비트 해밍 부호에서는 1이 있는 자리의 번호들을 이진수로 적어 모두 XOR하면 됩니다. 올바른 …