ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SOM] Self-Organizing-Map 자기 조직화 지도
    Paper Review/Neural Network 2021. 12. 20. 15:31

    # SOM 

    저차원 격자에 고차원 데이터의 각 개체들이 대응하도록 군집을 도출해내는 기법. 저차원 격제에서의 개체간 유사도는 고차원 입력 공간에서의 유사도를 최대한 보존하도록 학습된다. 즉, 차원축소와 군집화 동시 수행 기법.  

    # 아키텍처 개요 

    SOM의 기본 구조 

    SOM은 기본적으로 입력층과 경쟁층, 두 개의 층으로 구성된다. 초록색 노드는 n차원 입력벡터(xi), 주황색 노드(Wj)는 2차원 격자를 의미한다. 저차원 격자 하나에는 위치적인 유사도를 고려해 여러 개의 입력 벡터들이 속할 수 있다. 

     

    먼저 n차원의 입력벡터가 들어오면 가장 가까운 격자벡터 W_jn(Winning node)을 찾는다. 이 벡터에 대응되는 2차원 격자에 입력벡터를 할당하여 군집화를 수행한다. 각 격자에 할당되더라도 아래 그림처럼 입력벡터와 winning node와의 거리를 표현할 수 있다. 따라서 고차원 공간의 원데이터의 차원을 축소할 수 있다. 

     

    # SOM 학습과정 

    위 학습과정에서 연두색 점은 격자벡터이고 검은색 점은 고차원의 원데이터를 의미한다. 먼저, 격자벡터의 초기 값을 랜덤으로 설정한다. 이후, 입력데이터를 하나씩 추가하며 위치가 비슷해지도록 업데이트한다(instance-based learning).

    격자벡터의 업데이트 정도는 모두 다르며 현재 주어진 입력데이터와 그 위치가 가장 가까운 winning node가 제일 많이 업데이트된다. 따라서 멀리 떨어진 노드는 거의 업데이트 되지 않는다. 

    t 시점의 j번째 격자벡터의 업데이트 

    # SOM 기반의 3D 가시화 

    1. 3D 네트워크 구성 

    3D 네트워크를 구성하기 위해 3개의 입력벡터를 가지는 입력층, 3차원공간에 입력데이터와 완전 연결을 이루는 경쟁층의 두 층으로 구성된다. 층 사이가 완전 연결되어 입력 패턴을 모든 출력층 노드가 소유한다. 출력층의 각 노드는 격자 벡터와 입력 벡터의 차를 계산하고 경쟁하여 승자 노드를 결정한다. 

     

    네트워크 연결상태와 경쟁층에서 인접한 두개의 객체 

    2. 경쟁학습 

    하나의 map이 만들어지는 training process을 통해 네트워크는 competitive process를 통해 스스로를 조직화한다. 여기서 격자벡터가 입력벡터에 가장 가까이 위치하는 하나의 승리객체를 유클리디안 거리를 통해 결정한다. 

    승자 = min( || 입력벡터 - 격자벡터 || )

    가장 가까운 객체가 승리하게 되고 이 객체와 인정한 이웃 객체들만이 입력벡터에 대해 학습이 허용된다. 

    이 과정에서 이웃 반경의 크기는 시간이 경과함에 따라 축소된다. 이를 위해 층 내에서 경쟁하는 측면제어를 사용한다. 승리객체와 일정한 이웃 객체들에 대한 영역은 아래와 같다. 

    3. 학습규칙 

    승자 뉴런을 결정한 뒤에는 학습 규칙에 따라 연결강도를 조정한다. 학습 규칙은 입력과 격자벡터 간의 거리에 학습 상수를 곱함으로써 반경 안에 속하느 객체들의 격자벡터가 입력 패턴에 점점 가까인 가는 형태이다. 

    X(tk)는 입력 벡터, Mi(tk)는 출력층 객체 i의 격자벡터, Ni(tk)는 이웃집합, a(tk) (0~1)는 학습 상수를 나타낸다. 

     

    3D 가시화를 위한 SOM 학습규칙 알고리즘 과정을 정리하면 다음과 같다. 

    1. 3차원 입력으로부터 격자벡터의 값을 랜덤으로 초기와한다. 이웃 객체의 크기도 모든 객체가 포함될 정도로 크게 설정하고 점차 줄여나간다. 
    2. 새로운 입력 벡터를 제시한다. 
    3. 입력 벡터와 모든 객체들 간의 거리를 계산한다. 
    4. 최소 거리에 있는 객체(격자 벡터)를 선택한다. 
    5. 격자 벡터를 업데이트한다.
    6. 2번부터 반복 수행한다. 

     

     

    https://ratsgo.github.io/machine%20learning/2017/05/01/SOM/#
Designed by Tistory.