先从图中理解什么是自组织映射神经网络SOM(Self-Organising Map)?
网络结构:输入层+输出层,输入层神经元个数与一个样本的特征维度一样,输出层那是定义的(哈哈),我们先来理解一下这个图,首先对于一个样本来说就是映射到输出层的某一个节点,其周边节点呢?辐射效应,简单说就是和这个节点比较像。对于一类样本那么都会映射到这个输出层的特定节点附近,从而实现聚类效果。
1. 背景
自组织映射神经网络(Self-Organizing Map,SOM)是无监督学习方法中一类重要方法,可以用作聚类、高维可视化、数据压缩、特征提取等多种用途,其融入了大量人脑神经元的信号处理机制,有着独特的结构特点。
该模型由芬兰赫尔辛基大学教授Teuvo Kohonen于1981年提出,因此也被称为Kohonen网络。Kohonen认为:一个神经网络接受外界输入模式时,将会分为不同的对应区域,各区域对输入模式具有不同的响应特征,而且这个过程是自动完成的。自组织特征映射正是根据这一看法提出来的,其特点与人脑的自组织特性相类似。
自组织映射神经网络本质上是一个两层的神经网络,包含输入层和输出层(竞争层)。输入层模拟感知外界输入信息的视网膜,输出层模拟做出响应的大脑皮层。**输出层中神经元的个数通常是聚类的个数,代表每一个需要聚成的类。**训练时采用“竞争学习”的方式,每个输入的样例在输出层中找到一个和它最匹配的节点,称为激活节点,也叫winning neuron;紧接着用随机梯度下降法更新激活节点的参数;同时,和激活节点临近的点也根据它们距离激活节点的远近而适当地更新参数。这种竞争可以通过神经元之间的横向抑制连接(负反馈路径)来实现。自组织映射神经网络的输出层节点是有拓扑关系的。这个拓扑关系依据需求确定,如果想要一维的模型,那么隐藏节点可以是“一维线阵”;如果想要二维的拓扑关系,那么就行成一个“二维平面阵”,如图5.8所示。也有更高维度的拓扑关系的,比如“三维栅格阵”,但并不常见。
首先SOM是通常是两层网络结构模拟输入空间,每个样本对应一个激活节点;其次SOM输出层节点的关系重点在一个邻域内节点,相当于相似的一类样本
下图是1维和2维的两个SOM网络示意图
2. 算法流程
假设输入空间是D维,输入样本集合
{
x
i
∣
x
i
∈
R
d
,
i
=
1
,
2
,
?
?
,
n
}
\{x_i|x_i\in \mathbb{R}^{d},i=1,2,\cdots,n\}
{xi?∣xi?∈Rd,i=1,2,?,n},其中
n
n
n为样本数量。连接权重为
{
w
i
∣
w
i
∈
R
d
,
i
=
1
,
2
,
?
?
,
N
}
\{w_{i}|w_i\in\mathbb{R}^{d}, i=1,2,\cdots,N\}
{wi?∣wi?∈Rd,i=1,2,?,N},其中
N
N
N是输出层节点数
理解学习:通过二维形态拟合出数据样本间的特征,使得一类样本被映射到一个节点附近,因而说SOM算法是一种自适应聚类算法,同样实现了一个降维的目的,这里说高维距离较近使得映射后的距离也是较近的,当然这个只是感性上的理解,核心本质:使得输出节点具有权重尽量与样本一致,即对某一类样本的学习。
通过梯度下降算法进行权重的更新,这里应该很容易理解,实现对参数的优化求解。
具体细节:
参考链接:
- 论文链接
- 《百面机器学习》
- 图片来源于:Python与人工智能-SOM-自组织映射网络-1_哔哩哔哩_bilibili
|