본문 바로가기
딥러닝

자기조직화지도(SOM, Self-Organizing Map) 작동 방식과 활용

by 데이널 2024. 2. 19.

최근 SOM을 이용한 작업을 하면서 생각보다 효과적이라는 것을 알게 됐는데요. 이 글에서 설명하는 SOM이 작동하는 원리와 활용 방법만 알면 프로젝트에서 쉽게 사용할 수 있을 거라 생각합니다. 

 

 

SOM(Self-Organizing Map)은 비지도 학습을 통해 훈련되는 인공 신경망(ANN)의 한 유형입니다. 1980년대 핀란드의 헬싱키 공과대학의 Teuvo Kohonen 교수가 개발했는데요. SOM은 고차원 데이터를 저 차원 그리드에 매핑하여 시각화하고 이해하는 데 특히 유용합니다. 지도 형태로 나타내기 때문에 Kohonen  map이라고도 알려져 있습니다. 

 

우선 이해를 돕기 위해 예시를 들어보겠습니다. 우리 뇌에는 여러가지 입력신호(input)가 들어옵니다. 그리고 우리 눈은 2차원, 3차원으로 이미지화해서 보여주지요. SOM에서는 3단계를 거처 입력신호를 차원 축소하여 2차원 또는 3차원으로 보여주는 기법입니다. 

 

Kohonen 신경망

Kohonen의 신경망은 2개 층으로 이루어진 아주 간단한 형태입니다. 첫 번째 층이 input layer이고 두 번째 층이 competive layer입니다. 두 번째 층은 2차원 격자(grid)로 되어있죠. 첫 번째 층에서 두 번째 층으로 갈 때 신경망의 기본 공식인 fully connected(완전 연결)입니다. 아주 심플한 네트워크죠. 

 

 

SOM 작동 방식

 

1. 초기화 단계

SOM은 2D 또는 3D 격자로 배열된 노드 또는 뉴런의 그리드로 구성됩니다. 각 뉴런은 입력 데이터와 동일한 차원의 가중치 벡터와 연관됩니다. 처음에는 이러한 가중치가 무작위로 할당되거나 초기화됩니다. 입력 벡터(input vector)는 훈련 데이터 세트에서 무작위로 선택됩니다. 


2. 경쟁 단계

학습 과정 중에 입력 데이터의 샘플이 SOM에 제공됩니다. SOM의 각 뉴런은 입력 샘플에 가장 적합한 뉴런 또는 "승자"가 되기 위해 경쟁합니다. 승리하는 뉴런은 선택한 유사성 척도(유클리드 거리)를 기반으로 가중치 벡터가 입력 샘플과 가장 유사한 뉴런입니다. "승자" 노드는 일발적으로 BMU(Best Matching Unit)라고 부릅니다. 


3. 협력 단계 

승리한 뉴런의 가중치를 업데이트하는 것 외에도 이웃 뉴런도 더 적은 범위로 조정됩니다. 이 조정의 정도는 승리하는 뉴런 주변의 영향의 공간적 범위를 정의하는 이웃 커널 함수에 의해 결정됩니다. 처음에는 이웃의 수가 크지만 SOM이 학습함에 따라 시간이 지남에 따라 점차 작아집니다.

 

4. 적응 단계

승리한 뉴런과 그 이웃의 가중치는 입력 샘플을 기반으로 반복적으로 업데이트됩니다. 승리한 가중치는 샘플 벡터와 더욱 비슷해지면서 보상을 받습니다. 이웃도 샘플 벡터와 더 유사해집니다. 노드가 BMU에 가까울수록 가중치가 더 많이 변경되고 이웃이 BMU에서 멀어질수록 학습량이 줄어들게 됩니다. 이 프로세스는 여러 반복되므로 SOM은 입력 데이터의 기본 구조를 표현하기 위해 점진적으로 적응하고 구성되어집니다.

 

5. 매핑 단계

훈련 후 SOM은 유사한 입력 샘플이 SOM 그리드의 인근 영역에 매핑되는 입력 공간의 토폴로지 맵을 형성 합니다. 이 매핑은 입력 데이터에 존재하는 위상 관계와 유사성을 유지하므로 복잡한 데이터 세트를 더 쉽게 시각화하고 이해할 수 있습니다.

 

SOM의 활용 방법

 

원리는 알겠는데 SOM을 활용해야 의미가 있겠죠? SOM을 이용해 단순히 시각화만 할 수 있는 것은 아닙니다. 어떤 방식으로 활용할 수 있는지 확인해 보도록 하겠습니다. 

 

데이터 시각화

사실 저도 고차원의 데이터를 시각해 보기 위해 활용했습니다. 4차원 이상만 돼도 데이터의 모양이 어떻게 되어 있는지 알 수가 없잖아요. 그래서 SOM을 이용했죠. SOM은 고차원 데이터의 저 차원 표현할 수 있는 기술입니다. 딥러닝처럼 복잡한 데이터 세트를 시각적으로 검사하고 해석할 수 있습니다.

 

차원 축소

시각화를 위해 차원을 감소시켰듯이 차원 축소에도 활용할 수 있습니다. SOM은 기본적인 특성과 관계를 유지하면서 고차원 데이터의 차원을 줄여 줍니다. 우리가 자주 사용하는 linear 한 데이터는 주성분 분석(PCA)을 사용하고, non-linear 한 데이터는 aouto-encoder를 사용해 차원 축소를 하는데요.  SOM도 차원 축소의 하나의 방법으로 활용할 수 있습니다. 

 

군집분석(clustering)

생각해 보면 SOM의 특성을 보존한 map으로 표현했기 때문에 유사한 데이터 포인트를 클러스터링 할 수도 있습니다. 고차원의 데이터를 저 차원으로 변경하고 이 데이터를 다시 clustering 하는 방식입니다. 탐색적 데이터 분석 및 패턴 인식에서 많이 활용합니다. 

 

특징 추출(Feature Extraction)

SOM에 있는 뉴런의 가중치 벡터를 분석하여 의미 있는 feature나 프로토타입을 추출할 수 있습니다. 역시 차원축소의 하나의 방법이기 때문에 같은 맥락입니다. 이를 분류 또는 이상 탐지와 같은 작업에 사용할 수 있습니다. 전반적으로 SOM은 데이터 구조를 탐색하고 이해하기 위한 방법을 제공합니다.