内核或内核函数是美丽的数学概念,以不同的形式用于机器学习和统计。如果您是初学者,您可能很想知道内核的确切定义,但您可能会对Internet上博客网站上解释的内核的多种定义感到困惑。 核函数是一个令人困惑的概念,只是因为围绕它的知识分散在其应用程序中,并且缺少将它们联系起来的共同直觉。这个(庞大的)博客旨在统一不同ML应用程序中使用的内核的所有知识。和大多数初学者一样,核函数让我很长一段时间都处于迷茫状态,直到我形成了一种可以连接所有环节的直觉。 我们从非参数模型开始我们的旅程,然后我们开始讨论不同类型的内核及其在统计和ML中的典型应用。与核函数类似,我试图从数学上解释PCA,同时考虑所有观点。非参数模型 非参数模型是那些没有随输入大小而增长的参数的统计模型。请注意,非参数模型并不意味着零参数模型,而是它们使用一组固定的参数,也称为超参数,这些参数不会随着输入维数的增加而增加。香草线性回归模型,具有参数确定超平面的斜率,其大小取决于输入x的维数, 等式1。具有可调参数的简单线性回归模型,其大小取决于特征数N。函数f表示给定 等式1。具有可调参数的简单线性回归模型,其大小取决于特征数N。函数f表示给定输入x的因变量y的期望值,即E〔yx〕 接下来,考虑KNN模型,我们通过分析测试样本的K个最近邻居的类别来确定测试样本的类别。如果K1,我们假设测试样本与最近邻样本属于同一类。该模型没有任何会随着输入维度的增加而增长的参数。对于vanilla实现,我们只需要一个参数K,即使我们使用大输入(在维度方面)也是如此。 KNN是一个非参数模型,它有一个由用户提供的超参数K。乍一看,非参数似乎是一个显而易见的选择,因为, 他们没有对数据的分布做出任何先验假设。例如,在香草线性回归的情况下,它是一个参数模型,我们假设给定X(特征)的Y(因变量)的条件分布是高斯分布,其平均值是特征的线性组合(其中权重是)和方差等于 2。给定X和参数的Y的条件分布是正态分布,我们希望从中获取X的均值。常数方差是同方差假设的结果 这可能并不总是成立,因为, 对于每个测试样本,他们需要将整个训练数据保存在内存中,这对于KNN模型也是如此。对于每个样本,我们需要计算它与每个训练样本的距离,因此我们需要在内存中检索存储每个样本,这对于大型数据集甚至具有大量特征的更小数据集可能不可行。 非参数模型的基本思想是从数据中收集一些有用的见解并用于解决给定的问题,而不用在可调参数中编码有关数据的信息。 接下来,我们继续讨论内核,它们在ML中具有不同的用例,并且它们在每种情况下的含义略有不同。到目前为止,在为这个博客进行研究之后,以及我之前尝试将内核作为一个整体来理解之后,我觉得内核是提供关于给定数据点的邻居信息的机器(作为机器的输入)。然后将此本地信息(即位于所考虑数据点附近的数据点的信息)用于给定问题。一旦我们在每个数据点上使用核函数,我们就可以清楚地了解数据的局部性。 我们将探讨内核的这三个方面,这是三个不同的概念及其在ML中的主要应用,密度内核美世内核图像处理中的内核密度内核:使用内核进行密度估计 密度核、核密度估计、核回归 我们可以使用核来估计给定测试样本的概率密度,方法是使用训练样本对基础概率分布进行建模。考虑到ML术语,术语测试样本和训练样本分别仅指未观察到的样本和观察到的样本。 对于连续随机变量X,我们可以在一个合适的范围内对X的概率密度函数进行积分,比如从x1到x2,我们就可以得到X在〔x1,x2〕范围内取值的概率。密度核和核密度估计(KDE) 让我们从一个问题开始我们的讨论。Panchal博士住在一个拥挤的街区,四面都是房屋。当地警方聘请了一名侦探,其工作是确定住在医生家中的人数或他的家庭成员,以确保事情进展顺利。侦探不能按医生的铃,问有多少家庭成员住在那里,因为如果有可疑的东西,它会警告医生。 侦探首先会审问与Panchal博士家相邻的房屋,因为他们可以清楚地看到里面的东西。期望侦探对从这些直接邻居获得的信息给予更高的权重重要性。接下来,为了获得更多见解,侦探审问了稍微远一些的房子,这些房子不能直接看到Panchal博士的房子,但可能有他们邻居的良好信息。侦探不太重视从这些邻居那里收到的信息,因为他们的观察可能不如直接邻居(他们的房子与Panchal的房子相邻)那么正确。侦探进行了几次这样的回合以降低重要性,离开了Panchal博士的房子。 密度核的作用类似于捕获给定点周围的相邻信息。如果我们给定一个包含N个样本的数据集D,其中每个样本都是实数, 上面代码片段中的内核是Epanechnikov(抛物线)内核。核函数在这里有一些特殊的性质 属性1:核函数或侦探与x或某个邻居的房子位于哪个方向无关。从右边的两所房子或左边的两所房子获得的信息是相同的。属性2:核函数代表一个有效的PDF,它在整个实域上积分为1。属性3:核的支持度是所有值u的集合,使得K(u)不等于0。它表示侦探的覆盖区域,从那里收集的信息将被赋予一些非零重要性。如果侦探决定在5公里半径内的所有房屋中进行审讯,则支持将是该5公里圈内的所有房屋。 每种类型的内核都将执行类似的编码相邻信息的任务,每个内核都有不同的策略来执行此操作。与我们的侦探不同,当他离开Panchal博士的房子时,他会慢慢降低审讯的重要性(高斯内核会做到这一点),另一名侦探可能会继续对所有审讯给予同等重视,在一定程度上忽略距离(a统一内核)。想象一下,从我们的数据集D中,所有xi的分布是, 我们的目标是创建X的概率分布估计。我们将通过估计每个样本xi的密度并使用核来收集邻近信息来做到这一点, 如果xi远离x,xxi将具有较大的值,从而为K(xxi)产生一个非常小的值,并减少xi在确定x处的概率密度时的发言权。参数h是称为内核带宽的平滑参数。h的值越大,预测的概率密度就越平滑。 内核回归 核回归是线性回归模型的非参数版本,我们在其中对结果变量的条件期望进行建模。在简单线性回归的情况下,我们对条件期望E〔YX〕直接表示为自变量的线性组合。这产生了一个判别模型,而核回归是一个生成模型,因为我们通过核密度估计对联合概率分布P(X,Y)和P(X)进行建模。 推导E〔Y的估计量X〕没有任何附加参数。在简单线性回归的情况下,E〔YX〕将被建模为所有Xi的加权线性组合,其中权重是参数。 观察结果表达式,您会发现预测结果yhat是所有yi的加权组合,其中权重由所有xi的核函数值确定。MercerKernels:更高维度的点积 Mercer内核和正定性,在SVM中使用Mercer内核 MercerKernels或Positivedefinitekernels是接受两个输入并产生一个实数的函数,该实数表征两个输入(或其高维表示)在其他空间中的接近度。事实证明,从计算的角度来看,这些内核很有用,因为它们可以帮助我们计算高维向量的点积,而无需明确执行任何转换以将我们自己的向量带入该高维空间。美世内核 让我们从定义内核函数及其一些属性开始我们的讨论, Mercer内核是一个函数,它从我们的数据集D中获取两个数据点,并输出一个实数,表示这两个数据点在特征空间中的接近度。如果我们的数据集D中有n个数据点,并且我们在每对数据点上运行Mercer内核并将结果输出排列在一个矩阵中,我们将获得一个正定矩阵。这个描述数据点之间相似性的矩阵称为Gram矩阵。 考虑到它们的谱特性,正定矩阵是特殊的。它们具有正特征值,相应的特征向量构成正交基。对于mercer内核,我们有一个特殊的属性,使用该属性可以将核函数的值表示为两个变换向量的点积, 人们可能有一种冲动,想感受一下这句话背后的直觉,但它存在于希尔伯特空间的圣殿中,值得单独写一篇博客。目前,最好理解具有两个输入向量的核函数的值被描述为其他两个更高维向量的点积。 Mercer内核为计算这两个高维向量之间的点积提供了一种捷径,而无需显式计算这些向量。因此,我们可以利用高维空间的优势有时在机器学习中很有用,尤其是当样本不是线性可分的时候。 对于一些优化问题,比如优化SVM时遇到的问题,我们需要计算两个变换后的样本(两个高维向量)之间的点积。核函数的使用将帮助我们轻松计算此点积,而无需对样本执行任何显式转换。在SVM中使用MercerKernel SVM是适合超平面的线性分类器,因此在两类样本之间形成决策边界。为了确定最佳超平面,即将样本分为两类并最大化边距的超平面,我们需要解决包含给定参数约束的目标函数(最大化或最小化的函数)的优化问题的目标。 向量w和b表征形成决策边界的超平面。支持向量之间的边距宽度在下面的第一个表达式中给出。此外,我们将匹配SVM所做的预测和目标标签,或者更准确地说,匹配w。xib和yi的符号, 我们用拉格朗日乘数解决这个优化问题,所以第一步是建立一个拉格朗日并将其参数的偏导数等同于零。这将产生一个w的表达式,它使拉格朗日量最小化。 将这些结果代入拉格朗日量后,我们得到一个表达式,它清楚地描述了核函数的作用, 为了获得最佳超平面,我们需要计算数据集中样本对之间的点积。在某些情况下,不可能找到最佳超平面,因为样本可能不是线性可分的,即不能仅通过画一条线平面将样本分为两类。我们可以增加样本的维数,通过它我们可以很容易地发现一个分离超平面。 这种技术通常被称为内核技巧,是Mercer定理的直接结果。我们能够计算两个高维特征的点积,而无需将数据样本显式转换到该高维空间。有了更多的维度,我们就有更大的自由度来确定最佳超平面。通过选择不同的内核,可以控制特征所在空间的维数。 内核函数有一个更简单的表达式来计算,就像下面列出的那样, 卷积核:图像处理 卷积和图像处理中使用的内核 内核是固定大小的矩阵,它们在图像或特征图上进行卷积以从中提取有用的信息。在图像处理术语中,核矩阵也称为卷积矩阵,用于对图像进行运算。每个内核都有自己的专门操作,可在卷积后转换图像。卷积和内核 卷积是一种数学运算符,它接受两个函数并产生另一个函数。如果我们对两个函数或信号进行卷积,则卷积的结果是一个表示两个函数之间重叠区域的函数。在数学上,卷积运算定义为, 描述卷积运算及其数学定义的动画图。这类似于密度估计中执行的内核滑动。我们将内核滑动到数据分布上,收集邻域信息,然后估计特定点的密度。 在离散意义上,卷积运算是通过在信号上滑动核函数,将信号与核的相应值相乘,并将所有这些乘积的和放入结果信号中来执行的。在数学意义上,最好考虑用离散信号求和,而不是用连续信号求和。 对一维离散信号进行卷积运算。上面的表达式显示了相同的数学公式。 对于图像,我们将在给定图像上滑动2D内核并执行相同的操作。内核的运动在这里是二维的,与内核在一维信号上的一维(单向)运动相反。输出将是一个矩阵,因为卷积运算也在2D输入上执行。 与内核矩阵的卷积。 我们可以使用不同的内核从输入中提取各种特征,或者增强图像以进行进一步的操作。例如,sharpenkernel会锐化图像中存在的边缘。许多其他内核在卷积时从图像中提取有趣的特征, CNN中的内核 我们刚刚看到的内核是不变的,但如果我们可以参数化内核并控制提取哪些特征呢?这将有助于卷积神经网络,我们可以在其中微调内核以最大程度地减少NN造成的总体损失。用内核构建的非参数模型的概念在这里会消失,因为CNN可以有大量的参数,但邻域信息提取的基本概念仍然有效。 这里内核的功能类似于锐化或SobelX内核,但它将矩阵中的值视为参数而不是固定数字。这些可训练内核通过反向传播进行优化,以减少CNN中损失值的值。卷积层可以有许多这样的内核,统称为过滤器。 第一个卷积层产生的输出被传递到下一层。这创建了一个分层特征提取过程,其中图像的低级特征由初始卷积层提取,高级特征由最终最后一个卷积层跟踪。这样的一堆卷积与可训练的内核相结合,使CNN能够非常精确地识别图像中的对象,从而打开了现代计算机视觉的大门。结束 我希望这次穿越内核世界的旅程让您对这个概念着迷。内核在各种主题中很容易混淆,但它们的核心思想保持不变,我们在博客中多次重复了这一点作为邻域特征提取。核函数不是使用参数来捕获数据中的模式,而是可以对样本的相对接近度进行编码以捕获数据中的趋势。但是,必须了解参数模型有其自身的优势,并且它们的使用并没有过时。大多数神经网络模型都是拥有数百万个参数的巨大参数模型,它们可以解决诸如目标检测、图像分类、语音合成等复杂问题。