1982년 물리학자 존 홉필드가 제안한 신경망의 물리적 모델로써 최적화, 연상기억 등에 사용된다.
양극화(bipolarization): 0과 1로 표현된 데이터를 -1과 1로 변환하는 것
자기조직화맵(SOM)이나 인공신경망에서 가장 많이 사용되는 퍼셉트론(perceptron) 등은 연산이나 학습 과정에서 지속적으로 가중치(weight)가 변경되는 알고리즘이다. 다른 알고리즘과 다르게 홉필드 네트워크(Hopfield network)는 고정된 가중치를 이용하여 완전한 정보를 연상하는 차이점이 있다. 홉필드 네트워크는 학습 패턴에 대해 계산된 고정 가중치 행렬을 저장하고, 입력 패턴이 들어올 때마다 가중치 행렬을 이용하여 입력 패턴에 대한 학습 패턴을 연상하면 된다. 홉필드 네트워크 알고리즘은 아래와 같다.
1) 학습 패턴에 양극화 연산을 적용
2) 학습 패턴에 대한 홉필드 네트워크의 가중치 행렬을 계산
3) 계산된 가중치 행렬을 저장
4) 입력 패턴이 들어오면 저장된 가중치 행렬을 이용하여 입력 패턴에 대한 학습 패턴을 연상
학습 패턴의 $i$번째 입력 값인 \({a}_{i}\)에 대해 양극화된 값 \({x}_{i}\)는 아래와 같이 연산된다.
해당 연산을 통해 학습 패턴의 입력 값이 1이면 값이 그대로 유지되고, 0이면 값이 -1로 변경된다.
양극화된 학습 패턴이 \({x}_{i}\)라고 할 때, 학습 패턴에 대한 가중치 행렬 계산은 아래와 같이 수행한다. 여기에서 $w$는 학습 패턴에 대한 홉필드 네트워크의 가중치 행렬을 나타내고, $I$는 단위행렬(identity matrix)를 뜻한다.
아래와 같은 2개의 학습 패턴을 기억하고, 입력 값을 토대로 학습 패턴 중 하나를 연상해내는 홉필드 네트워크를 설계한다.
1) 양극화 연산 적용
양극화 연산을 적용한 학습 패턴은 아래와 같다.
2) 가중치 행렬 계산
학습 패턴이 2개 이므로 n은 2이다. 이를 적용하여 가중치 행렬 계산식을 풀어 쓰면 아래와 같다.
각각의 항을 연산하면 아래와 같다.
우변의 마지막 항은 단위행렬에 2를 곱한 행렬이므로, 아래와 같다.
그러므로, 이 예제에서 주어진 입력 패턴에 대한 홉필드 네트워크의 가중치 행렬은 아래와 같다.
3) 가중치 행렬 저장
입력 패턴이 들어오면 계산된 가중치 행렬을 이용하여 입력 패턴에 대한 학습 패턴을 연상하기 위해 과정 2에서 계산된 가중치 행렬을 저장하거나, 메모리에 유지한다.
4) 입력 패턴에 대한 학습 패턴 연상
임의의 입력 패턴이 들어왔을 때, 저장된 가중치 행렬을 이용하여 입력 패턴에 대한 학습 패턴을 연상한다. 예를 들어, 예제에서 설계한 홉필드 네트워크에 아래와 같은 입력 패턴이 들어왔다고 가정한다.
입력 패턴 B에 의해 연상되는 학습 패턴을 구하기 위해서는 아래와 같은 3단계의 반복이 필요하다.
① 행렬의 곱 연산을 이용하여 가중치 행렬과 입력 패턴을 곱한다.
② 곱해서 나온 행렬을 활성화 함수에 입력한다.
③ 연산에 의해 계산된 패턴이 학습 패턴 중 하나라면 알고리즘을 종료하고, 아니면 ①을 반복한다.
먼저 입력 패턴의 한 요소에 대한 threshold를 계산한다. threshold의 뜻은 계산 값이 threshold 이상일 때만 그 값을 활성화한다는 의미이다. 입력 패턴의 $i$번째 요소에 대한 threshold는 아래와 같이 계산된다.
그 다음, 입력 패턴 B의 다음 요소는 아래와 같은 식에 의해 계산된다.
마지막으로 계산된 입력 패턴 B의 다음 요소는 아래와 같은 활성화 함수를 통해 최종적으로 값이 변경된다.
입력 패턴 B에 대해 위의 연산을 적용하면, 아래와 같이 계산된다.
그러므로 입력패턴 B는 아래와 같이 변경되고, 이는 학습 패턴 중 하나와 일치하므로 알고리즘을 종료한다.
만약 \({B}^{'}\)이 어떠한 학습 패턴과도 일치하지 않는다면, 학습 패턴 중 하나와 일치할 때 까지 \({B}^{'}\)에 대해 과정 4(입력 패턴에 대한 학습 패턴 연상)를 반복한다.
'지능형시스템_' 카테고리의 다른 글
[머신러닝] - Complex-Valued Neuron (CVN) (1) | 2016.07.08 |
---|---|
[머신러닝] - Overfitting (과적합) (0) | 2016.05.07 |
[지능형시스템] - Artificial Bee Colony(ABC) Algorithm (0) | 2016.04.13 |
[머신러닝] - LVQ(Learning Vector Quantization) (0) | 2016.04.08 |
[머신 러닝] - 인공신경망 (Artificial Neural Network, ANN)과 역전파 (Backpropagation) Algorithm (12) | 2016.02.21 |