4

我已经成功实现了一个使用 RBF 内核的内核感知器分类器。我知道内核技巧将特征映射到更高的维度,以便可以构造线性超平面来分离点。例如,如果您有特征 (x1,x2) 并将其映射到 3 维特征空间,您可能会得到:K(x1,x2) = (x1^2, sqrt(x1)*x2, x2^2).

如果您将其插入感知器决策函数w'x+b = 0,您最终会得到:w1'x1^2 + w2'sqrt(x1)*x2 + w3'x2^2它为您提供了一个循环决策边界。

虽然内核技巧本身非常直观,但我无法理解它的线性代数方面。有人可以帮助我了解我们如何能够在不明确指定它们的情况下仅使用内积来映射所有这些附加功能吗?

谢谢!

4

3 回答 3

9

简单的。

给我一些 x 和 y 值的 (x+y)^10 的数值结果。

你宁愿做什么,“作弊”并对 x+y 求和,然后将该值取 10 次方,或者扩展写出的确切结果

x^10+10 x^9 y+45 x^8 y^2+120 x^7 y^3+210 x^6 y^4+252 x^5 y^5+210 x^4 y^6+120 x^3 y^7+45 x^2 y^8+10 x y^9+y^10

然后计算每个项,然后将它们加在一起?显然,我们可以评估 10 次多项式之间的点积,而无需明确形成它们。

有效内核是点积,我们可以“作弊”并计算两点之间的数值结果,而无需形成它们的显式特征值。有许多这样的可能的内核,尽管只有少数在论文/实践中得到了广泛使用。

于 2014-02-01T02:04:26.447 回答
2

There is really not much to it

The weight in the higher space is w = sum_i{a_i^t * Phi(x_i)}

and the input vector in the higher space Phi(x)

so that the linear classification in the higher space is

w^t * input + c > 0

so if you put these together

sum_i{a_i * Phi(x_i)} * Phi(x) + c = sum_i{a_i * Phi(x_i)^t * Phi(x)} + c > 0

the last dot product's computational complexity is linear to the number of dimensions (often intractable, or not wanted)

We solve this by going over to the kernel "magic answer to the dot product"

K(x_i, x) = Phi(x_i)^t * Phi(x)

which gives

sum_i{a_i * K(x_i, x)} + c > 0

于 2014-02-01T03:35:54.717 回答
2

我不确定我是否在回答你的问题,但我记得“诀窍”是你没有明确计算内积。感知器计算分隔集群的直线。要获得曲线甚至圆形,您可以更改包含集群的空间,而不是更改感知器。这是通过使用通常称为 phi 的转换来完成的,该转换将坐标从一个空间转换到另一个空间。然后将感知器算法应用到新空间中,在那里它产生一条直线,但是当这条线被转换回原始空间时,它可以弯曲。

诀窍是感知器只需要知道它试图分离的集群点的内积。这意味着我们只需要能够计算变换点的内积。这就是内核所做的 K(x,y) = <phi(x), phi(y)> where < 。, . > 是新空间的内积。这意味着不需要对新空间进行所有的转换并返回,我们甚至不需要明确知道转换 phi() 是什么。所需要的只是 K 在某个空间中定义一个内积,并希望这个内积和空间对分离我们的集群有用。

我认为有一些定理说,如果内核所代表的空间比原始空间具有更高的维度,那么它可能会更好地分离集群。

于 2014-02-01T00:43:50.903 回答