前言:
而今小伙伴们对“感知器算法步骤”大概比较着重,各位老铁们都需要学习一些“感知器算法步骤”的相关内容。那么小编也在网摘上收集了一些对于“感知器算法步骤””的相关内容,希望同学们能喜欢,姐妹们快快来了解一下吧!点击上方关注,All in AI中国
作者:Akshay Chandra Lagandula
这篇文章将讨论Minsky和Papert在1969年提出的著名的感知器学习算法。这是我之前关于McCulloch-Pitts神经元模型()和感知器(Perceptron)模型的帖子的后续帖子()。
感知器
你可以浏览我之前关于感知器模型的帖子。
感知器模型是比McCulloch-Pitts神经元更通用的计算模型。它需要一个输入,并将其聚合(加权和),仅当聚合总和大于某个阈值时才返回1,否则返回0。重写如上所示的阈值,并使其成为具有可变权重的常量输入,我们最终会得到以下结果:
单个感知器只能用于实现线性可分离功能。它接受实数和布尔输入,并将一组权重与它们相关联,同时还带有偏差(我上面提到的阈值)。我们学习权重,得到了函数。让我们使用感知器来学习OR函数。
使用感知器的OR函数
我们基于各种输入的OR函数输出定义了一些条件(当输出为1时加权和必须大于或等于0),我们根据这些条件求解权重,得到了一条完美地将正输入与负输入分离的线。
没有任何意义吗?也许现在你该看看我所谈论的那篇文章了()。 Minsky和Papert还提出了一种使用一组示例(数据)学习这些权重的更有原则的方法。
线性代数的几个基础
向量
向量可以以多种方式定义。对于物理学家来说,向量是位于空间任何位置的任何东西,具有大小和方向。对于CS来说,向量只是用于存储一些数据的数据结构——整数、字符串等。对于本教程,我希望你能以数学家的方式来想象向量,其中向量是一个跨越空间的以尾巴为原点的箭头。这不是描述向量的最佳数学方法,但只要你有这种意识,你就可以开始了。
注意:我从3Blue1Brown的关于Vectors的视频中(;list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab)借用了以下截图。如果你还不认识他,请查看他关于线性代数()和微积分()的系列文章。
向量表示
二维向量可以在2D平面上表示如下:
将想法扩散到三维空间,我们在3D空间中得到如下箭头:
两个向量的点积
让我们看看什么是点积。想象一下,假设你有两个向量,大小为n + 1,w和x,这些向量的点积(w.x)可以计算如下:
转置就是把它以矩阵乘法形式写出来。
在这里,w和x只是n + 1维空间中的两个单独的箭头。因此,从技术上讲,感知器只计算一个点积(在检查它是大于还是小于0之前)。感知器给出的判断边界线将正例和负例分开,实际上就是w.X = 0。
两个向量之间的角度
如果你知道向量之间的角度和它们各自的大小,现在就可以以不同的方式计算相同的点积。方法如下:
反过来,你可以得到两个向量之间的角度,只要你知道向量,你就可以计算向量大小和它们的点积。
当我说w和x之间的夹角的余弦是0时,你看到了什么?我看到箭头w在n + 1维空间中垂直于箭头x。所以基本上,当两个向量的点积为0时,它们互相垂直。
设置问题
我们将使用感知器来估计我是否将根据上述输入的历史数据观看电影。基于这些数据,我们将使用感知器学习算法学习权重。 为简单起见,我们只假设二维输入。
感知器学习算法
我们的目标是找到一个能够在数据中对正输入和负输入进行完美分类的w向量。我将直接讲解算法。开始:
我们用一些随机向量初始化w。然后,我们迭代数据中的所有示例(PU N),包括正面和负面示例。现在,如果输入x属于P,理想情况下,w.x的点积是多少?我会说大于或等于0,因为这是我们的感知器在一天结束时唯一需要的东西。如果x属于N,则点积必须小于0。所以看看while循环中的if条件:
情况1:当x属于P且其点积w.x <0时
情况2:当x属于N且其点积w.x≥0时
仅针对这些情况,我们才会更新随机初始化的w。否则,我们根本不接触w,因为情况1和情况2违反了感知器的规则。因此,我们在情况1中把x添加到 w,并在情况2中从w中减去x。
为什么指定的更新规则有效?
但为什么会这样呢?如果你已经知道为什么这会起作用,你就已经明白了我这篇文章中的全部要点了,感谢阅读。但是如果你不确定为什么这些看似随意的x和w运算会帮助你学习那些可以完美分类P和N的完美w,那就看下去吧。
我们已经确定当x属于P时,我们希望w.x> 0,即基本的感知器规则。我们的意思是,当x属于P时,w和x之间的夹角应该是_____而不是90度。试着填一下这个空。
答:w和x之间的夹角应小于90°,因为夹角的余弦与点积成正比。
因此,无论w向量是什么,只要它与正示例数据向量(x E P)的夹角小于90度并且与负示例数据向量(x E N)的夹角大于90度就可以了。理想情况下,它应该看起来像这样:
x_0总是1,所以我们现在忽略它。
我们现在坚信,当x属于P类时,w和x之间的夹角应该小于90°,当x属于N类时,它们之间的夹角应该大于90°。以下是更新的工作原理:
因此,当我们将x添加到w时,我们在x属于P且w.x <0时执行(情况1),我们实质上是增加cos(alpha)的值,这意味着,我们正在减小alpha值,也就是w和x之间的角度,这是我们想要的。类似的直觉适用于x属于N且w.x≥0的情况(情况2)。
这是一个玩具模拟,我们如何结束学习w,正面示例的角度小于90,负面示例的角度小于90。
我们从随机向量w开始。
收敛性证明
现在,你没有理由相信这一定会收敛所有的数据集。似乎可能存在w继续四处移动并且从不收敛的情况。但人们已经证明了这种算法的收敛性。我附上哥伦比亚大学Michael Collins教授的证据——在这里找到论文()。
结论
在这篇文章中,我们很快了解了感知器是什么。然后我们用一些基本的线性代数进行了热身。 然后我们查看了感知器学习算法,继续想象它的工作原理,即如何学习适当的权重。