Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| 수학:인자_그래프 [2026/03/24 21:30] – [믿음 전파 셈법] admin | 수학:인자_그래프 [2026/03/25 15:00] (current) – [간단한 예] admin | ||
|---|---|---|---|
| Line 9: | Line 9: | ||
| $x_1$, $x_2$ 등에 해당하는 노드들은 변수 노드(variable node), $f_a$, $f_b$ 등에 해당하는 노드들은 인자 노드(factor node) 혹은 함수 노드(function node)라고 불릴 것이다. | $x_1$, $x_2$ 등에 해당하는 노드들은 변수 노드(variable node), $f_a$, $f_b$ 등에 해당하는 노드들은 인자 노드(factor node) 혹은 함수 노드(function node)라고 불릴 것이다. | ||
| - | ======메시지 전달====== | + | ======합/곱 셈법====== |
| + | =====간단한 예===== | ||
| 다음처럼 트리 구조를 가지는 인자 그래프를 생각해보자. | 다음처럼 트리 구조를 가지는 인자 그래프를 생각해보자. | ||
| Line 22: | Line 22: | ||
| &=& \left[ \sum_{x_1} f_a(x_1, x_2) \right] \left[ \sum_{x_3} \sum_{x_4} \sum_{x_5} f_b(x_2, x_3) f_c(x_3, x_4) f_d(x_3, | &=& \left[ \sum_{x_1} f_a(x_1, x_2) \right] \left[ \sum_{x_3} \sum_{x_4} \sum_{x_5} f_b(x_2, x_3) f_c(x_3, x_4) f_d(x_3, | ||
| \end{eqnarray*} | \end{eqnarray*} | ||
| - | 앞의 항을 $f_1 \to x_2$의 메시지, 뒤의 항을 $f_2\to x_2$의 메시지라고 | + | 편의상 $f_\alpha$를 $\alpha$로, |
| + | 앞의 항을 $a \to 2$의 메시지, 뒤의 항을 $b\to 2$의 메시지라고 | ||
| \begin{eqnarray*} | \begin{eqnarray*} | ||
| - | m_{f_1 \to x_2} (x_2) &=& \sum_{x_1} f_a(x_1, x_2)\\ | + | m_{a \to 2} (x_2) &=& \sum_{x_1} f_a(x_1, x_2)\\ |
| - | m_{f_2 \to x_2} (x_2) &=& \sum_{x_3} \sum_{x_4} \sum_{x_5} f_b(x_2, x_3) f_c(x_3, x_4) f_d(x_3, | + | m_{b \to 2} (x_2) &=& \sum_{x_3} \sum_{x_4} \sum_{x_5} f_b(x_2, x_3) f_c(x_3, x_4) f_d(x_3, |
| \end{eqnarray*} | \end{eqnarray*} | ||
| - | 그런데 $f_2 \to x_2$의 메시지는 다시 다음처럼 나누어 쓸 수 있다: | + | 그런데 $b \to 2$의 메시지는 다시 다음처럼 나누어 쓸 수 있다: |
| \begin{eqnarray*} | \begin{eqnarray*} | ||
| - | m_{f_2 \to x_2} (x_2) & | + | m_{b \to 2} (x_2) &=& \sum_{x_3} f_b(x_2, x_3) \left[ \sum_{x_4} \sum_{x_5} f_c(x_3, x_4) f_d(x_3, |
| \end{eqnarray*} | \end{eqnarray*} | ||
| - | 이때 마찬가지로 다음처럼 정의할 수 있다: | + | 이때 마찬가지로 |
| \begin{eqnarray*} | \begin{eqnarray*} | ||
| - | m_{x_3 \to f_2} (x_3) & | + | m_{3 \to b} (x_3) & |
| &=& \left[ \sum_{x_4} f_c(x_3, x_4) \right] \left[ \sum_{x_5} f_d(x_3, | &=& \left[ \sum_{x_4} f_c(x_3, x_4) \right] \left[ \sum_{x_5} f_d(x_3, | ||
| - | &=& m_{f_c \to x_3} (x_3) m_{f_d\to x_3} (x_3). | + | &=& m_{c \to 3} (x_3) m_{d\to 3} (x_3). |
| \end{eqnarray*} | \end{eqnarray*} | ||
| 정리하면 | 정리하면 | ||
| \begin{eqnarray*} | \begin{eqnarray*} | ||
| - | p(x_2) &=& \underbrace{\left[ \sum_{x_1} f_a(x_1, f_2) \right]}_{m_{f_a \to x_2} (x_2)} \underbrace{\left( \sum_{x_3} f_b(x_2, x_3) \underbrace{\left\{ \underbrace{\left[ \sum_{x_4}f_c(x_3, | + | p(x_2) &=& \underbrace{\left[ \sum_{x_1} f_a(x_1, f_2) \right]}_{m_{a \to 2} (x_2)} \underbrace{\left( \sum_{x_3} f_b(x_2, x_3) \underbrace{\left\{ \underbrace{\left[ \sum_{x_4}f_c(x_3, |
| \end{eqnarray*} | \end{eqnarray*} | ||
| + | |||
| + | 맨 처음 주변화의 식과 비교해보자. | ||
| + | \begin{eqnarray*} | ||
| + | p(x_2) &=& \sum_{x_1} \sum_{x_3} \sum_{x_4} \sum_{x_5} f_a(x_1, x_2) f_b(x_2, x_3) f_c(x_3, x_4) f_d(x_3, | ||
| + | \end{eqnarray*} | ||
| + | 각각의 변수 $x_1, \ldots, x_5$가 $K$ 가지의 값을 가질 수 있다고 하면, 모든 $x_2$에 대해 $p(x_2)$를 구하려면 이 방법으로는 $K^5$에 비례하는 횟수의 계산이 필요하다. | ||
| + | |||
| + | 반면 메시지 전달 형식으로 정리한 식에서는 각각의 메시지를 계산하는 데 $K^2$에 비례하는 계산 횟수가 필요할 뿐이다. 더 간단한 예로 이야기하면, | ||
| + | |||
| + | =====셈법의 요약===== | ||
| + | - 어떤 변수 노드 $i$에서의 주변화된 분포 $p(x_i)$는, | ||
| + | - 인자 $\alpha$로부터 변수 $i$로 오는 메시지는, | ||
| + | - 변수 $i$로부터 인자 $\alpha$로 오는 메시지는, | ||
| + | |||
| + | =====덧붙여===== | ||
| + | ====잎 노드==== | ||
| + | 계산은 잎 노드에서 보내는 메시지로부터 시작한다. | ||
| + | 잎 노드가 변수 노드 $i$라면 거기에 연결된 단 하나의 링크를 통해 보내는 메시지의 값은 $m_{i\to \alpha}(x_i) = 1$이고, | ||
| + | 잎 노드가 인자 노드 $\alpha$라면 이 노드가 보내는 메시지의 값은 $m_{\alpha \to i} = f_\alpha(x_i)$이다. | ||
| + | |||
| + | ====모든 노드에 대한 주변화==== | ||
| + | 그래프의 모든 변수 노드에서 주변화 분포를 구하고자 할 때, 앞의 방법을 모든 변수 노드에 대해 반복하는 것은 비효율적이다. 이때에는 먼저 임의로 변수 노드 혹은 인자 노드를 루트로 지정하고 잎에서부터 루트로 메시지를 전달한다. 아래 그림의 예를 생각해보자. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | 이 인자 그래프가 표현하는 결합 확률분포는 $$p(\mathbf{x}) = f_a(x_1, | ||
| + | 이며, 우리는 임의로 $x_3$를 루트로 정했다. 화살표 방향으로 메시지를 전달한 결과는 아래와 같다: | ||
| + | \begin{eqnarray*} | ||
| + | m_{1\to a}(x_1) &=& 1\\ | ||
| + | m_{a\to 2}(x_2) &=& \sum_{x_1} f_a(x_1, x_2)\\ | ||
| + | m_{4\to c}(x_4) &=& 1\\ | ||
| + | m_{c\to 2}(x_2) &=& \sum_{x_4} f_c(x_2, x_4)\\ | ||
| + | m_{2\to b}(x_2) &=& m_{a\to 2}(x_2) m_{c\to 2}(x_2)\\ | ||
| + | m_{b\to 3}(x_3) &=& \sum_{x_2} f_b(x_2, x_3) m_{2\to b}(x_3). | ||
| + | \end{eqnarray*} | ||
| + | 그 다음에는 화살표의 반대 방향으로, | ||
| + | \begin{eqnarray*} | ||
| + | m_{3\to b}(x_3) &=& 1\\ | ||
| + | m_{b\to 2}(x_2) &=& \sum_{x_3} f_b(x_2, | ||
| + | m_{2\to a}(x_2) &=& m_{b\to 2}(x_2) m_{c\to 2}(x_2)\\ | ||
| + | m_{a\to 1}(x_1) &=& \sum_{x_2}f_a(x_1, | ||
| + | m_{2\to c}(x_2) &=& m_{a\to 2}(x_2) m_{b\to 2}(x_2)\\ | ||
| + | m_{c\to 4}(x_4) &=& \sum_{x_2} f_c(x_2, | ||
| + | \end{eqnarray*} | ||
| + | |||
| + | 이로부터 모든 노드에서의 주변화 분포를 구할 수 있다. 예를 들어 $p(x_2)$는 아래와 같다: | ||
| + | \begin{eqnarray*} | ||
| + | p(x_2) &=& m_{a\to 2}(x_2) m_{b\to 2}(x_2) m_{c\to 2}(x_2)\\ | ||
| + | &=& \left[ \sum_{x_1} f_a(x_1, | ||
| + | &=& \sum_{x_1} \sum_{x_3} \sum_{x_4} f_a(x_1, | ||
| + | &=& \sum_{x_1} \sum_{x_3} \sum_{x_4} p(\mathbf{x}). | ||
| + | \end{eqnarray*} | ||
| + | |||
| + | 특정 노드 하나에 대해 구할 때와 비교해서, | ||
| + | |||
| + | ====정규화==== | ||
| + | 결합 확률분포가 정규화된 채 주어지지 않은 경우, 먼저 합/곱 셈법을 사용해 아무 변수 노드 $x_i$에 대해서든 (정규화되지 않은) 주변화 분포 $\tilde{p}(x_i)$를 구한다. 그 다음 아래처럼 정규화 상수 $Z$를 구한다. | ||
| + | $$Z = \sum_{x_i} \tilde{p}(x_i)$$ | ||
| + | 변수 하나에 대해서만 정규화를 시행하면 되기 때문에 전체 변수에 대해 정규화를 시행하는 경우보다 계산적으로 효율적이다. | ||
| + | |||
| + | ======물리적인 예====== | ||
| + | =====이징 모형===== | ||
| + | |||
| + | 각각의 스핀이 가장 가까운 이웃과 상호작용하는 이징 모형이 온도 $T$의 열평형에서 보이게 되는 확률분포를 생각해보자. | ||
| + | 변수들은 격자의 각 지점에 놓인 $\sigma_i \in \left\{ +1, -1 \right\}$이며, | ||
| + | $$f_a (\sigma_i, \sigma_j) = \exp\left(\beta \sigma_i \sigma_j \right).$$ | ||
| + | 여기에서 $\beta \equiv 1/(k_B T)$이다. | ||
| + | |||
| + | =====셰링턴-커크패트릭 모형===== | ||
| + | |||
| + | 이 경우 모든 스핀쌍 $\sigma_i$와 $\sigma_j$ 사이에 연결선 $a$가 있어서, | ||
| + | $$f_a (\sigma_i, \sigma_j) = \exp\left(\beta J_{ji} \sigma_i \sigma_j / \sqrt{N} \right).$$ | ||
| + | |||
| + | |||
| + | ======같이 보기====== | ||
| + | * [[물리: | ||
| + | * [[물리: | ||
| ======참고문헌====== | ======참고문헌====== | ||
| * Christopher Bishop, //Pattern Recognition and Machine Learning// (Springer, New York, 2006). | * Christopher Bishop, //Pattern Recognition and Machine Learning// (Springer, New York, 2006). | ||