티스토리 뷰

Study/Architecture

[Data] Quantifying Information

생각많은 소심남 2015. 9. 3. 00:47

정보를 얻는다의 의미는 무엇일까?

해석이야 다양하게 할 수 있겠지만 일반적으로는 각각의 가능성을 가진 사실 중에서 사용자에게 유용한 것을 뽑는 것이 정보를 얻는 것이다. 이 말은 즉, 아주 확정적인 사실(P=1)로부터 정보를 얻을 수도 있고, 혹은 사실이 아닌 것(P=0)으로부터 불확실한 정보를 얻어올 수 있다. 물론 이 경우는 정보라고 하기는 그럴 수도 있겠지만... 사전적으로 정보는 다음과 같이 정의되어 있다.



결과적으로는 어느정도의 불확실성을 해소하기 위해서 주고 받는 데이터를 의미한다. 예를 들어서 트럼프가 있다고 가정을 했는데 여기서 하나 뽑은 카드에 대한 Data로, " 그 카드는 하트모양을 띈다" 라는 것을 받았으면 어떨까? 그 카드는 하트 1일수도 있고, 하트 K일수도 있다. 이렇게 총 나열해보면 나올 수 있는 경우의 수는 13. 그러면 처음 하트모양을 띈다는 Data가 없었으면 52장의 카드 중 하나를 뽑았어야 할 것이 이제는 13장 중 하나만 뽑게끔 변한 것이다. 물론 정확한 정보는 아니지만 이정보를 통해서 적어도 어느정도의 가능성을 높였다는데서 의미가 있게 된다. 반대로 "그 카드는 하트 K이다" 라고 정의를 내려버리면 우리는 고민할 필요도 없이 그냥 52개의 카드중에서 하트 K만 뽑아내면 된다. 이런 Data는 매우 정확한 정보이자, 어쩌면 굳이 설명할 필요가 없는 사실이기도 하다.


 위에서 언급한 정보들을 어떠한 형식의 수로 정의할 수 있을까? 이에 대한 고민을 Claude Shannon이라는 사람이 했다. 어떠한 Data가 가지고 있는 정보가 그만큼 불확실하다면 그걸 표현하기 위해서는 조금더 많은 Data량이 필요할 것이고, 반대인 경우는 그만큼 Data를 덜 가지고 있어도 된다는 것이다. 실제로 정의는 다음과 같이 내려져있다.


여기서 I로 표현되어 있는 것이 X_i 가 가지고 있는 정보의 표현량이고 P_i가 바로 전체 케이스중에서 x_i가 도출될 수 있는 확률을 말하는 것이다. 앞에서 언급했다시피 정보의 정의는 뭔가의 불확실성을 해소하기 위한 수단이라고 했었는데, 그러면 그걸 해소하기 위해서는 그만큼 정보가 더많이 표현되어야 할 것이고, 이 때 I가 더 크게 나올 것이다.


앞에서 제시했던 예시를 그대로 들고오자면 "카드는 하트모양을 띈다"라는 정보를 가지고, 52장의 카드에서 한장을 뽑아본다고 가정하자. 우리가 사실이라고 인지하는 정보는 뽑은 카드가 하트라는 것이다. 그에 반대되는 케이스는 당연히 뽑은 카드가 클로버, 스페이드, 다이아몬드 일 때이다. 결국 4가지 모양 중에서 하나를 뽑는 케이스인데, 이 4라는 값이 바로 정보가 나올 수 있는 총 갯수가 되는 것이다. 이걸 2진수로 표현한 값이 바로 답으로 나오는 2가 되는데, 이걸 이해하려면 총 경우의 수를 2진수로 표현하려면 몇자리가 필요한가로 생각하면 될듯 싶다.

그런데 이런식으로 표현하다보면 뭔가 문제가 생기게 된다. 이 경우를 고려해보면



주사위를 2개 던졌을 때, 나올 수 있는 수는 당연히 1개이다. 그럼 앞에서 표현한 식대로면 위와 같이 5.17이라는 값이 나오는데, 아마 다들 아는 것처럼 정보의 표현량은 정수로만 표현된다. 그말은 위처럼 5.17이 아닌, 5 또는 6으로 표현해야 한다는 것이다. 물론 이런 예제만 놓고 보면 그냥 단순하게 반올림하고 표현하니 쉽게 여길 문제라고 생각할 수 있겠지만, 사실 이게 좀 어려운 문제다. 이 케이스를 고려해보자.

 분명 5bit으로 위의 정보를 표현하게 된다면 우리가 표현할 수 있는 값은 0부터 31까지가 된다. 그러면 나머지 32~35에 대한 표현은 어떻게 할 것인가? 이때 5bit으로만 정보를 표현하게 된다면 손실이 발생하게 된다. 반대의 경우도 마찬가지다.6bit으로 늘려놓으면 우리는 총 64개의 숫자를 표현할 수 있겠지만 고작 36개의 값을 표현하기 위해서 나머지 28개의 표현범위를 낭비하게 될 것인가 하는 것이다. 그냥 우리가 듣고 이해하면 상관이 없겠는데, 통신쪽으로 넘어가게 되면 전달되는 정보량에 따라서 필요한 출력이 달라지기 때문에 이런 부분도 고려를 해야 한다. 여기서 데이터를 압축하는 기법에 대해서 다룰 수 있는 근거가 마련되고, 이쪽으로 오면 hamming distance 같은 손실에 대한 보호처리 같은 기법도 다루게 된다. 이부분은 다른 포스트에서 다뤄보고자 한다.

'Study > Architecture' 카테고리의 다른 글

[Data] Fixed Length Encoding  (0) 2015.09.06
[Data] Encoding  (0) 2015.09.03
[Data] Entropy  (0) 2015.09.03
[Distributed System] TestAndSet Lock  (0) 2014.06.03
[Distributed System] lock  (0) 2014.04.05
[Computer Architecture] SuperScalar Processor  (0) 2013.11.25
[Computer Architecture] Classifying Caches  (0) 2013.11.20
댓글