- 在线时间
- 791 小时
- 最后登录
- 2022-11-28
- 注册时间
- 2017-6-12
- 听众数
- 15
- 收听数
- 0
- 能力
- 120 分
- 体力
- 36073 点
- 威望
- 11 点
- 阅读权限
- 255
- 积分
- 13763
- 相册
- 0
- 日志
- 0
- 记录
- 1
- 帖子
- 616
- 主题
- 542
- 精华
- 10
- 分享
- 0
- 好友
- 225
TA的每日心情 | 开心 2020-11-14 17:15 |
---|
签到天数: 74 天 [LV.6]常住居民II
 群组: 2019美赛冲刺课程 群组: 站长地区赛培训 群组: 2019考研数学 桃子老师 群组: 2018教师培训(呼伦贝 群组: 2019考研数学 站长系列 |
人工神经网络是在现代神经科学的基础上提出和发展起来的,旨在反映人脑结构及 功能的一种抽象数学模型。自 1943 年美国心理学家 W. McCulloch 和数学家 W. Pitts 提 出形式神经元的抽象数学模型—MP 模型以来,人工神经网络理论技术经过了 50 多年 曲折的发展。特别是 20 世纪 80 年代,人工神经网络的研究取得了重大进展,有关的理 论和方法已经发展成一门界于物理学、数学、计算机科学和神经生物学之间的交叉学科。 它在模式识别,图像处理,智能控制,组合优化,金融预测与管理,通信,机器人以及 专家系统等领域得到广泛的应用,提出了 40 多种神经网络模型,其中比较著名的有感 知机,Hopfield 网络,Boltzman 机,自适应共振理论及反向传播网络(BP)等。在这 里我们仅讨论基本的网络模型及其学习算法。6 }& O0 r: q% k4 ] h; Y5 s
) C, `' r' p8 \- h4 j
1.1 人工神经元结构5 L5 _1 _; N; g. M& }
下图表示出了作为人工神经网络(artificial neural network,以下简称 NN)的基本 单元的神经元模型,它有三个基本要素: ) s }, H* v. |& b j! _
6 Y2 i! C7 j' o$ T E, J& L![]()
* K4 S5 r {. f/ }4 s7 c
" t# k& H6 l; A" R- ?( A+ u' h![]()
2 C; H. f! ]* {" j) L" q1 }# f* q9 [7 z4 R8 ]3 [9 j
$ r- M& n2 v; J+ l% ^! G" {
. p5 J* `, c! p# G- D5 L
- G6 A( U/ a5 G& q% f
9 }8 j% W" k) y7 n1 R激活函数 ϕ(⋅ ) 1 A7 `% R1 B& D0 I$ w6 A+ B
可以有以下几种: - M" o; B5 N8 z
3 t6 ?! S# I9 U3 x7 B( }- o (0)Softmax - 用于多分类神经网络输出
, o. w: S3 v1 `8 o7 f * ^, t9 P7 s0 ~' V. t; M
/ s6 x* _1 y. H1 Q- ~, S# \- g) s0 N G, M1 ]3 Z
(1)阈值函数 、阶梯函数
9 M8 _* W% a+ A# y- }7 {$ K% I0 s$ ^# c9 M0 _8 D( r
![]()
3 q: Z9 D. |3 a0 S9 v& D0 w
$ A w9 s0 E9 A/ u* K0 S* t# F1 Y相应的输出 为 ' y& G8 m5 o4 l# s; ?
2 x. e* y* A: X' z3 k+ s & @* {! k: _ w" o" M* T# g5 P& m/ f, x# _ j
1 e7 \. ^; D6 ^4 e" H: _ `(2)分段线性函数 - @) }3 A, j( g2 I5 m3 P
4 Z% _. f% F) _1 ~ W5 E0 z& X 6 q) w F4 u9 I
" F/ {( r+ c- L$ T; K% G: ~它类似于一个放大系数为 1 的非线性放大器,当工作于线性区时它是一个线性组合器, 放大系数趋于无穷大时变成一个阈值单元。
' U9 w3 H g: `, G; D" u
5 c4 d: g, S/ M(3)sigmoid 函数 (以前最常用) 9 P( r+ ^" [1 x* Y4 @- H
7 R9 c, b; f" E* T4 I
3 h9 m: S7 L) |* C' `0 ]
1 w' X" p4 K; r% R4 L& r: x参数 α > 0 可控制其斜率。 sigmoid 将一个实值输入压缩至[0,1]的范围,也可用于二分类的输出层。; P! w- d3 p4 V$ v# V7 R" n z3 j
' u) `8 x9 U) r C(4)tanh (双曲正切函数 ;Hyperbolic tangent function)
* P+ o7 D3 p+ H% t
. X4 n7 T7 x3 b/ c" _3 V2 h![]()
7 s2 F M# t; p" o4 ~
7 \9 I+ m* `( u, \ e# v& S 将 一个实值输入压缩至 [-1, 1]的范围,这类函数具有平滑和渐近性,并保持单调性.
; Y9 P5 b0 `$ k3 U, Q' J
8 N- C& ^% U9 `% A& {6 G![]()
: a% q7 s4 U, q5 q/ {& i0 u
- B2 R8 e7 ?; w! J" F0 ](5) relu (Rectified linear unit; 修正线性单元 ; 深度学习目前最常用的激活函数)
0 Y. Y; Q" I' u& X0 `% K0 H8 @& B5 H+ @2 `+ ?
![]()
0 a: C/ F" a# g- o8 K
. z2 D' x1 a/ A% F6 f6 ], n
+ a2 f* u( q) l* m, C. C; b# Relu在tensorflow中的实现: 直接调用函数 2 v7 L8 l: r# }5 L7 w8 ~* I
tf.nn.relu( features, name= None )
; G" h( W+ Z0 D
! W( P7 U: x' C) l" U4 J8 z+ t与Sigmoid/tanh函数相比,ReLu激活函数的优点是:
9 x: m. D* C% _ ?; D1 G3 \9 P! K# _/ A; U6 q, A
使用梯度下降(GD)法时,收敛速度更快
. _+ b; d7 o6 H( W* p- B; \相比Relu只需要一个门限值,即可以得到激活值,计算速度更快 % P, | A/ R! ?. _1 \. U4 [
缺点是: Relu的输入值为负的时候,输出始终为0,其一阶导数也始终为0,这样会导致神经元不能更新参数,也就是神经元不学习了,这种现象叫做“Dead Neuron”。
$ D( D9 w2 D% v' ^( n0 k9 g* C0 P5 ~0 j0 B2 u0 H$ S
为了解决Relu函数这个缺点,在Relu函数的负半区间引入一个泄露(Leaky)值,所以称为Leaky Relu函数。+ i# k# ?! S0 T8 s c, L
) y% E; X/ E9 e6 l+ R
(6)Leaky Relu (带泄漏单元的relu )- \1 r0 O, S, X
- a; N' c" z2 l
数学表达式: y = max(0, x) + leak*min(0,x)
, S9 Z: W+ J9 x6 b2 \* @* N% r( i+ z/ d; p2 x0 B
与 ReLu 相比 ,leak 给所有负值赋予一个非零斜率, leak是一个很小的常数 ,这样保留了一些负轴的值,使得负轴的信息不会全部丢失)0 [3 s# j5 f! J9 }8 ]$ a! y
7 e2 |5 v2 d, R ?" |
( K4 F& k( F% ]6 b
leaky ReLU! N' ?6 o2 H$ @: K- [
% I0 w# H! {5 g$ h
% ]% N- P. g6 m4 q' N8 n+ S5 V
, R2 j$ M' Q" l. F1 n, D: k A5 u5 k% Q" g6 ?& z' d
#leakyRelu在tennsorflow中的简单实现
$ b! I& K5 O; t; ^ tf.maximum(leak * x, x),3 y2 j# v" [$ y4 [
' J n* u$ q! N6 `8 R
! o& J8 q1 B& c, ]$ t
比较高效的写法为:
* i' n4 l7 L, \. {8 P2 k9 B: v0 \ z$ m/ H# Q6 A! p: p
import tensorflow as tf
5 F6 H4 n* L4 d5 vdef LeakyReLU(x,leak=0.2,name="LeakyReLU"):
# {# S7 I: r/ q with tf.variable_scope(name):/ y1 M4 G0 C0 B3 M6 O8 {) F
f1 = 0.5*(1 + leak)3 B; q+ m) Y& A9 f$ a+ Z* p
f2 = 0.5*(1 - leak)/ ]' }" v3 h: k4 q5 ~% t2 K4 t: S
return f1*x+f2*tf.abs(x)# ^9 ?$ i( c% }* O" ^
- B% E8 P! w' w# [(vi) RReLU【随机ReLU】* S7 C1 V; y8 z% ~
9 s, w j. l# o4 c v在训练时使用RReLU作为激活函数,则需要从均匀分布U(I,u)中随机抽取的一个数值 ,作为负值的斜率。# p3 c: W- U5 M% a1 W2 W1 _
9 t4 k6 m3 v7 M4 T% e8 w![]()
+ R1 z# J7 b3 [. q( Q' }1 M' B
$ Y/ K; E$ ~- p8 U8 K) z总结: 激活函数可以分为 两大类
. e& H9 _7 ^ }4 h4 q8 m/ T/ f0 k0 a
饱和激活函数: sigmoid、 tanh
9 \& k5 Z0 J3 D# V" w! q# ^非饱和激活函数: ReLU 、Leaky Relu 、ELU【指数线性单元】、PReLU【参数化的ReLU 】、RReLU【随机ReLU】5 M Z! o! x; j
* x w1 u/ ^5 Y& [% B " \4 ?) K' }1 C4 ^8 x
9 m/ o+ A/ z% s9 q& a5 Q
相对于饱和激活函数,使用“非饱和激活函数”的优势在于两点:
# [7 r* m: d* l1 z( X- n 1.首先,“非饱和激活函数”能解决深度神经网络【层数非常多!!】的“梯度消失”问题,浅层网络【三五层那种】才用sigmoid 作为激活函数。5 V) _# p! \; Y2 k
2.其次,它能加快收敛速度。
. V" f2 X0 W3 A
% e" Z$ g; y2 v其它激活函数:softplus、softsign7 H: k% ?' B+ ^1 T$ ^+ a1 z
c0 }/ O: K: ^ / z+ \9 l4 y. z: p) Y- w0 F
/ l$ p R/ U# g% g1 y3 p: ?
Matlab 中的激活(传递)函数& s$ }! V/ h2 j( F
5 t' A, ]2 P) F( H1 Y![]()
) Y, Q8 T4 O0 d6 K
1 C2 Y% }- Z; k7 r/ J1 Y5 K![]() 1 r* [% j6 d) I$ M5 t
2 p+ v2 h3 I% {6 W1.2 网络结构及工作方式 0 {4 I4 W, U2 t, p4 B
除单元特性外,网络的拓扑结构也是 NN 的一个重要特性。从连接方式看 NN 主要 有两种。
7 G% {0 ?( o7 c9 o: o6 g5 k0 g7 @% K8 K% D7 T
(i)前馈型网络 各神经元接受前一层的输入,并输出给下一层,没有反馈。结点分为两类,即输入 单元和计算单元,每一计算单元可有任意个输入,但只有一个输出(它可耦合到任意多 个其它结点作为其输入)。通常前馈网络可分为不同的层,第i层的输入只与第 1 −i 层 输出相连,输入和输出结点与外界相连,而其它中间层则称为隐层。
& J* F9 \; n: v8 t2 m! o9 L0 u+ z$ t/ [+ \7 m! L$ O# D8 z
(ii)反馈型网络 所有结点都是计算单元,同时也可接受输入,并向外界输出。 NN 的工作过程主要分为两个阶段:第一个阶段是学习期,此时各计算单元状态不 变,各连线上的权值可通过学习来修改;第二阶段是工作期,此时各连接权固定,计算 单元状态变化,以达到某种稳定状态。 从作用效果看,前馈网络主要是函数映射,可用于模式识别和函数逼近。反馈网络 按对能量函数的极小点的利用来分类有两种:第一类是能量函数的所有极小点都起作 用,这一类主要用作各种联想存储器;第二类只利用全局极小点,它主要用于求解优化问题。 ( S! c. T, l; U3 g
! Z% k5 p X7 i# R& \3 @2 蠓虫分类问题与多层前馈网络 8 |' O" T9 h7 {1 u& y1 C
2.1 蠓虫分类问题
# X& U5 D3 H# o- r2 _蠓虫分类问题可概括叙述如下:生物学家试图对两种蠓虫(Af 与 Apf)进行鉴别, 依据的资料是触角和翅膀的长度,已经测得了 9 支 Af 和 6 支 Apf 的数据如下:! a' N+ ]) p \! T
! t: q$ V7 n4 {5 \7 nAf: (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).8 ?! b2 ~3 e& s' }+ ]5 m
6 s, ~' L7 N( GApf: (1.14,1.82),(1.18,1.96),(1.20,1.86),(1.26,2.00),(1.28,2.00),(1.30,1.96).
( v. N: W! ^ G! J
2 `4 g: T+ N P s' |现在的问题是:
) B( E s3 [6 T1 r8 y/ m4 p. w v, e3 q6 I4 o: H
(i)根据如上资料,如何制定一种方法,正确地区分两类蠓虫。
L% ^- F. j- j4 a' Q: ~6 u4 G, S5 l) ?3 R
(ii)对触角和翼长分别为(1.24,1.80),(1.28,1.84)与(1.40,2.04)的 3 个标本,用所得 到的方法加以识别。% s0 V2 M9 `: J
. H& Z4 Z& [4 s0 t W
(iii)设 Af 是宝贵的传粉益虫,Apf 是某疾病的载体,是否应该修改分类方法。: q4 U7 B/ [) R5 U
2 j9 \2 M$ p% T如上的问题是有代表性的,它的特点是要求依据已知资料(9 支 Af 的数据和 6 支 Apf 的数据)制定一种分类方法,类别是已经给定的(Af 或 Apf)。今后,我们将 9 支Af 及 6 支 Apf 的数据集合称之为学习样本。 / A6 U5 p! E; y$ ?
0 d1 T: ^$ O) U6 @2 S) U2.2 多层前馈网络
, g1 Y" I2 a. F4 F为解决上述问题,考虑一个其结构如下图所示的人工神经网络,8 }+ H5 l# n, b, W- L& S
; s. E, I a6 u9 p( d![]()
1 v) d3 _4 {6 b& D% z* y
2 x) G- M0 X( z) I, J- T, x/ j4 `; }3 [" g: j9 l/ [& M0 L
使用sigmoid 激活函数:2 A, e# ~& r$ B
0 K( z3 h. f6 I+ i . q |5 L; ^" |1 p" L
7 X/ g7 ^0 ]' T图中下面单元,即由 所示的一层称为输入层,用以输入已知测量值。在 我们的例子中,它只需包括两个单元,一个用以输入触角长度,一个用以输入翅膀长度。 中间一层称为处理层或隐单元层,单元个数适当选取,对于它的选取方法,有一些文献 进行了讨论,但通过试验来决定,或许是好的途径。在我们的例子中,取三个就足够 了。上面一层称为输出层,在我们的例子中只包含二个单元,用以输出与每一组输入 数据相对应的分类信息.任何一个中间层单元接受所有输入单元传来的信号,并把处理 后的结果传向每一个输出单元,供输出层再次加工,同层的神经元彼此不相联接,输入 与输出单元之间也没有直接联接。这样,除了神经元的形式定义外,我们又给出了网络 结构。有些文献将这样的网络称为两层前馈网络,称为两层的理由是,只有中间层及输 出层的单元才对信号进行处理;输入层的单元对输入数据没有任何加工,故不计算在层 数之内。8 ?5 S7 ^$ b" `
$ O3 e' z9 Y0 P( z: t( F
- j: [! S u/ w/ P# O![]() ![]()
7 r' e- L! ?9 ^' B- J! q9 c
4 K5 D% \8 D; | c/ J; p
3 y6 p, j$ Z: E6 m! Y, I3 s, [2.3 后向传播算法4 w8 u0 s$ X, k4 g8 f! o) `7 u
对于一个多层网络,如何求得一组恰当的权值,使网络具有特定的功能,在很长一 段时间内,曾经是使研究工作者感到困难的一个问题,直到 1985 年,美国加州大学的 一个研究小组提出了所谓反向传播算法(Back-Propagation),使问题有了重大进展,这 一算法也是促成人工神经网络研究迅猛发展的一个原因。详细了解请看: 一文弄懂神经网络中的BP反向传播算法' e" w' m4 R- Q- ~4 z% w% Y/ s7 p
+ E8 f: U1 ^4 Y下面就来介绍这一算法。【注:梯度法又称最速下降法。】. j% k2 G0 ~- k ~5 i. p
: f4 r( e" E; P8 q. B* Y# \) M# b) K8 z, `" J {2 i
![]()
9 O' a3 I9 p. n9 Y( u3 d# ?1 e' s
0 `; q4 B, W" \3 ]- T# C1 _' {2 f2 H
: I- b& b. u0 y3 Z
) b/ Z9 ^1 p& q; R! d
, i0 {' A' A6 Q) u( L, i0 S$ ~
) m n3 b' h, _(iii)在如上的讨论中使用的是速下降法,显然,这也不是唯一的选择,其它的 非线性优化方法,诸如共轭梯度法,拟牛顿法等,都可用于计算。为了加速算法的收敛 速度,还可以考虑各种不同的修正方式。3 |. e; B+ l$ `) o/ C6 H$ u
# Y' S3 W' t! Y' C(iv)BP 算法的出现,虽然对人工神经网络的发展起了重大推动作用,但是这一 算法仍有很多问题.对于一个大的网络系统,BP 算法的工作量仍然是十分可观的,这 主要在于算法的收敛速度很慢。更为严重的是,此处所讨论的是非线性函数的优化,那 么它就无法逃脱该类问题的共同困难:BP 算法所求得的解,只能保证是依赖于初值选 取的局部极小点。为克服这一缺陷,可以考虑改进方法,例如模拟退火算法,或从多个随机选定的初值点出发,进行多次计算,但这些方法都不可避免地加大了工作量。 7 F8 |8 I' I7 s3 i2 l5 N) v
+ }- s& x+ f' b8 }9 ~3 c- _
2.4 蠓虫分类问题的求解
+ ?. t! D4 k) k% e6 I0 ^ J下面利用上文所叙述的网络结构及方法,对蠓虫分类问题求解。编写 Matlab 程序 如下:
5 \ R; n, D9 \
6 h2 T0 N( u a! f- Zclear
9 \! ]' s' S5 v/ }4 s/ f1 `p1=[1.24,1.27;1.36,1.74;1.38,1.64;1.38,1.82;1.38,1.90;1 l# C3 G& i! U& q" `9 H+ Z
1.40,1.70;1.48,1.82;1.54,1.82;1.56,2.08];
+ Q+ E: p9 Z/ Op2=[1.14,1.82;1.18,1.96;1.20,1.86;1.26,2.00 8 D2 ~ l ]5 W: L: N! Q" w0 C
1.28,2.00;1.30,1.96]; p=[p1;p2]'; pr=minmax(p);
3 @# Y8 |( }3 x4 w9 Xgoal=[ones(1,9),zeros(1,6);zeros(1,9),ones(1,6)]; % P' R5 i. U* F+ r( ?' L5 {
plot(p1(:,1),p1(:,2),'h',p2(:,1),p2(:,2),'o')
% {" l: F$ C0 @3 _net=newff(pr,[3,2],{'logsig','logsig'}); R& r: g$ b9 w
net.trainParam.show = 10; $ J- M$ s6 e# T' r- `% ?/ n
net.trainParam.lr = 0.05;
7 R3 w1 F+ x7 M8 w p2 ~9 v: c7 Wnet.trainParam.goal = 1e-10; # i9 V) ~( [3 U# F' K- ]6 w2 e
net.trainParam.epochs = 50000;
: t* @( K. p3 |& X) mnet = train(net,p,goal);
4 |. q: o2 o: \5 m. B, c1 Z$ Ox=[1.24 1.80;1.28 1.84;1.40 2.04]';
$ N# z* k/ J0 Q9 h. K& [) m; B) Hy0=sim(net,p)
- g. e: S; @; Q& v; ty=sim(net,x)4 H& o7 s l( i2 z
" G/ ^8 B( P; o9 a- q, @
3 p( z# L% i) q, [& ~- h, q' `
5 {; j* g9 M; l7 r3 处理蠓虫分类的另一种网络方法 + c5 e( d8 ?7 a
3.1 几个有关概念2 Q( w6 O! K. y P" B0 q& l3 a# T
在介绍本节主要内容之前,首先说明几个不同的概念。在上一节中,我们把利用 BP 算法确定联接强度,即权值的过程称为“学习过程”,这种学习的特点是,对任何一 个输入样品,其类别事先是已知的,理想输出也已事先规定,因而从它所产生的实际输 出与理想输出的异同,我们清楚地知道网络判断正确与否,故此把这一类学习称为有监督学习;与它不同的是,有些情况下学习是无监督的,例如,我们试图把一组样品按其本身特点分类,所要划分的类别是事先未知的,需要网络自身通过学习来决定, 因而,在学习过程中,对每一输入所产生的输出也就无所谓对错,对于这样的情况,显 然 BP 算法是不适用的。 另一个有关概念是所谓有竞争的学习。在上节所讨论的蠓虫分类网络中,尽管我们 所希望的理想输出是 (0,1)或(1,0),但实际输出并不如此,一般而言,两个输出单元均同时不为 0。与此不同,我们完全可以设想另外一种输出模式:对应任何一组输入,所 有输出单元中,只允许有一个处于激发态,即取值为 1,其它输出单元均被抑制,即取 值为 0。一种形象的说法是,对应任何一组输入,要求所有的输出单元彼此竞争,唯一 的胜利者赢得一切,失败者一无所获,形成这样一种输出机制的网络学习过程,称为有 竞争的学习。 w. C/ v, E+ i' [* K/ Q7 D7 i
4 h% M3 Z" W5 |% n7 t
3.2 简单的无监督有竞争的学习
& ~5 E& t `+ A# a6 e+ Q2 _9 y( b4 B5 o, i q9 }
本节叙述一种无监督有竞争的网络学习方法,由此产生的网络可用来将一组输入样 品自动划分类别,相似的样品归于同一类别,因而激发同一输出单元,这一分类方式, 是网络自身通过学习,从输入数据的关系中得出的。 蠓虫分类问题对应有监督的网络学习过程,显然不能由如上的方法来解决。但在这 种无监督有竞争的学习阐明之后,很容易从中导出一种适用于有监督情况的网络方法; 此外,本节所介绍的网络,在数据压缩等多种领域,都有其重要应用。 m2 k% c9 a! u
2 B$ Q H, b$ A/ [$ u" r4 W' O % ?# \1 z% o' A, u( H
/ k% ?; b2 x+ t5 g
![]()
+ v1 _' N% J2 T
) R! G% p: E4 h
. `8 k+ b# Y+ B9 u2 e
- C' h2 J0 K/ Y为了更有效地使用如上算法,下面对实际计算时可能产生的问题,作一些简要说明。6 A. E0 K1 h4 g/ s) |) x
8 {6 @( M# w( r) [ 首先,如果初始权选择不当,那么可能出现这样的输出单元,它的权远离任何输入 向量,因此,永远不会成为优胜者,相应的权也就永远不会得到修正,这样的单元称之 为死单元。为避免出现死单元,可以有多种方法。一种办法是初始权从学习样本中抽样 选取,这就保证了它们都落在正确范围内;另一种办法是修正上述的学习算法,使得每 一步不仅调整优胜者的权,同时也以一个小得多的 η 值,修正所有其它的权。这样,对 于总是失败的单元,其权逐渐地朝着平均输入方向运动,终也会在某一次竞争中取胜。 此外,还存在有多种处理死单元的方法,感兴趣的读者可从文献中找到更多的方法。 + L1 G# l* J+ r j
# g* O' d- C( X- P+ R! U) A* m$ S1 m![]()
( Q: t% g" |9 E
% l8 l, j. \; W( ` e' F& V* ]! ?0 r
7 G: c% d2 H7 e
3.3 LVQ 方法 --学习矢量量化
) q0 c) @. f: h! k: E# U7 w9 t9 }+ f5 ~
上述有竞争学习的一个重要应用是数据压缩中的向量量子化方法(Vector Quantization,又称,学习矢量量化)。它的基本想法是,把一个给定的输入向量集合 分成M 个类别,然后 用类别指标来代表所有属于该类的向量。向量分量通常取连续值,一旦一组适当的类别确定之后,代替传输或存储输入向量本身,可以只传输或存储它的类别指标。所有的类别由M 个所谓“原型向量”来表示,我们可以利用一般的欧氏距离,对每一个输入向量找到靠近的原型向量,作为它的类别。显然,这种分类方法可以通过有竞争的学习直接得到。一旦学习过程结束,所有权向量的集合,便构成了一个“电码本”。3 \ `5 }2 f& X y( W9 K0 m& I
5 V) P9 o, M, w一般而言,上述无监督有竞争的学习,实际提供了一种聚类分析方法,对如蠓虫分类这种有监督的问题并不适用。1989 年,Kohonen 对向量量子化方法加以修改,提出 了一种适用于有监督情况的学习方法,称为学习向量量子化(Learning Vector Quantization),该方法可用于蠓虫分类问题。在有监督的情况下,学习样品的类别是事 先已知的,与此相应,每个输出单元所对应的类别也事先作了规定,但是,代表同一类 别的输出单元可以不止一个。 7 T2 [& w* U, d5 T1 k- A4 o
& j; H C0 m) _8 g4 i" ~
2 z# w7 }& z" ?' I# @6 E
3 Z4 _1 ?# s7 _/ `前一种情况,修正和无监督的学习一致,权朝向样本方向移动一小段距离;后一种 则相反,权向离开样本方向移动,这样就减少了错误分类的机会。 对于上述的蠓虫分类问题,我们编写 Matlab 程序如下: 7 {& O# L }& @) ]
clear - B/ G9 M- K! }! u8 K
p1=[1.24,1.27;1.36,1.74;1.38,1.64;1.38,1.82;1.38,1.90;
/ w7 h; E; j* R2 j; V 1.40,1.70;1.48,1.82;1.54,1.82;1.56,2.08]; + C# I$ e# `0 [
p2=[1.14,1.82;1.18,1.96;1.20,1.86;1.26,2.00
; q! V" b! d1 l 1.28,2.00;1.30,1.96];
' M2 L; H) i: ]0 y8 Wp=[p1;p2]' 5 s, W& I* y$ w3 d
pr=minmax(p)
# R) g" q+ U. W S- j9 v0 Ngoal=[ones(1,9),zeros(1,6);zeros(1,9),ones(1,6)] 7 P: |; ^8 e1 G4 C, }$ O! P
net = newlvq(pr,4,[0.6,0.4])
% \$ b! w: x; k- ]! inet = train(net,p,goal)
& B! d5 u: W5 e/ v2 QY = sim(net,p) 6 q7 W; \8 F! l1 |/ i0 ~3 n$ M
x=[1.24 1.80;1.28 1.84;1.40 2.04]'
5 a& P+ \' _& p% V' \; ssim(net,x) , X0 h5 q4 N9 Q( H6 E0 s" J
9 r% b/ i f& [; h+ G/ d
习 题
" j4 J6 h; X7 T# }1. 利用 BP 算法及 sigmoid 函数,研究以下各函数的逼近问题 " B& V5 u4 o) \- v y
) C# E4 x# k/ m: j+ q( B
' Y% S- H8 ~# ]2 `5 `
% ^- y7 c! y. m' W5 s3 W& y对每一函数要完成如下工作:: e. Z% Q% @* X" c2 G" f
* L l r; f3 e! h① 获取两组数据,一组作为训练集,一组作为测试集;
! A6 t! G- v) v' D5 O9 e w0 k/ k# C8 P+ e h: D% r: X) j
② 利用训练集训练一个单隐层的网络;用测试集检验训练结果,改变隐层单元数, 研究它对逼近效果的影响。
# x2 F+ K7 y: L3 A- r# j$ S7 G: L2 g1 X5 M/ U/ b7 U
2. 给定待拟合的曲线形式为
8 }- O# q: T* k& M5 f. S, ]! R1 K& ~- B& I; H2 |( H
![]()
1 O& x0 i% Z7 x. ^+ j. a
. [: F' a2 O2 ~( J5 u在 上等间隔取 11 个点的数据,在此数据的输出值上加均值为 0,均方差 σ = 0.05 的正态分布噪声作为给定训练数据,用多项式拟合此函数,分别取多项式的阶次为 1, 3 和 11 阶,图示出拟合结果,并讨论多项式阶次对拟合结果的影响。
: c4 J7 B6 F9 F2 E7 j- A2 D2 [
$ l g! a/ ^" n. ~4 X C# b
/ ?6 b! D- O9 j0 u7 r6 a/ E. R
3 Q' ^! J7 U& ^
2 D- y: h. T$ u0 L+ Z. I& u( m3 Q. g, p5 ?' {( D `4 O8 C
/ V& j1 a! z8 E( o( n9 a————————————————
% S |0 ]8 M0 @0 Q7 L+ z+ V/ E版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。$ B0 M7 \% y+ @2 w! z" `
原文链接:https://blog.csdn.net/qq_29831163/article/details/89509279
2 ]0 b! V ]% i5 N- J2 \* F0 L3 ~, {/ _* D7 }- o* b* F1 s
3 Y3 } s9 G, y1 o* ] |
zan
|