人工神经网络初步

        大家好,这里是七七,由于各种比赛的缘故,使用了很多人工神经网络模型。但是很多的原理都不是很明白,就导致了不能灵活地运用┭┮﹏┭┮。为此,去看了些人工神经网络原理书,写下此专题。

在进入正文之前要先说明,本文不是面向小白的(时间不够写那么多基础知识),建议在了解人工智能所需要用到的神经元、函数、梯度、矩阵的基础知识后,再来阅读此篇(这几部分基础知识真的很重要)。


一、MCP模型和感知器

MCP模型

最初的神经网络雏形,实在1943年,美国的科学家提出的MCP模型,这种模型就是模拟了人类的神经元,一个胞体,前面有很多树突输入,每个输入都有相应的权值;胞体也有自己的输出,在输入*权值之和大于某个临界值时,胞体的输出是一种形态(如1),否则就是另一种形态(如0)。至于是那种形态,取决于激活函数的设定,这里采用的是单位阶跃函数。这种就是基本型MCP模型。

之后对于这种模型进行了增强,推出了增强型MCP模型,规定

  • 输出变量可以为任意实数
  • 输入既可以表示同一神经网络中其他神经元的输出,也可以是神经网络的外部输入
  • 激活函数可以为其他的函数形式(如分段线性函数、整流线性函数、软整流函数、S形函数等)

感知器

        人工神经网络一般分为两个阶段,第一个是学习阶段或训练阶段,第二个是运行阶段。学习阶段主要任务是找到合适的决策函数和参数,运行阶段的任务就是通过训练得到的模型来进行识别或预测。

在训练阶段会选择一些数据作为训练集。假设训练集中有两类数据,如果在模式空间中存在一个超平面,可以分开这两类数据,那么就说这两种数据是线性可分的,否则就是非线性可分的。

 1958年,美国心理学家提出了名为Perceptron(感知器)的人工神经网络架构及其训练算法,通过数学证明,得出了这样的结论:对于线性可分的二类识别问题,其训练算法是收敛的。
感知器的架构其实就是单个MCP模型神经元。

这个算法其实和bp神经网络算法很相似,可以看下边的例子,再次不过多做解释

BP神经网络应用案例_bp神经网络案例-CSDN博客

由于说单个的感知器只能解决线性可分的二分类模式问题,为了能够处理多类别处理问题,我们可以把多个感知器并联,就形成了单层感知器。

二、多层感知器(MLP)

        一般来说,一个MLP包含了一个输入层、一个输出层以及若干个隐层。相邻层的神经元之间以单项全互联方式进行连接。

要注意的是,输入神经元并不是真的神经元,它没有激活函数,也没有输入,只有输出。当我们说一个L层MLP时,是指输出层加上若干隐层后一共有L层,输入层是不计入其中的。

数学上可以证明,对于一个L(L>=2)层MLP,如果不限制各隐层神经元的个数,也不限制激活函数的形式,那么只要权值和阈值取值得当,则输出函数可以无限逼近任意一个N元函数。

MLP的训练学习通常是使用监督学习方法,即每一个作为输入的训练样本矢量都带有一个已知的我们所期待的输出矢量,也就是其标签。实际输出与标签的差异为其训练误差,当平均训练误差低于我们设定的某个值时,就说明模型训练成功。

当然,也可能即使训练了很多次,还是没能满足要求,这就说明模型设计上存在缺陷,或者初始的权值和阈值选取不合适,此时应该种植训练,修改初始值或模型再训练。

一般来说,再训练结束后应该还有一个测试阶段,用于测试模型的准确性,满足要求了才会使用,否则就需要修改模型。

BP算法

核心思想就是通过输出值与期望值的差距,通过求输出结果y与每个神经元路径上权值w的偏导数,进行反馈,并沿梯度下降,从而达到反馈的效果。

此算法的案例在下文已经讲过,本文我们来探讨一些细节内容。

BP神经网络应用案例_bp神经网络案例-CSDN博客

  • bp算法要求激活函数是处处可导的,还需要有大量的数据且两个相同的样本标签必须相同。
  • 初始值应该取绝对值较小的不同的随机值。
  • 由于计算机的计算方式在本质上只能是离散的,所以在计算机上无法实现严格意义上的梯度下降算法,当BP算法的学习率η趋于0时,BP算法才能时梯度算法。
  • 由于是梯度算法,所以可能最终结果为局部最优解,要避免这种情况,可以配合模拟退火算法、遗传算法、噪声注入算法等来使用。
  • 学习率的选取也有讲究,建议越靠近输入层η越大,越靠近输出层η越小;训练初期η取较大值,后期取较小值等等。
  • 容量可以理解为神经元与隐含层的数量,容量越大,越容易发生过拟合。因此如果发生过拟合,可尝试减小容量。
  • 若误差容限设置的过小,收敛便会很困难,很可能导致过度训练,使得MLP过于在意一些无关紧要的细枝末节,导致效果较差。

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

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

相关文章

指针再学习笔记

概念 示例 类型 示例 作用 注意:有些内存地址可能系统不会允许任意访问 运算 示例 空指针

windows驱动开发-内核编程技术汇总(七)

多处理器环境出错 在基于 NT 的操作系统上,驱动程序是多线程的;它们可以同时接收来自不同线程的多个 I/O 请求。 在设计驱动程序时,必须假定它将在 SMP 系统上运行,并采取适当的措施来确保数据完整性。 具体而言,每当驱动程序更…

ue引擎游戏开发笔记(34)——建立射击映射,并添加特效

1.需求分析: 准备处理射击系统,首先角色需要能射击,有反馈,先建立角色与控制器之间的映射,并添加简单特效,证明映射已经建立。 2.操作实现: 1.首先常规建立映射流程,具体可参考笔记…

《挑战100个产品拆解:抖音》

抖音,作为当今社交媒体领域的明星产品,其背后的产品思维一直备受关注。在这篇文章中,我们将深入拆解抖音的产品思维,揭示其成功的秘密。 产品定位 1.产品是什么样的用户: 年轻人和青少年是抖音的主要用户群体。抖音…

Jenkins与Rancher的配合使用

Jenkins和Rancher是两个常用的DevOps工具,可以很好地配合使用来实现持续集成和持续部署。 Jenkins是一个开源的自动化构建工具,可以实现自动化的代码构建、测试和部署等一系列操作。可以通过Jenkins来触发构建任务,例如从代码仓库中拉取最新的…

【Qt】获取、设置环境变量

1、获取环境变量 1)qgetenv QByteArray qgetenv(const char *varName)返回名为 varName 环境变量的值,类型为 QByteArray。如果要获取 QString 可以使用 QString::fromLocal8Bit(); 如果在环境中找不到该变量,则返回默认构造的QByteArray。 注意: 在 Windows 上,如果原…

《1w实盘and大盘基金预测 day31》

昨日预测 3123-3150-3177 探底回升,震荡上涨,收小红小绿 双创指数后期上涨的幅度也是会大于上证的,四月底的时候就提醒建仓。 关注板块:医疗、地产、电力、证券 今日预测 3118-3171-3181 今天量价配合不是很好,缩量…

VMware与CentOS的安装

VMware与CentOS的安装 第一章 VMware安装第二章 CentOS上网虚拟机网络IP修改地址配置修改主机名和hosts文件修改主机名称配置Linux克隆机主机名称映射hosts文件,打开/etc/hosts 安装Xshell7和Xftp7 第一章 VMware安装 VMware Workstation Pro 安装包 …

洗地机什么牌子最好?618高性价比家用洗地机品牌

随着科技的发展,智能智能清洁家电越来越受到消费者的欢迎。洗地机作为其中的佼佼者,已经成为许多家庭清洁的好帮手。然而,面对满目琳琅的洗地机品牌型号,究竟哪一款机型适合家用呢,正好618也临近了,又有哪些…

【每日刷题】Day33

【每日刷题】Day33 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 20. 有效的括号 - 力扣(LeetCode) 2. 445. 两数相加 II - 力扣(…

端口问题:linux虚拟机,ping通ip,但无法访问docker服务

1.启动firewalld服务: sudo systemctl start firewalld 2. 添加端口到firewalld规则: sudo firewall-cmd --permanent --add-port3306/tcp 3. 规则生效 sudo firewall-cmd --reload

牛客网刷题 | BC79 小乐乐求和

目前主要分为三个专栏,后续还会添加: 专栏如下: C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读! 初来乍到,如有错误请指出,感谢! 描述 小乐乐最近接触了求…

android 14.0 SystemUI导航栏添加虚拟按键功能(三)

1.概述 在14.0的系统ROM产品定制化开发中,对于在SystemUI的原生系统中默认只有三键导航,想添加其他虚拟按键就需要先在构建导航栏的相关布局 中分析结构,然后添加相关的图标xml就可以了,然后添加对应的点击事件,就可以了,接下来先分析第三步关于导航栏的相关布局情况 然后…

try-catch-finally-return的执行顺序和try-with-resource语法糖

try-catch-finally-return的执行顺序 总结如下几条情况 try-catch-finally都有return语句时,没有异常时,返回值是finally中的return返回的。 执行try块,执行到return语句时,先执行return的语句但是不返回到main方法,执…

鸿蒙内核源码分析(时间管理篇) | 谁是内核基本时间单位

时间概念太重要了,在鸿蒙内核又是如何管理和使用时间的呢? 时间管理以系统时钟 g_sysClock 为基础,给应用程序提供所有和时间有关的服务。 用户以秒、毫秒为单位计时.操作系统以Tick为单位计时,这个认识很重要. 每秒的tick大小很大程度上决…

Linux:进程等待 进程替换

Linux:进程等待 & 进程替换 进程等待wait接口statuswaitpid接口 进程替换exec系列接口 当一个进程死亡后,会变成僵尸进程,此时进程的PCB被保留,等待父进程将该PCB回收。那么父进程要如何回收这个僵尸进程的PCB呢?父…

js实现json数据可编辑

背景 项目中有低代码平台,由于历史脏数据和非同步编辑的问题,偶尔会出现数据错乱的问题,希望有一个快捷的方式修改数据 之前在用Formily的时候有注意到designable/react 里面的json数据编辑功能非常不错如果能应用到项目里就完美了 design…

【数据结构】二叉树知识点详解

树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合有一个特殊的结点,称为根结点,根节点没有前驱结点除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、…

【贪心算法】单源最短路径Python实现

文章目录 [toc]问题描述Dijkstra算法Dijkstra算法的正确性贪心选择性质最优子结构性质 Dijkstra算法应用示例Python实现时间复杂性 问题描述 给定一个带权有向图 G ( V , E ) G (V , E) G(V,E),其中每条边的权是非负实数,给定 V V V中的一个顶点&…

K8S RBAC 鉴权

介绍 K8S(Kubernetes)的RBAC(Role-Based Access Control,基于角色的访问控制)是一种权限控制机制,它允许管理员通过定义角色来限制用户对集群资源的访问权限。RBAC是Kubernetes中一个核心的授权策略&#…