首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确地训练你的自组织地图?

如何正确地训练你的自组织地图?
EN

Data Science用户
提问于 2020-08-09 21:39:48
回答 1查看 57关注 0票数 1

我最近偶然发现了自组织地图--一种用于对高维数据进行聚类的ANN体系结构--同时在其上施加了一个邻里结构。它是通过竞争学习方法训练的,在这种方法中,神经元竞争响应给定的输入。最强大的响应神经元/最佳匹配单元(BMU)的奖励是被移动到数据空间中的给定输入,以及它的邻居。然而,在文献和实现中,我发现这种培训的实施方式有一些偏差。具体来说,使用邻域函数可以减轻BMU对其邻居的影响:

\beta_{ij}(t)=exp \bigg({{-d^2}\over{2\sigma^2(t)}} \bigg), \ where \ t=1,2,3...n

其中,d是BMU到输入的距离,而\sigma(t)是训练期间减小的半径。在训练过程中,有效地影响了BMU的调整对其邻域缩小的影响。我发现的不同之处在于\sigma(t)缩小的实现。大多数解释和博客文章描述了指数下降:

\sigma(t) = \sigma_0 \cdot exp \bigg({{-t}\over{\lambda}} \bigg), \ where \ t= 1, 2, 3...n

其中\lambda是一个可以任意调谐的衰变常数。或者,我发现有些实现实际上并不使用这种指数衰减,而是使用了形式的线性插值:

\sigma(t)=r(2)+{{n-t}\over{n}} \cdot [r(1)-r(2)]

其中n是训练时代的数目,r是半径,而半径随训练阶段的不同而改变。这些实现在“粗糙”培训阶段之间进一步显式地实现,其中:

\vec{r}= \bigg( \begin{array}{c} 1 \\ 0.1 \end{array} \bigg) \cdot max(SOM.dims)

例如,SOM.dims=(100,100)用于100x100大小的SOM,以及“微调”训练阶段,其中:

\vec{r}= \bigg( \begin{array}{c} {0.1 \cdot max(SOM.dims)} \\ 0.1 \end{array} \bigg)

我的问题是,我不太明白为什么会有这样的分歧,以及训练SOM的“规范”方式是什么。将训练分为“粗糙”和“微调”当然是有意义的,但为什么大多数较新的描述忽略了这一点而不作进一步讨论,而只考虑一个指数衰减的单一训练阶段,这让我有点困惑。

EN

回答 1

Data Science用户

回答已采纳

发布于 2020-08-30 22:24:30

自组织地图的发明者Kohonen给出了一个答案:

σ(t)的真正数学形式并不重要,只要它的数值在这个过程开始时相当大。比方说,按照网格直径的一半,然后它在大约1000步内逐渐缩小到它的一小部分。

出发地: Kohonen,T.,2013年。自组织地图的要点。神经网络,37,第52-65页。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/80036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档