我正在开发机器学习算法,根据训练数据对图像进行分类。
在图像预处理阶段,我可以修改几个参数,这些参数影响我输入算法的数据(例如,我可以在提取SURF特征时改变Hessian阈值)。因此,到目前为止的流动情况如下:
param1,param2,param3.=>黑匣子=>准确率%
我的问题是:有这么多参数可供我使用,我如何系统地挑选给我优化结果/精度的值?一种天真的方法是运行我嵌套的循环(假设i参数),然后迭代所有的参数组合,但是如果从我的“黑箱”系统中计算精度需要5分钟,这将需要很长很长的时间。
话虽如此,在黑匣子系统中,是否有任何算法或技术可以搜索最优参数?我正在考虑上一门关于离散优化的课程,但我不确定这是否是我时间的最佳利用。
谢谢你的时间和帮助!
编辑(回答注释):我有5-8个参数。每个参数都有自己的范围。一个参数可以是0-1000 (整数),而另一个参数可以是0到1(实数)。没有什么能阻止我多线程黑匣子评估。
此外,黑匣子的某些部分对它们也有一些随机性。例如,一个阶段是使用k均值聚类.每个黑匣子的评估,集群中心可能会改变。我运行k-意思是几次(希望)避免局部optima。此外,我对黑匣子进行了多次评估,并找到了中位精度,以进一步减少随机性和离群点。
发布于 2016-05-19 00:17:04
作为局部解,在n个参数导致最优值的区域内,可以递归地搜索中等分辨率和范围的网格搜索。
每个步骤的n维结果将被用作下一次迭代的起点。
关键是对于每一次迭代,在绝对条件下,分辨率保持不变(即保持迭代周期不变),但范围缩小,从而减小了螺距/颗粒步长。
我称之为“收缩网格”:)
请记住,虽然它避免了完全的蛮力复杂性,但在最后的迭代中它只达到了详尽的解析(这就是定义的,最后的迭代)。
此外,所述过程仅限于可能包含或不包括全局最小值的点的子集,即它可能导致局部极小值。
(你总是可以追逐你的尾巴,尽管你可以用一些次初始分辨率来抵消初始网格,并比较结果.)
玩得开心!
https://stackoverflow.com/questions/17690157
复制相似问题