我的问题的数学描述可以表达如下:
给定函数 Y = f(X),其中输入 X 并输出 Y 。 对X的 N 点的总数进行采样,表示为 X [0],X [1],X [2] ... X [N-1] 和coreceonding Y [0],Y [1],... Y [N-1] 。问题是,我们不知道每个 X 的 Y 的确切值,而是一些 Y 之间的比较。已知大型二进制 NxN 矩阵:
[[a00, a01, a02, ...]
[a10, a11, a12, ...]
...
]
a [i,j] = 1 表示 Y [i]&gt; Y [j] , a [i,j] = 0 < / em>表示 Y [i] 和 Y [j] 之间没有进行比较。
我应该在矩阵上使用什么机器学习模型,以便它可以给出两个任意输入 X 的比较结果。
或者我可以提出一个更具体的问题:函数的形式 Y = f(X,a)已经知道,其中 a 是要优化的系数。如何找到最佳的 a ,以便尽可能多地满足矩阵的比较关系。
现实世界的问题是这样的:
我正在为科学激光设备的焦斑分析仪(它只是一个专门的相机)开发一个图像分析程序。激光通过离轴抛物面镜(您可以将其视为凸透镜)进行聚焦,这需要大量的微调才能获得更好的焦点。可以通过步进电机(总共6个轴)控制镜子的位置和旋转,并且可以在焦点分析仪上查看焦点。目前,所有调整都必须手动完成,最终目标是开发一个自动闭环调整程序。
我的计划目前的问题是确定焦点的质量。相机给出焦点的2d图像,但定义质量函数并不简单,因为要考虑的焦点太多(腰部半径,峰值强度,椭圆度等)。通常手动的工作流程是稍微改变镜子的一个轴,看看焦点是否比前一个更好。这必须每隔几天重复多次,因此进行了大量的比较。这些比较是由人类完成的,我想训练我的程序能够像人类一样进行比较。调整程序预计也会像人一样调整:它尝试对镜像的一个轴进行切换,将新焦点与前一个焦点进行比较,如果更好,则继续更改相同的轴,如果情况更糟,则反转更改或切换到另一个轴。
作为备用手段,我开发了一些数学模型来确定基于腰围半径( r ),峰值强度( I ),elilipticity()的质量e )等等。例如,简单模型是三者的线性组合:
y = w1*r + w2*I + w3*e
但必须确定 w1,w2,w3 的最佳值。使用人类的比较结果,我想找到最优的 w1,w2,w3 ,以便尽可能多地满足比较关系。
我已经研究了scikit-learn和其他一些库提供的算法,但看起来回归对Y的确切值起作用,而不是它们之间的比较关系。那么有一个机器学习模型可以解决我的问题吗?
答案 0 :(得分:0)
这个paper展示了如何使用机器学习“设计全参考图像质量评估算法”,它可以帮助您弄清楚如何使用您的数据以及如何定义哪些功能使您的图像比另一个更好(在这种情况下,他们使用SVM)。
我认为Convolutional Neural Networks也可以适应您的目的,因为CNN特别适合处理图像(检测功能,分类......)。所以我建议你阅读一下。
您拥有和拥有的数据量(使用数据扩充)可以作为哪种选项最适合您的标准。
我希望这对您有所帮助,您的项目将会成功。