seegongsik
내 단어장
CM · 잡음과 정보

오류 부호화

샤논은 용량 아래에서 오류를 0에 가깝게 만들 수 있다고 약속했지만, 방법은 말하지 않았다. 데이터에 규칙으로 계산한 여분의 비트를 덧붙이면 잡음이 뒤집은 비트를 검출하고, 나아가 어디가 틀렸는지 짚어 바로잡을 수 있다는 것을 익힌다.

뒤집힌 비트, 세 부호의 대응

보호 없음 · 패리티 · 해밍을 차례로 눌러 보라. 같은 한 비트 오류를 두고, 데이터만 있을 때는 알아채지도 못하고, 패리티 한 비트는 오류를 검출만 하며, 해밍은 어느 비트인지 짚어 바로잡는다.

부호의 비트 수와 최소 거리
n = 4, k = 4 · d_min = 1
보호 없음

잡음은 비트를 뒤집는다

앞에서 보았듯 잡음은 수신기에서 0을 1로, 1을 0으로 이따금 뒤집는다. 데이터 비트만 덜렁 보내면, 받은 1011이 원래 1011인지 한 비트 뒤집힌 1001이었는지 가릴 길이 없다. 모든 4비트 패턴이 똑같이 그럴듯한 데이터라서, 오류가 났는지조차 알 수 없다.

여분의 비트가 파수꾼

데이터에서 규칙으로 계산한 검사 비트를 덧붙이면 사정이 달라진다. 가장 단순한 패리티 비트는 데이터 비트를 모두 XOR한 값으로, 1의 개수를 늘 짝수로 맞춘다. 잡음이 어느 한 비트를 뒤집으면 1의 개수가 홀수가 되어 패리티 검사가 어긋나니, 수신기는 오류가 났음을 안다. 다만 패리티 하나로는 어느 비트가 틀렸는지까지는 짚지 못한다.

관찰p = d₁ ⊕ d₂ ⊕ d₃ ⊕ d₄
패리티는 데이터 비트의 XOR.
고르기detect 1: dmin ?
단일 오류 검출은 최소 거리 2면 된다.

거리가 정정을 낳는다

부호어를 점으로 보면, 좋은 부호는 유효한 점들을 서로 멀찍이 떨어뜨려 둔다. 두 부호어가 다른 비트 자리의 수를 해밍 거리라 한다. 모든 유효 부호어 사이의 최소 거리가 2면 한 비트 오류를 검출할 수 있고, 3이면 한 비트 오류를 정정까지 할 수 있다. 오류 난 말이 여전히 원래 부호어에 가장 가깝기 때문이다. 해밍(7,4)은 검사 비트 3개로 7비트 중 어느 한 비트 오류든 짚어 바로잡는다. 그 대가는 부호율 R = k/n = 4/7로, 정보 4비트에 3비트의 여분을 치르는 것이다.

빈칸correct 1: dmin?
단일 오류 정정은 최소 거리 3이 필요하다.
스스로R = kn = ?
부호율은 데이터 비트를 전체 비트로 나눈 값.

첫 화면으로 돌아가서

보호가 없을 때 뒤집힌 비트는 흔적도 없이 유효한 데이터로 보여 빨갰고, 패리티 한 비트를 더하자 무언가 어긋났다는 신호는 떴지만 어느 비트인지는 알 수 없어 주황이었으며, 해밍의 검사 비트들이 어긋남을 모아 그 비트를 정확히 짚어 되돌리자 금색이 됐다. 오류 부호화에서 들어야 할 단 하나는 이것이다. 여분의 비트로 유효한 말들을 서로 멀리 떨어뜨려 두면, 잡음이 한 걸음 밀어낸 말도 가장 가까운 본래 말로 되돌아온다. 이것이 샤논의 약속, 용량 아래의 신뢰성을 실제로 지키는 방법이다.

오류 부호화는 데이터에서 규칙으로 계산한 여분의 검사 비트를 덧붙여, 잡음이 뒤집은 비트를 검출하고 정정한다. 패리티 한 비트(최소 거리 2)는 단일 오류를 검출하고, 최소 해밍 거리 3 이상인 부호(예: 해밍(7,4))는 단일 오류를 짚어 정정한다. 유효 부호어를 멀리 떨어뜨릴수록 강하지만, 그 대가로 부호율 R = k/n 이 1보다 작아진다. 이것이 샤논 용량 정리의 구성적 이면이다.

통신 트랙을 마치며

왜 변조하는가에서 출발해 여기까지 한 메시지의 여정을 따라왔다. 기저대역의 작은 흔들림을 반송파에 실어 주파수 축으로 올리고(AM·FM), 숫자로 바꾸고(표본화·PCM), 비트로 반송파를 흔들고(ASK·FSK·PSK), 대역폭의 천장을 만나고, 잡음과 SNR을 재고, 무작위를 확률로 길들이고, 샤논의 절대 한계를 보고, 마침내 그 한계 아래에서 오류를 부호로 되돌렸다. 통신이란 결국, 잡음이 가득한 세상에서 메시지를 잃지 않고 건네는 기술이다.