머신러닝

RNN의 원조인 Hopfield Network의 정체

coding art 2019. 2. 20. 11:26
728x90

 

로직하면 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 상태가 된다는 것은 있을 수 없는 일이다.

 

 

 

위 논리 계산 결과를 정리하면 다음의 표가 얻어진다. SETRESET이 함께 “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” 이면 wij*sj 가 양의 값을 가지며 threshold=0.5 이상이므로 하면 si “+1” 이 된다. 반대로 만약 j Unit 의 상태 sj“0” 이면 wij*sj 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은 하드웨어 회로적 feedback이 아닌 backwrad 방향으로의 back-propagation 알고리듬이 작동하는 경우로 보면 될 것이다.