• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

神经网络模型入门和蠓虫分类问题

武飞扬头像
大不怪将军
帮助1

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

神经网络模型

神经网络简介

  人工神经网络是在现代神经科学的基础上提出和发展起来的,旨在反映人脑结构及功能的一种抽象数学模型。自 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!!!

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhiagckg
系列文章
更多 icon
同类精品
更多 icon
继续加载