Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Теорема об обучении персептрона.Стр 1 из 8Следующая ⇒
ПЕРСЕПТРОН Розенблатта. Простейшая нейронная сеть - ПЕРСЕПТРОН Розенблатта. Линейная разделимость и теорема об обучении персептрона. ПЕРСЕПТРОН Розенблатта. Одной из первых искусственных сетей, способных к перцепции (восприятию) и формированию реакции на воспринятый стимул, явился PERCEPTRON Розенблатта (F.Rosenblatt, 1957). Персептрон рассматривался его автором не как конкретное техническое вычислительное устройство, а как модель работы мозга. Нужно заметить, что после нескольких десятилетий исследований современные работы по искусственным нейронным сетям редко преследуют такую цель. Рис. 4.1. Элементарный персептрон Розенблатта. Простейший классический персептрон содержит нейрободобные элементы трех типов (см. Рис. 4.1), назначение которых в целом соответствует нейронам рефлекторной нейронной сети, рассмотренной в предыдущей лекции. S-элементы формируют сетчатку сенсорных клеток, принимающих двоичные сигналы от внешнего мира. Далее сигналы поступают в слой ассоциативных или A-элементов (для упрощения изображения часть связей от входных S-клеток к A-клеткам не показана). Только ассоциативные элементы, представляющие собой формальные нейроны, выполняют нелинейную обработку информации и имеют изменяемые веса связей. R-элементы с фиксированными весами формируют сигнал реакции персептрона на входной стимул. Розенблатт называл такую нейронную сеть трехслойной, однако по современной терминологии, используемой в этой книге, представленная сеть обычно называется однослойной, так как имеет только один слой нейропроцессорных элементов. Однослойный персептрон характеризуется матрицей синаптических связей W от S- к A-элементам. Элемент матрицы отвечает связи, ведущей от i-го S-элемента к j-му A-элементу. В Корнельской авиационной лаборатории была разработана электротехническая модель персептрона MARK-1, которая содержала 8 выходных R-элементов и 512 A-элементов, которые можно было соединять в различных комбинациях. На этом персептроне была проведена серия экспериментов по распознаванию букв алфавита и геометрических образов. В работах Розенблатта был сделано заключение о том, что нейронная сеть рассмотренной архитектуры будет способна к воспроизведению любой логической функции, однако, как было показано позднее М.Минским и С.Пейпертом (M.Minsky, S.Papert, 1969), этот вывод оказался неточным. Были выявлены принципиальные неустранимые ограничения однослойных персептронов, и в последствии стал в основном рассматриваться многослойный вариант персептрона, в котором имеются несколько слоев процессорных элементов. С сегодняшних позиций однослойный персептрон представляет скорее исторический интерес, однако на его примере могут быть изучены основные понятия и простые алгоритмы обучения нейронных сетей. Обучение нейронной сети с учителем, как задача многофакторной оптимизации. Задача Синаптические весовые коэффициенты однослойного персептрона с двумя входами и одним выходом могут принимать значения -1 или 1. Значение порога равно нулю. Рассмотреть задачу обучения такого персептрона логической функции “и”, как задачу многофакторной комбинаторной оптимизации. Для обучающей выборки использовать все комбинации двоичных входов. ЛЕКЦИЯ 6. Многослойный ПЕРСЕПТРОН. Ограничения однослойных нейронных сетей. Необходимость иерархической организации нейронной системы. Многослойный ПЕРСЕПТРОН. Алгоритм обратного распространения ошибок. Многослойный ПЕРСЕПТРОН. Рассмотрим иерархическую сетевую структуру, в которой связанные между собой нейроны (узлы сети) об'единены в несколько слоев (Рис. 6.1). На возможность построения таких архитектур указал еще Ф.Розенблатт, однако им не была решена проблема обучения. Межнейронные синаптические связи сети устроены таким образом, что каждый нейрон на данном уровне иерархии принимает и обрабатывает сигналы от каждого нейрона более низкого уровня. Таким образом, в данной сети имеется выделенное направление распостранения нейроимпульсов - от входного слоя через один (или несколько) скрытых слоев к выходному слою нейронов. Нейросеть такой топологии мы будем называть обобщенным многослойным персептроном или, если это не будет вызывать недоразумений, просто персептроном. Рис.6.1. Структура многослойного персептрона с пятью входами, тремя нейронами в скрытом слое, и одним нейроном выходного слоя. Персептрон представляет собой сеть, состоящую из нескольких последовательно соединенных слоев формальных нейронов МакКаллока и Питтса. На низшем уровне иерархии находится входной слой, состоящий из сенсорных элементов, задачей которого является только прием и распространение по сети входной информации. Далее имеются один или, реже, несколько скрытых слоев. Каждый нейрон на скрытом слое имеет несколько входов, соединенных с выходами нейронов предыдущего слоя или непосредственно со входными сенсорами X1..Xn, и один выход. Нейрон характеризуется уникальным вектором весовых коэффициентов w. Веса всех нейронов слоя формируют матрицу, которую мы будем обозначать V или W. Функция нейрона состоит в вычислении взвешенной суммы его входов с дальнейшим нелинейным преобразованием ее в выходной сигнал: (6.1) Выходы нейронов последнего, выходного, слоя описывают результат классификации Y=Y(X). Особенности работы персептрона состоят в следующем. Каждый нейрон суммирует поступающие к нему сигналы от нейронов предыдущего уровня иерархии с весами, определяемыми состояниями синапсов, и формирует ответный сигнал (переходит в возбужденное состояние), если полученная сумма выше порогового значения. Персептрон переводит входной образ, определяющий степени возбуждения нейронов самого нижнего уровня иерахии, в выходной образ, определяемый нейронами самого верхнего уровня. Число последних, обычно, сравнительно невелико. Состояние возбуждения нейрона на верхнем уровне говорит о принадлежности входного образа к той или иной категории. Традиционно рассматривается аналоговая логика, при которой допустимые состояния синаптических связей определяются произвольными действительными числами, а степени активности нейронов - действительными числами между 0 и 1. Иногда исследуются также модели с дискретной арифметикой, в которой синапс характеризуется двумя булевыми переменными: активностью (0 или 1) и полярностью (-1 или +1), что соответствует трехзначной логике. Состояния нейронов могут при этом описываться одной булевой переменной. Данный дискретный подход делает конфигурационное пространство состояний нейронной сети конечным (не говоря уже о преимуществах при аппаратной реализации). Здесь будет в основном описываться классический вариант многослойной сети с аналоговыми синапсами и сигмоидальной передаточной функцией нейронов, определяемой формулой (6.1). ЛЕКЦИЯ 8. Модель Хопфилда. Конфигурация и устойчивость сетей с обратными связями. Модель Хопфилда. Правило обучения Хебба. Ассоциативная память. Распознавание образов. Модель Хопфилда (J.J.Hopfield, 1982) занимает особое место в ряду нейросетевых моделей. В ней впервые удалось установить связь между нелинейными динамическими системами и нейронными сетями. Образы памяти сети соответствуют устойчивым предельным точкам (аттракторам) динамической системы. Особенно важной оказалась возможность переноса математического аппарата теории нелинейных динамических систем (и статистической физики вообще) на нейронные сети. При этом появилась возможность теоретически оценить об'ем памяти сети Хопфилда, определить область параметров сети, в которой достигается наилучшее функционирование. В этой лекции мы последовательно начнем рассмотрение с общих свойств сетей с обратными связями, установим правило обучения для сети Хопфилда (правило Хебба), и затем перейдем к обсуждению ассоциативных свойств памяти этой нейронной сети при решении задачи распознавания образов. Сети с обратными связями Рассмотренный нами ранее ПЕРСЕПТРОН относится к классу сетей с направленным потоком распространения информации и не содержит обратных связей. На этапе функционирования каждый нейрон выполняет свою функцию - передачу возбуждения другим нейронам - ровно один раз. Динамика состояний нейронов является безитерационной. Несколько более сложной является динамика в сети Кохонена. Конкурентное соревнование нейронов достигается путем итераций, в процессе которых информация многократно передается между нейронами. В общем случае может быть рассмотрена нейронная сеть (см. Рис. 8.1), содержащая произвольные обратные связи, по которым переданное возбуждение возвращается к данному нейрону, и он повторно выполняет свою функцию. Наблюдения за биологическими локальными нейросетями указывают на наличие множественных обратных связей. Нейродинамика в таких системах становится итерационной. Это свойство существенно расширяет множество типов нейросетевых архитектур, но одновременно приводит к появлению новых проблем. Рис. 8.1. Фрагменты сетей с прямым рапространением (A) и с наличием обратных связей (B). Безитерационная динамика состояний нейронов является, очевидно, всегда устойчивой. Обратные связи могут приводить к возникновению неустойчивостей, подобно тем, которые возникают в усилительных радитехнических системах при положительной обратной связи. В нейронных сетях неустойчивость проявляется в блуждающей смене состояний нейронов, не приводящей к возникновению стационарных состояний. В общем случае ответ на вопрос об устойчивости динамики произвольной системы с обратными связями крайне сложен и до настоящего времени является открытым. Ниже мы остановимся на важном частном случае нейросетевой архитектуры, для которой свойства устойчивости подробно исследованы. Правило обучения Хебба Правило обучения для сети Хопфилда опирается на исследования Дональда Хебба (D.Hebb, 1949), который предположил, что синаптическая связь, соединяющая два нейрона будет усиливатьося, если в процессе обучения оба нейрона согласованно испытывают возбуждение либо торможение. Простой алгоритм, реализующий такой механизм обучения, получил название правила Хебба. Рассмотрим его подробно. Пусть задана обучающая выборка образов x a, a = 1..p. Требуется построить процесс получения матрицы связей W, такой, что соответствующая нейронная сеть будет иметь в качестве стационарных состояний образы обучающей выборки (значения порогов нейронов T обычно полагаются равными нулю). В случае одного обучающего образа правило Хебба приводит к требуемой матрице: Покажем, что состояние S=x является стационарным для сети Хопфилда с указанной матрицей. Действительно, для любой пары нейронов i и j энергия их взаимодействия в состоянии x достигает своего минимально возможного значения Eij = -(1/2) x i x j x i x j = -1/2. При этом Е -полная энергия равна E = -(1/2) N 2, что отвечает глобальному минимуму. Для запоминания других образов может применяется итерационный процесс: который приводит к полной матрице связей в форме Хебба: Устойчивость совокупности образов не столь очевидна, как в случае одного образа. Ряд исследований показывает, что нейронная сеть, обученная по правилу Хебба, может в среднем, при больших размерах сети N, хранить не более чем p » 0.14 N различных образов. Устойчивость может быть показана для совокупности ортогональных образов, когда В этом случае для каждого состояния x a произведение суммарного входа i-го нейрона hi на величину его активности Si = x ai оказывается положительным, следовательно само состояние xa является состоянием притяжения (устойчивым аттрактором): Таким образом, правило Хебба обеспечивает устойчивость сети Хопфилда на заданном наборе относительно небольшого числа ортогональных образов. В следующем пункте мы остановимся на особенностях памяти полученной нейронной сети. ПРИЛОЖЕНИЕ 1. Компьютерное моделирование нейросетей. Принципы разработки программного обеспечения, выполняющего имитационное моделирование нейросетей. Структура и функции блоков программы. Пример программной реализации алгоритма обучения персептрона. Значительная доля всех приложений нейронных сетей приходится на использование их программных моделей, обычно называемых нейроимитаторами. Разработка программы обычно стоит дешевле, а получаемый продукт представляется более наглядным, мобильным и удобным, нежели специализированная аппаратура. В любом случае, разработке аппаратной реализации нейросети всегда должна предшествовать ее всесторонняя отработка на основе теории с использованием компьютерной модели. В этом разделе книги описываются наиболее общие принципы разработки относительно небольших нейропрограмм, обычно индивидуального использования. С целью максимального упрощения изложения выбрана простая архитектура нейронной сети - однослойный ПЕРСЕПТРОН. Теоретические основы этой сети были рассмотрены в четвертой лекции. В завершении раздела приведены полные листинги описываемых программ, которые читатель, знакомый с программированием на ТУРБО ПАСКАЛЕ для персонального компьютера IBM PC, может использовать в учебных целях и модифицировать по своему желанию. Анализ результатов. Это одна из самых важных фаз решения задачи. Для полноты анализа следует позаботиться о нагладности результатов, используя представление их в графическом виде. Если результаты будут использоваться в дальнейших вычислениях с примененим ЭВМ, целесообразно сразу представить их в формате, понимаемом другими программами. Для обмена между программами небольшими таблицами данных можно использовать текстовое представление. Для больших объемов лучше применить стандартные форматы, например, формат dbf-файлов системы dBASE разработки фирмы Ashton-Tate. Это автоматически позволит использовать вам средства этой (и многих других) системы для представления, хранения и редактирования данных. Если полученные результаты существенно отличаются от ожидаемых, скорее всего придется вернуться к постановке задачи. Однако возможно, что вы на пороге нового открытия... Описание программы PERC. В этом пункте будет описана простейшая программа PERC, реализующая обучение однослойного ПЕРСЕПТРОНА. В качестве примера была выбрана следующая задача. Нейронной сети предъявляется вектор, состоящий из 10 копмонент, каждая из которых может быть нулем или единицей. Сеть должна научиться определять, чего больше - нулей или единиц. Для решения такой задачи необходим по крайней мере один нейрон с десятью входами и одним выходом (хотя программа позволяет использовать несколько нейронов). Представляемая функция относится к классу линейно разделимых, поэтому этого одного нейрона достаточно для решения. В качестве обучающей выборки используются 200 векторов, компоненты которых разыгрываются с использованием датчика псевдослучайных чисел ПАСКАЛЯ. Правильный ответ определяется непосредственным сравнением числа нулей и единиц. Обучение сети проводится по дельта-правилу Ф.Розенблатта, подробно рассмотренному в лекции 4. По завершении обучения программа выдает число выполненных итераций и значение достигнутой ошибки обучения. В конце этого пункта приведен полный листинг программы PERC и результаты ее работы (Внимание! Если вы проведете расчет по программе на вашем компьютере, то полученные значения могут слегка отличаться от приведенных из-за различных последовательностей случайных чисел). Для тестирования качества обучения разработана отдельная программа TEST (текст и результаты работы которой тоже приводятся). Структуры используемых данных и работа программы аналогичны программе PERC. Для тестирования также используются случайные вектора. Результаты теста весьма удовлетворительны, нейронная сеть успешно справляется с задачей с точностью до ошибок во 2-3 знаке ответа. Интерпритация этих ошибок не вызывает затруднений или недоразумений. Текст программы PERC. PROGRAM PERC; (* P E R C - Учебная программа, реализующая однослойный PERCEPTRON. *) CONST CMaxInp = 20; (* Максимальное число входов *) CMaxOut = 10; (* Максимальное число выходов *) CMaxImages = 200; (* Максимальное число образов *) CEta = 0.75; (* Темп обучения *) CError = 5.0e-3; (* Граница требуемой ошибки *) CCounter = 1000; (* Максимальное число итераций *) CInitWeight = 5.0; (* Максимальное начальное значение случайных синаптических весов *) CBiasNeuron = 1.0; (* Активность нейрона-порога *) TYPE TMatrix = ARRAY[0..CMaxInp, 1..CMaxOut] OF REAL; (* Нулевой столбец содержит значения порогов *) TInpVector = ARRAY[1..CMaxInp] OF REAL; TOutVector = ARRAY[1..CMaxOut] OF REAL; (* Структура сети *) TPerceptron = RECORD NInp: INTEGER; (* Число входов *) NOut: INTEGER; (* Число выходов *) Inp: TInpVector; (* Текущий вектор входов *) Out: TOutVector; (* Текущий вектор выходов *) W: Tmatrix; (* Матрица связей *) END; (* Запись в базе данных - обучающей выборке *) TBaseRecord = RECORD X: TInpVector; Y: TOutVector; END; (* Структура базы данных *) TBase = RECORD NImages: INTEGER; (* Число обучающих образов *) Images: ARRAY[1..CMaxImages] OF TBaseRecord; END; VAR VNet: TPerceptron; VBase: TBase; VOK: BOOLEAN; VError, VTemp, VDelta: REAL; VCounter, Vi, Vj, Vk: INTEGER; VFile: FILE OF TPerceptron; PROCEDURE InitAll; (* Инициализация нейронной сети с 10 входами и одним выходом, задание начальных случайных значений матрицы связей *)VAR Li, Lj, Lk: INTEGER; BEGIN WITH VNet, VBase DO BEGIN NInp: = 10; NOut: = 1; FOR Li: = 0 TO NInp DO FOR Lj: = 1 TO NOut DO W[Li, Lj]: = CInitWeight*(RANDOM-0.5); END; VOK: = TRUE; END; PROCEDURE GetDataBase; (* Генерация обучающей выборки из 200 случайных образов. При определении правильного числа единиц используется прямой подстчет *)VAR Li, Lj, Lk: INTEGER; BEGIN VOK: = TRUE; WITH VBase, VNet DO BEGIN NImages: = 200; FOR Li: = 1 TO NImages DO BEGIN Lk: = 0; FOR Lj: =1 TO NInp DO BEGIN (* Случайно 0 или 1 *) Images[Li].X[Lj]: = RANDOM( 2 ); (* Подсчет единиц *) IF ( Images[Li].X[Lj] > 0 ) THEN Lk: = Lk + 1; END; (* Выход равен единице, если в данном входном векторе число единиц больше числа нулей *) IF ( Lk > (NInp-Lk) ) THEN Images[Li].Y[1]: = 1 ELSE Images[Li].Y[1]: = 0 END; END; END; PROCEDURE SaveNet; (* Запись параметров нейронной сети в файл SAMPLE.DAT. Производится контроль за операциями вывода с использованием ключа I+ и I- компилятора ТУРБО ПАСКАЛЯ *)BEGIN ASSIGN( VFile, 'SAMPLE.DAT' ); {$I-} REWRITE( VFile ); {$I+} VOK: = (IOResult = 0); IF VOK THEN BEGIN {$I-} WRITE( VFile, VNet ); CLOSE ( VFile ); {$I+} VOK: = (IOResult = 0); END; END; FUNCTION Sigmoid( Z: REAL ): REAL; (* Сигмоидальная переходная функция нейрона *)BEGIN Sigmoid: = 1.0/(1.0+EXP(-Z)); END; (* Основная программа *)BEGIN WRITELN('< < P E R C E P T R O N > > (Нейроимитатор) '); WRITELN('----------------------------------------- '); VOK: = TRUE; (* Инициализация с контролем ошибки *) RANDOMIZE; InitAll; IF (NOT VOK) THEN BEGIN WRITELN('Ошибка инициализации'); HALT; END; (* Генерация базы данных *) VOK: = TRUE; GetDataBase; IF (NOT VOK) THEN BEGIN WRITELN('Ошибка при генерации базы данных'); HALT; END; (* Цикл обучения *) VOK: = TRUE; VCounter: = 0; WITH VNet, VBase DO REPEAT VError: = 0.0; (* Цикл по обучающей выборке *) FOR Vi: = 1 TO NImages DO BEGIN (* Подача очередного образа на входы сети *) FOR Vj: = 1 TO NInp DO BEGIN Inp[Vj]: = Images[Vi].X[Vj]; END; (* Цикл по нейронам. При аппаратной реализации будет выполняться параллельно!!! *) FOR Vk: = 1 TO NOut DO BEGIN (* Состояние очередного нейрона *) VTemp: = CBiasNeuron*W[0, Vk]; FOR Vj: = 1 TO NInp DO BEGIN VTemp: = VTemp + Inp[Vj]*W[Vj, Vk]; END; Out[Vk]: = Sigmoid( VTemp ); (* Накопление ошибки *) VDelta: = Images[Vi].Y[Vk]-Out[Vk]; VError: = VError + 0.5*SQR( VDelta ); (* Обучение по дельта-правилу Розенблатта *) W[0, Vk]: = W[0, Vk] + CEta*CBiasNeuron*VDelta; FOR Vj: = 1 TO NInp DO BEGIN W[Vj, Vk]: = W[Vj, Vk] + CEta*Inp[Vj]*VDelta; END; END; END; VCounter: = VCounter + 1; UNTIL ( (VCounter > = CCounter) OR (VError < = CError) ); (* Цикл завершен при достижении максимального числа итераций или минимально достаточной ошибки *) WRITELN( 'Выполнено ', VCounter, ' итераций'); WRITELN( 'Ошибка обучения ', VError ); (* Сохранение результатов обучения на диске *) SaveNet; IF (NOT VOK) THEN BEGIN WRITELN('Ошибка при записи на диск'); HALT; END; WRITE('Нейронная сеть обучена, параметры'); WRITELN(' записаны в файл SAMPLE.DAT'); END. Результат работы программы PERC < < P E R C E P T R O N > > (Нейроимитатор) ----------------------------------------- Выполнено 243 итераций Ошибка обучения 4.9997994218E-03Нейронная сеть обучена, параметры записаны в файлSAMPLE.DAT Текст программы TEST. PROGRAM TEST; (* T E S T - Тестирующая программа длянейроимитатора PERC *) CONST CMaxInp = 20; CMaxOut = 10; CMaxImages = 15; CBiasNeuron = 1.0; TYPE TMatrix = ARRAY[0..CMaxInp, 1..CMaxOut] OF REAL; TInpVector = ARRAY[1..CMaxInp] OF REAL; TOutVector = ARRAY[1..CMaxOut] OF REAL; TPerceptron = RECORD NInp: INTEGER; NOut: INTEGER; Inp: TInpVector; Out: TOutVector; W: TMatrix; END; VAR VNet: TPerceptron; VTemp: REAL; VCorrect: REAL; Vi, Vj, Vk: INTEGER; VOK: BOOLEAN; VFile: FILE OF TPerceptron; PROCEDURE LoadNet; (* Чтение параметров нейронной сети из файла SAMPLE.DAT. Производится контроль за операциями ввода с использованием ключа I+ и I- компилятора ТУРБО ПАСКАЛЯ *) BEGIN ASSIGN( VFile, 'SAMPLE.DAT' ); {$I-} RESET( VFile ); {$I+} VOK: = (IOResult = 0); IF VOK THEN BEGIN {$I-} READ( VFile, VNet ); CLOSE ( VFile ); {$I+} VOK: = (IOResult = 0); END; END; FUNCTION Sigmoid( Z: REAL ): REAL; BEGIN Sigmoid: = 1.0/(1.0+EXP(-Z)); END; BEGIN VOK: = TRUE; RANDOMIZE; (* Чтение параметров обученной нейросети *) LoadNet; IF (NOT VOK) THEN BEGIN WRITELN('Ошибка при чтении файла'); HALT; END; VOK: = TRUE; WITH VNet DO BEGIN WRITELN('< < P E R C E P T R O N> > (Тестирующая программа)'); WRITELN('-----------------------------------------------'); WRITELN(' ВОПРОС ОТВЕТ ВЕРНЫЙ ОТВЕТ '); WRITELN('-----------------------------------------------'); FOR Vi: = 1 TO CMaxImages DO BEGIN (* Подача на вход случайного образа *) Vk: = 0; FOR Vj: =1 TO NInp DO BEGIN (* Случайно 0 или 1 *) Inp[Vj]: = RANDOM( 2 ); (* Подсчет единиц *) IF ( Inp[Vj] > 0 ) THEN Vk: = Vk + 1; END; (* Правильный ответ известен! *) IF ( Vk > (NInp-Vk) ) THEN VCorrect: = 1.0 ELSE VCorrect: = 0.0; (* Ответ выдает нейросеть *) FOR Vk: = 1 TO NOut DO BEGIN VTemp: = CBiasNeuron*W[0, Vk]; FOR Vj: = 1 TO NInp DO BEGIN VTemp: = VTemp + Inp[Vj]*W[Vj, Vk]; END; Out[Vk]: = Sigmoid( VTemp ); END; (* Выдача результатов *) FOR Vj: = 1 TO NInp DO WRITE( Inp[Vj]: 2: 0 ); WRITELN(' ', Out[1]: 4: 2, ' ', VCorrect: 2: 0); END; END; WRITELN('-------------------------------------------------'); END. Результат работы программы TEST. < < P E R C E P T R O N> > (Тестирующая программа)----------------------------------------------- ВОПРОС ОТВЕТ ВЕРНЫЙ ОТВЕТ----------------------------------------------- 0 0 0 0 1 1 1 1 0 0 0.00 0 0 0 1 0 0 0 0 1 0 1 0.00 0 1 1 0 0 0 0 0 1 0 0 0.00 0 1 1 1 1 0 1 0 1 1 1 1.00 1 0 1 1 1 0 1 1 0 0 0 0.01 0 1 0 1 0 1 0 1 1 1 0 0.99 1 1 0 1 1 1 0 0 1 1 0 0.98 1 1 0 1 1 1 1 0 0 1 1 1.00 1 1 1 0 1 1 1 1 0 1 0 1.00 1 1 1 0 1 1 1 0 0 0 1 1.00 1 0 0 0 0 1 1 0 1 0 1 0.00 0 1 0 0 1 0 0 0 0 0 1 0.00 0 1 0 0 1 0 0 0 1 1 0 0.00 0 0 1 0 1 1 1 0 1 0 0 0.02 0 1 1 1 1 1 1 0 1 1 0 1.00 1--------------------------------------------Задачи. 1. При помощи программы PERC можно изучить зависимость решения от объема данных обучающей выборки. Это достигается изменением значения переменной Nimages в подпрограмме GetDataBase. Попробуйте объяснить ухудшение результатов теста при обучении с постепенным уменьшением числа образов. 2. Модифицируйте программы PERC и TEST, изменив тип переходной функции нейрона. Сравните результаты. 3. Проведите исследование зависимости скорости обучения от темпа (значение CEta ) и начального значения весов (значение CInitWeight ). Объясните полученные вами результаты. ПЕРСЕПТРОН Розенблатта. Простейшая нейронная сеть - ПЕРСЕПТРОН Розенблатта. Линейная разделимость и теорема об обучении персептрона. ПЕРСЕПТРОН Розенблатта. Одной из первых искусственных сетей, способных к перцепции (восприятию) и формированию реакции на воспринятый стимул, явился PERCEPTRON Розенблатта (F.Rosenblatt, 1957). Персептрон рассматривался его автором не как конкретное техническое вычислительное устройство, а как модель работы мозга. Нужно заметить, что после нескольких десятилетий исследований современные работы по искусственным нейронным сетям редко преследуют такую цель. Рис. 4.1. Элементарный персептрон Розенблатта. Простейший классический персептрон содержит нейрободобные элементы трех типов (см. Рис. 4.1), назначение которых в целом соответствует нейронам рефлекторной нейронной сети, рассмотренной в предыдущей лекции. S-элементы формируют сетчатку сенсорных клеток, принимающих двоичные сигналы от внешнего мира. Далее сигналы поступают в слой ассоциативных или A-элементов (для упрощения изображения часть связей от входных S-клеток к A-клеткам не показана). Только ассоциативные элементы, представляющие собой формальные нейроны, выполняют нелинейную обработку информации и имеют изменяемые веса связей. R-элементы с фиксированными весами формируют сигнал реакции персептрона на входной стимул. Розенблатт называл такую нейронную сеть трехслойной, однако по современной терминологии, используемой в этой книге, представленная сеть обычно называется однослойной, так как имеет только один слой нейропроцессорных элементов. Однослойный персептрон характеризуется матрицей синаптических связей W от S- к A-элементам. Элемент матрицы отвечает связи, ведущей от i-го S-элемента к j-му A-элементу. В Корнельской авиационной лаборатории была разработана электротехническая модель персептрона MARK-1, которая содержала 8 выходных R-элементов и 512 A-элементов, которые можно было соединять в различных комбинациях. На этом персептроне была проведена серия экспериментов по распознаванию букв алфавита и геометрических образов. В работах Розенблатта был сделано заключение о том, что нейронная сеть рассмотренной архитектуры будет способна к воспроизведению любой логической функции, однако, как было показано позднее М.Минским и С.Пейпертом (M.Minsky, S.Papert, 1969), этот вывод оказался неточным. Были выявлены принципиальные неустранимые ограничения однослойных персептронов, и в последствии стал в основном рассматриваться многослойный вариант персептрона, в котором имеются несколько слоев процессорных элементов. С сегодняшних позиций однослойный персептрон представляет скорее исторический интерес, однако на его примере могут быть изучены основные понятия и простые алгоритмы обучения нейронных сетей. Теорема об обучении персептрона. Обучение сети состоит в подстройке весовых коэффициентов каждого нейрона. Пусть имеется набор пар векторов (xa, ya), a = 1..p, называемый обучающей выборкой. Будем называть нейронную сеть обученной на данной обучающей выборке, если при подаче на входы сети каждого вектора xa на выходах всякий раз получается соответсвующий вектор ya Предложенный Ф.Розенблаттом метод обучения состоит в итерационной подстройке матрицы весов, последовательно уменьшающей ошибку в выходных векторах. Алгоритм включает несколько шагов:
Используемая на шаге 3 формула учитывает следующие обстоятельства: а) модифицируются только компоненты матрицы весов, отвечающие ненулевым значениям входов; б) знак приращения веса соответствует знаку ошибки, т.е. положительная ощибка (d > 0, значение выхода меньше требуемого) проводит к усилению связи; в) обучение каждого нейрона происходит независимо от обучения остальных нейронов, что соответсвует важному с биологической точки зрения, принципу локальности обучения. Данный метод обучения был назван Ф.Розенблаттом “методом коррекции с обратной передачей сигнала ошибки”. Позднее более широко стало известно название “d -правило”. Представленный алгоритм относится к широкому классу алгоритмов обучения с учителем, поскольку известны как входные вектора, так и требуемые значения выходных векторов (имеется учитель, способный оценить правильность ответа ученика). Доказанная Розенблаттом теорема о сходимости обучения по d -правилу говорит о том, что персептрон способен обучится любому обучающему набору, который он способен представить. Ниже мы более подробно обсудим возможности персептрона по представлению информации. Популярное:
|
Последнее изменение этой страницы: 2016-07-14; Просмотров: 1516; Нарушение авторского права страницы