你能构建的最小大脑:Python中的感知机
感知机是你能构建的最小大脑。一个数字输入,一个是或否的答案输出。这就是全部。听起来太简单了,以至于不重要。但这个微小的想法是如今每个神经网络的种子。在这篇文章中,我们将在Python中从头开始构建一个感知机,并让它在你的浏览器中实时学习。没有复杂的数学,没有大型库。只有一个权重,一个偏差和一个循环。我不是以英语为母语的人,我自己也还在学习这个领域。因此,我将用我需要别人跟我解释的方式来解释它。慢慢来,从基础开始。什么是感知机?1958年,一位名叫Frank Rosenblatt的研究者构建了一个他称之为感知机的机器。它的灵感来自于一个单一的脑细胞,一个神经元。神经元接收信号,如果这些信号足够强,它就会发射。Rosenblatt在数学上复制了这个想法:输出=1,如果(w·x + b)>0;否则为0。在这里,x是输入,w是权重,b是偏差。你现在不需要担心这些词。我们将在构建一个真实的东西时逐个遇到它们。先像人类一样思考在机器决定任何事情之前,让我们观察一个人类的决定。认识一下John Doe。他有一个工作邀请,他必须回答一个问题:他应该接受吗?John不掷硬币。他权衡各种因素。有些因素对他来说比其他因素更重要。因素(输入) 价值 John关心的程度(权重)额外工资 高 很关心留在同一个城市 不,他必须搬家 很关心John将每个因素乘以他关心的程度,然后将所有加在一起。如果总和足够高,他会说是。如果不够,他会说不。这就是一个感知机。因素是输入。他关心的程度是权重。而“足够高”是他脑海中存有的一个阈值。记住这个阈值。稍后我们将给它起个名字:偏差。感知机如同神经元一样绘制两个输入,工资和同城,分别乘以一个权重,然后加上偏差,转化成一个是或否的单一输出。w₁w₂ + b 工资 同城 Σ接受这个邀请吗?是 / 否 John Doe如何决定:每个输入乘以权重,结果与偏差相加,最后得出一个是或否的答案。最简单的决策:这个数字是正数吗?让我们把问题缩小到几乎没有东西。一个输入。一个问题。这个数字是正数吗?就是这样。给机器一个数字。它应该对于正数回答True,对于负数回答False。机器的猜测方式是:预测 =(权重 * 价值 + 偏差)> 0 将输入乘以权重,加上偏差,检查结果是否大于零。如果是,它预测为True。如果不是,它预测为False。这个小公式就是分类器,也称为决策函数。起初,权重和偏差只是随机数字。所以机器的猜测是错误的。现在来了唯一的聪明之处:它从错误中学习。如果预测 != 结果:错误 = 结果 - 预测 # True - False = 1, False - True = -1 权重 += 学习率 * 错误 * 价值 偏差 += 学习率 * 错误 当猜测错误时,我们在正确方向上调整权重和偏差。错误告诉我们该如何调整。学习率决定了每次调整的大小。我们对每个例子都这样做,然后再次重复整个过程。对数据的完整遍历称为一次迭代。重复迭代是训练。这里就是那个确切的机器。按下训练按钮,观察它如何学习。每个绿色点是一个正数(True),每个红色点是负数(False),而蓝色虚线是它决定分隔它们的地方。迭代 0 权重 0 偏差 0 边界 - 准确率 0% 它几乎立即就定位到位。看看读数:边界刚好落在0附近,偏差也接近0。这并不是偶然。对于这个问题,我们完全不需要偏差。这很奇怪,因为偏差应该是重要的。要看看它为什么重要,我们需要一个更难的问题。什么是决策边界?那条蓝线有一个名字:决策边界。它是机器从说False到说True的确切点。我们可以计算它。边界位于w·x + b = 0的地方。解出x:决策边界 = -偏差 / 权重 对于“这个数字是正数”,边界应该在0处。而它确实在。现在看看当正确答案不在零时会发生什么。我们为什么需要偏差?学生及格的例子新问题。相同的机器。我们给它从0到100的考试分数,并问:学生及格了吗?规则很简单:分数50或更高则及格。所以决策边界应该在50,而不是在0。让我们尝试用上次的方法解决它,仅使用权重。在下面的演示中,关闭“使用偏差”,然后点击训练。迭代 0 权重 0 偏差 0 边界 - 准确率 0% 使用偏差观察准确率。它爬升到大约50%,然后卡住。无论你训练多久,它都无法做得更好。这就是为什么。没有偏差,这个公式就是权重 * 分数。每个考试分数都是一个正数。所以如果权重是正的,机器就会把每个学生都叫做通过。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡