Skip to content

Self-organizing map(SOR) #
Find similar titles

Structured data

Category
Algorithm

SOM(Self Organizing Map) #

자기 조직화 지도는 신경생리학적 시스템을 모델링한 것으로, 입력 패턴에 대해 정확한 정답을 주지 않고 스스로 학습을 통해 클러스터링(clustering)하는 알고리즘이다. 갓 태어난 아기 눈의 초점이 맞춰지는 과정을 예로 들 수 있다. 신생아들에게는 자연스럽게 초점을 맞추고 자극을 통해 물체를 인지하는 능력을 갖게 되는데, 어떻게 이런 과정이 일어날까?

핀란드의 헬싱키 공과대학의 튜보 코호넨(Teuvo Kohonen)은 자기 조직화 network를 설명하기 위한 모델을 제안했다. Kohonen network는 2가지의 층으로 구성된다. 첫 번째 입력층(input layer)이고, 두번째 층은 2차원의 격자(grid)로 된 경쟁층(competitive layer)이다. 입력층과 경쟁층은 서로 연결되는데 kohonen network에서 연결 강도는 가중치(weight)로 나타내고 통상적으로 0과 1사의의 정규화(normalize)된 값을 사용하며 학습을 통해 적절하게 초기화된다.

Image

Kohonen network는 경쟁 학습(competive Learning)을 통해 입력층과 경쟁층이 연결된다. 연결 강도(weight)는 입력 벡터가 얼마나 가까운지 계산을 통해 가까운 뉴런이 승리하게되는, ‘승자 독점 (winner take all)’방식을 사용한다. 가장 가까운 뉴런으로 계산되면 그 뉴런의 이웃 뉴런들도 학습을 하게 되는데, network의 모든 뉴런들이 아닌 제한된 이웃 뉴런들만 training하는 방식이다. 이 때, 층 내의 근접한 노드들은 ‘측면 제어(lateral inhibition)’를 사용하는데, 독점한 노드의 이웃 노드들을 거리상으로 보면 멕시칸 모자(sombrero) 형태로 나타난다.

수식을 통해 self organizing map이 어떻게 clustering되는지 보면 개념이 더 명확해질 것이다. 가장 처음으로 해야 할 것은 입력층과 가장 가까운 노드를 찾는 것이다.

Image

위의 수식에서 n은 입력벡터의 크기, Wij는 가중치 테이블에서 i행 j열의 값을 Xi는 입력벡터의 i번째 값을 뜻한다. D_ij값이 작을수록 가까운 노드이며, 선택된 가장 가까운노드를 연결한 가중치(weight)는 다음의 식을 통해 새로운 값을 갖게 된다.

승자 결정 이후 반복된 학습을 통해 연결 강도(W)가 결정된다. Wold는 입력 벡터 넣어주기 전의 연결 강도이고, X는 입력 벡터이고, Wnew는 새로운 연결 강도이며, α는 학습상수이다. 학습률(α)도 수정이 가능하다.

Image

Self Organizing Map은 고차원 data로 반복 학습한 결과, 차원이 축소된 형태의 결과물을 얻을 수 있기 때문에 비슷한 양상을 확인하는데 유용하다. python 패키지 중 somoclu도 참고하면 좋을 것 같고 직접 코딩해보는 것도 좋을 것 같다.

Reference #

0.0.1_20210630_7_v33