从简单逻辑到复杂计算:感知机的进化与其在现代深度学习和人工智能中的应用(上)

news/2024/11/16 13:43:04/

文章目录

  • 引言
  • 第一章:感知机是什么
  • 第二章:简单逻辑电路
  • 第三章:感知机的实现
    • 3.1 简单的与门实现
    • 3.2 导入权重和偏置
    • 3.3 使用权重和偏置的实现
      • 实现与门
      • 实现与非门和或门

文章文上下两节

  • 从简单逻辑到复杂计算:感知机的进化与其在现代深度学习和人工智能中的应用(上)
  • 从简单逻辑到复杂计算:感知机的进化与其在现代深度学习和人工智能中的应用(下)

引言

在本章中,我们将深入探讨感知机,这是一个由美国学者Frank Rosenblatt于1957年提出的算法。尽管感知机的概念历史悠久,但它仍然在现代计算和机器学习领域占据着基础性的重要地位。感知机不仅是神经网络深度学习的原型,而且其设计原理和运作机制为理解更复杂的神经网络模型提供了关键的基础。通过介绍感知机的基本构造和功能,以及如何利用它来解决一些简单的逻辑问题,帮助读者建立对这一经典算法的初步理解。通过学习感知机,我们可以更好地洞察神经网络的核心思想和深度学习的基础结构,为进一步的学习和研究奠定坚实的基础。

第一章:感知机是什么

感知机是一种基本的人工神经网络,被设计成能模拟人类神经元的基本功能。它接收多个输入信号,这些信号可以被想象为具有"流动性"的东西,如电流或数据流。在感知机中,这些输入信号经过加权后,如果加权和超过了某个阈值,则输出一个信号。这种输出通常是二进制的,即"流/不流"(1/0)的形式。

下图展示了一个包含两个输入的基本感知机模型。输入 x 1 x_1 x1 x 2 x_2 x2 通过各自的权重 w 1 w_1 w1 w 2 w_2 w2 与输出 y y y 相连。这些权重决定了各自输入对输出的贡献。在感知机中,这些输入信号被加权和计算,并与一个固定的阈值 θ \theta θ 比较,这个比较的结果决定输出 y y y 的状态。

在这里插入图片描述

感知机的行为可以通过以下数学公式来表示:
y = { 0 if  ( w 1 x 1 + w 2 x 2 ≤ θ ) 1 if  ( w 1 x 1 + w 2 x 2 > θ ) y = \begin{cases} 0 & \text{if } (w_1 x_1 + w_2 x_2 \leq \theta) \\ 1 & \text{if } (w_1 x_1 + w_2 x_2 > \theta) \end{cases} y={01if (w1x1+w2x2θ)if (w1x1+w2x2>θ)
在这个模型中,权重 w 1 w_1 w1 w 2 w_2 w2 控制着输入信号的重要性,而阈值 θ \theta θ 则是决定神经元是否被激活的界限。权重的作用类似于电流中的电阻,它们不仅控制信号的强度,还影响信号是否足以触发输出。这种机制使得感知机能够在给定的输入下做出二进制决策。

第二章:简单逻辑电路

在本章中,我们将探讨如何使用感知机来实现几种基本的逻辑电路:与门(AND gate)、与非门(NAND gate)和或门(OR gate)。这些逻辑电路是数字电子中的基本组件,感知机通过简单的权重和阈值调整,能够模拟这些逻辑操作。

与门

与门是一种基本的逻辑电路,要求所有输入都为1时,输出才为1。

在这里插入图片描述

考虑一个简单的感知机模型,我们可以通过设置适当的权重和阈值来实现与门的功能。例如,设定权重 w 1 w_1 w1 w 2 w_2 w2 为0.5,并设置阈值 θ \theta θ 为0.7。在这种情况下,只有当两个输入 x 1 x_1 x1 x 2 x_2 x2 同时为1时,加权和 0.5 × 1 + 0.5 × 1 = 1.0 0.5 \times 1 + 0.5 \times 1 = 1.0 0.5×1+0.5×1=1.0 才会超过阈值0.7,从而输出1。对于其他任何输入组合,输出将为0。

与非门

与非门(NAND gate)是与门的逻辑相反:只有当所有输入都为1时,输出才为0;其他情况下输出为1。通过简单地取反与门的参数设置,我们可以实现与非门。

在这里插入图片描述

例如,将与门参数的符号取反,设置 w 1 w_1 w1 w 2 w_2 w2 为-0.5,阈值 θ \theta θ 为-0.7。这样,只有当两个输入 x 1 x_1 x1 x 2 x_2 x2 同时为1,加权和 − 0.5 × 1 − 0.5 × 1 = − 1.0 -0.5 \times 1 - 0.5 \times 1 = -1.0 0.5×10.5×1=1.0 才不超过阈值-0.7,输出为0。在所有其他情况下,输出为1。

或门

或门是另一种基本逻辑电路,要求至少一个输入为1时,输出就为1。

在这里插入图片描述

为了使用感知机实现或门,可以设置较低的阈值,例如 θ \theta θ 为0.5,同时提高权重 w 1 w_1 w1 w 2 w_2 w2 至1.0。这样,任何一个输入为1就足以使加权和超过阈值,从而输出为1。

总结

通过适当设置权重和阈值,单个感知机就能模拟基本的逻辑电路功能。这表明感知机不仅仅是一个简单的分类器,还能执行基本的逻辑运算。这种能力使得感知机成为研究人工智能和计算机科学中逻辑处理的有用工具。我们使用的方法展示了如何通过调整参数,让简单的模型执行多种逻辑任务,类似于演员在不同角色间转换。这种灵活性是感知机在实现复杂功能时的重要基础。

第三章:感知机的实现

下面使用Python来实现基本的逻辑门感知机,从而进一步理解感知机的工作原理。我们将首先实现一个简单的与门(AND gate),然后扩展到与非门(NAND gate)和或门(OR gate),展示如何通过修改参数来调整感知机的行为。

3.1 简单的与门实现

让我们开始实现一个基本的与门。我们将定义一个接收两个参数x1和x2的函数,并使用固定的权重和阈值来判断输出:

def AND(x1, x2):w1, w2, theta = 0.5, 0.5, 0.7tmp = x1 * w1 + x2 * w2if tmp <= theta:return 0else:return 1

这个函数使用了简单的条件判断来模拟感知机的阈值激活特性。下面是测试这个函数的代码,用以确认其表现符合与门的真值表:

print(AND(0, 0))  # 输出 0
print(AND(1, 0))  # 输出 0
print(AND(0, 1))  # 输出 0
print(AND(1, 1))  # 输出 1

3.2 导入权重和偏置

在之前的实现中,我们使用了阈值 θ \theta θ 来控制感知机的激活。为了更接近现代神经网络的实现方式,我们将修改感知机的定义,使用偏置 b b b 替代阈值,从而采用更通用的形式。这种修改不仅有助于理解感知机的行为,还能更好地与其他机器学习模型进行对比。

将原来的阈值 θ \theta θ 转换为偏置 b b b感知机的行为可以用下面的数学公式表示:
y = { 0 if  ( b + w 1 x 1 + w 2 x 2 ≤ 0 ) 1 if  ( b + w 1 x 1 + w 2 x 2 > 0 ) y = \begin{cases} 0 & \text{if } (b + w_1 x_1 + w_2 x_2 \leq 0) \\ 1 & \text{if } (b + w_1 x_1 + w_2 x_2 > 0) \end{cases} y={01if (b+w1x1+w2x20)if (b+w1x1+w2x2>0)
此处, b b b 称为偏置,而 w 1 w_1 w1 w 2 w_2 w2 继续作为权重。感知机将计算输入信号和权重的乘积和,加上偏置后,根据结果是否大于零来确定输出。

接下来,我们将使用 Python 和 NumPy 库来实现这一修改后的感知机模型。首先,我们定义感知机的权重和偏置,然后使用这些参数计算输出:

import numpy as np# 定义输入
x = np.array([0, 1])# 权重和偏置
w = np.array([0.5, 0.5])
b = -0.7# 计算加权输入和偏置的总和
weighted_sum = np.sum(w * x) + b# 输出结果 -0.2
print("Output:", 1 if weighted_sum > 0 else 0)

在这个例子中,我们首先将权重与输入相乘,然后加上偏置。这个总和决定了感知机的输出。

3.3 使用权重和偏置的实现

实现与门

与门要求所有输入都为1时,输出才为1。通过调整权重和偏置,我们可以如下实现与门:

def AND(x1, x2):x = np.array([x1, x2])w = np.array([0.5, 0.5])b = -0.7tmp = np.sum(w * x) + bif tmp <= 0:return 0else:return 1

在这里,偏置 b b b 被设置为 − 0.7 -0.7 0.7,而权重 w 1 w_1 w1 w 2 w_2 w2 都是 0.5 0.5 0.5。这意味着只有当两个输入都为1时,感知机的输出才为1。偏置 b b b 和权重 w 1 w_1 w1, w 2 w_2 w2 的作用是不同的。权重控制输入信号的重要性,而偏置则调节神经元被激活的难易度。例如,如果 b b b − 0.1 -0.1 0.1,则相对较容易激活神经元;若 b b b − 20.0 -20.0 20.0,则需要更大的输入信号总和才能激活神经元。

实现与非门和或门

与非门和或门的实现也采用了类似的方法,只是权重和偏置有所不同:

def NAND(x1, x2):x = np.array([x1, x2])w = np.array([-0.5, -0.5])  # 权重与AND门相反b = 0.7tmp = np.sum(w * x) + bif tmp <= 0:return 0else:return 1def OR(x1, x2):x = np.array([x1, x2])w = np.array([0.5, 0.5])b = -0.2tmp = np.sum(w * x) + bif tmp <= 0:return 0else:return 1

在这些实现中,与门、与非门和或门的构造基本相同,区别仅在于权重和偏置的设置。这种方法展示了如何通过简单的参数调整,让感知机执行不同的逻辑功能。


下一节:从简单逻辑到复杂计算:感知机的进化与其在现代深度学习和人工智能中的应用(下)


http://www.ppmy.cn/news/1456094.html

相关文章

【Java】Stream流、方法引用(Java8)

Stream流 中间方法 distinct() 使用HashSet去重 终结方法 toArray() value 表示 流中数据的个数&#xff0c;要跟数组的长度保持一致。 collect() 收集到map中&#xff0c;比较复杂。需要指定 键 和 值 的生成规则。 方法引用 01_引用静态方法 ​ 引用类方法&#xff0c;其实…

leetcode---岛屿数量

. - 力扣&#xff08;LeetCode&#xff09; 代码&#xff1a; //岛屿题目的思想&#xff1a;二维矩阵图的DFS就是&#xff0c;上下左右遍历如果是0或者出界的话就return //规定的是陆地上下左右是水的话它就是岛屿。当遍历矩阵图中每一个点&#xff0c; //在调用递归算法之前…

互斥量理论基础

文章目录 一、互斥量理论基础 一、互斥量理论基础 在多任务系统中&#xff0c;任务A正在使用某个资源&#xff0c;还没用完的情况下任务B也来使用的话&#xff0c;就会出问题。这时就需要互斥量&#xff08;互斥锁&#xff09;&#xff0c;使用过程如下&#xff1a; 互斥量初始…

python操作minio中常见错误

因为我参考minio的文档操作&#xff0c;当时文档并不是很详细&#xff0c;这篇博文会统一记录自己所遇到的问题。以下的每个标题都是具体的错误信息。 minio-py文档 错误1:SSL: WRONG_VERSION_NUMBER 这个错误的原因是在创建minio的客户端时候没有关闭SSL&#xff0c;请使用如…

单目标问题的烟花优化算法求解matlab仿真,对比PSO和GA

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 单目标问题的FW烟花优化算法求解matlab仿真,对比PSO和GA。最后将FW&#xff0c;GA&#xff0c;PSO三种优化算法的优化收敛曲线进行对比。 2.测试软件版本以及运行…

自动驾驶主流芯片及平台架构(二)特斯拉自动驾驶芯片平台介绍

早期 对外采购mobileye EyeQ3 芯片摄像头半集成方案&#xff0c;主要是为了满足快速量产需求&#xff0c;且受制于研发资金不足限制&#xff1b; 中期 采用高算力NVIDIA 芯片平台其他摄像头供应商的特斯拉内部集成方案&#xff0c;mobileye开发节奏无法紧跟特斯拉需求&#xff…

【动态规划】数组中数字和为sum的方案个数

【动态规划】数组中数字和为sum的方案个数 给定一个有 n n n个正整数的数组 a 和一个正整数 s u m sum sum&#xff0c;求选择数组 a 中 部分数字和为 s u m sum sum的方案数。若两种选取方案有一个数字的下标不一样&#xff0c;则认为是不同的方案。 输入描述&#xff1a;…

计算机系列之数据库技术

13、数据库技术&#xff08;重点、考点&#xff09; 1、三级模式-两级映像&#xff08;考点&#xff09; 内模式&#xff1a;管理如何存储物理的数据&#xff0c;对应具体物理存储文件。 **模式&#xff1a;**又称为概念模式&#xff0c;就是我们通常使用的基本表&#xff0c…