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

文章目录

  • 引言
  • 第一章:感知机是什么
  • 第二章:简单逻辑电路
  • 第三章:感知机的实现
    • 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.hqwc.cn/news/671000.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ESG视角下的多期DID构建(2009-2022年)4.5万+数据

随着ESG信息越来越受到重视&#xff0c;一些第三方评级机构开始推出ESG评级产品&#xff0c;目前在第三方数据库能够查到华证、富时罗素、商道融绿、社会价值投资联盟以及Wind自有的ESG评级数据等。其中&#xff0c;商道融绿是中国最早发布ESG评级数据的机构&#xff0c;也是国…

【Linux 基础 IO】文件系统

文章目录 1.初步理解文件2. fopen ( )的详解 1.初步理解文件 &#x1f427;① 打开文件&#xff1a; 本质是进程打开文件&#xff1b; &#x1f427;②文件没有被打开的时候在哪里呢&#xff1f; ----- 在磁盘中&#xff1b; &#x1f427;③进程可以打开很多个文件吗&#xff…

Vue入门到关门之Vue3项目创建

一、vue3介绍 1、为什么要学习vue3&#xff1f; vue3的变化&#xff1a; 首先vue3完全兼容vue2&#xff0c;但是vue3不建议用vue2的写法&#xff1b;其次&#xff0c;vue3拥抱TypeScript&#xff0c;之前vue2使用的JavaScript&#xff0c;ts完全兼容js 最后之前学的vue2 是…

【Linux】操作系统

上一篇博客我们从硬件的角度谈了计算机&#xff0c;我们说到了计算机的效率跟操作系统写的好不好有着直接的关系&#xff0c;那么这篇博客我们从软件的角度&#xff0c;就来谈一谈究竟什么是操作系统&#xff0c;为什么要有操作系统&#xff1f; 首先我们来大体的认识一下操作…

智慧工地)智慧工地标准化方案(107页)

2.2 设计思路 对于某某智慧工地管理系统的建设&#xff0c;绝不是对各个子系统进行简单堆砌&#xff0c;而是在满足各子系统功能的基础上&#xff0c;寻求内部各子系统之间、与外部其它智能化系统之间的完美结合。系统主要依托于智慧工地管理平台&#xff0c;来实现对众多子系统…

27-代码随想录三数之和

15. 三数之和 中等 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重…

Java基础教程 - 4 流程控制

更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; 更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; 更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; 4 流程控制 4.1 分支结构…

从零开始学RSA: [WUSTCTF2020]情书等5题

1 [WUSTCTF2020]情书 题目 Premise: Enumerate the alphabet by 0、1、2、..... 、25 Using the RSA system Encryption:0156 0821 1616 0041 0140 2130 1616 0793 Public Key:2537 and 13 Private Key:2537 and 937flag: wctf2020{Decryption}解题 前提&#xff1a;用0、…

Labels and Databases for Mac:强大的标签与数据库管理工具

Labels and Databases for Mac是一款集标签制作与数据库管理于一体的强大工具&#xff0c;专为Mac用户打造&#xff0c;旨在提供高效、便捷的标签制作与数据管理体验。 这款软件拥有丰富的内置标签格式&#xff0c;用户可轻松创建各种标签、信封和卡片&#xff0c;满足个性化需…

数塔问题(蛮力算法和动态规划)

题目&#xff1a;如下图是一个数塔&#xff0c;从顶部出发在每一个节点可以选择向左或者向右走&#xff0c;一直走到底层&#xff0c;要求找出一条路径&#xff0c;使得路径上的数字之和最大&#xff0c;及路径情况。(使用蛮力算法和动态规划算法分别实现&#xff09; #include…

【搜索技能】外链

文章目录 前言一、外链是什么&#xff1f;二、如何进行外链调查&#xff1f;总结 前言 今儿因为在搜索一个很感兴趣的软件&#xff0c;但是软件信息所在的网址非常有限。因此产生了一个念头&#xff1a;我能不能找到所有的包含了或者是引用了这个网站的网站呢? 调查之下&…

C语言动态内存管理malloc、calloc、realloc、free函数、内存泄漏、动态内存开辟的位置等的介绍

文章目录 前言一、为什么存在动态内存管理二、动态内存函数的介绍1. malloc函数2. 内存泄漏3. 动态内存开辟位置4. free函数5. calloc 函数6. realloc 函数7. realloc 传空指针 总结 前言 C语言动态内存管理malloc、calloc、realloc、free函数、内存泄漏、动态内存开辟的位置等…