(정보이론 역사)
claude shannon 은,
미국의 수학자이자 전기 공학자입니다.
현대 정보를 다루는 IT분야에 있어서 빼놓을수 없는 인물로,
디지털 회로이론에서 부울의 논리회로를 바탕으로 전자적으로 이를 해석하여, 회로로 이를 표현할수 있다는 것을 알아냈으며,
전기를 회로와 전기력의 조합으로만 바라보던 시절에,
이 회로라는 것을 이용하여 정보를 표현하고 다룰수 있다는 시각을 제공했습니다.
그의 석사 논문인 A Mathematical Theory of Communication 은, 정보 이론의 시초가 되었기에,
섀넌을 정보이론의 아버지라고 부릅니다.
1937년 섀넌의 또다른 석사 논문 A symbolic Analysis of Relay and Switching Circuits의 단편을 발췌하면,
"모든 회로는 일련의 방정식과 방정식의 조건으로 기술된다. 방정식을 푸는 계산법은 명제의 계산법과 정확히 일치한다. 회로는 방정식에서 즉시 도출될수 있다." 라고 되어있는데,
즉, 전자 회로로 수학 문제를 풀어낼수 있고, 정보라는 것을 다룰수 있는 완벽한 조건이 마련됨을 증명한 것이며,
정보 이론의 밑바탕이 됩니다.
(정보이론 기초)
- 정보량이란?
정보라는 것을 물질로 생각할수도 있습니다.
정보의 가치에 대한 것이 아니라, 실제로 정보를 전달함에 있어서 드는 물리적 손실에 대한 것을 양적으로 표현한 것입니다.
전자기기로 정보를 다룬다는 개념이 없던 시대에 이는 무척 획기적인 발상이었습니다.
정보이론의 정보량이란 개념은,
전자 회로로 정보를 저장하거나, 전자 통신에서 정보를 전송하려고 할때 생겨났습니다.
아시다시피 전자회로나 컴퓨터는 데이터를 bit로 다룹니다.
bit를 단순하게 표현하자면, 회로 끝에 달린 전구의 on off 상태를 말합니다.
이 전구의 상태는, 단순히 빛난다, 빛나지 않는다가 아니라, 어떠한 정보를 저장할수 있는 정보 저장매체로 다룰수 있다는 것이 요점입니다.
만약, 1000미터 떨어진 곳에서, 반대편으로 정보를 보낼때, 우리가 바로 이 전구를 사용한다고 하면 어떻게 할까요?
바로 전구의 on off를 주기적으로 보내주는 것입니다.
이것이 초기 정보 전달 방식입니다. 모스부호와 비슷한데, 모스 부호는 on off가 아닌 짧은 신호와 긴 신호로 2개의 상태를 구분하는 것이고, 이 경우는, 일정 주기별로 정확히 끊어서, 그때마다 on인지 off인지를 비교한다고 가정 합시다.
주기적으로, on인지 off인지를 보내줌으로써, 정보를 전달할수 있죠.(이 주기라는 것이 곧 정보를 몇번 보내야 하는가에 대한 정보량인데, 후술하기로 하고, 일단 알전구의 한번의 상태만을 봅시다.)
그런데, 이 두 상태만으로 모든 정보를 전달할수 있을까요?
봉화로 보자면, 전쟁이다!(불을 피운다) 전쟁이 아니다!(불을 안 피운다)로 나눌수 있는데,
고작 이 두가지 정보만을 전달하는 것은 정보 전달이 원활히 이루어지지 않습니다.
미리 정해진 샘플들을 '표기'하는 방식으로 하는 간단한 방식이 있습니다.
예를들어, (강아지, 고양이, 거북이, 새)라는 카테고리를 미리 만들어두고,
이를 전하는 것이죠.
하지만 이 전체 샘플을 전달하기엔 2가지 상태만 나타내는 전구는 부족함이 있습니다.
하나의 전구가 2가지 상태를 표현할수 있으니, 4가지 상태 샘플에는 전구 2개를 쓰면 되겠네요.
자, 봅시다.
카테고리 내의 샘플들에 '고유한 ID'를 부여한다는 개념으로 하면,
00은 강아지, 01은 고양이, 10은 거북이, 11은 새
라고 미리 정해놓으면,
그 2개의 전구로 이 카테고리 내의 모든 샘플을 표현할수 있게 됩니다.
전구가 1개씩 늘어날때마다 '경우의 수'를 봅시다.
전구 1개면, 2의 1승이므로 2개의 상태를 나타낼수 있고,
전구 2개면, 2의 2승...
즉, 전구가 나타낼수 있는 단위 정보량에, 그 개수승을 해주면, 표현 범위가 나옵니다.
이를 바탕으로, 단위 정보량에 따른 전체 샘플의 정보량... 즉, 전구를 몇개 사용해야 해당 샘플을 온전히 전달 가능할까에 대한 공식은,
단위수 ^ 개수(정보량) = 표현범위
개수(정보량) = log(단위수) 표현범위
인 것입니다.
우리가 단위수로 둔 것은, 현대 전자 통신에서는 bit단위를 사용하기에,
2를 두시면 됩니다.(한번에 2개의 경우의 수가 존재.)
마지막으로 예를 들어보자면, 26자의 글자를 bit로 표현하기 위해선,
log2 26
이라는 정보량이 필요하고, 계산해보면, 딱 2비트로 26을 나타낼수는 없으니,
최소 5bit(32경우의 수)로, 이를 표현할수 있습니다.
다시 알전구 정보 전달 예시를 보자면,
꺼지고 켜지고 하는 것이 단위수, 그리고 해석할수 있는 가짓수가 샘플 사이즈, 이것을 토대로 '몇번 알전구의 상태를 보낼 것인가'에 대한 것이 바로 정보량입니다.
(이런 개념이 필요한 이유를 들자면, 우리가 통신 서비스를 고객에게 제공한다고 했을 때, 얼마만큼 통신을 사용했는지, 그 이용료를 청구하기 위한 기준이라고 보시면 됩니다.)
여기까지가 간단하게 설명한 것인데,
보다 제대로된 내용에 대해 잠깐만 더 알아보죠.
여기부터가 진짜입니다.
동전 던지기를 10번 한 결과를 전송하기 위해선 정보량이 얼마나 들까요?
이 경우에는 경우의 수가 2이고, 그중 1개의 결과를 가진 독립시행 데이터를 10번 보내면 됩니다.
앞,앞,뒤,앞,뒤,뒤....
이런식으로, 비트를 10번 보내는 것이죠.
단위별로 보자면, 2개의 표현 범위를 비트를 사용해서 보낼때를 가정한 것으로,
log2 2 = 1
이므로, 10개의 결과면, 1x10을 해서 10비트죠.
위에서도 알아봤던 26자의 알파벳은요?
글자당 고유번호를 붙인다는 개념으로, 비트로 나타내면 약 5비트라고 했습니다.
헌데, 이것을 고유번호가 아니라 확률적인 시선으로 봅시다.
애초에 섀런은 이러한 방식으로 설명했습니다.
자, 한 비트가 이진탐색의 결과를 반환한다고 합시다.
문1 '내가 보내려는 글자가 a~m 사이에 있나? 혹은 n~z 사이에 있나?'
이렇게 묻고, 만약 a~m 사이를 뜻하는 1이 나왔다고 합시다.
다음에는
문2 '내가 보내려는 글자가 a~f 사이에 있나? 혹은 g~m 사이에 있나?'
라는 물음을 하죠.
이것도 1이 나왔다고 합시다.
문3 '내가 보내려는 글자가 a~c 사이에 있나? 혹은 d~f 사이에 있나?'
이번에는 0이 나왔습니다.
문4 '내가 보내려는 글자가 d인가? e~f인가?'
이번에도 0...
문5 '내가 보내려는 글자가 e인가? f인가?'
이번에 0이 나왔다면,
내가 보내려는 글자는 f이고, 총 5번을 물었으며,
이 물음의 결과를 yes or no의 비트에 담아서 보냈으므로, 5비트라는 것입니다.
사실 여기서는, 딱 5번을 해야하는게 아니라,
최소한이라면 4번만에 질문이 끝날수 있고,
최대 5번 안에는 질문이 끝나서, 원하는 정보를 yes or no의 방식으로 표현할수 있는 것이죠.
위에서 말한 log2 26의 값을 구해보면, 평균적으로 4.7개의 bit를 사용하여 하나의 알파벳을 전달할수 있다는 것으로,
만일 6글자를 전송한다고 하면, 이에 6을 곱해주어 28.2bit를 사용했다고 계산해낼수 있습니다.
이는 a~z까지의 알파벳 중 하나를 내가 고를 확률이 동일하기에 나온 결과입니다.
즉, 한 데이터를 표현하기 위해 필요한 질문의 수를 정보의 양이라 한다면,
우리는 확률이라는 개념을 유의해야 하는 것입니다.
아래의 엔트로피에서, 이 yes or no의 방식으로 했을 때, 서로 다른 발생 확률을 지닌 데이터를 전송할 때의 최소 정보량에 대한 개념을 알아낼수 있습니다.
- entropy란?
열역학에서 말하는 엔트로피도 있는데, 이는 공부하지 않아서 설명을 못하고, 정보이론에서 말하는 엔트로피는,
확률에 따른 불확실도를 의미합니다.
결과적으로 보자면,
엔트로피가 크다고 하는 것은,
어떠한 상태가 일어날 확률이, 전체에서 균등할 때입니다.
무슨 의미냐면,
A, B라는 샘플이 있을 때,
A가 일어날 확률인 P(A)가 50%, B가 일어날 확률인 P(B)가 50%라면,
이는 엔트로피가 최대인 상태로,
즉, A도 일어날수 있고, B도 일어날수 있다는 것입니다.
만약 P(A)가 80이고, P(B)가 20이라면,
이는 A가 일어날 확률이 높으므로, 대부분의 경우 A가 나올 것이기에(총 100개의 뽑기가 든 상자 안에, 80개가 A고, 20개가 B라고 생각하세요) 이는 불확실도가 작고, 즉 엔트로피가 작은 것이고,
P(A)가 100%라면,
말할것도 없이, 그냥 A만 존재하는 상태라고도 할수 있습니다. 엔트로피 제로!
그런데, 이를 어떻게 측정할까요?
섀넌은 이를 기계적으로 해석하며 알아냈는데,
예를들어 A, B, C, D라는 알파벳을 무작위로 출력하는 기계가 있다고 했을 때,
각각 샘플들이 나타날 확률이 있다고 치죠.
만약 모든 샘플이 출현할 확률이 25%로 동일한 기계를 만들려면 설계를 어떻게 해야할까요?
위에서 쇠공을 떨어뜨린다고 합시다.
그 아래로 못이 박혀있죠.
그 못의 왼쪽으로 갈지, 오른쪽으로 갈지는 딱 50%의 확률입니다.
하나의 못이, 쇠공을 좌측으로 움직일지, 우측으로 움직일지를 가르는 확률의 갈림길인 샘이죠.
그러나 못 하나로는 4개 샘플을 표현하지 못합니다.(정보의 표현이 불가)
그러니, 아래로 또 못을 박습니다.
왼쪽으로 떨어질 때, 또 그 공이 왼쪽으로 떨어질지 오른쪽으로 떨어질지를 판별하는 못을 박고,
오른쪽으로 떨어질 때에도 똑같이 못을 박습니다.
그러면 그 경로가 나타낼수 있는 샘플의 수는, 4개가 되네요.
마치 가지치기와 같이 확률이 흘러나와서,
루트 부분의 못에는 50%, 그리고 그 갈래에서 또 갈래를 나눈 못에는 그 50%로, 1/2 * 1/2라는 확률로 하여, 1/4 = 25/100 이 되는 것입니다.
아래로 못을 하나 박을 때마다, 1/2가 곱해지며, 확률이 갈라지는군요...
즉, 우측일지 좌측일지에 대한 경우의 수를 품은 '못을 몇번을 사용해야 할지'를 먼저 알아내야 합니다.
이에 대해서는 아래와 같이 하시면 됩니다.
log2 1/P(x)
즉, 확률의 역수에 log를 취하면 됩니다.
예를 들자면, 50% 확률을 지닌 A샘플에 대한 못의 개수를 구하려면,
log2 1/(1/2) = log2 2 = 1
입니다.
왜 확률의 역수를 취해주냐면,
한번에, 탐색해야할 전체 데이터를 반토막 낼수 있는 질문을 몇번 해야 해당 확률의 값을 찾아낼수 있을지에 대한 최소값을 얻어내는 것으로,
2^? = 1/(p(x))
로 나타낼수 있습니다.
p(x)
는, 백분율로 했을 때, 100개 중, 해당 데이터가 몇개가 존재하는지에 대한 것이기도 합니다.
예를들어 x가 50퍼센트일때는, 총 100개 중에 50개가 존재한다는 것으로, 총 100이라는 경우의 수를 bit로 표현하는 것이 목적인데, 그중에 50개가 목적값인 x이므로,
총 경우의 수를, 이 목적값의 개수로 나눠준 수가, 우리가 bit로 표현할 정보 space가 되죠.
즉, 경우의 수를 발생 회수로 나눈 값...
발생 확률의 역수를 bit로 표현하는 것이 바로 질문의 개수입니다.
사건을 수치화 할때, 사건이 드물게 발생할수록 정보가 커지는 것을 표현한 것이라고 설명하는 곳도 있더군요.
그렇기에 여기까지를 사건의 정보량이라고 부릅니다.
위에서 알파벳 역시 구하는 공식이 다르지 않았는데, 알파벳 하나의 확률은 1/26이었으므로 그 역수를 log2한 것이었죠.
25% = 1/4를 나타내려면, log2 1/(1/4) = 2
즉, 2개의 못을 사용해야 표현이 가능하죠.
'몆개의 못(bit)'을 사용해야 사건을 표현 가능한가?
이것이 사건의 정보량이라고 다시 강조합니다.
엔트로피는, 확률이란 요소가 성립된 해당 기계에서 평균 얼마정도를 질문해야 정답에 도달할수 있을까에 대한 값으로 해석할수 있으며, 이는
확률 * 못 개수(사건 정보량)
라는 것을, 해당 기계에 존재하는 모든 확률에 해주고,
그것을 더해준 값이 됩니다.
그러니까,
P(x1) * log2 1/(P(x1)) + P(x2) * log2 1/(P(x2)) + P(x3) * log2 1/(P(x3)) +....
이런식이 되는 것이죠.
어디서 본 식이지 않나요?
바로,
E(x) = sum(x * p(x))
입니다.
이는, 확률변수의 기대값으로,
여기선 x를 사건 정보량으로 치환한 것이죠.
그렇기에 엔트로피를 정보량의 기대값이라고도 합니다.
모두 25%인 4개의 샘플의 확률에 이를 계산해보면,
(1/4 * 2) * 4
가 되어, 평균 2번 못을 통과해야 정답이 나온다는 결과가 되는군요.
한번 확률을 달리해보죠.
A = 50%
B = 25%
C = 12.5%
D = 12.5%
로 했을 때,
0.5*log2 1/(1/2) + 0.25*log2 1/(1/4) + 0.125*log2 1/(1/8) + 0.125*log2 1/(1/8) = 1.75
즉, 해당 머신에서 평균 1.75번 동작을 해야 답 하나를 얻어낼수 있다는 것입니다.
섀넌은 이처럼 기계를 이용해 정보를 물질적으로 표현하려 했습니다.
- 이쯤에서 다시 요약하자면,
log2 정보space = 정보량
이고,
이는 한번에 2개의 샘플에 대한 불확정성에 대한 해답을 나타낼수 있는 단위로, 이 단위를 bit라고 하며, 최소 몇번의 질문을 해야 해당 정보 space의 정보를 전달할수 있는가에 대한 문제의 수치화 입니다.
이진분류와 같이 질문으로 반을 가르고, 또 질문으로 반을 가르는 식으로, 정보를 최소한의 bit로 표현할수 있고, 그 결과값은, [...질문2의 해답, 질문1의 해답]이런 식으로, 각 해답들이 벡터로 묶여서 전달되고, 전달 받은 곳에서는 그에 맞게 해석하는 것입니다.(여기선 bit이니, 각 해답은 0 혹은 1)
확률 변수에 있어서 정보 space는, 확률의 역수입니다.
그렇다고 위의 정보량 공식과 달라질게 없는데, 모두 동일한 확률이라면,
'1/ 전체경우의 수'입니다. 위에서 정보 space를 알파벳중 하나를 보내는 것이라 하면, 1/26의 모두 균일한 확률이므로, 이를 역수취해서 log2 26을 구하는 것이죠.
만일 확률이 서로 다르다면, 정보 space는, 각각의 확률의 역수를 취해주세요.
여기까지 해서, 각각 다른 확률에 대해서 정보량을 구하는 방식을 알아봤고,
확률의 불확실성을 뜻하는 엔트로피를 이를통해 구해보자면,
이 정보량의 평균을 구하면 됩니다.
정확히는 기대치를 구하는 것으로,
확률의 불확정성이 높으면, 정보량이 많아집니다.
정보량이 많아진다는 것은, 질문의 결과를 많이 보내야 한다는 것이고,
생각해보자면, 모든 확률이 동일할때 이러한 현상이 일어납니다.
잘 생각해보세요.
26자의 알파벳중 무엇하나 더하고 덜할것 없이 발생빈도가 같다면, 우리가 이 알파벳중 하나의 정보를 보낸다고 했을 때, 모든 알파벳을 고려하여 질문해야하죠?
하지만 예를들어 A가 나올 확률이 50퍼센트라면,
먼저 우리가 보낼 해답은, 이 글자가 A인가 나머지인가?를 먼저 질문하면, 운이 좋으면 1번의 질문만으로 끝이 날수도 있습니다.
더 극단적으로 하자면, A가 나올 확률이 무려 100퍼센트!
이거 엔트로피를 구해보면 0이 나옵니다.
즉, 보낼 필요가 없는 것입니다.
저쪽에서도 이미 묻기도 전에 A가 나올거라는 것을 알고있는 상태니 말이죠.
이런 의미입니다.
여기까지 해서, 엔트로피가 왜 정보량의 기대치를 사용하는지를 알수 있습니다.
- Continuous Variable의 엔트로피
위에서는 이산적인 데이터를 보내는 것을 가정으로 해서 설명을 했는데,
연속값에 대해서도 엄연히 엔트로피를 구할수 있습니다.
각 x값에 대하여,
sum(p(x) * log2 1/(p(x)))
라고 했었는데,
연속값에 있어서는, 이 x가 분절되지 않으니, 미세하게 변화시키는 dx를 대입해가며, 각 정보량을 구하고, 확률과 곱한 후 더해주는 적분의 개념을 사용하면 됩니다.
그냥 x가 dx를 사용한다는 것만 아신다면, 적분이고 뭐고 할 것없이 위와 같은 수식을 사용하면 됩니다.
'Study > Data Science' 카테고리의 다른 글
딥러닝 손실함수 Cross Entropy Error 정리 (구 블로그 글 복구) (0) | 2025.04.10 |
---|---|
고차원 데이터에서 차원의 저주란? (딥러닝 학습시 데이터 특징을 제한하는 이유와 빅데이터 기술의 중요성) (구 블로그 글 복구) (0) | 2025.04.10 |
딥러닝 Optimizer 종류 정리 (1) | 2025.04.09 |
데이터 사이언스 실습을 위한 개발 환경 준비(Python, Anaconda, CUDA, Torch) (0) | 2025.04.02 |
마할라노비스 거리(Mahalanobis Distance) 개인정리 (구 블로그 글 복구) (0) | 2025.04.01 |