当前位置:首页 » 操作系统 » 单层感知器算法

单层感知器算法

发布时间: 2024-11-17 02:30:06

‘壹’ 为什么感知器选择正负一作为分类的输出,而不是1,2或5,-5

感知启没器学习算法是神羡清经网络中的一个概念,单层感知器是最简单的神经网络,输入层和输出层直接相连。

每一个输入端和其上的权值相乘,然后将这些乘积相加得到乘积和,这个结果与阈值相比较(一般为0),若大于阈值输出端就取1,反之,输出端取-1。

2、权值更新
初始权重向量W=[0,0,0],更新公式W(i)=W(i)+ΔW(i);ΔW(i)=η*(y-y’)*X(i);
η:学习率,介于[0,1]之间
y:输入样本的正确分类
y’:感知器计算出来的分类
通过上面公式不断更新权值,直到达到分类要求。

3、算法步骤

初始化权重向量W,与输入向量做点乘悄派纳,将结果与阈值作比较,得到分类结果1或-1。

‘贰’ 一知机是什么意思

一知机是人工智能领域的一种基础神经网络模型,也称为单层感知器。它由一个输入层和一个输出层组成,输入层接受外部输入信号,经过输出层的处理后,得到一个输出信号。初始时,一知机的权值是通过梯度下降算法自动调整的,通过不断的训练,可以使一知机模型逐渐适应不同的输入信号,实现分类和预测等任务。
一知机的应用范围非常广泛,可以用于图像分类、数据挖掘、语音识别、自然语言处理和推荐系统等多个领域。近年来,随着深度学习技术的快速发展,一知机已经成为人工智能领域的一种基础算法模型,并被广泛应用于各个领域和行业。
未来,一知机仍然会在人工智能领域发挥重要作用。目前,由于一知机只能处理线性可分问题,在处理非线性问题时,效率和准确性都较低,因此研究者们正在探索新的一知机模型,以使其能够更好地适应不同问题的处理。同时,一知机的加速算法和分布式计算也是未来研究的方向之一,这将使得一知机在大数据、云计算等领域发挥更大作用。

‘叁’ 关于神经网络 需要学习python的哪些知识

多读文档 应该是库 库也是python基础编写的 多读多看

‘肆’ 神经网络算法

20 世纪五、六⼗年代,科学家 Frank Rosenblatt其受到 Warren McCulloch 和 Walter Pitts早期的⼯作的影响,发明了感知机(Perceptrons)。

⼀个感知器接受⼏个⼆进制输⼊, ,并产⽣⼀个⼆进制输出:

如上图所示的感知机有三个输⼊: 。通常可以有更多或更少输⼊。 我们再引⼊权重: ,衡量输入对输出的重要性。感知机的输出为0 或者 1,则由分配权重后的总和 ⼩于等于或者⼤于阈值决定。和权重⼀样,阈值(threshold)是⼀个实数,⼀个神经元的参数。⽤更精确的代数形式如下:

给三个因素设置权重来作出决定:

可以把这三个因素对应地⽤⼆进制变量 来表⽰。例如,如果天⽓好,我们把

,如果不好, 。类似地,如果你的朋友陪你去, ,否则 。 也类似。

这三个对于可能对你来说,“电影好不好看”对你来说最重要,而天气显得不是那么的重要。所以你会这样分配权值: ,然后定义阈值threshold=5。

现在,你可以使⽤感知器来给这种决策建⽴数学模型。

例如:

随着权重和阈值的变化,你可以得到不同的决策模型。很明显,感知机不是⼈做出决策使⽤的全部模型。但是这个例⼦说明了⼀个感知机如何能权衡不同的依据来决策。这看上去也可以⼤致解释⼀个感知机⽹络有时确实能够做出一些不错的决定。

现在我们队上面的结构做一点变化,令b=-threshold,即把阈值移到不等号左边,变成偏置, 那么感知器的规则可以重写为:

引⼊偏置只是我们描述感知器的⼀个很⼩的变动,但是我们后⾯会看到它引导更进⼀步的符号简化。因此,我们不再⽤阈值,⽽总是使⽤偏置。

感知机是首个可以学习的人工神经网络,它的出现引起的神经网络的第一层高潮。需要指出的是,感知机只能做简单的线性分类任务,而且Minsky在1969年出版的《Perceptron》书中,证明了感知机对XOR(异或)这样的问题都无法解决。但是感知机的提出,对神经网络的发展是具有重要意义的。

通过上面的感知机的观察我们发现一个问题,每个感知机的输出只有0和1,这就意味着有时我们只是在单个感知机上稍微修改了一点点权值w或者偏置b,就可能造成最终输出完全的反转。也就是说,感知机的输出是一个阶跃函数。如下图所示,在0附近的时候,输出的变化是非常明显的,而在远离0的地方,我们可能调整好久参数也不会发生输出的变化。

这样阶跃的跳变并不是我们想要的,我们需要的是当我们队权值w或者偏置b做出微小的调整后,输出也相应的发生微小的改变。这同时也意味值我们的输出不再只是0和1,还可以输出小数。由此我们引入了S型神经元。

S型神经元使用 S 型函数,也叫Sigmoid function函数,我们用它作为激活函数。其表达式如下:

图像如下图所示:

利⽤实际的 σ 函数,我们得到⼀个,就像上⾯说明的,平滑的感知器。 σ 函数的平滑特性,正是关键因素,⽽不是其细部形式。 σ 的平滑意味着权重和偏置的微⼩变化,即 ∆w 和 ∆b,会从神经元产⽣⼀个微⼩的输出变化 ∆output。实际上,微积分告诉我们

∆output 可以很好地近似表⽰为:

上面的式子是⼀个反映权重、偏置变化和输出变化的线性函数。这⼀线性使得我们可以通过选择权重和偏置的微⼩变化来达到输出的微⼩变化。所以当 S 型神经元和感知器本质上是相同的,但S型神经元在计算处理如何变化权重和偏置来使输出变化的时候会更加容易。

有了对S型神经元的了解,我们就可以介绍神经网络的基本结构了。具体如下:

在⽹络中最左边的称为输⼊层,其中的神经元称为输⼊神经元。最右边的,即输出层包含有输出神经元,在图中,输出层只有⼀个神经元。中间层,既然这层中的神经元既不是输⼊也不是输出,则被称为隐藏层。

这就是神经网络的基本结构,随着后面的发展神经网络的层数也随之不断增加和复杂。

我们回顾一下神经网络发展的历程。神经网络的发展历史曲折荡漾,既有被人捧上天的时刻,也有摔落在街头无人问津的时段,中间经历了数次大起大落。

从单层神经网络(感知机)开始,到包含一个隐藏层的两层神经网络,再到多层的深度神经网络,一共有三次兴起过程。详见下图。

我们希望有⼀个算法,能让我们找到权重和偏置,以⾄于⽹络的输出 y(x) 能够拟合所有的 训练输⼊ x。为了量化我们如何实现这个⽬标,我们定义⼀个代价函数:

这⾥ w 表⽰所有的⽹络中权重的集合, b 是所有的偏置, n 是训练输⼊数据的个数,
a 是表⽰当输⼊为 x 时输出的向量,求和则是在总的训练输⼊ x 上进⾏的。当然,输出 a 取决于 x, w和 b,但是为了保持符号的简洁性,我没有明确地指出这种依赖关系。符号 ∥v∥ 是指向量 v 的模。我们把 C 称为⼆次代价函数;有时也称被称为均⽅误差或者 MSE。观察⼆次代价函数的形式我们可以看到 C(w, b) 是⾮负的,因为求和公式中的每⼀项都是⾮负的。此外,代价函数 C(w,b)的值相当⼩,即 C(w; b) ≈ 0,精确地说,是当对于所有的训练输⼊ x, y(x) 接近于输出 a 时。因

此如果我们的学习算法能找到合适的权重和偏置,使得 C(w; b) ≈ 0,它就能很好地⼯作。相反,当 C(w; b) 很⼤时就不怎么好了,那意味着对于⼤量地输⼊, y(x) 与输出 a 相差很⼤。因此我们的训练算法的⽬的,是最⼩化权重和偏置的代价函数 C(w; b)。换句话说,我们想要找到⼀系列能让代价尽可能⼩的权重和偏置。我们将采⽤称为梯度下降的算法来达到这个⽬的。

下面我们将代价函数简化为C(v)。它可以是任意的多元实值函数, 。
注意我们⽤ v 代替了 w 和 b 以强调它可能是任意的函数,我们现在先不局限于神经⽹络的环境。

为了使问题更加简单我们先考虑两个变量的情况,想象 C 是⼀个只有两个变量 和 的函数,我们的目的是找到 和 使得C最小。

如上图所示,我们的目的就是找到局部最小值。对于这样的一个问题,一种方法就是通过微积分的方法来解决,我们可以通过计算导数来求解C的极值点。但是对于神经网络来说,我们往往面对的是非常道的权值和偏置,也就是说v的维数不只是两维,有可能是亿万维的。对于一个高维的函数C(v)求导数几乎是不可能的。

在这种情况下,有人提出了一个有趣的算法。想象一下一个小球从山顶滚下山谷的过程, 我们的⽇常经验告诉我们这个球最终会滚到⾕底。我们先暂时忽略相关的物理定理, 对球体的⾁眼观察是为了激发我们的想象⽽不是束缚我们的思维。因此与其陷进物理学⾥凌乱的细节,不如我们就这样问⾃⼰:如果我们扮演⼀天的上帝,能够构造⾃⼰的物理定律,能够⽀配球体可以如何滚动,那么我们将会采取什么样的运动学定律来让球体能够总是滚落到⾕底呢?

为了更精确地描述这个问题,让我们思考⼀下,当我们在 和 ⽅向分别将球体移动⼀个很⼩的量,即 ∆ 和 ∆ 时,球体将会发⽣什么情况。微积分告诉我们 C 将会有如下变化:

也可以用向量表示为

现在我们的问题就转换为不断寻找一个小于0的∆C,使得C+∆C不断变小。

假设我们选取:

这⾥的 η 是个很⼩的正数(称为学习速率),于是

由于 ∥∇C∥2 ≥ 0,这保证了 ∆C ≤ 0,即,如果我们按照上述⽅程的规则去改变 v,那么 C
会⼀直减⼩,不会增加。

所以我们可以通过不断改变v来C的值不断下降,是小球滚到最低点。

总结⼀下,梯度下降算法⼯作的⽅式就是重复计算梯度 ∇C,然后沿着相反的⽅向移动,沿着⼭⾕“滚落”。我们可以想象它像这样:

为了使梯度下降能够正确地运⾏,我们需要选择合适的学习速率η,确保C不断减少,直到找到最小值。

知道了两个变量的函数 C 的梯度下降方法,我们可以很容易的把它推广到多维。我们假设 C 是⼀个有 m 个变量 的多元函数。 ∆C 将会变为:

其中, ∇C为

∆v为:

更新规则为:

在回到神经网络中,w和b的更新规则为:

前面提到神经⽹络如何使⽤梯度下降算法来学习他们⾃⾝的权重和偏置。但是,这⾥还留下了⼀个问题:我们并没有讨论如何计算代价函数的梯度。这里就需要用到一个非常重要的算法:反向传播算法(backpropagation)。

反向传播算法的启示是数学中的链式法则。

四个方程:

输出层误差方程:

当前层误差方程:

误差方程关于偏置的关系:

误差方程关于权值的关系

算法描述:

检视这个算法,你可以看到为何它被称作反向传播。我们从最后⼀层开始向后计算误差向量δ。这看起来有点奇怪,为何要从后⾯开始。但是如果你认真思考反向传播的证明,这种反向移动其实是代价函数是⽹络输出的函数的结果。为了理解代价随前⾯层的权重和偏置变化的规律,我们需要重复作⽤链式法则,反向地获得需要的表达式。

参考链接: http://neuralnetworksanddeeplearning.com/

‘伍’ 神经网络NN算法(理论篇)

揭开神经网络NN算法的神秘面纱:理论篇

神经网络,作为机器学习的核心算法,是深度学习的基石,它深刻地改变了我们理解复杂问题的方式。深入理解神经网络的工作原理,将为后续学习打下坚实的理论基础。

历史的脉络

追溯至1904年,生物学家揭示了神经元的结构,为神经网络的诞生提供了最初的灵感。1943年,心理学家McCulloch和数学家Pitts构建了抽象的神经元模型MP,这标志着理论研究的开端。Hebb学习率的提出,使得计算科学家们开始探索如何通过调整权重让机器学习,为后续算法发展奠定了基础。1958年,Rosenblatt的感知器(Perceptron)诞生,这是一个只有两层神经元的模型,而1986年反向传播(BP)的提出,更是神经网络发展史上的里程碑。

构建与结构

神经网络由输入层、隐藏层和输出层组成,每个层次由一个个单元(unit)串联。输入层接收训练数据的特征向量,通过权重传递到下一层,层层传递直至输出。值得注意的是,隐藏层数量可灵活调整,深度神经网络的潜力在于其无限的可能性。

从单层感知器到多层网络,输入与权重的乘积经过非线性激活函数,形成复杂的数据处理能力。随着层次的增加,神经网络的表达能力逐渐增强,理论上,足够的深度和训练数据能模拟任何函数。

设计与实践

设计神经网络时,首先要决定网络的层数和每层的单元数。输入前,特征向量通常需要标准化以优化学习过程。对于分类问题,输出单元数量等于类别数;而对于回归,输出层则表示连续值。隐藏层数的选择通常需要通过实验和性能评估来优化。

交叉验证与训练

评估模型性能,除了常见的训练集与测试集划分,交叉验证是一种更为严谨的方法。通过将数据集划分为多个子集,轮流作为训练和测试集,平均各部分的准确度,以找到最佳网络结构。

BP算法的核心

BP算法的核心在于反向传播误差,通过调整权重来减小预测值与真实值之间的差距。初始化权重和偏置后,对于每个训练实例,算法从输出层开始,逆向更新权重,直至输入层,直至误差达到可接受范围。

训练的终点

训练完成的标志是权重更新趋近于零,误差率满足预设阈值,或者达到预设的训练轮数。通过这些条件,神经网络得以在实践中发挥其预测和学习的效能。

实例演示

让我们通过一个具体的两层神经网络实例,展示BP算法的工作过程,包括计算误差,权重更新,直至达到训练的终止条件。

热点内容
php函数和方法 发布:2024-11-17 04:27:16 浏览:129
我的世界怎么设置服务器阵容 发布:2024-11-17 04:26:32 浏览:281
数控编程简单点的图片 发布:2024-11-17 04:16:57 浏览:445
相机存储卡32 发布:2024-11-17 04:13:50 浏览:419
ftp452 发布:2024-11-17 04:05:12 浏览:784
传智解压密码 发布:2024-11-17 04:04:04 浏览:582
如何改电脑路由器密码 发布:2024-11-17 03:55:49 浏览:520
android浏览器打开 发布:2024-11-17 03:54:40 浏览:321
自己制作手游脚本 发布:2024-11-17 03:45:12 浏览:416
sql数据库ip地址 发布:2024-11-17 03:45:12 浏览:699