(NIPS 2004) Neighbourhood Components Analysis (前半部分)
这段时间在看手势估计方面的文章的时候,发现很多人在使用NCA这个东西,一查才知道这是Hinton他们弄的,难怪呢。。。。文章比较老,但是思路还是很有参考意义。
首先作者以KNN来引入。KNN的功效大家都知道,这样野蛮的算法在一些应用里面却有着神奇的功效。但是要用KNN,一定要做的是:定义一种距离,然后计算距离,并且是和每一个样本集合里面的样本都算一遍距离。那么问题就来了:什么样的距离是好距离?如今动辄百千万的数据样本撸一遍还谈何实时?
所以作者提出了两个美好愿望:
- 自动学习出一个计算距离方式,就想深度网络来自动提取feature那样的美好。(想想还真不愧是Hinton的学生)
- 把计算距离的计算变简单:降低维度。这样的计算速度就可以达到哗哗的了。
一个好的算法就是简单,清晰,实用。首先假设变换A,能把样本x变换到低维空间y=Ax, 接下来设定一个目标函数:就是如果寻找到K个NN,希望能找到的正确的label的期望越高越好,于是有了从距离到possibility的转换: