'BAM'에 해당되는 글 1

  1. 2009/05/08 BAM(Bidirectional Associative Memory) in Ruby (7)
 

BAM(Bidirectional Associative Memory) in Ruby

신경망 | 2009/05/08 20:30 | Posted by DMW
크리에이티브 커먼즈 라이선스
Creative Commons License
하악 오랜만에 포스팅이라 신경좀 썼다능. 하지만 이걸 제대루 보려면 선형 연상메모리에 대해서 알 구 있어야 할꺼라능.

BAM(Bidirectional Associative Memory, 양방향 연상 메모리)은 양방향으로 연상이 가능한 연상메모리다. 우리가 친구의 이름을 들으면 얼굴이 떠오르고 친구의 사진을 보면 이름이 떠오르는것과 같이 관련된 페턴쌍들을 양방향으로 연상할 수 있다. 쉽게말하면 X를 입력하면 Y가 나오구 Y를 입력하면 X가 나오는 메모리다.

BAM은 X층과 Y층, 두계층으로 구성되어있고 X층과 Y층은 완전히 연결되어있다. 딱히 입력층과 출력층의 구분은 업ㅂ다능. P개의 연상 패턴쌍 (s, t)를 저장하는 연결강도 w는 다음과 같은 방법으로 구할 수 있는데 반드시 양극성 데이터를 사용해야 된다.


***** 위의 그림에 엄청난 실 수 가 있다능. 아래 그림처럼 구해야 된다능  *****


BAM에 저장된 페턴을 연상하는 과정은 다음과 같다. 먼저, 입력 페턴을 X층 또는 Y층에 페턴을 입력한다. X층에 입력해서 출력을 y1을 구한다고 치고 살펴보자능.


y1은 저런식으로 구해진다능. 그다음에는 y1을 Y층에 입력해서 출력 x1을 구한다능. 이 경우에는 연결강도 w의 치환 메트릭스 wt를 사용한다.


이제 x1을 다시 입력해서 또 출력 y2를 구하고 y2를 입력해서 또 x2을 구하고...........를 계속 반복하는데 언제까지 하나면 더이상 출력이 변하지 않고 특정한 페턴에 수렴할때까지 반복한다능.

대충 이야기는 끝났고(더 풀어낼 내공두 업ㅂ다. >_<) Ruby 소스코드 나간다능.

코드보기



BAM의 단점은 많은 페턴을 기억시키려면 신경망이 너무 커져서 연상하는데 오래걸린다는 거라능. 물론 내가 이걸가지구 실제적인 응용에 써보고 요즘 컴퓨터들에서 얼마나 오래 걸리는지 테스트해보지는 않았다능. 아무튼 뭐 그렇고 일반적으로 BAM에 저장할 수 있는 페턴쌍 P의 수는 X층, Y층의 뉴런수가 n, m일때

P ≤ min(n, m)

정도구 연상 효과를 고려하면
P ≤ √( min(n, m))
라능.


테스트 코드는 귀차느니까 조만간 올려보겠심.

코드보기

저작자 표시 비영리 동일 조건 변경 허락

댓글을 달아 주세요

  1. Favicon of http://lpld.tistory.com BlogIcon Sean 2009/05/08 21:45  댓글주소  수정/삭제  댓글쓰기

    하악 무슨 말인지 모르겠다에요!
    근데 저 수식은 뭘로 그린거임?

  2. Favicon of http://www.filepang.co.kr BlogIcon DMW 2009/05/09 01:56  댓글주소  수정/삭제  댓글쓰기

    수식은 한글로 그린다음 스샷찍어서 포토샵으로 오려냈지말입니다.
    ....보니까 수식이 틀려서 급 수정했습니다.

  3. 2009/05/11 12:11  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  4. jhl0117 2010/02/26 23:41  댓글주소  수정/삭제  댓글쓰기

    고맙습니다 ^-^

    공부하는데 많이 도움이 된것 같아요.