核技巧(kernel trick)
/ KER-nul trik /
核技巧是一手漂亮的数学障眼法:它让一个只会画直线的方法,能画出弯曲的边界,却始终不必离开自己的舒适区。想象红点围成一个小圆,外面又被一圈蓝点包住。桌面这张平面上,没有任何一条直线能把它们分开。但把里圈的红点从桌面抬起来——给每个点一个等于它到圆心距离的高度——此刻,一张平整的纸片就能干净利落地从抬高的红点与低伏的蓝点之间滑过。把数据映射到更高的维度,一个弯曲的问题就变成了笔直的问题。
妙就妙在「不必」二字。真的去算那些新的高维坐标,代价会高得离谱,有时甚至是无穷的。窍门在于,许多算法——尤其是上面的支持向量机——自始至终只需要点对点之间的点积,一个衡量两点有多「对齐」的单一数字。核函数就是一条捷径:它直接返回那个相似度数字,仿佛这些点已被抬进高维空间,而所有算术却仍在原来的低维空间里完成。你享了抬升之利,却没付抬升之费。
不同的核编码着不同的「相似」概念:多项式核允许边界像多项式那样弯曲,而广受欢迎的RBF(高斯)核衡量的是一种柔和的、基于距离的接近,能雕出非常灵活的形状。正是这一点,让支持向量机在1990至2000年代得以对付杂乱的非线性数据。诚实的提醒是:核越灵活,就越容易过拟合,而选核及其设定是一门要靠反复试验、而非照方抓药的艺术。
红点聚在中央,蓝点围成一圈包在外面——没有直线行得通。施展核技巧:给每个点加上第三个坐标,等于它到圆心距离的平方。此刻红点高高浮起,蓝点低低伏着,一张平面就从它们之间滑过。回到桌面上,这张平面投影下来,正好是一个圆。
在抬升后的空间里切一刀直的,投影回来就成了一条曲线。
其精髓在于,你从不真的去计算那些高维坐标——核函数直接返回「仿佛你算过」的相似度,全程都在原空间里运作。越灵活就意味着过拟合的风险越大,所以一个强力的核,仍然需要小心地调。