BP网络以及深度学习讲解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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。