搜档网
当前位置:搜档网 › 基于神经网络的人脸识别

基于神经网络的人脸识别

基于神经网络的人脸识别
基于神经网络的人脸识别

【代码及说明见第四页】

基于三层BP 神经网络的人脸识别

一、 实验要求

采用三层前馈BP 神经网络实现标准人脸YALE 数据库的识别。 二、BP 神经网络的结构和学习算法

实验中建议采用如下最简单的三层BP 神经网络,输入层为],,,[21n x x x X ,有n 个神经元节点,输出层具有m 个神经元,网络输出为],,,[21m y y y Y ,隐含层具有k 个神经元,采用BP 学习算法训练神经网络。

BP 神经网络的结构

BP 网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对BP 网络加以训练,网络就具有输入输出对之间的映射能力。

BP 网络执行的是有教师训练,其样本集是由形如(输入向量,期望输出向量)的向量对构成的。在开始训练前,所有的权值和阈值都应该用一些不同的小随机数进行初始化。

BP 算法主要包括两个阶段: (1) 向前传播阶段

①从样本集中取一个样本(X p ,Y p ),将X p 输入网络,其中X p 为输入向量,Y p 为期望输出向量。

②计算相应的实际输出O p 。

在此阶段,信息从输入层经过逐级的变换,传送到输出层。这个过程也是网络在完成训练后正常运行时执行的过程。在此过程中,网络执行的是下列运算:

(1)(2)()21(...((())...))n p n p O F F F X W W W

(2) 向后传播阶段

①计算实际输出O p 与相应的理想输出Y p 的差; ②按极小化误差的方法调整权矩阵。

这两个阶段的工作一般应受到精度要求的控制,定义

21

1()2m

p pj pj j E y o (1)

作为网络关于第p 个样本的误差测度(误差函数)。而将网络关于整个样本集的误差测度定义为

p E E (2)

如前所述,将此阶段称为向后传播阶段,也称之为误差传播阶段。 为了更清楚地说明本文所使用的BP 网络的训练过程,首先假设输入层、中间层和输出层的单元数分别是N 、L 和M 。X=(x 0,x 1,…,x N-1)是加到网络的输入矢量,H=(h 0,h 1,…,h L-1)是中间层输出矢量,Y=(y 0,y 1,…,y M-1)是网络的实际输出矢量,并且用D=(d 0,d 1,…,d M-1)来表示训练组中各模式的目标输出矢量。输出单元i 到隐单元j 的权值是V ij ,而隐单元j 到输出单元k 的权值是W jk 。另外用θk 和Φj 来分别表示输出单元和隐单元的阈值。

于是,中间层各单元的输出为:

1

0()N j ij i j i h f V x (3)

而输出层各单元的输出是:

1

0()L k jk j k j y f W h (4)

其中f(*)是激励函数,采用S 型函数:

1

()1x

f x e

(5) 在上述条件下,网络的训练过程如下:

(1) 选定训练集。由相应的训练策略选择样本图像作为训练集。

(2) 初始化各权值V ij ,W jk 和阈值Φj ,θk ,将其设置为接近于0的随机值,并初始化精度控制参数ε和学习率α。

(3) 从训练集中取一个输入向量X 加到网络,并给定它的目标输出向量D 。 (4) 利用式(7)计算出一个中间层输出H ,再用式(8)计算出网络的实际输出Y 。 (5) 将输出矢量中的元素y k 与目标矢量中的元素d k 进行比较,计算出M 个输出误差项:()(1)k k k k k d y y y 对中间层的隐单元也计算出L 个误差项:

1

*0(1)M J

j j k jk k h h W

(6) 依次计算出各权值和阈值的调整量:

()(/(1))*((1)1)**jk jk k j W n L W n h (6)

*()(/(1))*((1)1)**ij ij j i

V n N V n x (7) ()(/(1))*((1)1)*k k k n L n (8)

*()(/(1))*((1)1)*j j j

n L n (9) (7) 调整权值和阈值:(1)()()jk jk jk W n W n W n ,(1)()()ij ij ij V n V n V n

(1)()()k k k n n n ,(1)()()j j n n n

(8) 当k 每经历1至M 后,判断指标是否满足精度要求:E ≤ε,其中E 是总误

差函数,且1

20

1()2M k k k E d y 。如果不满足,就返回(3),继续迭代。如果满足,

就进入下一步。

(9) 训练结束,将权值和阈值保存在文件中。这时可以认为各个权值已经达到稳定,分类器形成。再一次进行训练时,直接从文件导出权值和阈值进行训练,不需要进行初始化。

BP 算法流程图

YALE 数据库是由耶鲁大学计算视觉与扼制中心创立,包括15位志愿者,每个人有11张不同姿势、光照和表情的图片,共计165张图片,图片均为80*100像素的BMP 格式图像。我们将整个数据库分为两个部分,每个人的前5幅图片作

为网络的训练使用,后6副图片作为测试使用。

说明:

程序的输入数据可以从这里下载:

链接: 密码: vsfb

如果不能下载了,可以自己找找YALE人脸数据库。

代码分为read_can_use.m和main_can_ues.m

先运行read_can_use.m读取图片的像素值,使用奇异值分解的方法得到对应的特征。程序预设了只读取前5个人的人脸图片,可以自己改成最多15个人。

然后运行main_can_use.m,程序会输出1 1 2 3 2 3,每个数字代表一张图片最有可能的识别类别(就是人的编号)。

对每个人的11张图片,取前7张训练网络,后4张测试网络,取前5个人进行实验。所以共有35个训练样本,20个测试样本。

比如输出的结果是1 1 1 1 2 2 1 2 3 3 3 3 …..,因为每4个数字是属于同一个人的,前四个都是1则都预测正确,第二组的4个数字2 2 1 2 中的那个1就是预测错误(本来是2预测成了1)。

由于参数的随机初始化,不保证每次的结果都相同。

function main()

%%

clc

clear all;

%close all;

load('date1_5.mat','feature');

warning off all

SamNum=35; %输入样本数量

TestSamNum=35; %测试样本数量

ForcastSamNum=20; %预测样本数量

HiddenUnitNum=8; %中间层隐节点数量取8

InDim=40; %网络输入维度

OutDim=4; %网络输出维度

%%input

p=[];t=[];pnew=[];

for i=1:55

if(mod(i,11)<=7&&mod(i,11)>0)

p=[p;feature(i,:)];

else

pnew=[pnew;feature(i,:)];

end

end

p=p';pnew=pnew';

%%output

s1=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ];

s2=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ];

s3=[0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ];

s4=[1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 ];

t=[s1;s2;s3;s4];

size(t) %%4*35 输出

size(p) %%40*35 输入

[SamIn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %原始样本对(输入和输出)初始化

rand('state',sum(100*clock)) %依据系统时钟种子产生随机数

SamOut=tn;

TestSamIn=SamIn; %这里取输入样本与测试样本相同因为样本容量偏少

TestSamOut=SamOut; %也取输出样本与测试样本相同

MaxEpochs=50000; %最多训练次数为50000

lr=0.035; %学习速率为0.035

E0=0.65*10^(-3); %目标误差为0.65*10^(-3)

W1=0.5*rand(HiddenUnitNum,InDim)-0.2; %初始化输入层与隐含层之间的权值

B1=0.5*rand(HiddenUnitNum,1)-0.2; %初始化输入层与隐含层之间的阈值

W2=0.5*rand(OutDim,HiddenUnitNum)-0.2; %初始化输出层与隐含层之间的权值

B2=0.5*rand(OutDim,1)-0.2; %初始化输出层与隐含层之间的阈值

ErrHistory=[]; %给中间变量预先占据内存

for i=1:MaxEpochs

% HiddenOut=logsig(W1*SamIn+repmat(B1,1,SamNum)); % 隐含层网络输出

HiddenOut=1./(1+exp(-(W1*SamIn+repmat(B1,1,SamNum)))); % 隐含层网络输出

NetworkOut=W2*HiddenOut+repmat(B2,1,SamNum); % 输出层网络输出Error=SamOut-NetworkOut; % 实际输出与网络输出之差SSE=sumsqr(Error) ; %能量函数(误差平方和)

ErrHistory=[ErrHistory SSE];

if SSE

% 调整权值(阈值)

Delta2=Error;

Delta1=W2'*Delta2.*HiddenOut.*(1-HiddenOut);

dW2=Delta2*HiddenOut';

dB2=Delta2*ones(SamNum,1);

dW1=Delta1*SamIn';

dB1=Delta1*ones(SamNum,1);

%对输出层与隐含层之间的权值和阈值进行修正

W2=W2+lr*dW2;

B2=B2+lr*dB2;

%对输入层与隐含层之间的权值和阈值进行修正

W1=W1+lr*dW1;

B1=B1+lr*dB1;

end

HiddenOut=1./(1+exp(-((W1*SamIn+repmat(B1,1,TestSamNum))))); % 隐含层输出最终结果

NetworkOut=W2*HiddenOut+repmat(B2,1,TestSamNum); % 输出层输出最终结果

a=postmnmx(NetworkOut,mint,maxt); % 还原网络输出层的结果

%%

% 利用训练好的网络进行预测

pnewn=tramnmx(pnew,minp,maxp); %归一化;

HiddenOut=1./(1+exp(-(W1*pnewn+repmat(B1,1,ForcastSamNum))));

anewn=W2*HiddenOut+repmat(B2,1,ForcastSamNum); % 输出层输出预测结果

%把网络预测得到的数据还原为原始的数量级;

anew=postmnmx(anewn,mint,maxt);

answer=zeros(1,size(anew,2));

d=1;

for j=1:20

for i=4:-1:1

answer(j)=answer(j)+anew(i,j)*d;

end

d=1;

end

answer=answer+0.5;

answer=floor(answer)

function [feature] = read_can_use()

clc,clear;

%%

for i=1:5

for jj=1:11

%%

s1='YALE\subject0';

s2=int2str(i);s22='_';s222=int2str(jj);

s3='.bmp';

str=strcat(s1,s2);

str=strcat(str,s22);

str=strcat(str,s222);

str=strcat(str,s3);

a2=imread(str);

M=double(a2);

%%

num=1;

for j=1:10

for k=1:4

x=i;

%将图片的灰度矩阵划分成32块小矩阵

temp_num1=size(M,1)./10;%100*80

temp_num2=size(M,2)./4;

temp=M((j-1)*temp_num1+1:j*temp_num1,(k-1)*temp_num2+1:k*temp_num2);

%对每个小矩阵进行SVD变换

[u,temp1,v]=svd(temp);

%提取最大的SVD系数作为特征值

temp2=temp1(num,num);

%得到所有图片的特征矩阵

feature((x-1)*11+jj,(j-1)*4+k)=temp2;

end

end

end

save('date1_5','feature');

神经网络在人脸识别中的应用

神经网络在人脸识别中的应用 1. 引言 早在上世纪60年代末,人脸识别即引起了研究者的强烈兴趣.但早期的人脸识别一般都需要人的某些先验知识,无法摆脱人的干预。进入上世纪90年代,由于高速度、高性能计算机的出现,人脸识别的方法有了重大突破,进入了真正的机器自动识别阶段,人脸识别研究得到了前所未有的重视。人脸识别方法有很多种: (1) 特征脸方法。这种方法起源于图像描述技术,采用特征脸识别方法有良好的 稳定性、位移不变性、特征向量与图像的高度成比例变化以及转置不变性。不足之处是受表情变化、光照角度强度变化和视角变化等严重影响,鲁棒性较差。(2) 隐马尔可夫模型方法(HiddenMarkovModel) 是用于描述信号统计特征的一 组统计模型。HMM 的基本理论是由Baum和Welch等人在20世纪60年代末70年代初建立,在语音识别中应用较多。 (3) 弹性图匹配方法。弹性图匹配方法是一种基于动态连接结构的方法。它将人脸用格状的稀疏图表示。 (4) 神经网络方法。人工神经网络是由多个神经元按照一定的排列顺序构成的,是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理。虽然单个神经元的结构极其简单,功能有限,但由大量冲经元所构成的网络系统却能够 实现复杂丰富的功能。神经网络系统除了具有集体运算的能力和自适应的学习能力外,还有根强的容错性和鲁棒性?善于联想、综合和推广。神经网络模型各种各样。它们是从不同的角度对生物神经系统不同层次的描述和模拟。有代表性的网络模型有感知器、多层映射BP网络、RBF网络等。目前,在人工神经网络的实际应用中,绝大部分的神经网络模型都是采用BP网络及其变化形式,它也是前向网

神经网络在人脸识别中的应用

神经网络在人脸识别中的应用 1.引言 早在上世纪60年代末, 人脸识别即引起了研究者的强烈兴趣.但早期的人脸识别一般都需要人的某些先验知识, 无法摆脱人的干预。进入上世纪9O年代, 由于高速度、高性能计算机的出现,人脸识别的方法有了重大突破, 进入了真正的机器自动识别阶段, 人脸识别研究得到了前所未有的重视。人脸识别方法有很多种: (1)特征脸方法。这种方法起源于图像描述技术,采用特征脸识别方法有良好的稳定性、位移不变性、特征向量与图像的高度成比例变化以及转置不变性。不足之处是受表情变化、光照角度强度变化和视角变化等严重影响, 鲁棒性较差。(2)隐马尔可夫模型方法(HiddenMarkovMode1)是用于描述信号统计特征的一组统计模型。HMM的基本理论是由Baum和Welch等人在20世纪6O年代末70年代初建立, 在语音识别中应用较多。 (3)弹性图匹配方法。弹性图匹配方法是一种基于动态连接结构的方法。它将人脸用格状的稀疏图表示。 (4)神经网络方法。人工神经网络是由多个神经元按照一定的排列顺序构成的, 是一个非线性动力学系统, 其特色在于信息的分布式存储和并行协同处理。虽然单个神经元的结构极其简单, 功能有限, 但由大量冲经元所构成的网络系统却能够实现复杂丰富的功能。神经网络系统除了具有集体运算的能力和自适应的学习能力外, 还有根强的容错性和鲁棒性.善于联想、综合和推广。神经网络模型各种各样。它们是从不同的角度对生物神经系统不同层次的描述和模拟。有代表性的网络模型有感知器、多层映射BP网络、RBF网络等。目前, 在人工神经网络的实际应用中,绝大部分的神经网络模型都是采用BP网络及其变化形式, 它也是前向网络的核心部分, 是人工神经网络最精华的部分。2BP神经网络的人脸识别BP神经网络用于人脸识别一般应先对输入图像实行图像预处理,然后进行特征提取,接下来就是BP网络训练,最后用训练好的网络进行识别,获得识别结果。 2.基于特征脸和BP 神经网络的人脸识别方法 2.1特征脸分析 这种方法是根据图像的统计特征进行正交变换( K-L 变换) [3] , 以去除样 本间的相关性, 然后根据特征值的大小选择特征向量( 主分量) , 由于这些特 征向量的图像类似人脸, 所以称为特征脸[4, 5] 。下面就这种方法作简要介绍。 X∈RN 为表示一幅图像的随机向量, 这里N是图像的大小, X 由图像的行或列连 接而成的向量。假设有p 个人, 每个人有r1 ( 1≤i≤P) 个人脸样本图像, 样 本集为{ Xji } , Xji表示第j个人的第i个样本。那么每个人样本均值向量为 mi ( 1≤ i≤p) ; 总体样本均值向量为m; 类间散布矩阵为

基于神经网络的人脸识别实验报告

基于神经网络的人脸识实验报告别 一、 实验要求 采用三层前馈BP 神经网络实现标准人脸YALE 数据库的识别。 二、BP 神经网络的结构和学习算法 实验中建议采用如下最简单的三层BP 神经网络,输入层为],,,[21n x x x X =,有n 个神经元节点,输出层具有m 个神经元,网络输出为],,,[21m y y y Y =,隐含层具有k 个神经元,采用BP 学习算法训练神经网络。 BP 神经网络的结构 BP 网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对BP 网络加以训练,网络就具有输入输出对之间的映射能力。 BP 网络执行的是有教师训练,其样本集是由形如(输入向量,期望输出向量)的向量对构成的。在开始训练前,所有的权值和阈值都应该用一些不同的小随机数进行初始化。 BP 算法主要包括两个阶段: (1) 向前传播阶段 ①从样本集中取一个样本(X p ,Y p ),将X p 输入网络,其中X p 为输入向量,Y p 为期望输出向量。 ②计算相应的实际输出O p 。 在此阶段,信息从输入层经过逐级的变换,传送到输出层。这个过程也是网络在完成训练后正常运行时执行的过程。在此过程中,网络执行的是下列运算: (1)(2)()21(...((())...))n p n p O F F F X W W W = (2) 向后传播阶段 ①计算实际输出O p 与相应的理想输出Y p 的差; ②按极小化误差的方法调整权矩阵。 这两个阶段的工作一般应受到精度要求的控制,定义

21 1()2m p pj pj j E y o ==-∑ (1) 作为网络关于第p 个样本的误差测度(误差函数)。而将网络关于整个样本集的误差测度定义为 p E E =∑ (2) 如前所述,将此阶段称为向后传播阶段,也称之为误差传播阶段。 为了更清楚地说明本文所使用的BP 网络的训练过程,首先假设输入层、中间层和输出层的单元数分别是N 、L 和M 。X=(x 0,x 1,…,x N-1)是加到网络的输入矢量,H=(h 0,h 1,…,h L-1)是中间层输出矢量,Y=(y 0,y 1,…,y M-1)是网络的实际输出矢量,并且用D=(d 0,d 1,…,d M-1)来表示训练组中各模式的目标输出矢量。输出单元i 到隐单元j 的权值是V ij ,而隐单元j 到输出单元k 的权值是W jk 。另外用θk 和Φj 来分别表示输出单元和隐单元的阈值。 于是,中间层各单元的输出为: 1 0()N j ij i j i h f V x φ-==+∑ (3) 而输出层各单元的输出是: 1 0()L k jk j k j y f W h θ-==+∑ (4) 其中f(*)是激励函数,采用S 型函数: 1 ()1x f x e -=+ (5) 在上述条件下,网络的训练过程如下: (1) 选定训练集。由相应的训练策略选择样本图像作为训练集。 (2) 初始化各权值V ij ,W jk 和阈值Φj ,θk ,将其设置为接近于0的随机值,并初始化精度控制参数ε和学习率α。 (3) 从训练集中取一个输入向量X 加到网络,并给定它的目标输出向量D 。 (4) 利用式(7)计算出一个中间层输出H ,再用式(8)计算出网络的实际输出Y 。 (5) 将输出矢量中的元素y k 与目标矢量中的元素d k 进行比较,计算出M 个输出误差项:()(1)k k k k k d y y y δ=--对中间层的隐单元也计算出L 个误差项: 1 *0(1)M J j j k jk k h h W δδ-==-∑ (6) 依次计算出各权值和阈值的调整量: ()(/(1))*((1)1)**jk jk k j W n L W n h αδ?=+?-+ (6)

基于BP神经网络的人脸识别

基于BP神经网络的人脸识别 学生:林仙土学号:S071954 摘要:人脸自动识别技术有着广阔的应用领域,本文提出用主成分分析和BP神经网络进行人脸识别。人脸识别包括两个部分:第一,特征提取;第二,神经网络进行识别。 关键词:BP神经网络人脸识别主成分分析 本系统采用20幅图像(4个人每人5幅)作为训练图像,应用主成分分析对训练图像进行二阶相关和降维,提取训练图像的独立基成分构造人脸子空间,并将训练集中的人脸图像向独立基上投影得到的系数输入改进的BP神经网络进行训练。然后将待识别的人脸图像向独立基上投影得到投影系数,再将其输入已训练过的BP神经网络进行识别。此方法对人脸库图像进行测试,识别率达到90%以上。本系统采用MATLAB编程,并运用了其中的GUI编程实现人机交互。 为在不同机子下顺利运行,本系统用uigetdir函数让用户选择训练图像库和待识别图像,使得待识别图像可在不同位置皆可让软件识别。 注意:待识别图像的名字必须是test.jpg。 系统界面: 程序: function varargout=BP(varargin) gui_Singleton=1;

gui_State=struct('gui_Name',mfilename,... 'gui_Singleton',gui_Singleton,... 'gui_OpeningFcn',@BP_OpeningFcn,... 'gui_OutputFcn',@BP_OutputFcn,... 'gui_LayoutFcn',[],... 'gui_Callback',[]); if nargin&&ischar(varargin{1}) gui_State.gui_Callback=str2func(varargin{1}); end if nargout [varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:}); else gui_mainfcn(gui_State,varargin{:}); end function BP_OpeningFcn(hObject,eventdata,handles,varargin) handles.output=hObject; guidata(hObject,handles); %UIWAIT makes BP wait for user response(see UIRESUME) %uiwait(handles.figure1); %---Outputs from this function are returned to the command line. function varargout=BP_OutputFcn(hObject,eventdata,handles) %varargout cell array for returning output args(see VARARGOUT); %hObject handle to figure %eventdata reserved-to be defined in a future version of MATLAB %handles structure with handles and user data(see GUIDATA) %Get default command line output from handles structure varargout{1}=handles.output; %---Executes on button press in input. function input_Callback(hObject,eventdata,handles) %hObject handle to input(see GCBO) %eventdata reserved-to be defined in a future version of MATLAB %handles structure with handles and user data(see GUIDATA) global TestDatabasePath TestDatabasePath=uigetdir('D:\','Select test database path'); axes(handles.axes1); a=imread(strcat(TestDatabasePath,'\test.jpg')); imshow(a) set(handles.text1,'string','image for recognition') %---Executes on button press in recognise. function recognise_Callback(hObject,eventdata,handles) %hObject handle to recognise(see GCBO) %eventdata reserved-to be defined in a future version of MATLAB %handles structure with handles and user data(see GUIDATA) TrainDatabasePath=uigetdir('D:\','Select training database path');

基于神经网络的人脸识别

【代码及说明见第四页】 基于三层BP 神经网络的人脸识别 一、 实验要求 采用三层前馈BP 神经网络实现标准人脸YALE 数据库的识别。 二、BP 神经网络的结构和学习算法 实验中建议采用如下最简单的三层BP 神经网络,输入层为],,,[21n x x x X ,有n 个神经元节点,输出层具有m 个神经元,网络输出为],,,[21m y y y Y ,隐含层具有k 个神经元,采用BP 学习算法训练神经网络。 BP 神经网络的结构 BP 网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对BP 网络加以训练,网络就具有输入输出对之间的映射能力。 BP 网络执行的是有教师训练,其样本集是由形如(输入向量,期望输出向量)的向量对构成的。在开始训练前,所有的权值和阈值都应该用一些不同的小随机数进行初始化。 BP 算法主要包括两个阶段: (1) 向前传播阶段 ①从样本集中取一个样本(X p ,Y p ),将X p 输入网络,其中X p 为输入向量,Y p 为期望输出向量。 ②计算相应的实际输出O p 。 在此阶段,信息从输入层经过逐级的变换,传送到输出层。这个过程也是网络在完成训练后正常运行时执行的过程。在此过程中,网络执行的是下列运算: (1)(2)()21(...((())...))n p n p O F F F X W W W (2) 向后传播阶段

①计算实际输出O p 与相应的理想输出Y p 的差; ②按极小化误差的方法调整权矩阵。 这两个阶段的工作一般应受到精度要求的控制,定义 21 1()2m p pj pj j E y o (1) 作为网络关于第p 个样本的误差测度(误差函数)。而将网络关于整个样本集的误差测度定义为 p E E (2) 如前所述,将此阶段称为向后传播阶段,也称之为误差传播阶段。 为了更清楚地说明本文所使用的BP 网络的训练过程,首先假设输入层、中间层和输出层的单元数分别是N 、L 和M 。X=(x 0,x 1,…,x N-1)是加到网络的输入矢量,H=(h 0,h 1,…,h L-1)是中间层输出矢量,Y=(y 0,y 1,…,y M-1)是网络的实际输出矢量,并且用D=(d 0,d 1,…,d M-1)来表示训练组中各模式的目标输出矢量。输出单元i 到隐单元j 的权值是V ij ,而隐单元j 到输出单元k 的权值是W jk 。另外用θk 和Φj 来分别表示输出单元和隐单元的阈值。 于是,中间层各单元的输出为: 1 0()N j ij i j i h f V x (3) 而输出层各单元的输出是: 1 0()L k jk j k j y f W h (4) 其中f(*)是激励函数,采用S 型函数: 1 ()1x f x e (5) 在上述条件下,网络的训练过程如下: (1) 选定训练集。由相应的训练策略选择样本图像作为训练集。 (2) 初始化各权值V ij ,W jk 和阈值Φj ,θk ,将其设置为接近于0的随机值,并初始化精度控制参数ε和学习率α。 (3) 从训练集中取一个输入向量X 加到网络,并给定它的目标输出向量D 。 (4) 利用式(7)计算出一个中间层输出H ,再用式(8)计算出网络的实际输出Y 。 (5) 将输出矢量中的元素y k 与目标矢量中的元素d k 进行比较,计算出M 个输出误差项:()(1)k k k k k d y y y 对中间层的隐单元也计算出L 个误差项: 1 *0(1)M J j j k jk k h h W

基于神经网络的人脸识别技术方法研究

第3期2019年2月No.3February,2019 人们在特定时刻的感觉在临床术语中被称为“情绪”。6种基本情绪被认为是快乐、悲伤、愤怒、恐惧、厌恶和惊讶,而其他已知的人类情感往往被视为这6种复杂社交情境的特殊化。研究人员从各种观点研究了情绪在人工智能中的作用:开发与人类更优雅互动的代理人和机器人,开发利用情绪模拟来辅助自己推理的系统,或创建更接近人体情感互动和学习的机器人。皮卡德指出:“智能复杂自适应系统中将会有功能,它们必须响应不可预测的复杂信息,这些信息起着情感在人们身上发挥作用的作用。”因此,对于计算机以实时方式响应复杂的情感信号,他们将需要像我们所拥有的系统,我们称之为情感。 人类的情感不仅是一种合乎逻辑的理性成分,它们与行为和感情紧密相连。人类情感系统在生存、社会互动和合作以及学习中起着至关重要的作用。机器需要一种情感—机器运动。因此,我们可以确定智能机器需要情绪,以便在学习复杂任务时以及在对人类的学习和决策制定进行建模时提高其表现。 情绪在人类决策过程中发挥着重要作用,因此,当我们试图模拟人类反应时,它们应该嵌入推理过程中。Bates 使用Ortony 等描述的模型提出了一个可信的代理人。该模型仅描述了基本情绪和先天反应;然而,它为构建计算机情感模拟提供了一个很好的起点。Kort 等提出了一个模型,他们的目的是概念化情绪对学习的影响,然后,建立一个工作的基于计算机的模型,将识别学习者的情感状态并对其作出适当的反应,以便学习将以最佳的速度进行。Poel 等引入了模拟混合神经网络架构,用于情绪学习。系统从注释数据中学习如何产生情绪状态以及由内部和外部刺激引起的变化。Clocksin 探讨了记忆中的问题,并结合可能的人工认知架构进行了研究。这项工作与人工智能研究中考虑记忆和情感的传统方式背道而驰,并且源于社会和发展心理学中出现的两种思想[1]。 本文提出了一种基于情绪反向传播学习算法的情绪神经网络。情绪神经网络具有两种模拟情绪,有助于网络学习和分类过程。这两种情绪是焦虑和自信。结合这些情绪参数的基本原理是它们对我们人类认知过程中的学习的影响。在实践中,两个情感参数意味着当情绪神经网络被训练时,一个是使用所有节点作为训练模式样本的输入平均值,另一个是某种程度上的增加惯性项用于在训练时期进展时修改从一种模式到下一种模式的变化水平。从数学的角度来看,当接 近成本函数的最小值时,我们不希望被单个模式的误差所左 右,其中一些模式可能是异常值。因此,我们关注最近学习步骤积累的“记忆”。 本文旨在研究这些额外的情绪参数对情绪神经网络在学习和决策中的表现的影响。我们使用脸部图像数据库,它已经在我们以前的作品中有效地使用。该数据库包括270个不同性别,种族和年龄的30人的图像,具有各种照明条件和对比度。面部图像的多样性旨在研究情绪神经网络的稳健性。 1 具有情绪参数的学习算法 反向传播学习算法是用于训练分层神经网络的广义delta 规则。自前人引入该算法以来,该算法已被广泛使用。在本节中,基于情绪反向传播学习算法的情绪神经网络学习算法,根据情绪神经网络内的信息流详细解释,该网络由3层组成:输入层(i )神经元,具有(h )神经元的隐藏层和具有(j )神经元的输出层。1.1 输入层神经元 这些是非处理神经元;每个输入层神经元的输出定义为YIi =Xii 其中, XIi 和YIi 分别是输入和输出输入层中神经元i 的值。1.2 隐藏层神经元 这些是处理神经元,因此, S 形激活函数用于激活该层中的每个神经元。这里,假设有一个隐藏层。但是相同的过程可以应用于多个隐藏层。 其中XHh 和YHh 分别是隐藏层中神经元h 的输入和输出值。使用进入该神经元的所有输入值的总电位计算隐藏层神经元XHh 的输入。总电位是输入值的乘法和它们的相关权重的总和。 其中Whi 是隐藏神经元h 给予输入神经元i 的权重, YIi 是输入神经元i 的输出, r 是输入层神经元的最大数量。其中Whb 是由隐藏神经元h 给予隐藏层偏置神经元b 的权重, Xb 是偏置神经元的输入值。1.3 输出层神经元 这些也是处理神经元,因此, S 形激活函数用于激活该层中的每个神经元。 其中XJj 和YJj 分别是输出层中神经元j 的输入和输出值。除了偏置和情绪神经元之外,还使用从先前隐藏层馈送神经元的所有输入值的总电位来计算输出层神经元XJj 的输入。 作者简介:吴思楠(1997— ),女,辽宁丹东人,本科生;研究方向:计算机科学与技术。 摘 要:文章研究了情绪神经网络的效率,该网络使用改进的反向传播学习算法。实验结果表明,人工情绪可以成功建模并有 效实施,以改善神经网络的学习和普遍性。关键词:神经网络;反向传播算法;人工情感建模;面部识别基于神经网络的人脸识别技术方法研究 吴思楠 (辽宁师范大学海华学院,辽宁 沈阳 110167) 无线互联科技 Wireless Internet Technology

基于神经网络的人脸识别(附代码)

【代码及说明见第四页】 基于三层BP 神经网络的人脸识别 一、 实验要求 采用三层前馈BP 神经网络实现标准人脸YALE 数据库的识别。 二、BP 神经网络的结构和学习算法 实验中建议采用如下最简单的三层BP 神经网络,输入层为],,,[21n x x x X ,有n 个神经元节点,输出层具有m 个神经元,网络输出为],,,[21m y y y Y ,隐含层具有k 个神经元,采用BP 学习算法训练神经网络。 BP 神经网络的结构 BP 网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对BP 网络加以训练,网络就具有输入输出对之间的映射能力。 BP 网络执行的是有教师训练,其样本集是由形如(输入向量,期望输出向量)的向量对构成的。在开始训练前,所有的权值和阈值都应该用一些不同的小随机数进行初始化。 BP 算法主要包括两个阶段: (1) 向前传播阶段 ①从样本集中取一个样本(X p ,Y p ),将X p 输入网络,其中X p 为输入向量,Y p 为期望输出向量。 ②计算相应的实际输出O p 。 在此阶段,信息从输入层经过逐级的变换,传送到输出层。这个过程也是网络在完成训练后正常运行时执行的过程。在此过程中,网络执行的是下列运算: (1)(2)()21(...((())...))n p n p O F F F X W W W (2) 向后传播阶段

①计算实际输出O p 与相应的理想输出Y p 的差; ②按极小化误差的方法调整权矩阵。 这两个阶段的工作一般应受到精度要求的控制,定义 21 1()2m p pj pj j E y o (1) 作为网络关于第p 个样本的误差测度(误差函数)。而将网络关于整个样本集的误差测度定义为 p E E (2) 如前所述,将此阶段称为向后传播阶段,也称之为误差传播阶段。 为了更清楚地说明本文所使用的BP 网络的训练过程,首先假设输入层、中间层和输出层的单元数分别是N 、L 和M 。X=(x 0,x 1,…,x N-1)是加到网络的输入矢量,H=(h 0,h 1,…,h L-1)是中间层输出矢量,Y=(y 0,y 1,…,y M-1)是网络的实际输出矢量,并且用D=(d 0,d 1,…,d M-1)来表示训练组中各模式的目标输出矢量。输出单元i 到隐单元j 的权值是V ij ,而隐单元j 到输出单元k 的权值是W jk 。另外用θk 和Φj 来分别表示输出单元和隐单元的阈值。 于是,中间层各单元的输出为: 1 0()N j ij i j i h f V x (3) 而输出层各单元的输出是: 1 0()L k jk j k j y f W h (4) 其中f(*)是激励函数,采用S 型函数: 1()1x f x e (5) 在上述条件下,网络的训练过程如下: (1) 选定训练集。由相应的训练策略选择样本图像作为训练集。 (2) 初始化各权值V ij ,W jk 和阈值Φj ,θk ,将其设置为接近于0的随机值,并初始化精度控制参数ε和学习率α。 (3) 从训练集中取一个输入向量X 加到网络,并给定它的目标输出向量D 。 (4) 利用式(7)计算出一个中间层输出H ,再用式(8)计算出网络的实际输出Y 。 (5) 将输出矢量中的元素y k 与目标矢量中的元素d k 进行比较,计算出M 个输出误差项:()(1)k k k k k d y y y 对中间层的隐单元也计算出L 个误差项:1 *0(1)M J j j k jk k h h W

相关主题