【问题标题】:Pattern recognition in Neural Network using matlab simulation使用 matlab 模拟的神经网络中的模式识别
【发布时间】:2012-02-20 04:07:29
【问题描述】:
我是 matlab 中这个神经网络的新手。我想使用 matlab 模拟创建一个神经网络。
此 matlab 模拟使用模式识别。
我在 Windows XP 平台上运行。
例如,我有一组圆形波形。
我已经取出了两极。
这些极点会告诉我的神经网络它是圆形的,因此每当我输入另一组略有不同的圆形波形时,神经网络就能够区分形状。
目前,我已经提取了圆柱、圆形和矩形这三种形状的极点。
但我不知道应该如何创建我的神经网络。
【问题讨论】:
标签:
matlab
pattern-matching
neural-network
pattern-recognition
【解决方案1】:
您可以尝试使用 Matlab 的神经网络模式识别工具nprtool,因为它专门用于训练和测试用于模式识别的神经网络。
【解决方案2】:
我建议使用 SOM(自组织映射)进行模式识别,因为它非常强大。还有一个你可能感兴趣的Som Toolbox for Matlab。但是,为了让它在忽略它们的偏移量的同时学习波浪,你需要对“相似性函数”进行一些更改。这些变化将对 SOM 的训练时间产生很大影响,但如果这不是问题,请继续阅读。
对于 SOM,您必须将波形采样为恒定大小的向量,比如说:
- sin x -> sin_vector = (a1, a2, a3, ..., aN)
- cos x -> cos_vector = (b1, b2, b3, ..., bN)
“SOM-vectors”的相似度通常用欧几里得距离计算。这两个向量的欧几里得距离很大,因为它们有不同的偏移量。在您的情况下,它们应该被认为是相似的,即。距离要小。所以..如果您不从同一起点对所有相似的波进行采样,它们将被分类为不同的类别。这可能是个问题。但!计算 SOM 中向量的相似度是为了从地图中找到 BMU(最佳匹配单元)并将 BMU 及其邻域的向量拉向给定样本的值。因此,您需要更改的只是比较这些向量的方式以及将向量的值拉向样本的方式,以便两者都“允许偏移”。
缓慢但可行的解决方案是首先为每个向量找到最佳偏移索引。最佳偏移指数是产生样本欧几里得距离最小值的指数。用网络的某个节点计算的最小距离将是 BMU。然后使用之前为每个节点计算的偏移索引将 BMU 及其邻域的向量拉向给定样本。其他一切都应该开箱即用。
此解决方案相对较慢,但效果应该很好。我建议彻底研究 SOM 的概念,然后再次阅读这篇文章(和愤怒的 cmets):)
请评论如果你知道一些数学解决方案会比前一个更好!