SOM 알고리즘 개요
SOM(Self-Organizing Feature Map, 자기조직화 특징 지도)은 신경망 관점에 기반한 군집화(clustering)와 데이터 시각화 기법입니다. 신경망 기반이라는 배경에도 불구하고, SOM은 프로토타입 기반 군집화(prototype-based clustering)의 한 변형이라는 맥락에서 매우 간단하게 설명될 수 있습니다.
SOM 알고리즘의 동작 절차
SOM 알고리즘은 다음과 같은 순서로 진행됩니다.
- 중심점(centroid)들을 초기화합니다.
- 다음 객체를 선택합니다.
- 해당 객체에 가장 가까운 중심점을 찾습니다.
- 이 중심점과 그 주변, 즉 일정한 이웃(neighborhood) 범위 안에 있는 중심점들을 함께 갱신합니다.
- 중심점이 거의 변하지 않거나 사전에 정의된 임계값이 초과될 때까지 위 과정을 반복합니다.
- 마지막으로 각 객체를 가장 가까운 중심점에 배정하고, 최종 중심점과 클러스터를 반환합니다.
1. 초기화(Initialization)
초기화 단계는 여러 가지 방식으로 구현할 수 있습니다. 한 가지 방법은 데이터에서 해당 속성에 대해 관찰된 값의 범위 내에서 중심점의 각 요소를 무작위로 선택하는 것입니다.
이 방법도 동작하기는 하지만, 특히 빠른 수렴(rapid convergence)을 유도하는 측면에서 반드시 최선의 방법은 아닙니다. 또 다른 방법은 사용 가능한 데이터 포인트 중에서 초기 중심점을 무작위로 추출하는 것으로, 이는 K-means에서 중심점을 무작위로 고르는 방식과 매우 유사합니다.
2. 객체 선택(Selection of an Object)
반복문의 첫 단계는 다음 학습 객체를 선택하는 것입니다. 단순해 보이지만 몇 가지 고려할 점이 있습니다. 수렴에는 여러 번의 반복이 필요할 수 있으므로, 하나의 데이터 객체가 여러 번 사용될 수 있으며, 특히 객체 수가 적을 때 두드러집니다. 반대로 객체 수가 많다면 모든 객체를 다 사용할 필요는 없습니다. 또한 학습 집합에서 특정 객체 그룹의 등장 빈도를 높여 그 영향력을 강화하는 것도 가능합니다.
3. 할당(Assignment)
가장 가까운 중심점을 결정하는 단계는 비교적 간단하지만, 거리 측도(distance metric)에 대한 정의가 필요합니다. 일반적으로 유클리드 거리(Euclidean distance)가 사용되며, 내적(dot product) 측도도 활용됩니다. 내적 거리를 사용할 경우에는 데이터 벡터를 미리 정규화(normalization)하고, 참조 벡터(reference vector)는 매 단계마다 정규화하는 것이 일반적입니다. 이렇게 하면 내적 측도를 사용하는 것이 코사인 유사도(cosine measure)를 사용하는 것과 사실상 동일해집니다.
4. 갱신(Update)
갱신 단계는 전체 알고리즘에서 가장 까다로운 부분입니다. 중심점을 m1, ..., mk라고 하고, 시간 스텝 t에서 현재 객체(포인트)를 p(t), 그리고 p(t)에 가장 가까운 중심점을 mj라고 가정합시다. 그러면 시간 t+1에서 j번째 중심점은 다음 식을 통해 갱신됩니다.
mj(t + 1) = mj(t) + hj(t)(p(t) − mj(t))
여기서 hj(t)는 이웃 함수(neighborhood function)로, 현재 객체와 중심점 간의 거리 및 학습 진행 정도에 따라 갱신의 강도를 조절하는 역할을 합니다. 이웃에 속한 중심점들은 현재 객체 쪽으로 함께 이동하며, 이를 통해 SOM은 입력 공간의 구조를 저차원 지도 위에 보존하게 됩니다.
5. 종료(Termination)
언제 충분히 안정적인 중심점 집합에 도달했다고 판단할지 결정하는 것은 중요한 문제입니다. 이상적으로는 수렴(convergence)이 나타날 때까지, 즉 참조 벡터들이 더 이상 변하지 않거나 변화량이 매우 작아질 때까지 반복을 계속해야 합니다. 수렴에 드는 비용은 데이터의 특성과 학습률 α(t)를 포함한 여러 요인에 따라 달라집니다. 실무에서는 최대 반복 횟수나 변화량 임계값을 함께 설정하여 학습을 종료하는 경우가 많습니다.