我喜欢在Batch SOM收敛时停止执行。 我可以使用什么错误函数来确定收敛?
答案 0 :(得分:5)
我很确定你的意思是成本函数而不是错误函数。
SOM不需要错误功能(也不需要成本函数)。
在机器学习分类法的顶层,SOM是无监督学习技术 - 没有目标向量,因此没有“目标向量”减去“value_at_the_current_iteration”以最小化。
另一种思考方式:成本函数的作用是最小化一些成本;在ML中,它是模型计算和提供的数据之间的差异。在SOM中,没有为此目的向算法提供数据。
(我意识到这有点令人困惑,因为创建网络的输入数据通常被称为“训练数据” - 这可能是监督ML技术中输入数据的作用,这种技术远比无人监管的。它可能也令人困惑,因为Teuvo Kohonen,即“发明”SOM的人,最初称他们为一类神经网络 - 当然NN是一种监督技术,并且依赖于成本函数(通常是梯度)下降。))
最后,为了确保,我检查了自己的SOM代码以及Marsland的ML教科书中的代码,“机器学习:算法视角”。在我的代码和他的代码中,唯一的停止标准是用户在调用main函数时传入的“最大迭代次数”的值。
答案 1 :(得分:3)
当谈到SOM的收敛时,对于给定的地图大小(n x m),您想知道算法是否已经运行足够的迭代以确保地图是“稳定的”#34;。这意味着,松散地说,如果地图被重新训练多次,地图的新输入(观察)会被放置在相同的神经元/码本向量中吗?(忽略地图的排列可能在其周围转换的事实的问题)每次训练,只要集群仍然以稳定的方式排列,这是很好的。
为了帮助回答是否有足够的迭代问题,请参阅下面列出的学术论文。这两篇论文还涉及到什么地图大小合适的问题(n x m值有助于确保SOM的收敛?)。
这里给出了一种在论文中流行的传统方法:
Statistical tools to assess the reliability of self-organizing maps (Bodt, Cottrell, Verleysen)
最近,这种方法已经出现,看起来很有希望:
在我看来,这篇论文写得非常好,很高兴阅读。同样不错的是,这项研究已被编写为R中一个(相当未知的)包中的SOM收敛测试,称为popsom
。看看: