摘要
如今,Keras、TensorFlow 或 PyTorch 等框架提供了对大多数深度学习解决方案的交钥匙访问,而不必深入了解它们。但是,一旦您的模型没有按预期工作,这就会出现问题。您可能需要自己调整它。所以,如果你是来理解深度学习中感知器的概念,我认为你走在正确的轨道上,如果你想有一天能够以任何方式为这个生态系统做出贡献,那么了解这些的根源是必不可少的系统。否则,如果您已经熟悉感知器的概念,那也没什么大不了的。还是希望给你惊喜!在本文中,我将介绍Perceptron的概念。我们将看看它在 1950 年是如何被考虑的以及它是如何运作的。
背景
早在 1943 年,McCulloch 和 Pitts 就发表了一篇题为神经活动内在思想的逻辑演算的论文—— 今天被称为神经网络的第一个数学模型这篇文章的想法是想要通过复制人脑的功能来创建智能机器的时代动力的一部分。我把它的摘要的开头作为证据。由于神经活动的“全有或全无”特性,神经事件及其之间的关系可以用命题逻辑来处理。当时,人脑的功能被普遍认为是相互连接的神经细胞像简单的逻辑门一样传输电信号和化学信号!
现在让我们向前跳 14 年,到 1957 年,Rosenblatt 发表了一篇名为The Perceptron — A Perceiving and Recognizing Automaton 的文章。正是在这篇文章中,我们找到了今天所理解的感知器。一种学习最佳权重以与输入相乘以确定神经元是否激活的系统。下面你可以看到第一个被训练来识别物体或模式的感知器,在这种情况下,是字母表中的字母。
应用于深度学习的感知器。
基本感知器用于监督机器学习中的二元分类。提醒一下,例如,二元分类意味着只有两个类可以预测 1 和 -1。有监督的机器学习是指通过已经标记的数据(及其相关类)来训练模型。
数学定义
我们按以下方式定义输入𝑥、输出y和权重𝑤。
其中 m 是向量 𝑤、𝑥 或y的大小。
令 𝑧为由 𝑥 和 𝑤 的线性组合组成的净输入。
分类由激活函数phi : 𝜙 (𝑧) 定义,阈值theta : 𝜃 对应于所谓的偏差,我们稍后会看到。
激活函数以某种方式定义了传入元素的分类方式。
如果神经元激活,也就是说,如果z ≥ 𝜃,则当前输入将被分配为 1 类,否则为 -1。
这种函数称为Heaviside 阶跃函数。
在上面,theta 等于 0。通过更改此值,我们将曲线向左或向右移动。
回顾一下,既然我们已经添加了 theta,净输入 z 的方程式会发生一点变化。
我们现在有:
你现在知道感知器的数学定义了。
这是等效的图形:
训练感知器
但是你如何训练一个感知器呢?
以下是训练步骤:
1.将权重初始化为 0(或一个小的随机数)
2.对于每个训练样例x⁽ⁱ⁾:
- 计算估计输出ŷ⁽ⁱ⁾
- 更新权重
更新向量w的每个权重
完成如下:
我们引入eta的地方:𝜂, 学习率(在 0.0 和 1.0 之间)。
根据您是否熟悉这些符号,您可能难以想象感知器是如何训练的。
例子
为了简单起见,让我们假设学习率等于 1 并且我们知道以下值。
我们认为数据集中只有一个特征来简化计算。下面是一些在感知器中计算第一个权重的 delta 的例子。
你可以看到激活函数给出的估计输出值被系统地从实际输出值中减去。
当估计值与真实值相同时,它等于0,所以没有更新。
否则,必须更新权重。
最后两个例子就是这种情况。我们可以注意到输入 𝑥 的值尺度使权重更新或多或少变化。
在示例 3 中,𝑥 = 3,因此权重差异为 6,而在示例 4 中,𝑥 = 0.5,因此权重差异仅为 1。
误差
早些时候,我故意跳过了对误差的解释,以免给您带来过多的信息。如上所述,偏差是一个标量值,在通过激活函数之前添加到净输入 z 。它允许感知器的决策边界从原点移开,这在数据不可线性分离的情况下很有用。
偏差是感知器的附加值,它有自己的权重。这个权重也在学习阶段学习。
学习率
学习率是一个标量值,它控制训练过程中权重更新的步长。根据其值,当存在预测错误时或多或少地修改权重。它的值是在训练过程之前定义的。所以,你必须小心,因为它的值在整个训练过程中保持不变。如果将其值设置得太高,感知器可能会超出最佳解决方案,并且可能无法收敛到一个好的解决方案。也就是说,它会在权重空间中采取较大的步长,这可能会导致越过最佳点并最终进入权重空间中比最优解更差的区域。
此外,如果将其值设置得太低,感知器会收敛得太慢,并且可能需要很长时间来训练它。此外,它可能会陷入局部最小值而无法找到全局最小值。
学习率的最佳值取决于许多因素。在训练期间尝试不同的值以找到提供最佳性能的值是很常见的。