神经网络模型入门及蠓虫分类问题简单实战

news2024/11/24 16:01:16

  学习知识要实时简单回顾,我把学习的神经网络模型简单梳理一下,方便入门与复习。

神经网络模型

神经网络简介

  人工神经网络是在现代神经科学的基础上提出和发展起来的,旨在反映人脑结构及功能的一种抽象数学模型。自 1943 年美国心理学家W.McCulloch 和数学家 W. Pitts 提出形式神经元的抽象数学模型—MP 模型以来,人工神经网络理论技术经过了 50 多年曲折的发展。特别是 20 世纪 80 年代,人工神经网络的研究取得了重大进展,有关的理论和方法已经发展成一门界于物理学、数学、计算机科学和神经生物学之间的交叉学科。它在模式识别,图像处理,智能控制,组合优化,金融预测与管理,通信,机器人以及专家系统等领域得到广泛的应用,提出了 40 多种神经网络模型,其中比较著名的有感知机,Hopfield 网络,Boltzman 机,自适应共振理论及反向传播网络(BP)等。在这里我们仅讨论最基本的网络模型及其学习算法。

人工神经元模型

  下图表示出了作为人工神经网络(artificial neural network,以下简称 NN)的基本单元的神经元模型,它有三个基本要素:
在这里插入图片描述

  1. 一组连接(对应于生物神经元的突触),连接强度由各连接上的权值表示,权值为正表示激活,为负表示抑制。

  2. 一个求和单元,用于求取各输入信号的加权和(线性组合)

  3. 一个非线性激活函数,起非线性映射作用并将神经元输出幅度限制在一定范围内(一般限制在 1,0或 -1,1 之间
    此外还有一个阈值 θ k \theta_{k} θk
    以上作用可分别以数学式表达出来:
    u k = ∑ j = 1 p w i j x j , ν k = u k − θ k , y k = φ ( ν k ) u_k=\sum\limits_{j=1}^p w_{ij}x_j,\quad\nu_k=u_k-\theta_k,\quad y_k=\varphi(\nu_k) uk=j=1pwijxj,νk=ukθk,yk=φ(νk)
      式中 x 1 , x 2 , ⋯   , x p \text{}x_1,x_2,\cdots,x_p x1,x2,,xp为输入信号, w k 1 , w k 2 , ⋯   , w k p w_{k1},w_{k2},\cdots,w_{kp} wk1,wk2,,wkp为神经元之权值, u k u_{k} uk 为线性组合结果, θ t \theta_{t} θt 为阈值, φ ( ⋅ ) \varphi(\cdot) φ() 为激活函数, y k y_{k} yk 为神经元 k 的输出。
      若把输入的维数增加一维,则可把阈值 θ k \theta_{k} θk 包括进去。例如
    ν k = ∑ j = 0 p ν k j x j , y k = φ ( u k ) \nu_k=\sum\limits_{j=0}^p\nu_{kj}\mathbf x_j,y_k=\varphi\big(u_k\big) νk=j=0pνkjxj,yk=φ(uk)
      此处增加了一个新的连接,其输入为 x 0 = − 1 ( 或 + 1 ) x_0=-1(或+1) x0=1(+1) ,权值为 w k 0 = θ k ( 或 b k ) w_{_{k0}}=\theta_{_k}(或b_{_k}) wk0=θk(bk),如下图所示。
    在这里插入图片描述激活函数 φ (⋅)可以有以下几种:

  4. 阈值函数
    φ ( v ) = { 1 , v ≥ 0 0 , v < 0 \varphi(v)=\begin{cases}1,&v\geq0\\ 0,&v<0\end{cases} φ(v)={1,0,v0v<0
    即阶梯函数。这时相应的输出为
    y k = { 1 , v k ≥ 0 0 , v k < 0 y_k=\begin{cases}1,&v_k\geq0\\ 0,&v_k<0\end{cases} yk={1,0,vk0vk<0
    其中 ν k = ∑ j = 1 p ν k j x j − θ k \nu_{k}=\sum_{j=1}^{p}\nu_{k j}\mathbf{x}_{j}-\theta_{k} νk=j=1pνkjxjθk,常称此种神经元为 M − P模型。

  5. 分段线性函数
    φ ( v ) = { 1 , v ≥ 1 1 2 ( 1 + v ) , − 1 < v < 1 0 , v ≤ − 1 \varphi(v)=\begin{cases}1,&v\ge1\\\\ \dfrac12(1+v),&-1<v<1\\\\ 0,&v\le-1\end{cases} φ(v)= 1,21(1+v),0,v11<v<1v1
    它类似于一个放大系数为 1 的非线性放大器,当工作于线性区时它是一个线性组合器,放大系数趋于无穷大时变成一个阈值单元。

  6. sigmoid 函数
    最常用的函数形式为
    φ ( v ) = 1 1 + exp ⁡ ( − α v ) \varphi(v)=\dfrac{1}{1+\exp(-\alpha v)} φ(v)=1+exp(αv)1
    参数 α> 0可控制其斜率。另一种常用的是双曲正切函数.
    φ ( v ) = tanh ⁡ ( v 2 ) = 1 − exp ⁡ ( − v ) 1 + exp ⁡ ( − v ) \varphi(v)=\tanh\left(\dfrac{v}{2}\right)=\dfrac{1-\exp(-v)}{1+\exp(-v)} φ(v)=tanh(2v)=1+exp(v)1exp(v)
    Matlab 中的激活(传递)函数如下表所示:
    在这里插入图片描述
    在这里插入图片描述
      各个函数的定义及使用方法,可以参看 Matlab 的帮助(如在 Matlab 命令窗口运行help tansig,可以看到 tantig 的使用方法,及 tansig 的定义为 φ ( v ) = 2 1 + e − 2 v − 1 \varphi(v)=\frac{2}{1+e^{-2v}}-1 φ(v)=1+e2v21)

网络结构及工作方式

  除单元特性外,网络的拓扑结构也是 NN 的一个重要特性。从连接方式看 NN 主要有两种。
7. 前馈型网络
  各神经元接受前一层的输入,并输出给下一层,没有反馈。结点分为两类,即输入单元和计算单元,每一计算单元可有任意个输入,但只有一个输出(它可耦合到任意多个其它结点作为其输入)。通常前馈网络可分为不同的层,第 i 层的输入只与第 1−i 层输出相连,输入和输出结点与外界相连,而其它中间层则称为隐层。
8. 反馈型网络
  所有结点都是计算单元,同时也可接受输入,并向外界输出。
  NN 的工作过程主要分为两个阶段:第一个阶段是学习期,此时各计算单元状态不变,各连线上的权值可通过学习来修改;第二阶段是工作期,此时各连接权固定,计算单元状态变化,以达到某种稳定状态。
  从作用效果看,前馈网络主要是函数映射,可用于模式识别和函数逼近。反馈网络按对能量函数的极小点的利用来分类有两种:第一类是能量函数的所有极小点都起作用,这一类主要用作各种联想存储器;第二类只利用全局极小点,它主要用于求解最优化问题。

蠓虫分类问题

  蠓虫分类问题可概括叙述如下:生物学家试图对两种蠓虫(Af 与 Apf)进行鉴别,依据的资料是触角和翅膀的长度,已经测得了 9 支 Af 和 6 支 Apf 的数据如下:
Af: (1.24,1.27),(1.36,1.74),(1.38,1.64),(1.38,1.82),(1.38,1.90),(1.40,1.70),
(1.48,1.82),(1.54,1.82),(1.56,2.08).
Apf: (1.14,1.82),(1.18,1.96),(1.20,1.86),(1.26,2.00),(1.28,2.00),(1.30,1.96).
现在的问题是:

  1. 根据如上资料,如何制定一种方法,正确地区分两类蠓虫。
  2. 对触角和翼长分别为(1.24,1.80),(1.28,1.84)与(1.40,2.04)的 3 个标本,用所得
    到的方法加以识别。
  3. 设 Af 是宝贵的传粉益虫,Apf 是某疾病的载体,是否应该修改分类方法。如上的问题是有代表性的,它的特点是要求依据已知资料(9 支 Af 的数据和 6 支Apf 的数据)制定一种分类方法,类别是已经给定的(Af 或 Apf)。今后,我们将 9 支Af 及 6 支 Apf 的数据集合称之为学习样本。

求解

  为解决上述问题,考虑一个其结构如下图所示的人工神经网络 ,
在这里插入图片描述  激活函数由 φ ( v ) = 1 1 + exp ⁡ ( − α ν ) \varphi(v)=\dfrac{1}{1+\exp(-\alpha\nu)} φ(v)=1+exp(αν)1来决定。
  图中最下面单元,即由 • 所示的一层称为输入层,用以输入已知测量值。在我们的例子中,它只需包括两个单元,一个用以输入触角长度,一个用以输入翅膀长度。中间一层称为处理层或隐单元层,单元个数适当选取,对于它的选取方法,有一些文献进行了讨论,但通过试验来决定,或许是最好的途径。在我们的例子中,取三个就足够了。最上面一层称为输出层,在我们的例子中只包含二个单元,用以输出与每一组输入数据相对应的分类信息.任何一个中间层单元接受所有输入单元传来的信号,并把处理后的结果传向每一个输出单元,供输出层再次加工,同层的神经元彼此不相联接,输入与输出单元之间也没有直接联接。这样,除了神经元的形式定义外,我们又给出了网络结构。有些文献将这样的网络称为两层前传网络,称为两层的理由是,只有中间层及输出层的单元才对信号进行处理;输入层的单元对输入数据没有任何加工,故不计算在层数之内。
具体解法如下:

clear
p1=[1.24,1.27;1.36,1.74;1.38,1.64;1.38,1.82;1.38,1.90;
1.40,1.70;1.48,1.82;1.54,1.82;1.56,2.08];
p2=[1.14,1.82;1.18,1.96;1.20,1.86;1.26,2.00
1.28,2.00;1.30,1.96];
p=[p1;p2]';
pr=minmax(p);
goal=[ones(1,9),zeros(1,6);zeros(1,9),ones(1,6)];
plot(p1(:,1),p1(:,2),'h',p2(:,1),p2(:,2),'o')
net=newff(pr,[3,2],{'logsig','logsig'});
net.trainParam.show = 10;
net.trainParam.lr = 0.05;
net.trainParam.goal = 1e-10;
net.trainParam.epochs = 50000;
net = train(net,p,goal);
x=[1.24 1.80;1.28 1.84;1.40 2.04]';
y0=sim(net,p)
y=sim(net,x)
编写不易,求个点赞!!!!!!!
“你是谁?”

“一个看帖子的人。”

“看帖子不点赞啊?”

“你点赞吗?”

“当然点了。”

“我也会点。”

“谁会把经验写在帖子里。”

“写在帖子里的那能叫经验贴?”

“上流!”
cheer!!!

在这里插入图片描述

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

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

相关文章

【分段DP】ABC275 F

一万年没写DP了 这么简单的DP我居然没写出来 F - Erase Subarrays (atcoder.jp) 题意&#xff1a; 思路&#xff1a; 原本的思路是这样的&#xff1a; 看到3000的数据范围就是n^2的DP了 看到删子串&#xff0c;那么留下来的就是子序列&#xff0c;要使得剩下来的子序列的…

剑指Offer--05替换空格58左旋字符串

文章目录 一、剑指Offer--05.替换空格二、剑指Offer--58.左旋字符串 一、剑指Offer–05.替换空格 题目是这样的 意思是将字符串s中的空格替换为字符串"%20",如果只是替换一个字符还好&#xff0c;可以在原数组直接替换&#xff0c;但是是将空格替换为字符串&#xf…

Vue+Echarts 项目演练(下)收尾工作图表绘制

设置销售总量图表 中心容器地图设置 产品库存统计图 产品类别图表 项目可视化完结-整体展示 设置销售总量图表 在第一个容器中进行图表设置 <template><div><h2>A</h2><div class"chart" id"oneChart">容纳后期的图表…

shell编程规范与变量

shell脚本编程规范 shell脚本概述 将要执行的命令按顺序保存到一个文本文件给该文件可执行权限可结合各种Shell控制语句以完成更复杂的操作 Shell脚本应用场景 重复性操作交互性任务批量事务处理服务运行状态监控定时任务执行 什么是Shell 就是与内核沟通的界面、应用程序等…

[JAVA数据结构]顺序表ArrayList

目录 1.线性表 2.顺序表 3.ArrayList简介 4.ArrayList的使用 4.1ArrayList的构造方法 4.2ArrayList的常用操作 4.3ArrayList的遍历方法 4.4ArrayList的扩容机制 5.ArrayList的具体运用 ArrayList是一种基于数组的数据结构&#xff0c;是线性表的一种&#xff0c;也是…

[NLP]如何训练自己的大型语言模型

简介 大型语言模型&#xff0c;如OpenAI的GPT-4或谷歌的PaLM&#xff0c;已经在人工智能领域掀起了一场风暴。然而&#xff0c;大多数公司目前没有能力训练这些模型&#xff0c;而且完全依赖少数几家大型科技公司作为技术提供者。 在Replit&#xff0c;我们已经大量投资于所需…

linux-01-基础回顾-虚拟机安装linux(centos7)、linux常用命令

文章目录 Linux-Day01课程内容1. 前言1.1 什么是Linux1.2 为什么要学Linux1.3 学完Linux能干什么 2. Linux简介2.1 主流操作系统2.2 Linux发展历史2.3 Linux系统版本 3. Linux安装3.1 安装方式介绍3.2 安装VMware3.3 安装Linux3.4 网卡设置3.5 安装SSH连接工具3.5.1 SSH连接工具…

Neural ODE 神经常微分方程

Neural ODE ODE常微分方程 欧拉法求解&#xff1a;欧拉法求解过程是一个递归的过程&#xff0c;这个思想和牛顿法、梯度下降法是相似的。并且它将函数离散化&#xff0c;分割成一个个小段来求解。欧拉法求解的常微分方程的形式通常为 图片来自知乎Neural ODE&#xff0c;这个…

EventBus源码解析

文章目录 前言一、EventBus使用二、EventBus事件流程分析1.注册订阅者2.发布事件Event3.接收事件Event4.取消注册订阅者 三、发送粘性事件问答EventBus 以及它的优点EventBus原理 EventBus中设计模式为什么要使用 EventBus 来替代广播呢&#xff1f;说下 5 种线程模式的区别Eve…

进程、进程组、会话期

进程 在内核中&#xff0c;每个进程都使用一个不同的大于零的正整数来标识&#xff0c;称为进程号pid&#xff08;process ID&#xff09;。 进程组 一个进程可以通过 fork() 调用创建一个或多个子进程&#xff0c;这些进程就可以构成一个进程组。例如&#xff0c; liyongj…

UE4架构初识(四)

目录 UE4仿真引擎学习 一、架构基础 1. GameMode 2. GameState 3. GameSession UE4仿真引擎学习 一、架构基础 1. GameMode 即使最开放的游戏也拥有基础规则&#xff0c;而这些规则构成了 Game Mode。在最基础的层面上&#xff0c;这些规则包括&#xff1a; 出现的玩家和…

深度赋能产业数字化转型,蚂蚁集团数字化三件套亮相中国国际金融展

“十四五”规划纲要指出&#xff1a;加快推动数字产业化&#xff0c;推进产业数字化转型&#xff0c;实施“上云用数赋智”行动&#xff0c;推动数据赋能全产业链协同转型。明确提出了通过科技创新&#xff0c;加快产业数字化转型的要求。 4月25日&#xff0c;以“荟萃金融科技…

Flowable打印调用原生API查询接口的SQL日志

一.简介 建议在 Spring Boot 的 application.properties 中添加如下配置&#xff0c;开启 flowable 日志&#xff1a; logging.level.org.flowabledebug这个配置表示开启 flowable 的日志&#xff0c;开启日志的好处是可以看到底层的 SQL语句。 二.查询部署信息 例如查询流…

【python中的魔法方法有哪些?】

__init__(self, ...): 类的构造函数&#xff0c;用于创建一个类的实例并初始化它的属性。__str__(self): 返回对象的字符串表示形式&#xff0c;可以用于打印对象或者转化成字符串。__repr__(self): 返回对象的字符串表示形式&#xff0c;通常是用于开发者调试和查看对象信息。…

4.24~25(总结)

第一周任务 - Virtual Judge 分析&#xff1a;这道题开始想错了&#xff0c;所以错了一次。后来又仔细读了一遍题&#xff0c;才发现&#xff0c;要是最长的那个排序子数组&#xff0c;所以第二次就做出来了&#xff0c;它其实应该分为两大块&#xff0c;第一块找左边的起点&a…

HTTPS (HTTP+SSL) 对称/非对称加密 中间人攻击 证书加密

&#x1f496; 欢迎来阅读子豪的博客&#xff08;JavaEE篇 &#x1f934;&#xff09; &#x1f449; 有宝贵的意见或建议可以在留言区留言 &#x1f4bb; 欢迎 素质三连 点赞 关注 收藏 &#x1f9d1;‍&#x1f680;码云仓库&#xff1a;补集王子的代码仓库 不要偷走我小火…

“源擎”云原生分布式核心业务系统有什么产品优势?

“源擎”核心系统利用云原生、分布式、微服务技术&#xff0c;基于企业架构设计思想&#xff0c;构建了基础服务、业务服务、交易中心以及系列支撑组件&#xff0c;包含业务架构和多个微服务应用。 业务架构中&#xff0c;交易中心为银行提供了更灵活的选择&#xff0c;支持产…

出现Invalid bound statement (not found)问题的解决办法(已解决)

前言&#xff1a; 今天在写项目时出现了Invalid bound statement (not found):xxxx这个问题&#xff0c;网上找了很多博客都不行&#xff0c;最后修改了配置文件解决了问题&#xff0c;借此将此类问题常见的解决办法汇总一下。 话不多说&#xff0c;直接列出解决办法如下&…

linux-0.11 研究

前言 多阅读优秀代码&#xff0c;才能提高快速、深刻理解代码的能力。linux 内核源码无疑是最好的选择&#xff0c;不过当前 linux 内核版本为 6.3&#xff0c;代码量是相当庞大了&#xff0c;别说看完整个代码了&#xff0c;就算是看完一个子系统&#xff0c;都是不太现实的。…

PostgreSQL的安装与配置(Windows版本)

下载windows安装包 官网地址 安装 官网下载安装包 安装 测试 默认信息直接回车&#xff0c;最后密码输入设置的超级用户密码即可