FIND ME ON

GitHub

LinkedIn

Self-Organizing Map

🌱

MachineLearning

Introduction

In competitive learning, we have inhibitory connections between nodes but in this we also have excitatory connections. Also we utilize topology in SOMs, we define some neighbourhood distance metric that defines the region around each node grouping it with its neighbours.

Algorithm

So if the neighbourhood Nj(t)={j}{\mboxneighboursofj\mboxattimet}\mathcal{N}_{j}(t)=\{j\}\cup\{\mbox{neighbours of }j\mbox{ at time }t\} where jj is the winner node, and ii is the input vector at time tt, then the weight change rule is: wl(t+1)={wl(t)+η(t)(iwl(t)),\mboxiflNj(t)wl(t),\mboxifl∉Nj(t)w_{l}(t+1)=\begin{cases}w_{l}(t)+\eta(t)(i-w_{l(t)),}&\mbox{if }l\in\mathcal{N}_{j}(t) \\ w_l(t),&\mbox{if }l\not\in\mathcal{N}_{j}(t) \end{cases} 1. select network topology 2. initialize weights randomly, and select D(0)>0D(0)>0 (this is the neighbourhood distance metric at time 00) 4. while (computation bounds not exceeded): 1. select ii from dataset 2. find winner node jj 3. update weights for each lNj(t)l\in\mathcal{N}_{j}(t): wl(t+1)={wl(t)+η(t)(iwl(t)),\mboxiflNj(t)wl(t),\mboxifl∉Nj(t)w_{l}(t+1)=\begin{cases}w_{l}(t)+\eta(t)(i-w_{l(t)),}&\mbox{if }l\in\mathcal{N}_{j}(t) \\ w_l(t),&\mbox{if }l\not\in\mathcal{N}_{j}(t) \end{cases}where 0<η(t)<η(t1)<10<\eta(t)<\eta(t-1)<1 and weights of all non-neighbouring nodes are unchanged. 4. Reduce D(t)D(t) and η\eta after a time interval tt'