训练神经网络技巧

May*_*sam 3 matlab neural-network

对于物体识别,我建议在MATLAB中使用神经网络.我有30个对象和每个对象20个图像,所以我有600个输入数据和20个不同的类.输入矩阵为100x600,目标为1x600.输入矩阵列是关键点的Hue在100个箱中的直方图,如下所示:(m,n)=hist(hue_val,100)我拍摄的m.
如果我选择了MLP网络,那么这些层需要多少层和神经元,哪些传输函数适合每一层?

对于最后一个问题,我需要负面样本吗?

zer*_*ord 6

  • 层数 - 通常,单个隐藏层就足够了(因为使用非线性激活函数这么长)单个层可以接近任意数量的层.
  • 传递函数 - 我不习惯这个术语,但我认为你的意思是激活函数(你在将它传递到下一层之前对净输入做了什么).我在这里回答了这个问题的一个略微变体,但要点是在大多数情况下像双曲正切或逻辑的标准选择.
  • 隐藏层中的神经元数量 - crodriguezo的链接很好地完成了这个.我真正可以补充的是,根据你的输入大小,我可能会将这个数量基于训练时间.
  • 负样本 - 如果您只需要对输入所属的30个对象中的哪一个进行分类,则不需要负样本.但是,如果测试输入可能不是 30个对象,那么肯定会使用大量的反面示例,因此网络不会认为所有内容都是对象.

一些一般提示:

请记住考虑留一法和类似形式交叉验证作为对抗过度拟合的方法.限制隐藏图层的单位数也可以做到这一点,但代价是代表性的丰富性.

您未提及的其他参数对任何成功的ANN应用也非常重要.这些包括学习率,误差函数,退火计划,动量和重量衰减.设置所有这些在这一点上更像是一门艺术而不是科学(反对使用人工神经网络与支持向量机器的最佳论据之一),但这个链接对我来说在这个领域是天赐之物.