自组织映射(self-organizing-map)SOM神经网络

自组织映射(self-organizing-map)

自组织映射(self-organizing-map)SOM神经网络
自组织映射的主要目的是将任意维数的输入信号模式转变为一维或者二维的离散映射。并且以拓扑有序的方式自适应实现这个变换。
网格中的每个神经元和输入层的源节点全连接,这个网络表示具有神经元按行和列排列的单一计算层的前馈结构[1,2]。
在自组织映射形成过程种有三种主要的过程:

  1. 竞争。多每个输入模式,网络中计算他们各自的判别的函数值,这个判别函数为神经元之间的竞争提供了竞争的基础。判别函数的最大值的神经元为竞争的胜利者。
  2. 合作。获胜的神经元决定兴奋神经元的拓扑领域的空间位置,从而提供这样的相邻神经元合作基础
  3. 突触调节。这个机制使兴奋神经元通过对他们图抽权值的适当调节以增加他们关于该输入模式的判别函数值。所做的调节使获胜的神经元对以后相似输入模式的响应增强了。

关于自组织映射的算法

相应的核定义如下:
$$k(x,w_i,\sigma _{i})=\frac{1}{\Gamma \left( \frac{m}{2} \right)}\Gamma \left( \frac{m}{2},\frac{\left| x-w_i \right|^2}{2\sigma _i^2} \right) i=1,2,\cdots ,l$$
注意以$r = ||x - w_i||$为中心的核对于所有的$i$是放射状对称的,不忘全的gamma分布保证了当输入分布是高斯时核的微分最大的。
根据上式,我们可以为构造自组织拓扑公式的算法做了准备,在映射中利用核函数来描述每个神经元。
通过以下式子的微分熵定义的目标函数对于核参数(权值向量$w_i$和核宽$\sigma_i$的梯度公式来开始)
$$H(Y_i)=-\int_{-\infty }^{\infty }p_{Y_i}(y_i)\log p_{y_i}(y_i)dy_i$$
目标函数$H(Y_i)$是定义在第$i$个神经输出之上。
$$y_i = k(x,w_i,\sigma_i),i = 1,2,…,l$$
在另一个方面,通过定义在到核的中心的半径距离$r$之上,
$$ P_R(r)=\begin{cases} \frac{1}{2^{(m/2)-1}}\Gamma (m/2) {(\frac{r}{\sigma })}^{m-1}\exp (-\frac{r^2}{2\sigma^2}) & r \ge 0\newline 0 & r < 0 \end{cases}$$
将随机变量$R$变换到$Y_i$,且得到:
$$p_{Y_i}(y_i)=\frac{p_R(r)}{\left|\frac{dy_i}{dr} \right|}$$
定义目标函数;
$$H(Y_i)=-\int_{0}^{\infty }p_{R(r)}\log p_{R(r)}dr+\int_{0}^{\infty }{p_{R(r)}\log \left| \frac{\partial y_i(r)}{\partial r} \right|}dr$$

考虑权值向量$w_i$的梯度

对权值向量$w_i$的梯度,上式第一部分独立于$w_i$,第二项是偏导数$log|{\partial y_i(r)}/{\partial r}|$的期望。因此可以将$H(Y_i)$对于$w_i$的导数表达为:
$$\frac{\partial H(Y_i)}{\partial w_i} = \frac{\partial E\left[log \left| \frac{\partial y_i(r)}{\partial r}\right|\right]}{\partial w_i}$$
将右端项的期望用确定的量来替代:
$$E \left[log \left| \frac{\partial y_i(r)}{\partial r} \right| \right] = log \left| \frac{\partial \bar{y_i}(r)}{\partial r}\right| $$
选择一个启发式的方式:使用平方欧几里得项$||x-w_i||^2$,则可以通过以下方式来逼近:
$$\frac{\partial H(\bar(y)_i}{\partial w_i}\approx \frac{x-w_i}{m\sigma_i^2},\forall i$$
最大化目标函数,权值跟新与梯度上升相一致。于是可以得到:
$$\Delta w_i = \eta_w \left( \frac{\partial H(\bar{y}_i)}{\partial w_i}\right)$$
$ \eta_w$是小的学习率参数。将输入向量x的固定维数m吸收到$\eta$。最后可以表示权值更新为:
$$\Delta w_i \approx \eta_w \left( \frac{x-w_i}{\sigma_i^2}\right)$$
因此关于核SOM算法的第一个更新公式为:
$$w_i^+ = w_i + \Delta w_i = w_i +\eta_w \left( \frac{x-w_i}{\sigma_i^2}\right)$$
其中$w_i$和$w_i^+$ 分别表示老的和更新后的神经元$i$的权值向量的值。

对于核宽$\sigma_i$的梯度向量

关于目标函数$H(\bar{y}_i)$对于核宽$\sigma_i$的梯度向量。同对于权值向量的处理方式对梯度向量$\partial H(\bar{y}_i)/(\partial w_i)$相似的处理方式进行处理,得到:
$$\frac{\partial H(\bar{y}_i)}{\partial \sigma_i} = \frac{1}{\sigma_i} \left( \frac{||x-w_i||^2}{m\sigma_i^2}-1 \right)$$
调整核宽:
$$\Delta \sigma_i = \eta_{\sigma}\frac{\partial H(\bar{y}_i)}{\partial sigma_i}= \frac{\eta_{\sigma}}{\sigma_i} \left( \frac{||x-w_i||^2}{m\sigma_i^2}-1 \right)$$
其中$\eta_{\sigma}$为第二个学习率参数。对于核SOM算法的第二个更新公式,我们有:
$$\sigma_i^+ = \sigma_i+\Delta \sigma_i = \sigma_i + \frac{\eta_{\sigma}}{\sigma_i} \left( \frac{||x-w_i||^2}{m\sigma_i^2}-1 \right)$$

拓扑映射构造

考虑到由$l$个神经元组成的网格$A$,这些神经元是由相应的核集(不完全的gamma分布的补)来刻画:
$$k(x,w_i,\sigma_i),i = 1,2,…,l$$
为了构造拓扑映射,我们引入基于活跃程度的在网格$A$的$l$个神经元之间的竞争,获胜的神经元被定义为:
$$i(x) = arg \max_i y_i(x) 当 j \in A$$
引入邻域函数$h_{j,i(x)}$,以获胜的神经元$i(x)$为中心,采用距获胜神经元$i(x)$的网格距离的单调减函数,则:
$$h_{j,i(x)} = exp \left( -\frac{||x_j-w_i||^2}{2\sigma^2} , j \in A\right)$$
这里的$\sigma$记领域函数$h_{j,i(x)}$d的范围;不要讲领域范围$\sigma$和核宽$\sigma_i$相混淆。

SOM算法的总结

自组织的映射的步骤如下:

  1. 初试化。对初始权值向量$w_i(0)$和核宽$\sigma_i(0)(i =1,2,…,l)$选择随机值,这里$l$是网格结构中神经元的总的个数。这里仅有的限制是对不同的神经元$w_i(0)$和$\sigma_i(0)$也不同。
  2. 取样。从输入的分布中按一定的概率取出一个样本$x$.
  3. 相似度匹配。在算法的时间步$n$,用下面的准则来确定获胜的神经元$i(x)$:
    $$i(x) = arg \max_i y_j(x),j = 1,2,…,l$$
  4. 自适应。调整权值向量和每个核的宽,使用相应的更新公式:
    $$w_j(n+1) =\begin{cases} w_j(n)+\frac{\eta_w h_{j,i(x)}}{\sigma_j^2}(x(n)-w_j(n)), & j \in A \newline w_j(n), & else \end{cases} $$
    $$\sigma_j(n+1) = \begin{cases} \sigma_j(n) + \frac{\eta_{\sigma} h_{j,i(x)}}{\sigma_j(n)} \left[ \frac{||x(n)-w_j(n)||^2}{m\sigma_j^2(n)}-1\right],&j\in A\newline \sigma_j(n),&else \end{cases}$$
    这里$\eta_w$和$\eta_{\sigma}$为学习算法的两个学习率参数,$h_{j,i(x)}$是以获取神经元$i(x)$为中心的领域函数
-------------本文结束感谢您的阅读-------------