신경망:공동_방법

This is an old revision of the document!


정보가 전송되는 과정에서 전달 채널의 잡음 때문에 원래의 정보가 수신자에게 깨끗하게 전송되지 못한다. 이 때 전송되는 메시지의 용량이 채널의 용량보다 작다면 정보 전달이 잡음 없이 이루어질 수 있음이 섀넌에 의해 증명되었고, 소울라스 코드는 이러한 섀넌의 한계에 도달하기 위한 한가지 방법이다. 소울라스 코드를 만드는 과정은 다음과 같다.

$N$개의 비트로 이루어진 전송하고자 하는 정보를 $\vec\xi\in\{\pm1\}^N$이라 하자. 이를 $M$개의 비트 $\mathbf J^0=\{J_1^0,J_2^0,\dots,J_M^0\}$로 변환한 뒤 상대방에게 전송한다. 이 때 변환은 각 $J_a^0$마다 $\vec\xi$에서 무작위로 몇 개의 비트를 고른 뒤 이들을 곱하는 것으로 정의한다. 이를 수식으로 쓰면 $$J_a^0 = \prod_{I\in\partial a}\xi_i$$ 이다. 그리고 정보를 전송하는 과정에서 들어가는 잡음은 각 비트를 확률 $p$로 뒤집을 수 있다고 가정하면 전송하고자 하는 메시지에 대한 수신자가 실제로 받게 되는 메시지의 조건부 확률은 $$P(J_a\vert J_a^0) = p\delta(J_a+J_a^0)+(1-p)\delta(J_a-J_a^0)$$ 가 된다. 이렇게 해서 수신자는 $\mathbf J$를 송신자로부터 받고 이를 이용해서 원래의 메시지를 복원해내야 한다. 수신자가 복원한 메시지를 $\vec\sigma$로 쓴다면, 복원 과정은 해밀토니안 $$H(\sigma) = -\sum_{a=1}^M J_a\prod_{i\in\partial a}\sigma_i$$ 를 가지고 $$P(\sigma\vert\mathbf J) = Z^{-1}\exp(-\beta H(\sigma))$$ 를 계산해서 가장 그럴듯한 $\sigma$를 찾아내는 것으로 이해할 수 있다.

복원 과정에서 분배함수 $Z=\sum_{\vec\sigma}e^{-\beta H(\vec\sigma)}$를 계산해야 하는데 이 과정의 계산복잡도는 $2^N$로 매우 커서 메시지의 길이가 조금만 길어져버리면 계산할 수 없게 된다. 하지만 공동 방법(cavity method)를 이용하면 희박한 인자 그래프 모형에 대해 계산복잡도를 $=O(N)$까지 줄일 수 있다.

이를 위해 먼저 위 코드를 인자 그래프로 나타내어보자. 아래 그림에서 동그라미는 $\vec\sigma$에 해당하는 스핀 변수, 네모는 $\mathbf J$에 해당하는 수신한 메시지, 연결선은 변환 규칙에 따라 긋는다.

  • 신경망/공동_방법.1670219001.txt.gz
  • Last modified: 2023/09/05 15:46
  • (external edit)