본문 바로가기
Multivariate analysis/다변량분석

코호넨 군집(Kohonen network)

by 뚜찌지롱 2021. 3. 12.

 

오늘은 인공신경망을 이용한 군집에 대해서 포스팅을 쓰려고 한다. 최근 군집분석에 대한 여러 기법들에 대해서 공부를 하고 있었는데 갑자기 인공신경망이라니(?!).... 라는 잠깐의 당혹스러움과 그 후에 밀려오는 대단함, 더 열심히 공부해서 나중에는 자연스럽게 머리에 그림을 그려나갈 수 있는 실력을 갖추어야겠다고 다짐한다 ! (모두들 화이팅...😂)

 

 

1. 자기조직화지도(Self-Organizing Map, SOM)

 

코호넨 군집은 SOM알고리즘으로도 불리며, 자기조직화지도를 이용하여 입력패턴을 유사한 패턴의 집단으로 군집화하는 방법이다. 자기조직화지도란, 다차원의 자료를 저차원(주로 일차원 또는 이차원)의 공간에 지도의 형태로 형상화한 것이다. 

 

SOM은 고차원의 데이터를 저차원의 맵(map) 상으로 축소시킨 후 이해를 돕기 위한 시각화 기술을 제공하며, 고차원 데이터의 원공간에서 유사한 개체들은 저차원 맵상에서도 근접해 있기 때문에(정보 보존) 비슷한 데이터들을 군집화 기술을 제공한다. 따라서, SOM은 차원 축소 방법군집 분석에 이용된다. 

 

 

먼저 n차원의 데이터가 있다고 가정했을 때 이를 한눈에 파악하기란 당연히 불가능한 일이다. 따라서, 2차원상의 맵에 n차원의 데이터를 하나씩 찍는다고 생각하면 된다. 이런 의미에서 SOM 알고리즘은 고차원을 나타내는 입력층(노랑)과 저차원을 나타내는 결과층(빨강)이 존재한다.

 

 

SOM 알고리즘의 상세 절차는 다음과 같다. 

 

 

 

먼저, 3차원의 데이터가 존재한다고 가정하면, 데이터의 차원에 맞춰서 $3 \times 3$ 격자가 생성된다. 아래 그림에 나온 입력노드(input nodes) or 입력벡터(input vector)는 n차원을 가진 관측값 1개를 의미한다. 예를 들어, 모든 색상은 RGB로 나타나기 때문에 초록의 경우 (x1, x2, x3) = (0, 255, 0)로 표현할 수 있다. 결과노드의 격자는 편의상 한 줄로 세워두고 설명할 것이다.

 

 

 

입력노드는 모든 결과노드($n \times n$)와 연결되며(fully connected), 가중치 $w_{ij}$(synaptic weight)가 그 역할을 수행한다. 이는 이 후에 입력노드와 결과노드의 거리를 계산하기 위함이다. 다시 말해, 여기서 가중치는 인공 신경망에서와는 완전히 다른 의미를 가진다. SOM에서는 가중치는 결과노드의 일부라고 생각하면 된다. 

 

 

격자가 생성되면, 가중치의 초깃값은 랜덤하게 작은 값으로 주어진다(0과 1사이로 표준화됨).

 

 

 

 

표본에서 임의로 입력노드를 선택하여 결과노드와 연결시킨 후, 입력노드와 가중치간의 거리를 구하여 $n \times n$개의 노드 중 가장 가까운 노드를 선택한다. 선택된 노드를 승자노드(Winning node) or 최적부합단위(Best Matching Unit, BMU)라고 한다. 

임의로 선택된 입력노드

$Dist = \sqrt{\sum_{i=1}^n (x_i - w_i)^2}$ : 유클리디안 거리

 

 

 

 

 

그 다음 단계를 이해하기 위해 우리는 좀 더 큰 SOM을 사용할 것이다. 아래 그림의 붉은점은 맵 상의 BMU를 의미한다. SOM은 결과노드가 입력노드에 더 가까워지기 위해 해당 노드의 가중치를 update 할 것이다. 미리 말하면, 최종 목표는 맵을 데이터 셋에 맞추는 것이다. BMU를 선택하고 해당 노드의 가중치를 갱신한 후, BMU 주변에 있는 이웃 노드의 가중치도 조금씩 갱신이 되는데 이웃노드를 결정하기 위한 반경을 계산한다.

 

a larger SOM

 

 

아래 그림 중 첫번째 그림은 훈련 초기단계에 계산된 전형적인 이웃의 크기로, 붉은점(BMU)을 중심으로 표시된 인접 영역이 이웃 노드로 선택된다. 이 영역의 크기는 BMU에 도달할 때까지 알고리즘의 매 반복마다 $\sigma(t)$에 의해 지수적으로 축소한다.  

 

 

$\sigma(t) = \sigma_0 exp(-\frac{t}{\lambda}) $ 

 

$\sigma_0$ : 시점$t_0$에서 격자의 너비, $\lambda$ : 시간 상수, $t$ : 현재 시간 단계

 

 

그렇다면 어떻게 SOM에서 반경의 크기를 정할까? 이 문제는 우리의 입력데이터의 범위(range)와 단위(scale)에 달려있다. 만약 우리가 데이터의 평균이 0이 되도록 표준화한다면, $\sigma = 4$를 이용하면 된다. 또한, 데이터를 [0,1] 사이로 정규화한다면 $\sigma = 4$보다는 $\sigma = 1$이 더 좋은 결과를 가져다 줄 것이다. 

 

학습률은 또한 SOM의 격자가 얼마나 큰지에도 영향을 미친다. 만약, 격자가 $10 \times 10$이라면, $\sigma=5$를 이용해라. 더 크게 $100 \times 100$이라면, $\sigma=50$를 이용해라. 

 

비지도 학습 분류에서, 학습률은 때때로 첫번째와 두번째로 가까운 군집의 중심점 사이에서 유클리디안 거리에 기반한다. (?)

 

 

이렇게 반복하는 동안 BMU를 포함한 이웃노드들은 다음 식에 따라 가중치가 조정된다. 

 

$w(t+1) = w(t) + \alpha(t)(x(t) - w(t)$

New Weights = Old Weights + Learning Rate (Input Vector — Old Weights)

 

위에서 다루었던 예시들을 다시 생각해보면, 4번째 노드가 BMU로 선택되었고, 그에 해당하는 가중치는 다음과 같다. 

학습률을 0.5 라고 하면, 가중된 조정치는 다음과 같이 계산할 수 있다. 

 

$W_{3,1}$ : 0.39 + 0.5 (0.7 – 0.39) = 0.545

$W_{3,2}$ : 0.42 + 0.5 (0.6 – 0.42) = 0.51

$W_{3,3}$ : 0.45 + 0.5 (0.9 – 0.45) = 0.675

 

학습률도 알고리즘을 반복함에 따라 다음의 식을 따라 감소하게 된다. 

 

$\alpha(t) =\alpha(0) exp(-\frac{t}{\lambda})$

$\Theta(t) = exp{\frac{dist^2}{2\sigma^2(t)}}$

 

 

<참고문헌>

medium.com/machine-learning-researcher/self-organizing-map-som-c296561e2117

 

Self Organizing Map(SOM)

In this Chapter of Deep Learning, we will discuss Self Organizing Maps (SOM). It is an Unsupervised Deep Learning technique and we will…

medium.com

 

댓글