如何将简单的感知器内核化?


10

带有非线性边界的分类问题不能通过简单的感知器来解决。以下R代码出于说明目的,并且基于Python中的此示例):

nonlin <- function(x, deriv = F) {
  if (deriv) x*(1-x)
  else 1/(1+exp(-x))
}

X <- matrix(c(-3,1,
              -2,1,
              -1,1,
               0,1,
               1,1,
               2,1,
               3,1), ncol=2, byrow=T)

y <- c(0,0,1,1,1,0,0)

syn0 <- runif(2,-1,1)

for (iter in 1:100000) {
  l1 <- nonlin(X %*% syn0)
  l1_error <- y - l1
  l1_delta <- l1_error * nonlin(l1,T)
  syn0 <- syn0 + t(X) %*% l1_delta
}

print("Output After Training:")
## [1] "Output After Training:"
round(l1,3)
##       [,1]
## [1,] 0.488
## [2,] 0.468
## [3,] 0.449
## [4,] 0.429
## [5,] 0.410
## [6,] 0.391
## [7,] 0.373

现在,内核和所谓的内核技巧的想法是将输入空间投影到更高维度的空间,就像这样(图片来源):

在此处输入图片说明 在此处输入图片说明

我的问题我
如何利用内核技巧(例如,使用简单的二次内核),以便获得能够解决给定分类问题的内核感知器?请注意:这主要是一个概念性问题,但是如果您还可以进行必要的代码修改,那将是很好的

到目前为止,
我尝试了以下方法,这些方法都可以正常工作,但是我认为这并不是真正的交易,因为对于更复杂的问题,它在计算上变得过于昂贵(“内核技巧”后面的“技巧”不仅仅是“内核本身,但您不必为所有实例计算投影):

X <- matrix(c(-3,9,1,
              -2,4,1,
              -1,1,1,
               0,0,1,
               1,1,1,
               2,4,1,
               3,9,1), ncol=3, byrow=T)

y <- c(0,0,1,1,1,0,0)

syn0 <- runif(3,-1,1)

全面披露
我一周前在SO上发布了此问题,但并没有引起太多关注。我怀疑这里是一个更好的地方,因为它比编程问题更多是概念性问题。

Answers:


2

我们可以通过采用标准感知器并用等价形式(由于“内核技巧”)替换内积来构造“内核感知器” ,X)。之所以是因为我们的内积是映射,其属性与内核函数。与常见的高斯径向基函数核(RBF)一样XX=X,X<,>:Rp×RpRk:Rp×RpR

K(xi,xj)=exp(||xixj||22σ2)

内核感知器上Wikipedia页面所述,我们选择了输入大小为的子集,并使用它们的线性组合来产生我们的输出, M

f(x)=iMαiyiK(x,xi)

如果您看过支持向量机(SVM),则会注意到相同的对偶。要选择要使用的大小为的子集,我们对进行优化,它表示样本是否是我们解决方案的支持向量/基础向量。在的优化中,我们包括原始感知器优化的权重。α α ω Mαiiαiωi

关于您不必计算投影的问题,您是正确的,您的输入数据矩阵仍然是二维的。在输出的计算中,我们用核函数替换了点积,就是在特征空间中进行“隐式”计算的地方。X



谢谢-您能否在某种意义上说出您的答案更具体,因为您指出必须以哪种方式修改上面代码中的哪几行。如果您不了解R,那么修改当然可以用伪代码表示。然后,我会很乐意接受您的回答:-)
vonjd 2015年

我认为,链接到您的代码所基于的帖子,虽然肯定很简洁,但对感知器和反向传播的介绍很差。您知道反向传播的原理和一般的感知器理论吗?
Kellan Fluette 2015年

好吧,在某种程度上,我希望如此。你到底在做什么?您将如何修改上面的代码以将内核技巧用于二次内核?
vonjd 2015年

在感知标准的拉格朗日对偶中是否没有$ \ vec {x} ^ \ intercal \ vec {x)$?就是在那儿用内核函数评估替换内部产品。
Kellan Fluette 2015年
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.