로직하면 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” 이면 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 알고리듬이 작동하는 경우로 보면 될 것이다.
'머신러닝' 카테고리의 다른 글
Hopfield Network 회로에서 웨이트의 역할 (0) | 2019.02.23 |
---|---|
Hopfield Network의 전기회로, GPU 및 5세대 칩의 AI 지원기능 (0) | 2019.02.23 |
Language Processing RNN Network 구성 (0) | 2019.02.19 |
RNN(Recurrent Neural Network)의 출발점 Hopfield Network (0) | 2019.02.18 |
텐서플로우를 넘어 Keras API에 의한 뉴럴네트워크(NN)를 학습해 보자. (0) | 2019.02.17 |