정보공간_1

[4기 부산 김한남] Hopfield Network를 이용한 패턴 인식#1 본문

IT 놀이터/Elite Member Tech & Talk

[4기 부산 김한남] Hopfield Network를 이용한 패턴 인식#1

알 수 없는 사용자 2013. 10. 24. 16:42

안녕하세요!? 부산 멤버십 22-1기 김한남 회원입니다. 

저는 앞으로 4회에 걸쳐 최근 인공지능 분야에서 각광받고 있는 기술인 인공신경회로망(Artificial Neural Network)에 대해서 포스팅을 해보려 합니다. 인공신경회로망은 인간의 두뇌에 다양한 정보들이 학습되는 메커니즘을 모델링한 것으로 인공지능의 한 분야로 분류되어 활발히 연구되고 있습니다.

앞서 수원 멤버십 이동욱 회원이 인공신경회로망의 기본 개념과 퍼셉트론(Perceptron) 알고리즘에 대하여 포스팅 한 글이 있는데요. 제 글을 읽으시기 전에 이 글들을 먼저 보시고 오신다면 여러분들께 더욱 유익한 글이 될 수 있지 않을까 하는 생각이 듭니다!

[2기 수원 이동욱] 인공신경망 Neural Network #1
[2기 수원 이동욱] 인공신경망 Neural Network #2


인공신경회로망은 다양한 명칭으로 사람들에게 불리고 있는데요. 정확한 명칭은 인공신경회로망이지만, 컴퓨터 과학에서 신경회로망 또는 인공신경망이라고 말하기도 합니다. 저는 지금부터 인공신경회로망을 간단히 '신경망'이라고 하겠습니다.

컴퓨터 과학에서 다루어지는 신경망에는 다양한 알고리즘들이 존재합니다. 수원 멤버십 이동욱 회원이 다루었던 Perceptron 알고리즘도 있지만, 특성과 구조, 응용 분야가 각각 다른 Hopfield NetworkBAM(Bidirectional Associative Memory) 등 다양한 신경망 알고리즘들이 존재합니다.

저는 앞으로 3회에 걸쳐서 여러분들께 다양한 신경망 알고리즘을 소개 해드리고 각 알고리즘을 이용한 예제를 보여드리면서 알고리즘의 세부 동작 과정을 이해시켜 드리려고 합니다.

자, 그럼 본격적으로 시작하도록 하겠습니다.


1. Hopfield Network

제가 가장 먼저 소개해 드릴 신경망 알고리즘은 바로 홉필드 네트워크(Hopfield Network)입니다. 홉필드 네트워크는 미국의 물리학자인 존 홉필드(John J.Hopfield)가 1982년에 제안한 신경망 알고리즘입니다. 홉필드 네트워크 알고리즘의 가장 큰 특징은 알고리즘을 연상 기억(Associative Memory) 장치로 응용 할 수 있다는 점입니다.

여기서 말하는 ‘연상 기억’이란 무엇일까요? 보다 명확한 정의를 알기 위해 네이버 사전을찾아보았습니다.

‘기억에 있어 하나의 사항 일부분으로부터 전체 또는 다른 사항이 연상적으로 상기되는 현상.’

이 뜻은 심리학에서 정의되는 뜻으로 홉필드 네트워크의 특성인 ‘연상 기억’과 뜻이 일치합니다. 즉, 홉필드 네트워크는 불완전한 일부의 데이터로부터 나머지 전체의 데이터를 기억(인식) 해 낼 수 있다는 특성을 지니고 있습니다.


좀 더 빠른 이해를 위해 예를 들어 보기로 하겠습니다. 
다음과 같은 먹음직스런 사과 이미지를 컴퓨터에 ‘사과’라고 학습시켰다고 가정해 봅시다. 



 



우리는 어릴 때 부모님으로부터 이것이 사과라는 것을 배웠기 때문에 이 것을 보면 사과임을 알 수 있지만, 컴퓨터는 이 이미지가 학습되기 전까지 이것이 사과라는 것을 전혀 알지 못할 것입니다. 학습 이 후, 컴퓨터는 이 이미지가 사과라는 것을 알게 됩니다.


학습시킨 이 후, 컴퓨터로 사과의 일부분에 해당되는 아래와 같은 이미지가 컴퓨터에 입력으로 들어왔다고 가정해 보겠습니다. 


 



여러분께서는 이 것이 무엇이라고 생각되시나요? 네. 맞습니다. 모든 분들께서 이 이미지를 보는 즉시, '이 것은 사과다.'라고 생각하실 것입니다. 이와 동일하게 홉필드 네트워크는 이 일부의 영상을 인식 과정을 거쳐 사과 이미지의 나머지를 연상해냄으로써 이 불완전한 이미지가 '사과'라는 것을 알게 됩니다.

이러한 연상 기억 과정은 우리 두뇌에서도 자연스럽게 일어나는 현상입니다. 연상기억으로만 설명을 드려서 '홉필드 네트워크는 연상기억에만 응용되는 것인가?'라는 의문을 가지실 수도 있는데, 그렇지 않습니다. 불완전하거나 노이즈가 섞여 일부가 올바르지 않은 데이터에 대해서 특정한 결과를 인식하기 위해서도 사용되므로 다양한 분야에 응용된다고 할 수 있겠습니다.

그럼 이제 홉필드 네트워크 알고리즘의 상세 구조와 동작 방식에 대해서 좀 더 알아보도록 하겠습니다. 

홉필드 네트워크의 구조는 다음과 같습니다. 




N개의 입력 요소와 출력 요소가 각각 존재하며, 뉴런 또한 N개가 존재합니다. 각각의 출력 요소들은 자신의 입력을 제외한 모든 입력 요소들로 다시 입력되는 구조를 하고 있으며, 뉴런은 일반적으로 부호 활성화 함수(Sign Activation Function)인 맥클록-피츠 뉴런이 사용됩니다.


부호 활성화 함수는 수학적으로 다음과 같이 표현할 수 있습니다.

즉, 부호 활성화 함수는 X가 0보다 크다면 양수 1을, 0보다 작다면 -1을 출력시키고 X가 0이라면 이전 상태를 유지합니다. 굉장히 간단한 구조입니다.


다시 알고리즘으로 돌아가서, 자신을 제외한 모든 입력 유닛으로 입력으로 연결되기 때문에 학습을 위한 가중치 집합(Weight)의 크기는 입력 벡터의 크기와 입력 벡터의 전치 행렬의 크기의 곱과 같으며, 대각 행렬은 모두 0으로 세팅됩니다.

쉬운 이해를 위해 예를 들어보겠습니다. 만약 입력 벡터의 크기가 10 * 1 행렬로 표현된다고 가정한다면 가중치 집합의 크기는 10 * 1 행렬과 이 행렬의 전치행렬인 1 * 10 행렬이 행렬곱 연산되어 10 * 10 크기의 행렬 집합이 만들어 지겠지요.


퍼셉트론 알고리즘에 학습을 위한 식이 있듯이 홉필드 네트워크도 입력 벡터들을 학습하기 위한 수학적인 식이 존재합니다.

학습을 위한 식은 다음과 같습니다.


각각의 입력 벡터들이 자신의 전치 행렬과 곱해지고 그 결과가 모두 더해지는 구조입니다. 그리고 마지막 과정으로 대각 요소들을 0으로 만들어주면 입력 벡터들이 모두 학습된 가중치 행렬(W)이 완성되게 됩니다.

학습이 되고 난 이 후부터는 임의의 어떤 입력에 대하여 학습된 데이터 중에 어떤 결과를 인식해내는가가 중요합니다. 만약 사과와 배, 포도 영상이 각각 학습이 되어 있는 컴퓨터에 사과 영상을 입력하였는데 컴퓨터가 이를 포도로 출력(인식)한다면 복잡한 과정을 거쳐 신경망을 적용한 보람이 없을 것입니다.


인식을 위한 식은 다음과 같습니다.


입력이 어떤 결과와 일치하는지 인식하기 위하여 학습된 벡터들 중 특정한 벡터에 완전히 수렴하는 시점까지 입력 값을 갱신(수정)하며 인식 과정을 수행하게 됩니다. 홉필드 네트워크에서는 완전히 수렴하기 전의 갱신된 입력 상태를 불완전 상태라고 하고, 어떤 결과에 수렴한 상태를 안정적인 상태라고 합니다. 불완전한 상태는 입력 값을 갱신하며 완전한 상태의 입력 벡터들과 점점 가까워지는데 이러한 과정 때문에 홉필드 네트워크를 오차 수정 신경망(Error Correction Network)으로 분류하기도 합니다.

이러한 특성을 가지고 있는 좋은 알고리즘이지만 실제로 지능형 시스템에 적용하기 위해서는 홉필드 네트워크가 학습 데이터들을 완전히 기억시키고 인식하기 위한 최대 저장 용량이 존재한다는 것을 고려하여 설계하여야 합니다.

n개의 노드(입력 데이터의 크기)가 있을 때 모든 학습 패턴들을 완전히 기억시키고 인식하기 위해서는 0.15n개 이하의 입력 패턴을 학습시켜야 합니다. 즉, 10개의 학습 패턴이 기억되고 연상되기 위해서는 패턴의 크기가 최소 67 이상이 되어야 하는 것입니다. (n > 10 / 0.15)

위 식을 통해 알 수 있는 사실은 많은 패턴을 학습시키고 인식하기 위해서는 뉴런의 개수를 충분히 크게 생각하여 설계를 하여야 한다는 것입니다.

이제 알고리즘에 대한 설명은 끝났습니다. 다음 회에서는 홉필드 네트워크를 이용한 간단한 패턴 인식 예제를 설계하고 구현해보도록 하겠습니다. 감사합니다~!