什么功能可能是内核?


21

在机器学习和模式识别的上下文中,有一个称为Kernel Trick的概念。在要求我确定一个函数是否可以是内核函数的问题面前,应该怎么做?我是否应该首先检查它们是否为多项式,RBF和高斯等三或四个内核函数的形式?那我该怎么办?我应该证明它是肯定的吗?有人可以解决一个示例,以显示针对此类问题的分步解决方案吗?例如像,是内核函数f(x)=extx(假设我们不知道它是一个高斯内核)?

Answers:


27

通常,函数)如果满足两个关键属性,则它是有效的内核函数(就内核技巧而言):k(x,y)

  • 对称性: k(x,y)=k(y,x)

  • 正半定性。

参考:http//www.cs.berkeley.edu/~jordan/courses/281B-spring04/lectures/lec3.pdf的第4页

通过检查通常可以很容易地检查对称性。有时,分析验证正半定性可能会非常麻烦。我可以想到两种策略来检查这一事实:

  • (1)检查“内部产品”表示

考虑。我们可以找到一些使得吗?一点数学运算表明,所以让完成。 ϕ a k x y = ϕ x T ϕ y e x + y = e x e y ϕ a = e ak(x,y)=ex+yϕ(a)k(x,y)=ϕ(x)Tϕ(y)ex+y=exeyϕ(a)=ea

如果幸运的话,您的将适合此分析。如果不是,则可以采用选项(2):k()

  • (2)通过随机模拟检查正定性。

考虑维矢量,其中每个矢量必须为非负数且总和为1。这是有效的内核吗?k xy= D d = 1分钟x dy dxyDk(x,y)=d=1Dmin(xd,yd)x,y

我们可以通过仿真检查。绘制一组随机向量并建立一个Gram矩阵,其中。然后检查是否为正(半)定值。{ x i } N i = 1 K K i j = k x ix jN{xi}i=1NKKij=k(xi,xj)K

最好的数字方式是找到矩阵的特征值(使用现有的良好数值库,例如scipy或matlab),并验证最小特征值是否大于或等于0。如果是,则矩阵为psd。否则,您没有有效的内核。K

示例MATLAB / Octave代码:

D=5;
N=100;

X = zeros(N,D);
for n = 1:N
   xcur = rand(1,D);
   X(n,:) = xcur/sum(xcur);
end

K = zeros(N,N);
for n = 1:N;  for m = 1:N
    K(n,m) = sum( min( X(n,:), X(m,:) ) );
end;  end;

disp( min( eig(K) ) );

这是一个非常简单的测试,但要小心。如果测试失败,你可以肯定的内核是不是有效的,但如果它通过内核仍然可能不会有效。

我发现无论我生成多少个随机矩阵且无论和为何,该内核都可以通过测试,因此它很可能是正半定的(实际上,这是众所周知的直方图相交内核,并且已被证明)有效)。ND

但是,对的相同测试在我尝试的每次尝试中都失败了(至少20次) 。因此,它绝对是无效的,并且很容易验证。ķXÿ=d=1个d一种XXdÿd

我真的很喜欢第二种选择,因为它比编译的形式证明相当快速且易于调试。根据Jitendra Malik的第19张幻灯片,交集内核于1991年引入,但直到2005年才被证明是正确的。形式证明可能非常具有挑战性!


据我了解,第二个条件只是正确定性。据我所知,只有当您想证明SVM算法的收敛性时才有必要。实际上,有许多不是PSD的内核,但在实践中效果很好。
彼得

@Peter:是的,你是对的。它可以是半确定的,而不仅仅是确定的。进行了相应的编辑。
Mike Hughes

在SVM域中,使用PSD内核可确保问题凸出,因此优化可实现唯一的全局最优解决方案。如果没有PSD属性,则无法保证找到的解决方案接近最佳方案。但是,是的,有几个内核(如Sigmoid)不是PSD,但在实践中仍然很成功。关于这个问题的体面参考是:perso.lcpc.fr/tarel.jean-philippe/publis/jpt-icme05.pdf
Mike Hughes
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.