Признаки символов, используемые для автоматического распознавания
Методы предобработки изображений текстовых символов. Статистические распределения точек. Интегральные преобразования и структурный анализ. Реализация алгоритма распознавания букв. Анализ алгоритмов оптического распознавания символов. Сравнение с эталоном.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 20.09.2014 |
Размер файла | 2,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
OCR CuneiForm способна распознавать любые полиграфические и машинописные гарнитуры всех начертаний и шрифтов, получаемые с принтеров, за исключением декоративных и рукописных. Также программа способна распознавать таблицы различной структуры, в том числе и без линий и границ; редактировать и сохранять результаты в распространенных табличных форматах. Существенно облегчает работу и возможность прямого экспорта результатов в MS Word и MS Excel (для этого теперь не нужно сохранять результат в файл RTF, а затем открывать его с помощью MS Word).
Также программа снабжена возможностями массового ввода возможностью пакетного сканирования, включая круглосуточное, сканирования с удаленных компьютеров локальной сети и организации распределенного параллельного сканирования в локальной сети.
В системе используется целый ряд уникальных технологий, среди которых адаптивное распознавание, нейронные сети, когнитивный анализ альтернатив распознавания и другие.
О высокой конкурентоспособности этой системы говорит тот факт, что ведущие мировые производители вычислительной техники поставляют свою продукцию с этой программой. Наиболее популярные в России сканеры и многофункциональные устройства Canon, Hewlett-Packard, OKI, Seiko Epson, Olivetti поставляются в комплекте с OCR CuneiForm.
Ведущие производители программного обеспечения также лицензировали российскую информационную технологию для применения со своими продуктами. В популярные программные пакеты Corel Draw (Corel Corporation), FaxLine/OCR&Business Card Wizard (Inzer Corporation) и многие другие встроена OCR-библиотека CuneiForm. Хочется отметить, что эта программа стала первой в России OCR-системой, получившей MS Windows Compatible Logo.
Основные преимущества CuneiForm перед другими системами оптического распознавания символов:
CuneiForm отличается от других программ этого класса высоким уровнем распознавания, особенно текстов низкого качества и наличием встроенных мастеров - помощников в работе; мощным встроенным текстовым редактором.
CuneiForm сочетает в себе распознавания текстов передовые технологии и результаты многолетних исследований и разработок отечественных ученых и программистов.
Интерфейс программы содержит выпадающие контекстные меню, панели быстрого доступа, контекстную помощь.
Рисунок 16 - Основное окно CuneiForm
Автоматический подбор оптимальных параметров сканирования. Возможность импортирования отсканированных или полученных через факс-модем графических файлов во многих форматах. Обработка изображений: печать образа, инвертирование, поворот.
CuneiForm распознает любые полиграфические, машинописные гарнитуры всех начертаний и шрифты, получаемые с принтеров за исключением декоративных и рукописных. В систему встроены специальные алгоритмы для распознавания текста с матричного принтера, печатной машинки, плохих ксерокопий и факсов.Самообучающиеся адаптивные алгоритмы распознавания повышают вероятность распознавания низкокачественных документов.
Рисунок 17 - Распознавание текста в CuneiForm
Автоматический и полуавтоматический режимы поиска блоков текста, таблиц и графики, который обеспечивает большую гибкость при работе с многоколоночными текстами и текстами сложной структуры и с графическими элементами. Режим ручной фрагментации для работы с текстами особо сложной структуры.
Система распознает русский, английский, смешанный русско-английский, украинский, немецкий, французский, испанский, португальский, итальянский, голландский, датский, шведский, финский, сербский, хорватский, польский, казахский, узбекский и другие языки.
Словарь общеупотребительной лексики каждого поддерживаемого языка для контекстной проверки и повышения качества результатов распознавания. Возможность создания и пополнения пользовательского словаря, а также возможность экспорта/импорта словаря в/из текстовых файлов.
CuneiForm позволяет получить полную копию вводимого документа, включая: шрифтовое оформление и форматирование; расположение текста, иллюстраций и таблиц; колонки, абзацы, отступы, стили и размеры шрифтов; черно-белые, 256-градационные серые и цветные 24-битные иллюстрации в выходном RTF-файле.
Распознавание таблиц различной структуры, в том числе и без линий разграфки. Редактирование таблиц (уменьшение/увеличение, удаление/создание колонок и т.д.) Сохранение результатов в распространенных табличных форматах.
В программу встроен многофункциональный редактор, не уступающий по своим возможностям популярным текстовым процессорам. Одновременная подсветка распознанного текста и исходного изображения, снабженная функцией "следующий/предыдущий сомнительно распознанный". Поддержка иллюстраций, таблиц, колонок, колонтитулов, сложного форматирования и различных шрифтов. Возможность редактирования текстовых документов популярных форматов.
Опции командной строки и поддержка Drag&Drop для вызова из внешних приложений, сканирования, распознавания и сохранения результатов в автоматическом режиме.
Readiris Pro 7 профессиональная программа распознавания текста. По словам производителей (I.R.I.S.), данная OCR отличается от аналогов высочайшей точностью преобразования обычных (каждодневных) печатных документов, таких как письма, факсы, журнальные статьи, газетные вырезки, в объекты, доступные для редактирования (включая файлы PDF). Основными достоинствами программы являются: возможность более или менее точного распознавания картинок, сжатых по максимуму (с максимальной потерей качества) методом JPEG, поддержка цифровых камер и автоопределения ориентации страницы. Поддержка до 92 языков (включая русский).
OmniPage 11 продукт компании ScanSoft. Ограниченная версия этой программы (OmniPage11 Limited Edition, OmniPage Lite) обычно поставляется в комплекте с новыми сканерами (на территории Европы и США). Разработчики утверждают, что их программа практически со 100% точностью распознает печатные документы, восстанавливая их форматирование, включая столбцы, таблицы, переносы (в том числе переносы частей слов), заголовки, названия глав, подписи, номера страниц, сноски, параграфы, нумерованные списки, красные строки, графики и картинки. Есть возможность сохранения в форматы Microsoft Office, PDF и в 20 других форматов, распознавания из файлов PDF, редактирование прямо в формате PDF. Система искусственного интеллекта позволяет автоматически обнаруживать и исправлять ошибки после первого исправления вручную. Новый специально разработанный модуль Despeckle позволяет распознавать документы с ухудшенным качеством (факсы, копии, копии копий ит.д.). Преимуществами программы являются возможность распознавания цветного текста и возможность корректировки голосом.
Заключение
Исследование методов и программно-аппаратных систем оптического распознавания символов позволяет сформулировать следующие выводы:
1. Современное состояние технологии автоматического распознавания печатных текстов (OCR) позволяет решать задачу автоматизации ввода информации при необходимом уровне надежности.
2. При построении системы OCR, включающей оптическое устройство оцифровки изображений, блок локализации и выделения элементов текста, блок предобработки изображения; блок выделения признаков, блок распознавания символов и блок постобработки результатов распознавания, необходимо использовать методы и алгоритмы, обладающие высокой робастностью Робастность - статистическое оценивание. к яркостно-геометрическим искажениям и сложным текстурным фонам.
3. В качестве таких методов и алгоритмов, могут быть использованы: процедуры определения строк, знакомест на основе модификаций преобразования Hough; методы, основанные на исследовании устойчивых статистических распределений точек; методы, использующие интегральные преобразования, а также структурный анализ символов.
4. При разработке современных систем OCR для повышения качества распознавания символов и слов необходимо учитывать контекстную информацию. Использование контекстной информации позволяет не только находить ошибки, но и исправлять их.
Переходя к программе разработанной в ходе выполнения курсовой работы необходимо отметить, что хотя в ней и не применяются системы искусственного интеллекта (перцептроны и нейросети), а используется довольно простой метод сравнения с эталонными символами, алгоритм дает приемлемый результат на заранее известном наборе эталонов.
Применение этого метода уместно в тех случаях, когда необходимо распознавать большие объемы текстов напечатанных одним шрифтом в едином размере. При таких условиях результаты распознавания могут конкурировать с методами основанными на использовании нейросетей и не уступать им по скорости распознавания.
При всём этом метод сравнения с эталоном гораздо проще других алгоритмов, использует простой математический аппарат. Однако небольшие отклонения входных данных от эталонных значений приводят к резкому падению качества распознавания.
Список литературы
Бутаков А., Островский В. И., Фадеев И.Л. "Обработка изображений на ЭВМ", - М.: Радио и связь, 1987.
Дуда Р., Харт П. Распознавание образов и анализ сцен. - М.: Мир, 1986.
Котович Н.В., Славин О.А. Распознавание скелетных образов // Методы и средства работы с документами - сборник трудов Института системного анализа РАН -- 2000.
Приложение А Исходный текст программы
{Бинаризация - делает картинку чернобелой}
function Binarise(Bmp: TBitmap):TBitmap;
type
TRGB = record
B,G,R:Byte;
end;
pRGB = ^TRGB;
var x,y: word;
TmpBmp: TBitmap;
Dest: pRGB;
begin
TmpBmp := TBitmap.Create;
TmpBmp.Width := Bmp.Width;
TmpBmp.Height := Bmp.Height;
TmpBmp.PixelFormat := pf8bit;
for y := 0 to Bmp.Height - 1 do
begin
Dest:=Bmp.ScanLine[y];
for x := 0 to Bmp.Width - 1 do
begin
if (0.3*Dest^.R + 0.59*Dest^.G + 0.11*Dest^.B) < 200 then
TmpBmp.Canvas.Pixels[x,y] := clBlack;
Inc(Dest);
end;
end;
result := TmpBmp;
end;
{Фукнция максимума}
function Max(x,y:Integer):Integer;
begin
if x>y then Result:=x else Result:=y;
end;
{Разница между двумя изображениями}
function GetDifferents(Bmp1,Bmp2:TBitmap):Integer;
var
c1,c2:PByte;
x,y,x1,y1,i,Diff:Integer;
begin
Bmp1.PixelFormat:=pf24bit;
Bmp2.PixelFormat:=pf24bit;
Diff:=0;
x1:=Max(Bmp1.Width,Bmp2.Width);
y1:=Max(Bmp1.Height,Bmp2.Height);
for y:=0 to y1-1 do
begin
if Bmp1.Height>y then c1:=Bmp1.Scanline[y];
if Bmp2.Height>y then c2:=Bmp2.Scanline[y];
for x:=0 to x1-1 do
for i:=0 to 2 do
begin
Inc(Diff,Integer(c1^<>c2^));
Inc(c1);
Inc(c2);
end;
end;
Result:=Round(10000*(Diff/(x1*y1)));
end;
procedure RemoveBreak(Bmp:TBitmap);
var
x,y:Integer;
Arr:array of Boolean;
Temp,Max,TempStart,Start:Integer;
begin
SetLength(Arr,Bmp.Height);
for y:=0 to Bmp.Height-1 do
begin
Arr[y]:=False;
for x:=0 to Bmp.Width-1 do if Bmp.Canvas.Pixels[x,y]<>$FFFFFF then
begin
Arr[y]:=True;
Break;
end;
end;
Max:=0;
Temp:=0;
for y:=0 to Length(Arr)-1 do
begin
if Arr[y] then
begin
if Temp=0 then TempStart:=y;
inc(Temp);
end else
begin
if Temp>Max then
begin
Max:=Temp;
Start:=TempStart;
end;
Temp:=0;
end;
end;
if Temp>Max then
begin
Max:=Temp;
Start:=TempStart;
end;
Bmp.Canvas.Draw(0,-Start,Bmp);
Bmp.Height:=Max;
SetLength(Arr,Bmp.Width);
for x:=0 to Length(Arr)-1 do
begin
Arr[x]:=False;
for y:=0 to Bmp.Height-1 do if Bmp.Canvas.Pixels[x,y]<>$FFFFFF then
begin
Arr[x]:=True;
Break;
end;
end;
Max:=0;
Temp:=0;
for x:=0 to Length(Arr)-1 do
begin
if Arr[x] then
begin
if Temp=0 then TempStart:=x;
inc(Temp);
end else
begin
if Temp>Max then
begin
Max:=Temp;
Start:=TempStart;
end;
Temp:=0;
end;
end;
if Temp>Max then
begin
Max:=Temp;
Start:=TempStart;
end;
Bmp.Canvas.Draw(-Start,0,Bmp);
Bmp.Width:=Max;
end;
{Сравнение с эталоном}
function GetChar(Bmp:TBitmap):Char;
const
CharList='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var
SizeBegin,SizeEnd:Integer;
CharBmp:TBitmap;
i:Integer;
c:Byte;
Min:Integer;
Temp:Integer;
begin
Result:=#0;
SizeBegin:=Round(Bmp.Height*0.90);
SizeEnd:=Round(bmp.Height*1.10);
Min:=10000;
CharBmp:=TBitmap.Create;
CharBmp.PixelFormat:=pf24Bit;
for i:=SizeBegin to SizeEnd do
for c:=1 to Length(CharList) do
begin
CharBmp.Width:=i*2;
CharBmp.Height:=i*2;
CharBmp.Canvas.FillRect(Rect(0,0,CharBmp.Width,CharBmp.Height));
CharBmp.Canvas.Font.Name:='Arial';
CharBmp.Canvas.Font.Size:=i;
CharBmp.Canvas.TextOut(0,0,CharList[c]);
RemoveBreak(CharBmp);
Temp:=GetDifferents(Bmp,CharBmp);
if Temp<Min then
begin
Min:=Temp;
Result:=CharList[c];
end;
end;
CharBmp.Free;
end;
function Prepare(Bmp:TBitmap):TBitmap;
var
BmpArr:array of array of Byte;
i,j,k:Integer;
Size,Max:Integer;
ArrSize:array of array[0..2] of Integer;
TmpBmp:TBitmap;
procedure f(x1,y1:Integer);
begin
inc(Size);
BmpArr[x1][y1]:=2;
if BmpArr[x1+1][y1]=1 then f(x1+1,y1);
if BmpArr[x1-1][y1]=1 then f(x1-1,y1);
if BmpArr[x1][y1+1]=1 then f(x1,y1+1);
if BmpArr[x1][y1-1]=1 then f(x1,y1-1);
end;
procedure d(x1,y1:Integer);
begin
BmpArr[x1][y1]:=0;
if BmpArr[x1+1][y1]=2 then d(x1+1,y1);
if BmpArr[x1-1][y1]=2 then d(x1-1,y1);
if BmpArr[x1][y1+1]=2 then d(x1,y1+1);
if BmpArr[x1][y1-1]=2 then d(x1,y1-1);
end;
begin
SetLength(BmpArr,Bmp.Width);
for i:=0 to Length(BmpArr)-1 do
begin
SetLength(BmpArr[i],Bmp.Height);
for j:=0 to Bmp.Height-1 do
if Bmp.Canvas.Pixels[i,j]=$FFFFFF then
BmpArr[i][j]:=0
else
BmpArr[i][j]:=1;
end;
for i:=0 to Bmp.Width-1 do
for j:=0 to Bmp.Height-1 do
begin
if BmpArr[i][j]=1 then
begin
Size:=0;
f(i,j);
SetLength(ArrSize,Length(ArrSize)+1);
ArrSize[Length(ArrSize)-1][0]:=Size;
ArrSize[Length(ArrSize)-1][1]:=i;
ArrSize[Length(ArrSize)-1][2]:=j;
end;
end;
Max:=ArrSize[0][0];
for k := 0 to Length(ArrSize)-1 do
if ArrSize[k][0]>Max then
Max:=ArrSize[k][0];
Max:=Round(Max/10);
for k:=0 to Length(ArrSize)-1 do
if ArrSize[k][0]<Max then
d(ArrSize[k][1],ArrSize[k][2]);
TmpBmp := TBitmap.Create;
TmpBmp.Width := Bmp.Width;
TmpBmp.Height := Bmp.Height;
for i:=0 to Bmp.Width-1 do
for j:=0 to Bmp.Height-1 do
if BmpArr[i][j]=0 then
TmpBmp.Canvas.Pixels[i,j]:=$FFFFFF
else
TmpBmp.Canvas.Pixels[i,j]:=$000000;
result := TmpBmp;
end;
{Сегментация}
function GetImageChars(Bmp:TBitmap):String;
var
i,j:Integer;
BmpArrX:array of Boolean;
ok:Boolean;
CharPos:array[0..1] of array of Integer;
TmpBmp:TBitmap;
c:Char;
begin
Result:='';
Bmp.PixelFormat:=pf24Bit;
SetLength(BmpArrX,Bmp.Width);
for i:=0 to Bmp.Width-1 do
begin
BmpArrX[i]:=False;
for j:=0 to Bmp.Height-1 do
if Bmp.Canvas.Pixels[i,j]=0 then
begin
BmpArrX[i]:=True;
Break;
end;
end;
ok:=False;
for i:=0 to Bmp.Width-1 do
if BmpArrX[i] then
begin
if not ok then
begin
ok:=True;
SetLength(CharPos[0],Length(CharPos[0])+1);
CharPos[0][Length(CharPos[0])-1]:=i;
end;
end else if ok then
begin
ok:=False;
SetLength(CharPos[1],Length(CharPos[1])+1);
CharPos[1][Length(CharPos[1])-1]:=i;
end;
Form2.ProgressMax(Length(CharPos[0]));
Form2.ProgressReset;
Form2.Left := Form1.Left;
Form2.Top := Form1.Top + (Form1.Height - Form2.Height) div 2;
Form2.Show;
TmpBmp:=TBitmap.Create;
for i:=0 to Length(CharPos[0])-1 do
begin
TmpBmp.Height:=Bmp.Height;
TmpBmp.Width:=CharPos[1][i]-CharPos[0][i];
TmpBmp.Canvas.CopyRect(Rect(0,
0,
CharPos[1][i]-CharPos[0][i],
Bmp.Height1),
Bmp.Canvas,
Rect(CharPos[0][i],0,CharPos[1][i],Bmp.Height-1));
RemoveBreak(TmpBmp);
Result := Result + GetChar(TmpBmp);
// Прогресс распознавания
Form2.VPic(TmpBmp);
Form2.ProgressAdd;
Application.ProcessMessages;
end;
Form2.Hide;
TmpBmp.Free;
end;
procedure TForm1.nOpenClick(Sender: TObject);
begin
if dlgOpen.Execute then
Image1.Picture.Bitmap.LoadFromFile(dlgOpen.FileName);
end;
procedure TForm1.nExitClick(Sender: TObject);
begin
Close;
end;
procedure TForm1.nRaspoznClick(Sender: TObject);
begin
nRaspozn.Enabled := false;
Image1.Picture.Bitmap := Binarise(Image1.Picture.Bitmap);
Image1.Picture.Bitmap := Prepare(Image1.Picture.Bitmap);
txtResult.Text:=GetImageChars(Image1.Picture.Bitmap);
nRaspozn.Enabled := true;
end;
Приложение Б Нейронные сети
1. Введение в нейронные сети
Теория нейронных сетей включают широкий круг вопросов из разных областей науки: биофизики, математики, информатики, схемотехники и технологии. Поэтому понятие "нейронные сети" детально определить сложно.
Искусственные нейронные сети (НС) -- совокупность моделей биологических нейронных сетей. Представляют собой сеть элементов -- искусственных нейронов -- связанных между собой синоптическими соединениями. Сеть обрабатывает входную информацию и в процессе изменения своего состояния во времени формирует совокупность выходных сигналов.
Работа сети состоит в преобразовании входных сигналов во времени, в результате чего меняется внутреннее состояние сети и формируются выходные воздействия. Обычно НС оперирует цифровыми, а не символьными величинами.
Большинство моделей НС требуют обучения. В общем случае, обучение -- такой выбор параметров сети, при котором сеть лучше всего справляется с поставленной проблемой. Обучение -- это задача многомерной оптимизации, и для ее решения существует множество алгоритмов.
Искусственные нейронные сети -- набор математических и алгоритмических методов для решения широкого круга задач. Выделим характерные черты искусственных нейросетей как универсального инструмента для решения задач:
НС дают возможность лучше понять организацию нервной системы человека и животных на средних уровнях: память, обработка сенсорной информации, моторика.
НС -- средство обработки информации:
гибкая модель для нелинейной аппроксимации многомерных функций;
средство прогнозирования во времени для процессов, зависящих от многих переменных;
классификатор по многим признакам, дающий разбиение входного пространства на области;
средство распознавания образов;
инструмент для поиска по ассоциациям;
модель для поиска закономерностей в массивах данных.
НС свободны от ограничений обычных компьютеров благодаря параллельной обработке и сильной связанности нейронов.
В перспективе НС должны помочь понять принципы, на которых построены высшие функции нервной системы: сознание, эмоции, мышление.
Современные искусственные НС по сложности и "интеллекту" приближаются к нервной системе таракана, но уже сейчас демонстрируют ценные свойства:
Обучаемость. Выбрав одну из моделей НС, создав сеть и выполнив алгоритм обучения, мы можем обучить сеть решению задачи, которая ей по силам. Нет никаких гарантий, что это удастся сделать при выбранных сети, алгоритме и задаче, но если все сделано правильно, то обучение бывает успешным.
Способность к обобщению. После обучения сеть становится нечувствительной к малым изменениям входных сигналов (шуму или вариациям входных образов) и дает правильный результат на выходе.
Способность к абстрагированию. Если предъявить сети несколько искаженных вариантов входного образа, то сеть сама может создать на выходе идеальный образ, с которым она никогда не встречалась.
2. Искусственные нейронные сети
2.1 Формальный нейрон
Биологический нейрон -- сложная система, математическая модель которого до сих пор полностью не построена. Введено множество моделей, различающихся вычислительной сложностью и сходством с реальным нейроном. Одна из важнейших -- формальный нейрон (Рисунок 2.1.1). Несмотря на простоту ФН, сети, построенные из таких нейронов, могут сформировать произвольную многомерную функцию на выходе.
Рисунок 2.1.1 - Формальный нейрон
Нейрон состоит из взвешенного сумматора и нелинейного элемента. Функционирование нейрона определяется формулами:
(1) |
||
(2) |
где хi -- входные сигналы, совокупность всех входных сигналов нейрона образует вектор x;
wi -- весовые коэффициенты, совокупность весовых коэффициентов образует вектор весов w;
NET -- взвешенная сумма входных сигналов, значение NET передается на нелинейный элемент;
? -- пороговый уровень данного нейрона;
F -- нелинейная функция, называемая функцией активации.
Нейрон имеет несколько входных сигналов x и один выходной сигнал OUT Параметрами нейрона, определяющими его работу, являются: вектор весов w, пороговый уровень ? и вид функции активации F.
2.2 Виды функций активации
Рассмотрим основные виды функций активации, получившие распространение в искусственных НС.
1. Жесткая ступенька (рисунок 2.2.1):
Используется в классическом формальном нейроне. Развита полная теория, позволяющая синтезировать произвольные логические схемы на основе ФН с такой нелинейностью. Функция вычисляется двумя-тремя машинными инструкциями, поэтому нейроны с такой нелинейностью требуют малых вычислительных затрат.
Эта функция чрезмерно упрощена и не позволяет моделировать схемы с непрерывными сигналами. Отсутствие первой производной затрудняет применение градиентных методов для обучения таких нейронов. Сети на классических ФН чаще всего формируются, синтезируются, т.е. их параметры рассчитываются по формулам, в противоположность обучению, когда параметры подстраиваются итеративно.
2. Логистическая функция (сигмоида, функция Ферми, рисунок 2.2.2):
Применяется очень часто для многослойных перцептронов и других сетей с непрерывными сигналами. Гладкость, непрерывность функции -- важные положительные качества. Непрерывность первой производной позволяет обучать сеть градиентными методами (например, метод обратного распространения ошибки).
Функция симметрична относительно точки (NET=0, OUT=1/2), это делает равноправными значения OUT=0 и OUT=1, что существенно в работе сети. Тем не менее, диапазон выходных значений от 0 до 1 несимметричен, из-за этого обучение значительно замедляется.
Данная функция -- сжимающая, т.е. для малых значений NET коэффициент передачи K=OUT/ NET велик, для больших значений он снижается. Поэтому диапазон сигналов, с которыми нейрон работает без насыщения, оказывается широким.
Значение производной легко выражается через саму функцию. Быстрый расчет производной ускоряет обучение.
3. Гиперболический тангенс (рисунок 2.2.3):
Тоже применяется часто для сетей с непрерывными сигналами. Функция симметрична относительно точки (0,0), это преимущество по сравнению с сигмоидой.
4. Пологая ступенька (рисунок 2.2.4):
Рассчитывается легко, но имеет разрывную первую производную в точках NET = ? , NET = ? + Д что усложняет алгоритм обучения.
5. Экспонента: . Применяется в специальных случаях.
6. SOFTMAX-функция:
Здесь суммирование производится по всем нейронам данного слоя сети. Такой выбор функции обеспечивает сумму выходов слоя, равную единице при любых значениях сигналов NETi данного слоя. Это позволяет трактовать OUTi как вероятности событий, совокупность которых (все выходы слоя) образует полную группу. Это полезное свойство позволяет применить SOFTMAX-функцию в задачах классификации, проверки гипотез, распознавания образов и во всех других, где требуются выходы-вероятности.
7. Участки синусоиды:
для или
8. Гауссова кривая (рисунок 2.2.5):
для или
9. Линейная функция, OUT = K NET, K=const. Применяется для тех моделей сетей, где не требуется последовательное соединение слоев нейронов друг за другом.
Выбор функции активации определяется:
Спецификой задачи.
Удобством реализации на ЭВМ, в виде электрической схемы или другим способом.
Алгоритмом обучения: некоторые алгоритмы накладывают ограничения на вид функции активации, их нужно учитывать.
Чаще всего вид нелинейности не оказывает принципиального влияния на решение задачи. Однако удачный выбор может сократить время обучения в несколько раз.
2.3 Ограничения модели нейрона
Вычисления выхода нейрона предполагаются мгновенными, не вносящими задержки. Непосредственно моделировать динамические системы, имеющие "внутреннее состояние", с помощью таких нейронов нельзя.
В модели отсутствуют нервные импульсы. Нет модуляции уровня сигнала плотностью импульсов, как в нервной системе. Не появляются эффекты синхронизации, когда скопления нейронов обрабатывают информацию синхронно, под управлением периодических волн возбуждения-торможения.
Нет четких алгоритмов для выбора функции активации.
Нет механизмов, регулирующих работу сети в целом (пример - гормональная регуляция активности в биологических нервных сетях).
Чрезмерная формализация понятий: "порог", "весовые коэффициенты". В реальных нейронах нет числового порога, он динамически меняется в зависимости от активности нейрона и общего состояния сети. Весовые коэффициенты синапсов тоже не постоянны. "Живые" синапсы обладают пластичностью и стабильностью: весовые коэффициенты настраиваются в зависимости от сигналов, проходящих через синапс.
Существует большое разнообразие биологических синапсов. Они встречаются в различных частях клетки и выполняют различные функции. То' рмозные и возбуждающие синапсы реализуются в данной модели в виде весовых коэффициентов противоположного знака, но разнообразие синапсов этим не ограничивается. Дендро-дендритные, аксо-аксональные синапсы не реализуются в модели ФН.
В модели не прослеживается различие между градуальными потенциалами и нервными импульсами. Любой сигнал представляется в виде одного числа.
Итак, модель формального нейрона не является биоподобной и скорее похожа на математическую абстракцию, чем на живой нейрон. Тем удивительнее оказывается многообразие задач, решаемых с помощью таких нейронов и универсальность получаемых алгоритмов.
2. Многослойный перцептрон
Формальные нейроны могут объединяться в сети различным образом. Самым распространенным видом сети стал многослойный перцептрон (рисунок 2.1).
Сеть состоит из произвольного количества слоев нейронов. Нейроны каждого слоя соединяются с нейронами предыдущего и последующего слоев по принципу "каждый с каждым". Первый слой (слева) называется сенсорным или входным, внутренние слои называются скрытыми или ассоциативными, последний (самый правый, на рисунке состоит из одного нейрона) -- выходным или результативным. Количество нейронов в слоях может быть произвольным. Обычно во всех скрытых слоях одинаковое количество нейронов.
Обозначим количество слоев и нейронов в слое. Входной слой: NI нейронов; NH нейронов в каждом скрытом слое; NO выходных нейронов. х -- вектор входных сигналы сети, у - вектор выходных сигналов.
Существует путаница с подсчетом количества слоев в сети. Входной слой не выполняет никаких вычислений, а лишь распределяет входные сигналы, поэтому иногда его считают, иногда -- нет. Обозначим через NL полное количество слоев в сети, считая входной.
Работа многослойного перцептрона (МСП) описывается формулами:
(1) |
||
(2) |
||
(3) |
где индексом i всегда будем обозначать номер входа, j -- номер нейрона в слое, l -- номер слоя.
Xijl - й входной сигнал j-го нейрона в слоеl;
Wijl - весовой коэффициент i-го входа нейрона номер j в слое l;
NETjl - сигнал NET j-го нейрона в слое l;
OUTjl - выходной сигнал нейрона;
?jl - пороговый уровень нейрона j в слое l;
Введем обозначения: Wjl -- вектор-столбец весов для всех входов нейрона j в слое l; Wl -- матрица весов всех нейронов в слое l. В столбцах матрицы расположены вектора Wjl. Аналогично Xjl -- входной вектор-столбец слоя l.
Каждый слой рассчитывает нелинейное преобразование от линейной комбинации сигналов предыдущего слоя. Отсюда видно, что линейная функция активации может применяется только для тех моделей сетей, где не требуется последовательное соединение слоев нейронов друг за другом. Для многослойных сетей функция активации должна быть нелинейной, иначе можно построить эквивалентную однослойную сеть, и многослойность оказывается ненужной. Если применена линейная функция активации, то каждый слой будет давать на выходе линейную комбинацию входов. Следующий слой даст линейную комбинацию выходов предыдущего, а это эквивалентно одной линейной комбианции с другими коэффициентами, и может быть реализовано в виде одного слоя нейронов.
Многослойная сеть может формировать на выходе произвольную многомерную функцию при соответствующем выборе количества слоев, диапазона изменения сигналов и параметров нейронов. Как и ряды, многослойные сети оказываются универсальным инструментом аппроксимации функций. Видно отличие работы нейронной сети от разложения функции в ряд:
Ряд:
Нейронная сеть:
За счет поочередного расчета линейных комбинаций и нелинейных преобразований достигается аппроксимация произвольной многомерной функции при соответствующем выборе параметров сети.
В многослойном перцептроне нет обратных связей. Такие модели называются сетями прямого распространения. Они не обладают внутренним состоянием и не позволяют без дополнительных приемов моделировать развитие динамических систем.
2.1 Алгоритм решения задач с помощью МСП
Чтобы построить МСП, необходимо выбрать его параметры. Чаще всего выбор значений весов и порогов требует обучения, т.е. пошаговых изменений весовых коэффициентов и пороговых уровней.
Общий алгоритм решения:
Определить, какой смысл вкладывается в компоненты входного вектора x. Входной вектор должен содержать формализованное условие задачи, т.е. всю информацию, необходимую для получения ответа.
Выбрать выходной вектор y таким образом, чтобы его компоненты содержали полный ответ поставленной задачи.
Выбрать вид нелинейности в нейронах (функцию активации). При этом желательно учесть специфику задачи, т.к. удачный выбор сократит время обучения.
Выбрать число слоев и нейронов в слое.
Задать диапазон изменения входов, выходов, весов и пороговых уровней, учитывая множество значений выбранной функции активации.
Присвоить начальные значения весовым коэффициентам и пороговым уровням и дополнительным параметрам (например, крутизне функции активации, если она будет настраиваться при обучении). Начальные значения не должны быть большими, чтобы нейроны не оказались в насыщении (на горизонтальном участке функции активации), иначе обучение будет очень медленным. Начальные значения не должны быть и слишком малыми, чтобы выходы большей части нейронов не были равны нулю, иначе обучение также замедлится.
Провести обучение, т.е. подобрать параметры сети так, чтобы задача решалась наилучшим образом. По окончании обучения сеть готова решить задачи того типа, которым она обучена.
Подать на вход сети условия задачи в виде вектора x. Рассчитать выходной вектор y, который и даст формализованное решение задачи.
2.2 Формализация задачи распознавания букв алфавита
Будем представлять буквы в виде точечных изображений (рисунок 2.2.1).
Темной клетке-пикселу на изображении соответствует Iij = 1, светлому - Iij = 0. Задача состоит в том, чтобы определить по изображению букву, которая была предъявлена.
Построим МСП с Ni * Nj входами, каждому входу соответствует один пиксел: хk =Iij,
k = 1..Ni* Nj. Яркости пикселов будут компонентами входного вектора.
В качестве выходных сигналов выберем вероятности того, что предъявленное изображение соответствует данной букве: y = (c1...cM)T . Сеть рассчитывает выход:
где выход с1 = 0,9 означает, к примеру, что предъявлено изображение буквы "А", и сеть уверена в этом на 90%, выход с2 = 0,1 - что изображение соответствовало букве "Б" с вероятностью 10% и т.д.
Другой способ: входы сети выбираются так же, а выход - только один, номер m предъявленной буквы. Сеть учится давать значение m по предъявленному изображению I:
В данном методе существует недостаток: буквы, имеющие близкие номера m, но непохожие изображения, могут быть перепутаны сетью при распознавании.
2.3 Выбор количества нейронов и слоев
Нет строго определенной процедуры для выбора количества нейронов и количества слоев в сети. Чем больше количество нейронов и слоев, тем шире возможности сети, тем медленнее она обучается и работает и тем более нелинейной может быть зависимость вход-выход.
Количество нейронов и слоев связано:
со сложностью задачи;
с количеством данных для обучения;
с требуемым количеством входов и выходов сети;
с имеющимися ресурсами: памятью и быстродействием машины, на которой моделируется сеть;
Были попытки записать эмпирические формулы для числа слоев и нейронов, но применимость формул оказалась очень ограниченной.
Если в сети слишком мало нейронов или слоев:
сеть не обучится и ошибка при работе сети останется большой;
на выходе сети не будут передаваться резкие колебания аппроксимируемой функции y(x).
Превышение требуемого количества нейронов тоже мешает работе сети.
Если нейронов или слоев слишком много:
быстродействие будет низким, а памяти потребуется много - на фон-неймановских ЭВМ;
сеть переобучится: выходной вектор будет передавать незначительные и несущественные детали в изучаемой зависимости y(x), например, шум или ошибочные данные;
зависимость выхода от входа окажется резко нелинейной: выходной вектор будет существенно и непредсказуемо меняться при малом изменении входного вектора x;
сеть будет неспособна к обобщению: в области, где нет или мало известных точек функции y(x) выходной вектор будет случаен и непредсказуем, не будет адекватен решамой задаче.
3. Алгоритмы обучения
Алгоритмы обучения бывают с учителем и без. Алгоритм называется алгоритмом с учителем, если при обучении известны и входные, и выходные вектора сети. Имеются пары вход + выход -- известные условия задачи и решение. В процессе обучения сеть меняет свои параметры и учится давать нужное отображение X --> Y . Сеть учится давать результаты, которые нам уже известны. За счет способности к обобщению сетью могут быть получены новые результаты, если подать на вход вектор, который не встречался при обучении.
Алгоритм относится к обучению без учителя, если известны только входные вектора, и на их основе сеть учится давать наилучшие значения выходов. Что понимается под “наилучшими” -- определяется алгоритмом обучения.
3.1 Алгоритм обратного распространения
Среди различных структур нейронных сетей (НС) одной из наиболее известных является многослойная структура, в которой каждый нейрон произвольного слоя связан со всеми нейронов предыдущего слоя или, в случае первого слоя, со всеми входами НС. Такие НС называются полносвязными. Когда в сети только один слой, алгоритм ее обучения с учителем довольно очевиден, так как правильные выходные состояния нейронов единственного слоя заведомо известны, и подстройка синаптических связей идет в направлении, минимизирующем ошибку на выходе сети. По этому принципу строится, например, алгоритм обучения однослойного перцептрона. В многослойных же сетях оптимальные выходные значения нейронов всех слоев, кроме последнего, как правило, не известны, и двух или более слойный перцептрон уже невозможно обучить, руководствуясь только величинами ошибок на выходах НС. Один из вариантов решения этой проблемы - разработка наборов выходных сигналов, соответствующих входным, для каждого слоя НС, что, конечно, является очень трудоемкой операцией и не всегда осуществимо. Второй вариант - динамическая подстройка весовых коэффициентов синапсов, в ходе которой выбираются, как правило, наиболее слабые связи и изменяются на малую величину в ту или иную сторону, а сохраняются только те изменения, которые повлекли уменьшение ошибки на выходе всей сети. Очевидно, что данный метод, несмотря на свою кажущуюся простоту, требует громоздких рутинных вычислений. И, наконец, третий, более приемлемый вариант - распространение сигналов ошибки от выходов НС к ее входам, в направлении, обратном прямому распространению сигналов в обычном режиме работы. Этот алгоритм обучения НС получил название процедуры обратного распространения.
Согласно методу наименьших квадратов, минимизируемой целевой функцией ошибки НС является величина:
(1)
где - реальное выходное состояние нейрона j выходного слоя N нейронной сети при подаче на ее входы p-го образа; djp - идеальное (желаемое) выходное состояние этого нейрона.
Суммирование ведется по всем нейронам выходного слоя и по всем обрабатываемым сетью образам. Минимизация ведется методом градиентного спуска, что означает подстройку весовых коэффициентов следующим образом:
(2)
Здесь wij - весовой коэффициент синаптической связи, соединяющей i-ый нейрон слоя n-1 с j-ым нейроном слоя n, - коэффициент скорости обучения, 0<<1.
Как показано в [2],
(3)
Здесь под yj, , подразумевается выход нейрона j, а под sj - взвешенная сумма его входных сигналов, то есть аргумент активационной функции. Так как множитель dyj/dsj является производной этой функции по ее аргументу, из этого следует, что производная активационной функция должна быть определена на всей оси абсцисс. В связи с этим функция единичного скачка и прочие активационные функции с неоднородностями не подходят для рассматриваемых НС. В них применяются такие гладкие функции, как гиперболический тангенс или классический сигмоид с экспонентой. В случае гиперболического тангенса
(4)
Третий множитель sj/wij, очевидно, равен выходу нейрона предыдущего слоя yi(n-1).
Что касается первого множителя в (3), он легко раскладывается следующим образом[2]:
(5)
Здесь суммирование по k выполняется среди нейронов слоя n+1.
Введя новую переменную
(6)
мы получим рекурсивную формулу для расчетов величин j(n) слоя n из величин k(n+1) более старшего слоя n+1.
(7)
Для выходного же слоя
(8)
Теперь мы можем записать (2) в раскрытом виде:
(9)
Иногда для придания процессу коррекции весов некоторой инерционности, сглаживающей резкие скачки при перемещении по поверхности целевой функции, (9) дополняется значением изменения веса на предыдущей итерации
(10)
где - коэффициент инерционности, t - номер текущей итерации.
Таким образом, полный алгоритм обучения НС с помощью процедуры обратного распространения строится так:
1. Подать на входы сети один из возможных образов и в режиме обычного функционирования НС, когда сигналы распространяются от входов к выходам, рассчитать значения последних.
(11)
где M - число нейронов в слое n-1 с учетом нейрона с постоянным выходным состоянием +1, задающего смещение; yi(n-1)=xij(n) - i-ый вход нейрона j слоя n.
yj(n) = f(sj(n)), где f() - сигмоид (12)
yq(0)=Iq, (13)
где Iq - q-ая компонента вектора входного образа.
2. Рассчитать (N) для выходного слоя по формуле (8).
Рассчитать по формуле (9) или (10) изменения весов w(N) слоя N.
3. Рассчитать по формулам (7) и (9) (или (7) и (10)) соответственно (n) и w(n) для всех остальных слоев, n=N-1,...1.
4. Скорректировать все веса в НС
(14)
5. Если ошибка сети существенна, перейти на шаг 1. В противном случае - конец.
Рассматриваемая НС имеет несколько нюансов. Во-первых, в процессе обучения может возникнуть ситуация, когда большие положительные или отрицательные значения весовых коэффициентов сместят рабочую точку на сигмоидах многих нейронов в область насыщения. Малые величины производной от логистической функции приведут в соответствие с (7) и (8) к остановке обучения, что парализует НС. Во-вторых, применение метода градиентного спуска не гарантирует, что будет найден глобальный, а не локальный минимум целевой функции. Эта проблема связана еще с одной, а именно - с выбором величины скорости обучения. Доказательство сходимости обучения в процессе обратного распространения основано на производных, то есть приращения весов и, следовательно, скорость обучения должны быть бесконечно малыми, однако в этом случае обучение будет происходить неприемлемо медленно. С другой стороны, слишком большие коррекции весов могут привести к постоянной неустойчивости процесса обучения. Поэтому в качестве обычно выбирается число меньше 1, но не очень маленькое, например, 0.1, и оно, вообще говоря, может постепенно уменьшаться в процессе обучения. Кроме того, для исключения случайных попаданий в локальные минимумы иногда, после того как значения весовых коэффициентов застабилизируются, кратковременно сильно увеличивают, чтобы начать градиентный спуск из новой точки. Если повторение этой процедуры несколько раз приведет алгоритм в одно и то же состояние НС, можно более или менее уверенно сказать, что найден глобальный максимум, а не какой-то другой.
3.2 Алгоритмы обучения без учителя
Рассмотренный алгоритм обучения нейронной сети с помощью процедуры обратного распространения подразумевает наличие некоего внешнего звена, предоставляющего сети кроме входных так же и целевые выходные образы. Алгоритмы, пользующиеся подобной концепцией, называются алгоритмами обучения с учителем. Для их успешного функционирования необходимо наличие экспертов, создающих на предварительном этапе для каждого входного образа эталонный выходной.
Главная черта, делающая обучение без учителя привлекательным, - это его "самостоятельность". Процесс обучения, как и в случае обучения с учителем, заключается в подстраивании весов синапсов. Некоторые алгоритмы, правда, изменяют и структуру сети, то есть количество нейронов и их взаимосвязи, но такие преобразования правильнее назвать более широким термином - самоорганизацией, и в рамках данной статьи они рассматриваться не будут. Очевидно, что подстройка синапсов может проводиться только на основании информации, доступной в нейроне, то есть его состояния и уже имеющихся весовых коэффициентов. Исходя из этого соображения и, что более важно, по аналогии с известными принципами самоорганизации нервных клеток, построены алгоритмы обучения Хебба.
3.2.1 Алгоритм обучения Хебба
Сигнальный метод обучения Хебба заключается в изменении весов по следующему правилу:
(1)
где yi(n-1) - выходное значение нейрона i слоя (n-1), yj(n) - выходное значение нейрона j слоя n; wij(t) и wij(t-1) - весовой коэффициент синапса, соединяющего эти нейроны, на итерациях t и t_1 соответственно; - коэффициент скорости обучения. Здесь и далее, для общности, под n подразумевается произвольный слой сети. При обучении по данному методу усиливаются связи между возбужденными нейронами.
Существует также и дифференциальный метод обучения Хебба.
(2)
Здесь yi(n-1)(t) и yi(n-1)(t-1) - выходное значение нейрона i слоя n-1 соответственно на итерациях t и t-1; yj(n)(t) и yj(n)(t-1) - то же самое для нейрона j слоя n. Как видно из формулы (2), сильнее всего обучаются синапсы, соединяющие те нейроны, выходы которых наиболее динамично изменились в сторону увеличения.
Полный алгоритм обучения с применением вышеприведенных формул будет выглядеть так:
1. На стадии инициализации всем весовым коэффициентам присваиваются небольшие случайные значения.
2. На входы сети подается входной образ, и сигналы возбуждения распространяются по всем слоям согласно принципам классических прямопоточных (feedforward) сетей, то есть для каждого нейрона рассчитывается взвешенная сумма его входов, к которой затем применяется активационная (передаточная) функция нейрона, в результате чего получается его выходное значение yi(n), i=0...Mi-1, где Mi - число нейронов в слое i; n=0...N-1, а N - число слоев в сети.
3. На основании полученных выходных значений нейронов по формуле (1) или (2) производится изменение весовых коэффициентов.
4. Цикл с шага 2, пока выходные значения сети не застабилизируются с заданной точностью. Применение этого нового способа определения завершения обучения, отличного от использовавшегося для сети обратного распространения, обусловлено тем, что подстраиваемые значения синапсов фактически не ограничены.
На втором шаге цикла попеременно предъявляются все образы из входного набора.
Следует отметить, что вид откликов на каждый класс входных образов не известен заранее и будет представлять собой произвольное сочетание состояний нейронов выходного слоя, обусловленное случайным распределением весов на стадии инициализации. Вместе с тем, сеть способна обобщать схожие образы, относя их к одному классу. Тестирование обученной сети позволяет определить топологию классов в выходном слое. Для приведения откликов обученной сети к удобному представлению можно дополнить сеть одним слоем, который, например, по алгоритму обучения однослойного перцептрона необходимо заставить отображать выходные реакции сети в требуемые образы.
3.2.2 Алгоритм обучения Кохонена
Другой алгоритм обучения без учителя - алгоритм Кохонена - предусматривает подстройку синапсов на основании их значений от предыдущей итерации.
(3)
Из вышеприведенной формулы видно, что обучение сводится к минимизации разницы между входными сигналами нейрона, поступающими с выходов нейронов предыдущего слоя yi(n_1), и весовыми коэффициентами его синапсов.
Полный алгоритм обучения имеет примерно такую же структуру, как в методах Хебба, но на шаге 3 из всего слоя выбирается нейрон, значения синапсов которого максимально походят на входной образ, и подстройка весов по формуле (3) проводится только для него. Эта, так называемая, аккредитация может сопровождаться затормаживанием всех остальных нейронов слоя и введением выбранного нейрона в насыщение. Выбор такого нейрона может осуществляться, например, расчетом скалярного произведения вектора весовых коэффициентов с вектором входных значений. Максимальное произведение дает выигравший нейрон.
Другой вариант - расчет расстояния между этими векторами в p-мерном пространстве, где p - размер векторов.
, (4)
где j - индекс нейрона в слое n, i - индекс суммирования по нейронам слоя (n-1), wij - вес синапса, соединяющего нейроны; выходы нейронов слоя (n-1) являются входными значениями для слоя n. Корень в формуле (4) брать не обязательно, так как важна лишь относительная оценка различных Dj.
В данном случае, "побеждает" нейрон с наименьшим расстоянием. Иногда слишком часто получающие аккредитацию нейроны принудительно исключаются из рассмотрения, чтобы "уравнять права" всех нейронов слоя. Простейший вариант такого алгоритма заключается в торможении только что выигравшего нейрона.
При использовании обучения по алгоритму Кохонена существует практика нормализации входных образов, а так же - на стадии инициализации - и нормализации начальных значений весовых коэффициентов.
, (5)
где xi - i-ая компонента вектора входного образа или вектора весовых коэффициентов, а n - его размерность. Это позволяет сократить длительность процесса обучения.
Инициализация весовых коэффициентов случайными значениями может привести к тому, что различные классы, которым соответствуют плотно распределенные входные образы, сольются или, наоборот, раздробятся на дополнительные подклассы в случае близких образов одного и того же класса. Для исключения такой ситуации используется метод выпуклой комбинации. Суть его сводится к тому, что входные нормализованные образы подвергаются преобразованию:
, (6)
где xi - i-ая компонента входного образа, n - общее число его компонент, (t) - коэффициент, изменяющийся в процессе обучения от нуля до единицы, в результате чего вначале на входы сети подаются практически одинаковые образы, а с течением времени они все больше сходятся к исходным. Весовые коэффициенты устанавливаются на шаге инициализации равными величине
, (7)
где n - размерность вектора весов для нейронов инициализируемого слоя.
На основе рассмотренного выше метода строятся нейронные сети особого типа - так называемые самоорганизующиеся структуры - self-organizing feature maps. Для них после выбора из слоя n нейрона j с минимальным расстоянием Dj (4) обучается по формуле (3) не только этот нейрон, но и его соседи, расположенные в окрестности R. Величина R на первых итерациях очень большая, так что обучаются все нейроны, но с течением времени она уменьшается до нуля. Таким образом, чем ближе конец обучения, тем точнее определяется группа нейронов, отвечающих каждому классу образов. В приведенной ниже программе используется именно этот метод обучения.
4. Нейронные сети Хопфилда и Хэмминга
Среди различных конфигураций искуственных нейронных сетей (НС) встречаются такие, при классификации которых по принципу обучения, строго говоря, не подходят ни обучение с учителем, ни обучение без учителя. В таких сетях весовые коэффициенты синапсов рассчитываются только однажды перед началом функционирования сети на основе информации об обрабатываемых данных, и все обучение сети сводится именно к этому расчету. С одной стороны, предъявление априорной информации можно расценивать, как помощь учителя, но с другой - сеть фактически просто запоминает образцы до того, как на ее вход поступают реальные данные, и не может изменять свое поведение, поэтому говорить о звене обратной связи с "миром" (учителем) не приходится. Из сетей с подобной логикой работы наиболее известны сеть Хопфилда и сеть Хэмминга, которые обычно используются для организации ассоциативной памяти.
Структурная схема сети Хопфилда приведена на рисунке 4.1. Она состоит из единственного слоя нейронов, число которых является одновременно числом входов и выходов сети. Каждый нейрон связан синапсами со всеми остальными нейронами, а также имеет один входной синапс, через который осуществляется ввод сигнала. Выходные сигналы, как обычно, образуются на аксонах.
Рисунок 4.1 - Структурная схема сети Хопфилда
Задача, решаемая данной сетью в качестве ассоциативной памяти, как правило, формулируется следующим образом. Известен некоторый набор двоичных сигналов (изображений, звуковых оцифровок, прочих данных, описывающих некие объекты или характеристики процессов), которые считаются образцовыми. Сеть должна уметь из произвольного неидеального сигнала, поданного на ее вход, выделить ("вспомнить" по частичной информации) соответствующий образец (если такой есть) или "дать заключение" о том, что входные данные не соответствуют ни одному из образцов. В общем случае, любой сигнал может быть описан вектором X = { xi: i=0...n-1}, n - число нейронов в сети и размерность входных и выходных векторов. Каждый элемент xi равен либо +1, либо -1. Обозначим вектор, описывающий k-ый образец, через Xk, а его компоненты, соответственно, - xik, k=0...m-1, m - число образцов. Когда сеть распознет (или "вспомнит") какой-либо образец на основе предъявленных ей данных, ее выходы будут содержать именно его, то есть Y = Xk, где Y - вектор выходных значений сети: Y = { yi: i=0,...n-1}. В противном случае, выходной вектор не совпадет ни с одним образцовым.
Если, например, сигналы представляют собой некие изображения, то, отобразив в графическом виде данные с выхода сети, можно будет увидеть картинку, полностью совпадающую с одной из образцовых (в случае успеха) или же "вольную импровизацию" сети (в случае неудачи).
На стадии инициализации сети весовые коэффициенты синапсов устанавливаются следующим образом [3][4]:
(1)
Здесь i и j - индексы, соответственно, предсинаптического и постсинаптического нейронов; xik, xjk - i-ый и j-ый элементы вектора k-ого образца.
Алгоритм функционирования сети следующий (p - номер итерации):
1. На входы сети подается неизвестный сигнал. Фактически его ввод осуществляется непосредственной установкой значений аксонов:
yi(0) = xi , i = 0...n-1, (2)
поэтому обозначение на схеме сети входных синапсов в явном виде носит чисто условный характер. Ноль в скобке справа от yi означает нулевую итерацию в цикле работы сети.
2. Рассчитывается новое состояние нейронов
, j=0...n-1 (3)
и новые значения аксонов
(4)
где f - активационная функция в виде скачка.
3. Проверка, изменились ли выходные значения аксонов за последнюю итерацию. Если да - переход к пункту 2, иначе (если выходы застабилизировались) - конец. При этом выходной вектор представляет собой образец, наилучшим образом сочетающийся с входными данными.
Иногда сеть не может провести распознавание и выдает на выходе несуществующий образ. Это связано с проблемой ограниченности возможностей сети. Для сети Хопфилда число запоминаемых образов m не должно превышать величины, примерно равной 0.15n. Кроме того, если два образа А и Б сильно похожи, они, возможно, будут вызывать у сети перекрестные ассоциации, то есть предъявление на входы сети вектора А приведет к появлению на ее выходах вектора Б и наоборот.
Подобные документы
Оптическое распознавание символов как механический или электронный перевод изображений рукописного, машинописного или печатного текста в последовательность кодов. Компьютерные программы для оптического распознавания символов и их характеристика.
презентация [855,2 K], добавлен 20.12.2011Процессы распознавания символов. Шаблонные и структурные алгоритмы распознавания. Процесс обработки поступающего документа. Обзор существующих приложений по оптическому распознаванию символов. Определение фиксированного шага и сегментация слов.
дипломная работа [3,3 M], добавлен 11.02.2017Необходимость в системах распознавания символов. Виды сканеров и их характеристики. Оптимальное разрешение при сканировании. Программы распознавания текста. Получение электронного документа. FineReader - система оптического распознавания текстов.
презентация [469,2 K], добавлен 15.03.2015Обзор математических методов распознавания. Общая архитектура программы преобразования автомобильного номерного знака. Детальное описание алгоритмов: бинаризация изображения, удаление обрамления, сегментация символов и распознавание шаблонным методом.
курсовая работа [4,8 M], добавлен 22.06.2011Оптико-электронная система идентификации объектов подвижного состава железнодорожного транспорта. Автоматический комплекс распознавания автомобильных номеров. Принципы и этапы работы систем оптического распознавания. Особенности реализации алгоритмов.
дипломная работа [887,3 K], добавлен 26.11.2013Понятие системы распознавания образов. Классификация систем распознавания. Разработка системы распознавания формы микрообъектов. Алгоритм для создания системы распознавания микрообъектов на кристаллограмме, особенности его реализации в программной среде.
курсовая работа [16,2 M], добавлен 21.06.2014Основные понятия теории распознавания образов и ее значение. Сущность математической теории распознавания образов. Основные задачи, возникающие при разработке систем распознавания образов. Классификация систем распознавания образов реального времени.
курсовая работа [462,2 K], добавлен 15.01.2014Появление технических систем автоматического распознавания. Человек как элемент или звено сложных автоматических систем. Возможности автоматических распознающих устройств. Этапы создания системы распознавания образов. Процессы измерения и кодирования.
презентация [523,7 K], добавлен 14.08.2013Исследование возможностей ускорения процессов заполнения базы персональных данных за счет сокращения ручного ввода данных путем применения технологий оптического распознавания символов. Проектирование, реализация и тестирование автоматизированной системы.
дипломная работа [2,6 M], добавлен 10.07.2017Как работает система оптического распознавания. Деление текста на символы. Образ страницы и распознавание по шаблонам, особенности коррекции ошибок. Увеличение скорости бесклавиатурного ввода документов в технологиях электронного документооборота.
контрольная работа [15,6 K], добавлен 29.04.2011