4강 / 20강

엔트로피 — 모름의 양을 숫자로 적는다

스무고개에서 질문을 몇 번 해야 하나

엔트로피 — 모름의 양을 숫자로 적는다
동전은 한 번, 주사위는 두 번 반, 알파벳은 네 번 반. 맞히는 데 드는 질문 수가 곧 엔트로피입니다.

상호정보량으로 가려면 그 재료인 엔트로피를 먼저 알아야 합니다. 어려운 말 같지만 뜻은 아주 실용적입니다.

엔트로피 H = 답을 맞히려면 예/아니오 질문을 몇 번 해야 하나

스무고개를 떠올려 보세요. 상대가 뭔가를 마음속에 정해 두었고, 나는 예/아니오 질문만으로 그것을 맞혀야 합니다. 질문을 몇 번 해야 할까요? 그 횟수가 곧 "내가 지금 얼마나 모르고 있는가"의 크기입니다.

🪙
동전
앞/뒤 두 가지 → 질문 1번 → H = 1 비트
🎲
주사위
여섯 가지 → 약 2.58번 → H = 2.58 비트
🔤
알파벳
26가지 → 약 4.7번 → H = 4.7 비트

가짓수가 n 개이고 전부 똑같이 그럴듯하다면 H = log₂ n 입니다. "질문 2.58번"이 이상하게 들리겠지만, 여러 번 반복할 때의 평균이라고 생각하면 됩니다.

H(X) = − Σᵢ p(xᵢ) · log₂ p(xᵢ)

공식을 뜯어보면 — −log₂ p 는 "그 일이 일어났을 때의 놀라움"입니다. 드문 일(p 가 작다)일수록 놀라움이 크죠. p = 1/2 이면 1 비트, p = 1/8 이면 3 비트.

거기에 p 를 곱해 전부 더하면 놀라움의 평균이 됩니다. 즉 엔트로피 = 평균적으로 얼마나 놀라게 되는가.

확실한 일(p = 1)의 놀라움은 −log₂ 1 = 0 — 하나도 안 놀랍습니다. 말이 되죠.

확률만 넣으면 되는 순수한 계산입니다. 이 세 줄이 상호정보량의 뼈대입니다.
Python 브라우저에서 실행
그림이 아래에 붙어 나옵니다. 축 이름을 한글로 쓰면 글자가 깨지므로 영어로 둡니다.
Python 브라우저에서 실행

🎮 확률을 직접 옮겨 보기

막대를 끌어 확률을 바꿔 보세요. 고르게 펴질수록 엔트로피가 커지고, 한쪽으로 몰릴수록 0 에 가까워집니다.

엔트로피 실험실 — 확률을 옮기면 모름은 어떻게 변할까
불러오는 중…

연속된 값에는 어떻게 쓰나

유전자 발현량은 6.31, 7.02, 5.88… 처럼 연속된 숫자입니다. "가짓수"가 없죠. 그러면 확률 p 를 어떻게 구할까요?

가장 쉬운 방법은 칸으로 나누는 것입니다. 값의 범위를 몇 칸으로 자르고, 각 칸에 몇 개가 들어갔는지 세어 비율을 내면 그것이 p 입니다. 히스토그램을 그리는 것과 똑같습니다.

칸 수를 7로 잡았습니다. 왜 7인지는 6강에서 따집니다.
Python 브라우저에서 실행

이제 둘을 같이 봅니다

혼자 있을 때의 엔트로피 H(X) 는 "X 를 맞히는 데 드는 질문 수"입니다. 그런데 Y 를 이미 알고 있다면 질문이 줄어들까요?

줄어든다면, 그 줄어든 만큼이 바로 Y 가 X 에 대해 알려 준 정보입니다. 그것이 다음 강의 상호정보량입니다.

MI(X;Y) = H(X) − H(X | Y)
원래 모름 − Y 를 알고 난 뒤의 모름
🤔 확인 문제
공평한 8면체 주사위의 엔트로피는 몇 비트일까요?
🤔 확인 문제
어떤 유전자의 발현량이 200명 모두에게서 정확히 같았다면 그 유전자의 엔트로피는?
🤔 확인 문제
연속된 발현량에서 엔트로피를 재려고 값을 칸으로 나눴습니다. 칸 수를 늘리면?