머신 러닝 글을 연재하면서도 가장 어려운 점은 시간이 갈수록 서서히 재미없는 영역으로 떨어져 가곤 하는 나 자신을 보게 된다. 특히 RNN 으로 넘어 오면서 접하게 된 낙지를 연상시키는 grotesque 한 느낌을 주는 Hopfield 네트워크. Hopfield 네트워크에 관해서 주변의 전문가에게 문의해도 속 시원한 설명이 전혀 없었다. 애초에 그런 것이 있었는지 알지를 못하는 듯.
하지만 모든 미제 사건 수사에 있어서도 단서는 가장 가까운 곳에 있을 수 있다는 격언. 그래서 최근 Hopfield 네트워크를 언급하면서 떠 올렸던 Flip Flop 에 대해서 다시 검토해 보기로 한다.
Logic gate에 관한 검토는 로직 문제의 머신 러닝 해결에 관해서 기 출간했던 필자의 졸저에서 그 흔적을 찾아 볼 수 있을 것이다.
로직하면 AND OR 가 있으며 XOR 로직은 특히 머신 러닝의 역사에서 뉴럴 네트워크를 사용에 의한 상당히 중요한 극복의 대상이었다. 한편 그밖에도 디지털 전자공학 관점에서 남겨진 로직이 바로 Flip Flop 이다. 이 로직은 1 비트의 정보를 저장한 상태에서 그대로 출력하든지 아니면 사용자가 원하면 1비트 정보를 설정(SET)하든지 아니면 재설정(RESET) 하는 기능을 가지고 있다고 한다. 따라서 머신 러닝 측면에서 검토를 통해 확인이 되어야 할 사항으로서 이러한 기능이 바로 Hopfield 네트워크의 생생한 사례가 아닌가 하는 심증이 들었다.
다음의 로직 게이트 그림은 하나는 NOR 게이트로 구성한 Flip Flop 이며 다른 하나는 NAND 로 구성한 경우이다. 결과는 마찬가지이므로 NOR 게이트 구성을 다루어 보자. 이 그림을 관찰해 보면 4개의 게이트를 가지는 Hopfield 네트워크에서 2개의 게이트만을 가지는 가장 간단한 경우로 볼 수 있을 것이다.
SET 과 RESET 은 각각 논리 값으로서 “0”과 “1”을 가질 수 있다. 다음 표에서처럼 NOR 게이트에 대한 계산 결과에 의하면 SET 과 RESET 이 둘 다 “0”일 때에는 Q 값에 상관없이 항상 앞 상태를 유지 한다.
반면에 SET 과 RESET 이 둘 다 “1”일 때에는 아예 금지된 즉 사용해서는 안되는 영역으로 설정한다. 실제 하드웨어를 생각해 보면 된다. SET 과 RESET이 동시에 HIGH 상태가 된다는 것은 있을 수 없는 일이다.
위 논리 계산 결과를 정리하면 다음의 표가 얻어진다. SET과 RESET이 함께 “1”이 되는 경우는 표에는 나타나 있지만 실제 회로 배선 상 허용되지 않는 설계이다. hold state는 이전의 상태 값을 보여 준다. 가능한 이전의 상태 값으로는 “1”과 “1” 또는 “1”과 “0”이 될 수 있을 것이다.
2개의 Unit 만을 가지는 Hopfield 네트워크를 대상으로 웨이트 업데이트 과정을 비교해 보자. binary classification 이 이루어지지만 조건이 Rosenblatt 과는 다소 다른 것이 Rosenblatt은 “+1”과 “-1”로 이진 분류하고 threshold=0.0으로 두었으나 여기서는 “1“과 ”0“을 사용하므로 머신 러닝에서 로직 문제를 풀 때처럼 threshold=0.5로 설정한다. 웨이트는 양의 값인 1.0 으로 설정한다. 실제 논리 집적회로 배선 시에를 사용할 경우 출력 전압 값을 그대로 입력할 수 있다.
업데이트 방식은 시간적인 차원에서 asynchronous 하게 업데이트가 일어나는 것으로 가정한다. synchronous 업데이트는 기술적으로 성취하기가 쉽지 않으므로 배제하기로 한다.
웨이트 wij를 + 값인 1.0으로 가정하였다. 한 번씩 업데이트가 일어나므로 만약 j=2 Unit 의 상태 즉 sj가 “+1” 이면 wijsj 가 양의 값을 가지며 threshold=0.5 이상이므로 하면 si 는 “+1” 이 된다. 반대로 만약 j Unit 의 상태 sj가 “0” 이면 wijsj 가 0.0의 값을 가지므로 threshold=0.5 이하이므로 si 는 “0” 이 된다. 즉 si 는 sj 와 상태 값이 같아지게 된다.
지금까지 고려한 Flip Flop 회로는 웨이트 값이 양일 경우에 대해서 고려하였으며 음일 경우에는 반전(NOT) 회로를 추가로 넣는 경우가 될 것이다. 또 다른 해석 결과를 주겠지만 머신 러닝을 이해함에는 양의 웨이트 값 1.0을 가지는 경우로 충분해 보인다.
결론적으로 Hopfield 네트워크는 로직 회로 이론을 사용하여 상당히 쉽게 설명할 수도 있는 내용을 보통 사람들이 이해하기에 난해할 정도로 고도로 압축적인 방식에 의해 암호해독을 하는 느낌이 들 정도로 기술하고 있는 듯하다.
이 Flip Flop 해독 결과를 일반적인 형태의 Recurrent neural Network 레이아웃과 비교해 보자. Flip Flop 은 2개의 레이어를 가지는 모델로서 forward 와 backward 방향으로의 feedback을 가지고 있는 반면에 RNN은 backwrad 방향으로의 웨이트 값이 0.0 인 경우로 보면 될 것이다.