BP网络以及深度学习讲解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

神经网络

1 BP 网

图:三层BP 网

信号正向传播和误差反向传播

)(k k net f o = ∑==m

j j jk k y net 0

ω k=1,2……l 有l 个输出(l 常常为1)。

中间隐层有m 层:

)(j j net f y = ∑==n

i i ij j x net 0

υ i=1,2,……m n 个输入。j=1,2……m

其中Sigmoid 函数:x

e

x f -+=

11

)( (单极性) k

o k net E

∂∂-

=δ 1.1 计算流程

不同样本误差:2

1

)(∑=-=

l

k M k

M k

M

o d

E

E=((T-Ok)'*(T-Ok))/2;

一般使用2

1

1

)(21∑∑

==-=l

k p k

p k

M

p o d

E 总

1.2 影响参数:

1.2.1 隐层节点数

nn=n m + +a ,其中 m 为输出神经元数, n 为输入神经元数, a 为[1,10]之间的常数。 nn=n 2log nn=2n+1; nn=mn

1.2.2 学习率

学习率η,太大会影响训练稳定性,太小使训练收敛速度慢。一般在0.01--0.8之间。我取0.2

E min 一般在0.1--之间。

1.3 样本/输入

1.3.1 训练样本

训练样本数:M ε

w

n ≈

,w n 为权值阈值总数,一般为连接权总数的5~10倍。

训练数据必须作平衡处理,不同类别的样本需要交叉输入,轮流输入--时间延长。

1.3.2 输入形式

字符:形状格填充、边缘距离 曲线:采样 变化大可以密集采样 输出:

不同的输出用不同的码表示

1.3.3 归一化:

样本分布比较均匀 [0,1]区间:min

max min

x x x x x i i

--=

[-1,1]区间:mid mid i i x x x x x --=

max )(2 其中2

min

max x x x mid

+= 不均匀:对数 平方根

[coef,score,latent,t2] = princomp(x);(个人观点):

x :为要输入的n 维原始数据。带入这个matlab 自带函数,将会生成新的n 维加工后的数据(即score )。此数据与之前的n 维原始数据一一对应。

score :生成的n 维加工后的数据存在score 里。它是对原始数据进行的分析,进而在新的坐标系下获得的数据。他将这n 维数据按贡献率由大到小排列。(即在改变坐标系的情况下,又对n 维数据排序)

latent :是一维列向量,每一个数据是对应score 里相应维的贡献率,因为数据有n 维所以列向量有n 个数据。由大到小排列(因为score 也是按贡献率由大到小排列)。

coef :是系数矩阵。通过cofe 可以知道x 是怎样转换成score 的。

1.4 权值/阈值

1.4.1 初始权值

初始权值足够小,初始值为1和-1的权值数相等。

1.4.2 权值学习算法

P99

traingd:标准梯度下降算法 traingdm:附加动量项

traingda:自适应学习速率,效果比上者好。 traingdx: 附加动量项、自适应学习速率 更好的算法如下: trainlm:

1.5 优化

1 提高训练速度:附加动量法:

)(t w w w jk jk ∆+=其中)1()(-∆+=∆t w y t w j o k αηδ

)1(*)1()(-∆+-=∆t w mc y mc t w j o k ηδ

)1(*)1()(-∆+-=∆t b mc mc t b o k ηδ 见P85

2 k net k k e net f o -+=

=11)(改为λ

/11

)(k net k k e

net f o -+==,一般λ=1 k k o d E -≈∆,0较大时,进入平坦区,令λ>1

常用的改进方法有附加冲量项、自适应学习参数、模拟退火法等,

1.6 技巧

若show 设为NaN ,则不显示训练过程

一篇论文中案例:初始权值不可过大过小。网络1的初始权值和偏差定为-0.25--0.25的随机数,网络2的定为-0.5--0.5的随机数。

目标误差:0.05 两个连续迭代过程平均相差小于9

10-, 样本数:200

1.7 常用函数归纳

1.7.1 train 之前

net.trainParam.show=10; %show interval 25 %net.trainParam.showWindow=flase;

net.trainParam.epochs=5000;%train times.default:10 net.trainParam.goal=0.0001;%0

net.trainParam.lr=0.2;%0.15

net.trainParam.max_fail=5;% max times of affirm failure

net.trainParam.min_grad=1e-10;%min gradient

net.trainParam.time=inf;%max train time

net.trainParam.mc=0.95; %momentum factor when use traingdm,default:0.9 1.7.2

%net.iw{1,1}=iw;net.lw{2,1}=lw;net.b{1}=theta1;net.b{2}=theta2;

%yers{1}.initFcn ='initlay';

Plotpv(p,t,v)

Plotpc(net.iw{1,1},net.b{1})

初始化网络:

Net.inputWeights{1,1}.initFcn=’rands’; %initialize weight

Net.biases{1}.initFcn=’rands’; %initialize deviation

net=init(net)

误差平方和:sumsqr

Newff newcf

1.8 评价标准

实际为正类实际为负类

预测为正类TP FP

预测为负类FN TN

查准率/精度:precision=TP/(TP+FP)

真正类率(TPR)/查全率/真阳性率/灵敏度/召回率/敏感性(sensitivity):

recall=TP/(TP+FN)

正确率:accuracy=(TP+TN)/ALL

特异性(specificity)/真阴性率/1-假阳性率:TN/(FP+TN)

2 前馈神经网络

无隐层:线性

单隐层:凸域

双隐层:任意复杂形状区域,所以一般使用单隐层,较少情况下可以使用双隐层。

解决已知的线性问题,使用感知器或者自适应网络更好,非线性使用BP。

相关文档
最新文档