(3.3)
2 PSD的标定研究 2.1 PSD非线性的原因
由于PSD(position sensitive detector)器件是一种连续型半导体器件,存在表层电阻不均匀、电极的交叉影响等因素,非线性起伏不可避免。为了提高测量精度[8],在应用中必须对PSD的非线性进行修正。
2.2 PSD的非线性校正方法
通常在标准网格交叉点上对二维PSD进行采样,再配合插值,进行非线性修正。这样处理的依据是认为输入点集与输出点集存在一一映射,当采用线性插值时,认为在充分小的尺度上输入与输出在几何上是仿射变换。这样的假设是合理的,但是对每一个器件要采集和保存大量的型值点,并且在使用时要调用查找算法,这需要较大存储空间,更不利的是大大降低了实时处理能力。
而本次设计采用的BP(Back Propagation)算法,这种算法有更好的分类和记忆等能力,BP算法客服了简单感知器不能解决的XOR和其他一些问题,所以BP算法已成为重要的优化算法之一。 3 BP算法的研究 BP神经网络是一种具有3层或3层以上的神经网络,包括输入层、中间层(隐层)和输出层。上下层之间实现全连接,而每层神经元之间无连接。当一对学习样本提供网络后,神经元的激活值从输入层经各中间层向输出层传播,在输逆的传播中修正权值,最后回到输入层,这种算法称为“误差逆传播算法”,即BP算法。BP神经网络的神经元一般采用的是可微函数,所以可以实现输入和输出间的任意非线性映射,当其隐层的神经元的个数足够多时,可以以任意精度逼近一个有有限个间断点的非线性函数,正是由于这一特点,使得BP神经网络主要应用于下列领域:
a.函数逼近.用于非线性系统的函数建模,如机器人的轨迹控制或其他领域的建模与控制。
b.模式识别,分类。
c.数据挖掘和数据压缩等。
在这里主要考虑BP网络在函数逼近方面的作用以达到PSD非线性校正的目的。
3.1 BP网络的学习规则
在这里以一个单隐层的BP网络为例,介绍其
学习过程和步骤:
(1)初始化。给每个权值赋予(-1,1)之间的随机值。
(2)随机取一组输入和目标样本Pk=(ak1,ak2,…,akn),Tk=(sk1,sk2,…,skp)提供给网络。
(3)用输入样本Pk=(ak1,ak2,…,akn),权值wij和θj阈值计算中间层各单元的输入sj,然后用sj通过传递函数计算中间各单元的输出bj。
j=1,2,…,p
(4)用中间层的输出bj、权值vjt和阈值γ计算输出各单元的输出lt,再利用传递函数计算输出层的响应Ct。
t=1,2,…,q
(5)利用目标向量Tk=(yk1,yk2,…,ykq)、实际输出Ct,计算输出层的各单元误差dkt。
t=1,2,…,q
(6)利用权值vjt、输出层的误差dkt和中间层的输出bj计算中间层各单元的误差ekj。
(7)用输出层各单元的误差dkt和中间层各单元的输出bj来修正权值vjt和阈值γt。
t=1,2,…,p,0<α1
(8)利用中间层各单元的误差ekj、输入层单元的输入Pk=(ak1,ak2,…,akn)修正权值wij和阈值θj。
i=1,2,…,n,j=1,2,…,p,0<β<1
(9)随机选取下一个学习样本提供给网络,返回到步骤(3),直到所有的训练样本训练完毕,并且使得全局误差小于设定的值,即网络收敛。 4 BP神经网络在非线性校正中的应用 二维PSD是一种半导体器件,其原理可以用图5来简要说明[9]。其光敏面是一正方形区域,四角处有输出电极引线,衬底为公共极,可理解为具有公共极的4个光敏二极管(图5)。
图5 二维PSD的原理图
Fig4 Two Dimension PSD Devic
光斑照射在光敏面上时,由光电效应产生光电流。光斑位置不同则光电流在4个电极的分配比例不同。因此通过测量光电流I1~I4,对于光斑实际位置(x,y)可计算出光斑能量中心的二维坐标(Vx,Vy)。该坐标可用下式计算:
本文采用的是二维C202型PSD,样本数据每隔1mm等间隔选取6×6个数据点。用上述样本数据对神经网络进行循环训练,神经网络采用2—14—2结构,即输入端将2个输入端的信息传递到隐层,隐层由14个双曲正切激活函数的神经元构成,而输出层由2个线性激活函数的神经元构成。上述样本数据对神经网络进行训练,误差平方和为0.000104。若要求更高的精度,可以增加训练次数,但要注意用样本数据之外的测试数据对训练后的神经网络进行测试,以免因训练过度而影响网络的推广性[10]。 4.1 程序实现 用c语言实现BP算法的流程图如7所示:
开始 置各权值和阈值初始值 选定神经元函数类型 给定输入样本向量和目标向量 求隐层和输出层各单元输出 求期望输出与实际给出的误差 权值学习修正 计算权值梯度 误差是否满