Рефераты. Сравнительный анализ нейросетевых реализаций алгоритмов распознавания образов p> 6 Бистабильность восприятия.

Эксперименты с моделью сети Хопфилда показали (см. Рис. 7. Приложение
1.), что средние стимулы последовательности могут восприниматься либо как искаженный левый, либо как искаженный правый образы, т. е. имеет место бистабильность восприятия. Смена устойчивого состояния происходит после предъявления четвертой картинки.

Заключение.

В работе созданы программные модели трех нейронных сетей: персептрон, сеть обратного распросранения и сеть Хопфилда. Модели позволяют проиллюстрироваь основные достоинства и недостатки, а также ряд специфических свойств реализованных моделей.

Во всех моделях для приложения внешнего стимула использовалась, специально разработанная программно, измерительная сетчатка.

Результаты серии экспериментов, проведенных на моделях, показали, что:
. Способность персептрона и сети обратного распространения моделировать определенную функцию зависит от допустимой общей ошибки сети.
. Топологическая структура сети Хопфилда обуславливает ее свойства, которые можно интерпритировать как релаксация стимула, выработка прототипа, бистабильность восприятия.

В дальнейшем планируется разработка программных моделей более сложных нейронных сетей и их комбинаций с целью получения наиболее эффективных алгоритмов для задачи распознавания образов.

Литераура.

1.Горбань А.Н.,Россиев Д.А..Нейронные сети на персональном компьюере.

2. Минский М.Л.,Пайперт С..Персепроны.М.: Мир.1971

3. Розенблатт Ф.Принципы нейродинамики.М.: Мир.1965

4. Уоссермен Ф.Нейрокомпьютерная техника.М.: Мир.1992.237С

5. Cohen M.A.,Grossberg S.G.Absoiute stability of global pattern formation and parallel memory storage by compatitive neural networks.1983
6. Hebb D.O.Organization of behavior.New York:Science Edition
7. Hopfield J.J.Neural networks and physical systems with emergent collective computational abilities. Proseedings of the National

Academy of Science 79.1982
8. Parker D.B. Learning-logic. Invention Report. 1982
9. Rumelhart D.E. Hinton G.E.,Williams R.J. Learning internal representations by error propagation. In Parallel distributed processing, vol.1986
10. Werbos P.G. Beyond regression: New tools for prediction and analysis in the behavioral sciences. 1974
11. Wider R.O. Single-stage logic, Paper presented at the AIEE Fall

General Meeting. 1960
12. Windrow B. The speed of adaptetion in adaptive control system. 1961
13. Windrow B. A statistical theory of adaptetion. Adaptive control systems. 1963
14. Windrow B., Angell J.B. Reliable, trainable networks for computing and control. 1962
15. Windrow B., Hoff N.E. Adaptive switching circuits. 1960

Приложение 1.

[pic]

[pic]

[pic]

[pic]

Рис. 1.

[pic] [pic] [pic]

[pic] [pic] [pic]

[pic] [pic] [pic]

Рис. 2.

[pic] [pic] [pic] [pic]

[pic] [pic] [pic] [pic]

[pic] [pic] [pic] [pic]

[pic] [pic] [pic] [pic]

Рис. 3.

[pic] [pic] [pic] [pic]

[pic] [pic] [pic] [pic]

[pic] [pic]

[pic]

Рис. 3.

[pic] [pic]

[pic] [pic]

[pic]

Рис. 4.

[pic]

[pic]

[pic]

[pic]

Рис. 5.

[pic]

[pic]

[pic]

[pic]

Рис. 6.

[pic] [pic] [pic]

[pic] [pic] [pic]

Рис. 7.

Приложение 2.

Программа, моделирующая однослойную сеть. unit UPerc;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

Dialogs,

Percept_Field, StdCtrls, Buttons, ExtCtrls; const InputLayerUnits=35;

OutputLayerUnits=2; eta=0.05; epsilon=0.000001; numberpatterns=36; type

TFrmPerceptron = class(TForm)

Percept_FieldPerc: TPercept_Field;

GroupBoxTrain: TGroupBox;

GroupBoxInit: TGroupBox;

ComboBoxABC: TComboBox;

ComboBoxDigits: TComboBox;

BtnNext: TButton;

BitBtnClose: TBitBtn;

EditNumPat: TEdit;

LabelNumPat: TLabel;

GroupBoxRec: TGroupBox;

LabelInput: TLabel;

BtnOutput: TButton;

LabelOdd: TLabel;

RadioGroupTarget: TRadioGroup;

RadioButtonOdd: TRadioButton;

RadioButtonEven: TRadioButton;

LabelOr: TLabel;

LabelEven: TLabel; procedure ComboBoxABCChange(Sender: TObject); procedure ComboBoxDigitsChange(Sender: TObject); procedure Percept_FieldPercMouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure BitBtnCloseClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure BtnNextClick(Sender: TObject); procedure BtnOutputClick(Sender: TObject); private

{ Private declarations } public

{ Public declarations } end;

var

FrmPerceptron: TFrmPerceptron;

var w:array[1..OutputLayerUnits,1..InputLayerUnits] of real; indexBtnNextClick:byte; activation:array[1..OutputLayerUnits] of real;

OutputLayerOutput:array[1..OutputLayerUnits] of shortint; target:array[1..numberpatterns,1..OutputLayerUnits] of shortint; v:array[1..numberpatterns,1..InputLayerUnits] of shortint; implementation

{$R *.DFM} procedure TFrmPerceptron.Percept_FieldPercMouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

var m,k:BYTE; correctRect:shortint;

L,T,H,V:INTEGER; begin

L:=0;

T:=0;

H:=Percept_FieldPerc.UnitHorizontal;

V:=Percept_FieldPerc.UnitVertical; for m :=1 to Percept_FieldPerc.UnitRectVert do begin for k :=1 to Percept_FieldPerc.UnitRectHorz do begin

if (XL) and (YT) then begin correctRect:=k+Percept_FieldPerc.UnitRectHorz*(m-1); if (Button=mbLeft) and

(Percept_FieldPerc.Brushes[correctRect]=Percept_FieldPerc.BackGroundBr ush) then begin

Percept_FieldPerc.Brushes[correctRect]:=Percept_FieldPerc.RectBrush; end else if (Button=mbRight) and

(Percept_FieldPerc.Brushes[correctRect]=Percept_FieldPerc.RectBrush)th en begin

Percept_FieldPerc.Brushes[correctRect]:=Percept_FieldPerc.BackGroundBr ush; end;

end; inc(L,Percept_FieldPerc.UnitHorizontal); inc(H,Percept_FieldPerc.UnitHorizontal); end; inc(T,Percept_FieldPerc.UnitVertical); inc(V,Percept_FieldPerc.UnitVertical);

L:=0;

H:=Percept_FieldPerc.UnitHorizontal; end;

end;

procedure TFrmPerceptron.BitBtnCloseClick(Sender: TObject); begin

Close; end;

procedure TFrmPerceptron.FormCreate(Sender: TObject); var i,j:byte; rand:real; begin

//numberpatterns:=2;//10;

EditNumPat.Text:=inttostr(numberpatterns);

BtnNext.Font.Color:=clRed; indexBtnNextClick:=0;

LabelInput.Visible:=False;

// *********************************************

Randomize;// случайные веса (-0.5,0.5) for i := 1 to OutputLayerUnits do begin for j := 1 to InputLayerUnits do begin rand:=Random-0.5; w[i,j]:=rand; end; end;

end;

procedure TFrmPerceptron.BtnNextClick(Sender: TObject); var i,j,m:byte; sum:real; neterror,err:real; error:array[1..OutputLayerUnits] of real; stop:boolean; krandom:integer; begin indexBtnNextClick:=indexBtnNextClick+1; for m:=1 to InputLayerUnits do begin if (Percept_FieldPerc.Brushes[m]=Percept_FieldPerc.RectBrush) then begin v[indexBtnNextClick,m]:=1; end else if

(Percept_FieldPerc.Brushes[m]=Percept_FieldPerc.BackGroundBrush) then begin v[indexBtnNextClick,m]:=-1; end; end;

// ******************ODD or EVEN********************* if RadioButtonOdd.Checked then begin target[indexBtnNextClick,1]:=1; target[indexBtnNextClick,2]:=-1; end else if RadioButtonEven.Checked then begin target[indexBtnNextClick,1]:=-1; target[indexBtnNextClick,2]:=1; end;

// *************************************************** if (indexBtnNextClick+1)=numberpatterns then begin

BtnNext.Caption:='last'; end else begin if (indexBtnNextClick)=numberpatterns then begin

BtnNext.Font.Color:=clWindowText;

BtnNext.Caption:='finished';

LabelInput.Font.Color:=clRed;

LabelInput.Visible:=True; end else begin

BtnNext.Caption:='next'; end; end;

//*********************MAIN******************************* if (indexBtnNextClick)=numberpatterns then begin repeat stop:=false; for m := 1 to numberpatterns do begin for i := 1 to OutputLayerUnits do begin sum:=0; for j := 1 to InputLayerUnits do begin sum:=sum+w[i,j]*v[m,j];

end; activation[i]:=sum; if sum>=0 then begin

OutputLayerOutput[i]:=1; end else begin

OutputLayerOutput[i]:=-1; end; end; neterror:=0; for i := 1 to OutputLayerUnits do begin err:=target[m,i]-activation[i]; error[i]:=err; neterror:=neterror+0.5*sqr(err); end; if neterror=0 then begin

OutputLayerOutput[i]:=1; end else begin

OutputLayerOutput[i]:=-1; end; end; neterror:=0; for i := 1 to OutputLayerUnits do begin err:=target[m,i]-activation[i]; error[i]:=err; neterror:=neterror+0.5*sqr(err); end; for i := 1 to OutputLayerUnits do begin for j := 1 to InputLayerUnits do begin w[i,j]:=w[i,j]+eta*error[i]*v[m,j]; end; end; end;

end;//if

until stop;//end; end; // if end;

procedure TFrmPerceptron.BtnOutputClick(Sender: TObject); var z:array[1..InputLayerUnits] of shortint; m,i,j:byte;

Output:array[1..InputLayerUnits] of real; sum:real; begin for m:=1 to InputLayerUnits do begin if (Percept_FieldPerc.Brushes[m]=Percept_FieldPerc.RectBrush) then begin z[m]:=1; end else if

(Percept_FieldPerc.Brushes[m]=Percept_FieldPerc.BackGroundBrush) then begin z[m]:=-1; end; end; for i := 1 to OutputLayerUnits do begin sum:=0; for j := 1 to InputLayerUnits do begin sum:=sum+w[i,j]*z[j]; end;

Output[i]:=sum; end; if (Output[1]>Output[2]) then begin

LabelOdd.Font.Color:=clRed;

LabelEven.Font.Color:=clWindowText; end else begin if (Output[2]>Output[1]) then begin

LabelEven.Font.Color:=clRed;

LabelOdd.Font.Color:=clWindowText; end; end; end; end.

Программа, моделирующая сеть обратного распространения

unit UBack;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

Dialogs,

StdCtrls, Percept_Field, Buttons, ExtCtrls; const FirstLayerUnits=35;

SecondLayerUnits=20;

ThirdLayerUnits=2; numberpatterns=36;

NumLayers=3; epsilon=0.000001; eta=0.05; alpha=0.5;

type

TFrmBack = class(TForm)

BitBtnClose: TBitBtn;

Percept_FieldBack: TPercept_Field;

GroupBoxTrain: TGroupBox;

ComboBoxABC: TComboBox;

ComboBoxDigits: TComboBox;

GroupBoxInit: TGroupBox;

EditNumPat: TEdit;

LabelNumPat: TLabel;

BtnNext: TButton;

GroupBoxRec: TGroupBox;

LabelInput: TLabel;

RadioGroupTarget: TRadioGroup;

RadioButtonLetter: TRadioButton;

RadioButtonFigure: TRadioButton;

ButtonOut: TButton;

LabelFigure: TLabel;

Страницы: 1, 2, 3, 4



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.