我有几个距离函数可以返回两个图像之间的距离,我希望将这些距离组合成一个距离,使用加权评分,例如: ax1+bx2+cx3+dx4
等我希望自动学习这些权重,以便最大限度地减少测试错误。
为此目的,我有一个标记的数据集,其中包含各种三维图像,使得(a,b,c), a 与 b 的距离小于到 c 。
即d(a,b)<d(a,c)
我想学习这样的权重,以便三元组的这种排序可以尽可能准确。(即,对于a&amp; b给出的加权线性分数较少,对于a&amp; c则更多。
什么样的机器学习算法可以用于任务,以及如何实现所需的任务?
答案 0 :(得分:0)
希望我能正确理解你的问题,但似乎这可以通过直接约束优化更容易解决,而不是经典的机器学习(其算法通常通过约束优化来实现,参见例如SVM)。
例如,可能的目标函数可能是:
argmin_{w} || e ||_2 + lambda || w ||_2
其中w
是你的体重向量(哦,上帝为什么这里没有乳胶),e
是错误的向量(每个训练三联体一个组件),lambda
是一些可调的正则常数(可以为零),您的约束可以是:
max{d(I_p,I_r)-d(I_p,I_q),0} <= e_j for jth (p,q,r) in T s.t. d(I_p,I_r) <= d(I_p,I_q)
代表j
约束,其中I_i
是图片i
,T
是培训集,
d(u,v) = sum_{w_i in w} w_i * d_i(u,v)
d_i
是您的i
距离函数。
请注意,e
正在衡量您选择的权重与满足训练集中所有选定三元组的距离。如果权重保留标签j
的排序,则d(I_p,I_r)-d(I_p,I_q) < 0
依旧e_j = 0
。如果他们没有,那么e_j
将衡量违反培训标签j
的数量。解决优化问题会得到最好的w
;即错误最低的那个。
如果你不熟悉线性/二次规划,凸优化等...然后开始谷歌搜索:)这类东西存在很多库。
另一方面,如果您更喜欢机器学习方法,您可能可以针对您的问题调整一些metric learning方法。