머신러닝

Contents addressible memory Hopfield 네트워크

coding art 2019. 4. 14. 19:08
728x90

 

파이선 코딩을 배우는 초보자도 머신 러닝에 독학으로 한번 도전해 보자.

머신 러닝을 배우려는 파이선 코딩 초보자들이 가지게 될 확률이 높은 의문점들을

하나하나 찾아내어 실제 풀어보고 결과를 확인해볼 수 있는 머신 러닝!

인터넷 교보문고에서 450페이지19900원에 판매중입니다.

 

 

 

 

 

 

 

 

 

 

 

________________________________________________________________________________________________________________________

특별한 RNN(Recurrent Neural Network) 의 한 종류인 Hopfield 네트워크는 contents adressible(associative) memory 로 알려져 있다. 즉 뉴럴 네트워크로 구성할 수 있는 메모리 로서 인간이 필요 시에 기억 즉 메모리를 조회하여 기억된 데이터를 학습에 의해 끄집어 낼 수 있다는 것이다. 물론 우리가 컴퓨터에서 사용하는 DRAM 이나 NAND FLASH 메모리와는 당연히 구조가 다르다. 이러한 연유로 인해 Hopfield 네트워크는 머신 러닝 분야에서 인간의 뇌에 관한 정말 흥미로운 주제로 볼 수 있다.

 

지난 기회에 플립플롭 회로에 해당하는 2개의 유닛(Unit)을 가지는 Hopfield 네트워크를 설명을 시도하였다. 하지만 Hopfield 네트워크는 유닛 수가 단지 2개만 아니라 그 이상의 유닛 수에서도 학습이 가능하다.

 

아래의 그림에 의하면 항상 4개의 Unit 들로 구성되는 Hopfield 네트워크 schematic을 자료에서 흔히 볼 수 있는데 이로부터 항상 혼란이 일어난다. 4개의 Unit 까지는 그림에서처럼 쉽게 작도가 가능하지만 5개부터는 작도부터도 쉽지 않다. 아무래도 전자캐드의 도움이 필요할 것이다.

 

한편 왼쪽의 4개이 유닛에서 2개를 지우면 2개의 유닛으로 구성되는 Hopfield 네트워크가 얻어지는데 이 네트워크가 바로 플립플롭 회로이다.

 

 

 

Hopfield 네트워크의 구조상 특징은 일반 머신 러닝 문제와는 달리 피드백이 있다는 점이다. 즉 특정한 유닛에서 출력이 다른 유닛들에 입력으로 사용된 후 다시 자신에게 피드백 된다는 점이다. 이 점은 머신 러닝 문제에서 웨이트 값을 찾아내기 위해서 최종 레이어로부터 거꾸로 업데이트할 웨이트를 계산해 내려오는 Backpropagation 과는 아무런 관련이 없음에 유의하자.

 

Hopfield 네트워크의 알고리듬 상 특징은 여타의 뉴럴 네트워크와는 달리 디지털 데이터를 기억할 수 있다는 특징을 보여준다. 플립플롭에서처럼 기억하고 있던 1 비트의 값들을 출력하든지 아니면 새로운 상태 값을 SET 하거나 아니면 RESET 할 수 있는 기능이 있었다. 마찬가지로 여러 개의 Unit으로 구성되는 Hopfield 네트워크는 여러 개에 해당하는 만큼의 비트 데이터를 기억할 수 있으며 사용자가 임의의 데이터를 입력할 경우 학습을 통해서 기억하고 있는 데이터를 출력해 줄 수가 있다.

 

Hopfield 네트워크에서의 유닛들은 로직 값의 이원분류(binary classification)를 위한 threshold 유닛으로 구성된다. 항상 입력 값이 threshold 이상인지 아닌지에 따라서 상태(state)값이 “0” “1”, 또는 “-1” “+1”, 또는 “L” “H” 인지를 구별하게 된다.

 

Hopfield 네트워크의 유닛 i j 간의 연결은 웨이트 

 

에 의해 이루어진다. Hopfield 네트워크 다이아그램을 관찰해 보면 특정 유닛의 출력이 자신에게 피드백 되는 경우가 없음을 알 수 있다. 웨이트 매트릭스의 대각선 성분은 즉

 

이 된다.

아울러 유닛 i에서 유닛 j로 연결하는 웨이트 값과 반대로 유닛 j에서 유닛 i로 연결하는 웨이트 값은 대칭적으로 같다고 가정한다.

이 가정은 에너지 함수가 단조롭게(monotonically) 감소하게 되는 특성을 부여한다. 그래야만 학습 과정에서 에너지가 최소화 되는 지점을 손 쉽게 찾아낼 수 있다. 반면에 이 대칭성 가정이 깨질 경우에 Hopfield에 의하면 부분적으로 카오틱하거나 주기적인 특성을 보여주기도 하나 content-addressible(associative) memory 기능 자체가 소실될 정도는 아니라는 점을 지적하고 있다.

 

Hopfield 네트워크를 대상으로 기억된 데이터를 조회해서 찾아내는 웨이트 업데이트 과정을 살펴보자. binary classification 이 이루어지는 과정에서 정해져 있는 threshold 값 즉 

 

이상이면 “+1”이고 그렇지 않으면 “-1” 이다.

 

 

 

업데이트 방식은 시간적인 차원에서 동시에 한번에 synchronous 하게 이루어지거나 아니면 특정 시간에 어느 하나가 asynchronous 하게 업데이트가 일어나게 된다. synchronous 업데이트는 기술적으로나 생체내에서도 일어나기가 쉽지 않으므로 배제하고 아무리 빠르더러도 하나의 pair 단위로 랜덤한 순서로 일어나는 것으로 가정한다..

 

머신 러닝 초보자에게도 Hopfield 네트워크를 쉽게 이해할 수 있도록 5개의 비트 데이터를 2개 기억하고 있는 Hopfield 네트워크에서 임의의 초기 값을 입력하여 기억하고 있는 값을 다시 찾아내는 과정을 대상으로 설명을 시도해보기로 한다.

 

그 내용 전개는 다음과 같이 2 3회로 나누어 이루어질 것이다.

i) 웨이트 매트릭스 모델 소개

ii) Hopfield 네트워크의 웨이트 업데이트 과정

iii) 업데이트 완료 판정