目录
自组织映射和邻域函数
理解邻域函数
墨西哥帽邻域函数
计算SOM误差
政安晨的个人主页:政安晨
欢迎 👍点赞✍评论⭐收藏
收录专栏: 政安晨的机器学习笔记
希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正!
本文介绍当今仍然有用的、最早的一种神经网络。由于神经元可以通过各种方式连接,因此存在许多不同的神经网络架构。我们从自组织映射(Self-Organizing Map,SOM)开始研究经典神经网络。
人们利用SOM,将神经网络的输入数据分类。
将训练数据和希望将这些数据分类的组数一同提供给SOM。在训练期间,SOM会将这些数据分组。特征最相似的数据将被分在一起。这个过程与聚类算法(如K均值)非常相似。但是,与仅对一组初始数据进行分组的K均值不同,SOM可以继续对除用于训练的初始数据集之外的新数据进行分类。大多数神经网络不同,SOM是无监督的——你不会告诉它期望训练数据归入哪些组。SOM会根据你的训练数据简单地确定这些组本身,然后将未来的所有数据分为相似的组。将来的分类利用了SOM从训练数据中学到的内容。
自组织映射和邻域函数
Kohonen(1988)引入了SOM,这是一个由输入层和输出层组成的神经网络。两层SOM也被称为Kohonen神经网络,在输入层将数据映射到输出层时起作用。当程序将模式提供给输入层时,如果输出神经元包含与输入最相似的权重,它就被认为是赢家。通过比较来自每个输出神经元的权重集之间的欧氏距离,来计算这种相似性,欧氏距离最短者获胜。计算欧氏距离是下文的重点。
与咱们以前讨论的前馈神经网络不同,SOM中没有偏置。它仅具有从输入层到输出层的权重。此外,它仅使用了线性激活函数。下图展示了SOM。
下图中的SOM展示了程序如何将3个输入神经元映射到9个输出神经元,它们以3×3网格的方式排列。
SOM的输出神经元通常排列成网格、立方体或其他高维构造。因为大多数神经网络中输出神经元的排序通常根本不表达任何意义,所以这种安排有很大不同。如在大多数神经网络中,一个输出神经元与另一个输出神经元的接近程度并不重要。但对于SOM,一个输出神经元与另一个输出神经元的接近程度很重要。计算机视觉应用程序利用神经元的接近程度来更准确地识别图像。
卷积神经网络根据这些输入神经元彼此之间的接近程度,将神经元分组为重叠的区域。识别图像时,考虑哪些像素彼此靠近非常重要。程序通过查看彼此附近的像素来识别如边缘、实心区域和线条之类的模式。
SOM的输出神经元的常见结构如下:
● 一维:输出神经元排列成一行。
● 二维:输出神经元排列在网格中。
● 三维:输出神经元排列成立方体。
现在,我们将看到如何构造一个简单的SOM,它学习识别以RGB向量的形式给出的颜色。单个红色、绿色和蓝色值的范围可以在−1~+1。−1表示黑色或没有颜色,而+1表示红色、绿色或蓝色的完整强度。这些三色分量构成了神经网络输入。
输出是一个2 500个神经元的网格,排列成50行×50列。在这个输出网格中,该SOM将类似的颜色组织到相近的位置。
下图展示了这个输出:
尽管上图不是那样清晰,但是你可以看到相似的颜色彼此组合在一起。单个的、基于颜色的SOM是一个非常简单的示例,让你能够看到SOM的分组能力。
如何训练SOM?训练过程将更新权重矩阵,它是3×2 500的矩阵。首先,程序将权重矩阵初始化为随机值。然后,它随机选择15种训练颜色。
训练将通过一系列迭代进行。与其他神经网络不同,SOM的训练包含固定数量的迭代。为了训练基于颜色的SOM,我们将使用1 000次迭代。
每次迭代将从训练集中选择一个随机颜色样本,该样本是RGB颜色向量的集合,每个向量由3个数字组成。同样,2 500个输出神经元和3个输入神经元之间的权重是由3个数字组成的向量。随着训练的进行,程序将计算每个权重向量与当前训练模式之间的欧氏距离。欧氏距离确定相同尺寸的两个向量之间的差。在这种情况下,两个向量都代表RGB颜色,由3个数字组成。我们将训练数据中的颜色与每个神经元的3个权重进行比较。
下式给出了欧氏距离的计算:
在上述公式中,变量p表示训练模式,变量w表示权重向量。对每个向量分量之间的差取平方,并取所得和的平方根,计算出欧氏距离。该计算测量了每个权重向量和输入训练模式之间的差异。
程序为每个输出神经元计算欧氏距离,距离最短的神经元称为最佳匹配单元(Best Matching Unit,BMU)。该神经元将从当前的训练模式中学到最多的知识,BMU的邻居将学到较少。为了执行此训练,程序会在每个神经元上循环并确定应训练的程度。靠近BMU的神经元将接受更多训练。
下面公式可以做出这个决定:
在上面公式中,变量t(也称为迭代次数)代表时间。
我们不想简单地将训练元素分配给输出神经元权重,使它们相同。作为替代,我们计算训练元素和神经元权重之间的差异,并通过将它乘以两个比率来缩放此差异。用θ(theta)表示的第一个比率是邻域函数,用α(alpha)表示的第二个比率是单调递减的学习率。换言之,随着训练的进行,学习率持续下降,不会上升。
邻域函数考虑每个输出神经元与BMU的距离。对于较近的神经元,邻域函数将返回接近1的值;对于较远的邻域,邻域函数将返回接近0的值。这个0~1的范围控制了训练近邻和远邻的方式。较近的邻居将获得更多的权重调整训练。在后文中,我们将分析邻域函数如何调整训练。
除了邻域函数外,学习率也缩放了程序调整输出神经元的程度。
理解邻域函数
邻域函数确定每个输出神经元应从当前训练模式中接受训练调整的程度。该函数通常为BMU返回值1,该值表示BMU应该接受最多的训练,远离BMU的神经元将接受较少的训练。邻域函数用于确定这个权重。
如果输出神经元仅按一维的结构排列,就应使用简单的一维邻域函数。该函数将输出视为一长串数字,如一维神经网络可能有100个输出神经元,这些神经元形成一个长单维数组,由100个值组成。
二维SOM可能同样会使用100个值,并将它们表示为网格,可能是10行10列。二维SOM实际结构保持不变,神经网络有100个输出神经元,唯一的区别是邻域函数。一维SOM会使用一维邻域函数,二维会使用二维邻域函数。函数必须考虑这个附加维度,并将它作为影响返回距离的因素。
邻域函数还可以是具有三维、四维,甚至更多维度的函数。通常,邻域函数以向量形式表示,因此维度无关紧要。为了表示维度,领域函数会采用所有输入的欧氏范数(用两对竖线表示),如下公式所示:
对于SOM,最受欢迎的选择是二维邻域函数,一维邻域函数也很常见,但是,具有3个或3个以上维度的邻域函数较为罕见。实际上,维度的选择取决于程序员对输出神经元彼此相邻有多少种方式的决定。这个决定不应草率,因为每个额外的维度都会显著影响所需的内存量和处理能力。这种额外的处理导致大多数程序员都会为SOM应用程序选择两三个维度。
可能很难理解为什么你可能拥有3个以上的维度。以下类比说明了3个维度的局限性。在杂货店里,约翰注意到一包苹果干。当他向左或向右转动头,在第1维中扫视时,他看到了其他品牌的苹果干。如果他向上或向下看,在第2维中扫视,他会看到其他类型的零食。第3维度(即深度)只是给了他更多完全相同的苹果干。他朝前一包苹果干的后面看,发现了更多库存。但是,没有第4维度,如果有的话,它可以允许新鲜苹果位于苹果干附近。因为超级市场只有3个维度,所以这种类型的链接是不可能的。程序员没有这种限制,他们必须决定是否需要额外的处理时间,以获得更多维度的好处。
高斯函数是邻域函数的流行选择。下面公式使用欧氏范数来计算任意维度的高斯函数:
下图展示了一维高斯函数。
上图说明了为什么高斯函数是邻域函数的流行选择。程序员经常使用高斯函数来显示正态分布或钟形曲线。如果当前输出神经元是BMU,则其距离(x坐标)将为0。因此,训练百分比(y坐标)为1(100%)。随着距离向正、负方向增加,训练百分比减小。一旦距离足够大,训练百分比将接近0。
如果高斯函数的输入向量具有两个维度,则图像如下图所示:
算法如何在神经网络中使用高斯常数?邻域函数的中心(c)始终为0,该函数以原点为中心。如果算法将中心从原点移开,则BMU以外的神经元将获得充分的学习。但你可能不太想将中心移离原点。对于多维高斯函数,将所有中心设置为0,以便将曲线定位在原点。
剩下的唯一高斯参数是宽度。你应该将此参数设置为稍微小于网格或数组的整个宽度的值。随着训练的进行,宽度逐渐减小。与学习率一样,宽度应该单调减小。
墨西哥帽邻域函数
尽管高斯函数是最流行的,但它并不是唯一可用的邻域函数。雷克波(Ricker wave)或墨西哥帽(Mexican hat)函数是另一种流行的邻域函数。与高斯邻域函数一样,[插图]维的向量是墨西哥帽函数的基础,如下公式所示:
与高斯函数基本相同,程序员可以在一个或多个维度上使用墨西哥帽函数。下图展示了一维墨西哥帽函数。
你必须意识到,墨西哥帽函数会对距离中心2~4或−2~−4单位的邻居造成不利影响。如果你的模型试图对附近未命中的位置罚分,那么墨西哥帽函数是一个不错的选择。
你也可以在两个或更多个维度上使用墨西哥帽函数。下图展示了二维墨西哥帽函数。
与一维墨西哥帽函数一样,二维的墨西哥帽函数也会对附近未命中的位置造成不利影响。唯一的区别是二维墨西哥帽函数使用二维向量,与一维变量相比,二维向量看起来更像墨西哥草帽。尽管可以使用超过两个维度,但是由于我们以三维的方式感知空间,因此很难让这些更多维度的变体可视化。
计算SOM误差
监督训练通常会报告误差度量,该误差度量会随着训练的进行而减少。无监督模型(如SOM)无法直接计算误差,因为没有预期的输出,但是,可以为SOM计算误差的估计值。
我们将误差定义为训练迭代中所有BMU的最长欧氏距离。每个训练集元素都有其自己的BMU。随着学习的进行,最长的欧氏距离应减少。结果也表明了SOM训练的成功,因为随着训练的进行,该值将趋于下降。