感知机学习算法

news2024/10/9 22:22:32

感知机

  • 一、感知机简介
  • 二、感知机模型
    • 2.1 感知机的基本组成
    • 2.2 求和函数
      • 2.2.1 时间总合
      • 2.2.2 空间总合
    • 2.3 激活函数
    • 2.4 学习算法
      • 2.4.1 赫布学习规则
      • 2.4.2 Delta学习规则
  • 三、 结论
  • 参考文献

一、感知机简介

        M-P神经元模型因其对生物神经元激发过程的极大简化而成为神经网络研究的基础模型。然而,由于该模型仅支持二进制输入,并依赖于手动学习权重和偏置,因此在实际应用中,它的扩展性受到了限制,无法满足更复杂的学习任务。
        1949年,唐纳德 ⋅ \cdot 赫布在《行为的组织》中论述道,当神经元A的轴突足够接近并反复激发神经元B时,这两个神经元或其中一个神经元会发生某种生长过程或代谢变化,致使二者的关联性增强。在人工神经网络中,神经元之间的关联性由二者的连接权重表示。同步激发的两个神经元,二者的权重增加;反之,则权重减少。在人工神经网络的训练中利用该可塑性,可以在不使用外界监督的情况下,引导网络学习提取有用特征。
        受赫布规则的启发,康奈尔大学心理学教授弗兰克·罗森布拉特于1958年基于M-P神经元模型提出了感知机模型。该模型不仅能够处理离散和连续数据,还能够通过感知机学习算法自动调整权重,这对后来的神经网络发展产生了深远影响。以下是单层感知机模型的示意图。

二、感知机模型

2.1 感知机的基本组成

        感知机是神经网络的基本组成单元,其基本组成包括:

  1. 输入:感知机采用多个输入特征,每个特征代表输入数据的特征或属性;
  2. 权重:每一个输入神经元都与一个权重相关联,确定每个输入神经元对感知机输出的影响程度,在训练期间,这些权重会进行调整以学习最佳值;
  3. 偏置:在输入层增加偏置项主要用于调整激活神经元所需阈值,类似于改变神经元激活“起点”,即使输入信号全为零,偏置项也能够使神经元产生一定的激活;
  4. 求和函数:感知机使用求和函数计算其输入的加权和;
  5. 激活函数:激活函数的主要作用对输出进行变换,使得输出落在一个特定的范围内(如阶跃函数的0和1,或者符号函数的1和-1);
  6. 输出:感知机的最终输出是由激活函数的结果决定。例如,在二元分类中,输出可能表示预测类别(0或1);
  7. 学习算法(权重更新规则):在训练过程中,感知机通过学习算法调整其权重和偏置。一种常见的方法是感知机学习算法,它根据预测输出于真实输出之间的差异来更新权重。
    其中,求和函数、激活函数和学习算法,是感知机模型的核心。

2.2 求和函数

        英国科学家查尔斯·斯科特·谢灵顿在其著作《神经系统的整合作用》中,详细讨论了神经系统如何整合信息,并引入了“时间总合”和“空间总合”的概念。

2.2.1 时间总合

        与空间总合不同,时间总合指的是神经元在短时间内接收到重复的信号时,会将这些信号叠加起来。如果这些信号在时间上足够接近,它们的累积效应也可能足以触发神经元的动作电位。

2.2.2 空间总合

        空间总合指的是神经元接收来自不同空间位置的多个突触输入,并将它们整合起来。如果这些输入信号的总和足够强大,神经元就会触发动作电位。这些输入可以来自多个不同的突触,并在神经元的树突或细胞体上分布。当这些突触信号同时到达时,它们会在神经元内部产生叠加效应。
        谢灵顿提出的空间总合概念直接影响了人工神经网络中的加权求和机制。在生物神经元中,来自不同突触的信号可以被整合起来,并根据总和的强度决定是否产生动作电位。这个原理在人工神经元中通过对输入信号进行加权求和的方式加以体现,每个输入都乘以特定的权重,并将它们求和,再经过激活函数进行输出。这种机制是感知机以及更复杂的神经网络中的核心计算步骤。

2.3 激活函数

        激活函数是神经元模型中不可或缺的组成部分。M-P神经元模型使用的是Heaviside函数作为激活函数,但在神经网络的实际应用中,还可以使用其他激活函数,如符号函数和Sigmoid函数。每个函数的表达式和对应的图像如下:
1. Heaviside 函数
        Heaviside函数是阶跃函数,其输出为0或1,用于判断输入是否达到某个阈值。其表达式为:
H ( x ) = { 0 , x < 0 1 , x ≤ 0 H(x) = \begin{cases} 0, & x < 0 \\ 1, & x \leq 0 \end{cases} H(x)={0,1,x<0x0
函数图像:这是一个二值化函数,当输入小于0时输出0,大于等于0时输出1,具体函数图像如下所示。

def heaviside(x):
    y = np.zeros(x.shape)
    y[x < 0] = 0
    y[x >= 0] = 1
    return y

2. 符号函数 (Signum function)

        符号函数是另一种常用的激活函数,它可以输出-1或1,用于二分类问题。其表达式为:
S i g n ( x ) = { − 1 , x < 0 1 , x ≤ 0 Sign(x) = \begin{cases} -1, & x < 0 \\ 1, & x \leq 0 \end{cases} Sign(x)={1,1,x<0x0
函数图像:当输入小于0时输出-1,输入大于等于0时输出1,输出仅为两个离散值,具体函数图像如下所示。

def signum(x):
    y = np.zeros(x.shape)
    y[x < 0] = -1
    y[x >= 0] = 1
    return y

3. Sigmoid 函数

        Sigmoid函数是常用于神经网络中的平滑激活函数,其输出为连续值,介于0和1之间,特别适合用于处理概率输出。其表达式为:
σ ( x ) = 1 1 + e − x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+ex1
函数图像:Sigmoid函数的图像呈S形,在极端情况下(输入为负无穷或正无穷时)分别趋近于0或1,但从不过界,具体函数图像如下所示。

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

2.4 学习算法

        感知机学习算法种类繁多,其中最著名且经典的当属赫布学习算法和Delta学习算法。

2.4.1 赫布学习规则

        赫布学习算法是神经科学和人工智能中一种重要的学习规则,由加拿大心理学唐纳德 ⋅ \cdot 赫布于1949年提出。作为一种无监督学习方法,因为它不需要外部的标签或反馈来指导,而是仅依赖于神经元活动的关联性。在人工神经网络中,赫布学习的数学表达形式如下:
w i = w i o l d + △ w i w_{i} = w_{i}^{old} + \triangle w_{i} wi=wiold+wi
△ w i = x i y \triangle w_{i} = x_i y wi=xiy
其中, △ w i \triangle w_{i} wi 表示神经元 i i i 的权重变化; x i x_i xi 表示神经元 i i i 的输入; y y y 表示神经元的输出。
        为了帮助理解赫布学习算法,以下是赫布学习过程的示意图,直观展示了该算法的典型案例。

2.4.2 Delta学习规则

        Delta学习算法是Widrow和Hoff于1960年提出,是一种经典的学习算法,广泛应用于神经网络训练。该规则的基本思想是根据节点输出与期望输出之间的误差来调整权重,具体数学表达式如下:
w i = w i o l d + △ w i w_{i} = w_{i}^{old} + \triangle w_{i} wi=wiold+wi
△ w i = ( y − y ^ ) x i \triangle w_{i} = (y - \hat{y}) x_i wi=(yy^)xi
其中, y ^ \hat{y} y^ 表示预测结果。

三、 结论

        感知机算法解决了M-P模型二进制输入问题和人工手动调参问题,为深度学习的发展奠定了坚实的基础。

参考文献

[1] 张玉宏. 深度学习之美[M]. 北京: 电子工业出版社, 2018:164-178.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2195672.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

qt_c++_xml简单示范demo

迅雷链接 链接&#xff1a;https://pan.xunlei.com/s/VO8bJODxPfPHE0x3nfUa2KZ1A1?pwdtuxq# 复制这段内容后打开手机迅雷App&#xff0c;查看更方便 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QTextCodec>#include <QFile&g…

PGMP-01概述2

目录 1.what is program management? 项目集管理 2.relationships among portfolio,program,and project management and roles in OPM 4.relationships among portfolio,program,and project management 5.组织战略、项目集管理和运营管理之间的关系 6.business vlaue…

sqli-labs靶场less-9和less-10

sqli-labs靶场less-9 本文只展示如何利用dnslog注入通过本关&#xff0c;注入原理可以参考我另外一篇文章 DSNlog注入原理 1、确定闭合方式 http://192.168.140.130/sq/Less-9/?id1 发现id的值不论为任何值&#xff0c;页面回显都是一致的You are in… 判断不存在布尔注入…

初谈构造函数和析构函数

加油学习的一天~~>_<~~ 文章目录 目录 文章目录 前言 一、什么是构造函数&#xff1f; 二、析构函数 &#xff08;1&#xff09;概念&#xff1a; 总结 前言 构造函数是特殊的成员函数&#xff0c;需要注意的是&#xff0c;构造函数虽然名称叫构造&#xff0c;但是构造…

【Flutter】- 核心语法

文章目录 知识回顾前言源码分析1. 有状态组件2. 无状态组件3. 组件生命周期4. 常用组件Container组件Text组件Image组件布局组件row colum stack expandedElevntButton按钮拓展知识总结知识回顾 【Flutter】- 基础语法 前言 Flutter是以组件化的思想构建客户端页面的,类似于…

Linux中的网络指令:ping、netstat、watch、pidof、xargs

目录 Ping指令 netstat指令 watch指令 pidof指令 xargs指令 Ping指令 功能&#xff1a;检测两台主机间的网络连通性 语法&#xff1a;ping [选项] 目标主机的IP地址 &#xff08;192.168.1.1&#xff09;或域名&#xff08;google.com&#xff09; 常见选项&#xff1a…

用户登录与信息管理:实现小程序登录与用户信息存储

用户登录与信息管理&#xff1a;实现小程序登录与用户信息存储 在现代的移动应用中&#xff0c;用户登录与信息管理是构建个性化用户体验的基础。小程序作为轻量级的应用形式&#xff0c;在简化开发流程的同时&#xff0c;也需要我们妥善管理用户的登录状态与用户信息。本文将…

动态规划10:174. 地下城游戏

动态规划解题步骤&#xff1a; 1.确定状态表示&#xff1a;dp[i]是什么 2.确定状态转移方程&#xff1a;dp[i]等于什么 3.初始化&#xff1a;确保状态转移方程不越界 4.确定填表顺序&#xff1a;根据状态转移方程即可确定填表顺序 5.确定返回值 题目链接&#xff1a;174.…

【学习笔记】kruskal重构树

前言 最近一场div2没开出C2&#xff0c;猛掉104分。 赛后补E&#xff0c;发现自己连E1都没思路&#xff0c;一问才知道是kruskal重构树。 好吧&#xff0c;OI时期欠下的债该还了。 kruskal重构树是什么 它是一棵 2 n − 1 2n-1 2n−1 个点的二叉树。点有点权&#xff0c;下…

深入挖掘C++中的特性之一 — 多态

目录 1.多态的概念 2.多态的定义及其实现 1.虚函数 2.虚函数的重写/覆盖 3.实现多态的必要条件 4.多态的代码呈现 5.来一道小题&#xff0c;深入理解一下多态 3.虚函数重写的一些其他问题 1.协变 2.析构函数的重写 4.override和final关键字 5.重载/重写/隐藏的对比&…

动态规划算法专题(四):子串、子数组系列

目录 1、最大子数组和 1.1 算法原理 1.2 算法代码 2、环形子数组的最大和 2.1 算法原理 2.2 算法代码 3、乘积最大子数组 3.1 算法原理 3.2 算法代码 4、乘积为正数的最长子数组长度 4.1 算法原理 4.2 算法代码 5、等差数列划分 5.1 算法原理 5.2 算法代码 6、…

C++读取大文件三种方法速度比较

目录 测试说明第一种方法&#xff1a;按块读&#xff0c;一次读8kb第二种方法&#xff1a;按行读&#xff0c;一次读一行第三种方法&#xff1a;多线程并行读取完整示例 测试说明 测试文件&#xff1a;100万行&#xff0c;每一行是两个小数&#xff0c;中间用逗号隔开&#xf…

python脚本实现Redis未授权访问漏洞利用

之前介绍过Redis未授权访问漏洞&#xff0c;本文使用python实现Redis未授权访问检测以及对应三种getshell。 1 测试环境准备 CentOS 7&#xff08;192.168.198.66/24&#xff09;&#xff1a;安装 Redis 服务器并用 root 权限开启服务&#xff0c;关闭保护模式&#xff1b;安…

4-coumarate--CoA ligase4-香豆酸:辅酶A连接酶4CL-文献精读63

Characterization and Functional Analysis of 4-Coumarate:CoA Ligase Genes in Mulberry 桑树中4-香豆酸&#xff1a;辅酶A连接酶基因的表征与功能分析 桑树T2T基因组-文献精读16 摘要 4-香豆酸&#xff1a;辅酶A连接酶&#xff08;4CL&#xff09;由一个小型的多基因家族…

pytest(六)——allure-pytest的基础使用

前言 一、allure-pytest的基础使用 二、需要掌握的allure特性 2.1 Allure报告结构 2.2 Environment 2.3 Categories 2.4 Flaky test 三、allure的特性&#xff0c;allure.step()、allure.attach的详细使用 3.1 allure.step 3.2 allure.attach&#xff08;挺有用的&a…

软件测试比赛-学习

一、环境配置 二、浏览器适配 //1.设置浏览器的位置,google浏览器位置是默认且固定在电脑里的//2.设置浏览器驱动的位置,C:\Users\27743\AppData\Local\Google\Chrome\ApplicationSystem.setProperty("webdriver.chrome.driver", "C:\\Users\\27743\\AppData\\…

【python实操】python小程序之对象的属性操作

引言 python小程序之对象的属性操作 文章目录 引言一、对象的属性操作1.1 题目1.2 代码1.3 代码解释 二、思考2.1 添加属性2.2 获取属性 一、对象的属性操作 1.1 题目 给对象添加属性 1.2 代码 class Cat:# 在缩进中书写⽅法def eat(self):# self 会⾃动出现,暂不管print(f…

弹性分布式数据集RDD详细说明

文章目录 整体介绍一、定义与特性二、操作与转换三、存储级别与持久化四、依赖关系与容错机制五、优化与性能调优 常见操作支持的数据格式1.文本文件 (Text Files)2. CSV 文件3. JSON 文件4. Parquet 文件5. Sequence Files6.Hadoop文件读取A. 读取HDFS上的文本文件B. 使用Hado…

(Linux驱动学习 - 8).信号异步通知

一.异步通知简介 1.信号简介 信号类似于我们硬件上使用的“中断”&#xff0c;只不过信号是软件层次上的。算是在软件层次上对中断的一种模拟&#xff0c;驱动可以通过主动向应用程序发送信号的方式来报告自己可以访问了&#xff0c;应用程序获取到信号以后就可以从驱动设备中…

论文阅读——联邦忘却学习研究综述

文章基本信息 作者&#xff1a; 王鹏飞魏宗正周东生宋威肖蕴明孙庚于硕张强 机构&#xff1a; 大连理工大学计算机科学与技术学院大连理工大学社会计算与认知智能教育部重点实验室大连大学先进设计与智能计算教育部重点实验室美国西北大学计算机科学系吉林大学计算机科学与…