본문 바로가기
🤖 Artificial Intelligence/Intelligent System

[지능형 시스템] Chapter 9. BAM (양방향 연상 메모리 - Bidirectional Associative Memory)

by 파띵 지수 2023. 6. 13.
728x90

본 < 지능형 시스템 > 시리즈는 부산대 정보컴퓨터공학과 차의영 교수님의 '지능형 시스템' 강의에서 배운 내용을 바탕으로 작성합니다.


🌰 양방향 연상 메모리, BAM 이란?

📌 개념

입력(X) 와 출력(Y)가 양방향으로 연결되어 서로 다른 기억에 대해 연상할 수 있는 메모리이다.

📌 등장 배경

연상 메모리에는 두 가지 유형이 있다. 자동 연상 메모리 (Autoassociative memory) 와 이종 연상 메모리 (Heteroassociative memory) 이다.

Autoassociative memory는 하나의 기억을 완벽히 구성 또는 교정 할 수 있지만, 기억된 데이터로 다른 기억을 연상할 수 없다는 점이 큰 특징이다.

Heteroassociative memory(Bidirectional Associative Memory(BAM))는 위와 달리 서로 다른 기억을 연상할 수 있다. Noise가 섞인 입력에 대해 올바른 출력을 생성, 즉 noise를 제거하여 특징을 추출할 수 있다는 점이 큰 특징이다.

📌 구조

BAM은 두 벡터 공간 사이의 동시적인 사상을 수행한다. 두 층으로 구성되어 있고, 각 층의 출력은 다른 층에 완전 연결 되어 있다. 

  • X=입력, Y=출력.
  • X로 부터 Y로의 가중치 행렬이 W 이면, Y로부터 X로의 가중치 행렬은 W의 전치행렬이다.

🌰 BAM 알고리즘

📌 활성화 함수 (Activation)

📌 알고리즘

  1. 가중치 행렬을 초기화한다.
    입력 벡터를 X, Y 층에 동시에 입력한다.
    비활성화 상태를 -1로, 활성화 상태를 +1로 사용한다. (바이폴라 적용)
  2. net 식 (x*w 들의 합) 을 사용하여 다른 층에 입력 패턴을 전파한다.
  3. 활성화 함수 식을 사용하여 목적지 층에서 새로운 활성 패턴(activation pattern)을 계산한다.
  4. net 식을 사용하여 새로운 활성 패턴을 다시 출발 층으로 전파한다.
  5. 활성화 함수 식을 사용하여 처음 층의 활성값을 수정한다.
  6. 양쪽 층에서 활성 패턴이 변화를 멈출 때까지 2-5 과정을 반복한다.

📌 예제

A1 = [10101], B1 = [1111]
A2 = [11001], B2 = [1110]
A3 = [11100], B3 = [1100]
A4 = [11110], B4 = [1010]
위와 같이 입력 패턴이 있을 때, Bx = [1011]이라 할때 x값은 무엇인가?

  1. 가중치를 계산한다.
  2. 입력 패턴을 전파하여 새로운 활성 패턴을 계산한다.
  3. 새로운 활성 패턴을 다시 출발층으로 전파한다.

따라서 x는 1이다.

📌 Lyapunov 함수

Lyapunov 함수 (랴푸노프 함수 )의 처리과정과의 유사성을 찾아냄으로서 BAM의 동작의 개념화할 수 있다.
유사성을 이용하여, 연결가중치에 의해 주어지는 신경망의 구조를 에너지 풍경(energy landscape)처럼 설명할 수 있다.

랴푸노프 함수는 활성 패턴의 반복과 동적시스템에서 "에너지를 최소화"하는 함수이다.

입력 패턴 벡터에 의해 설명되는 시스템의 초기상태는 에너지 풍경에서의 한점을 나타낸다.
만약 입력 벡터가 훈련 벡터중 하나와 일치된다면, 시작점은 에너지 최소점 (energy minima)의 하나이다. 만약 입력벡터가 훈련벡터의 집합에 있는 패턴과 다를 경우 시작점은 에너지 풍경에서의 높은 위치에너지상의 한 점이다.

새로운 패턴을 층들 사이에 계속적으로 반복시키는 것은 시스템에서의 에너지를 낮추는 것이며, 결국 신경망은 가장 일치되는 입력 패턴과 그와 관련된 출력이거나 그러한 패턴들의 보수를 나타내는 각 층에 있는 유닛들의 활성화인 상태로 정착한다.

BAM의 연결 가중치는 초기화 후 변화되지 않는다. 따라서 연상 기억 회상(associative memory recall)은 입력 패턴 벡터에 의해 결정되는 에너지 풍경상에서의 한 점으로부터 시작하여, 연결 가중치 행렬에 의해 정의되는 Lyapunov 함수를 최소화함으로서 달성될 수 있다.

🌰 BAM의 변형들

TAM (Temporal Associative Memory)

MAM ((Multidirectional Associative Memory))

🌰 파이썬으로 알고리즘 구현

필자는 BAM 알고리즘을 파이썬으로 구현해보았다.
아래 링크를 통해 들어가서 확인해 볼 수 있다!

https://github.com/YeoJiSu/Artificial_Neural_Network/blob/main/BAM.py

반응형