神经网络入门:感知器 课前测验 在1957年,康奈尔航空实验室的弗兰克·罗森布拉特(Frank Rosenblatt)尝试实现了一种类似现代神经网络的东西。这是一种称为“Mark-1”的硬件实现,旨在识别简单的几何图形,如三角形、正方形和圆形。 | https://www.aiknowledge.cn/images/初学者的AI课程/MarkIperceptronwikipedia.webp 图片来源:维基百科 输入图像是由20x20的光电管阵列表示的,因此神经网络有400个输入和一个二进制输出。一个简单的网络包含一个神经元,也被称为“阈值逻辑单元”。神经网络的权重像电位计一样,在训练阶段需要手动调整。 ✅ 电位计是一种允许用户调整电路电阻的装置。
在1957年,康奈尔航空实验室的弗兰克·罗森布拉特(Frank Rosenblatt)尝试实现了一种类似现代神经网络的东西。这是一种称为“Mark-1”的硬件实现,旨在识别简单的几何图形,如三角形、正方形和圆形。
| https://www.aiknowledge.cn/images/初学者的AI课程/Mark_I_perceptron_wikipedia.webp |
图片来源:维基百科
输入图像是由20x20的光电管阵列表示的,因此神经网络有400个输入和一个二进制输出。一个简单的网络包含一个神经元,也被称为“阈值逻辑单元”。神经网络的权重像电位计一样,在训练阶段需要手动调整。
✅ 电位计是一种允许用户调整电路电阻的装置。
当时,《纽约时报》曾报道过感知器:“海军期望它能走路、说话、看东西、写字、自我复制,并意识到自己的存在。”
假设我们的模型中有N个特征,那么输入向量将是大小为N的向量。感知器是一个二分类模型,即它可以区分两种类别的输入数据。我们将假设对于每个输入向量x,感知器的输出将是+1或-1,这取决于类别。输出将使用以下公式计算:
y(x) = f(wTx)
其中f是一个阶跃激活函数
要训练一个感知器,我们需要找到一个权重向量w,使得大多数值被正确分类,即最小化误差。这个误差E通过感知器准则定义如下:
E(w) = -∑wTxiti
其中:
这个标准被视为权重w的函数,我们需要最小化它。通常,使用一种称为梯度下降的方法,我们从初始权重w(0)开始,在每一步根据以下公式更新权重:
w(t+1) = w(t) - η∇E(w)
这里,η是所谓的学习率,∇E(w)表示E的梯度。计算出梯度后,我们得到:
w(t+1) = w(t) + ∑ηxiti
在Python中的算法看起来像这样:
def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): weights = [0,0,0] # Initialize weights (almost randomly :) for i in range(num_iterations): pos = random.choice(positive_examples) neg = random.choice(negative_examples) z = np.dot(pos, weights) # compute perceptron output if z < 0: # positive example classified as negative weights = weights + eta*weights.shape z = np.dot(neg, weights) if z >= 0: # negative example classified as positive weights = weights - eta*weights.shape return weights
在这节课中,你了解了一个感知器,这是一个二分类模型,以及如何通过使用权重向量来训练它。
如果你想尝试构建自己的感知器,请尝试微软学习上的这个实验,该实验使用了Azure ML设计师。
为了看到我们如何使用感知器解决玩具问题和实际问题,并继续学习,请查看感知器笔记本。
这里有一篇关于感知器的有趣文章:感知器是什么?神经网络的基础。
在这节课中,我们实现了用于二分类任务的感知器,并用它来区分两个手写数字。在这个实验中,你需要完全解决数字分类的问题,即确定给定图像最有可能对应的数字。
声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。