Разработка программы моделирования нейронной сети

Общие сведения о принципах построения нейронных сетей. Искусственные нейронные системы. Математическая модель нейрона. Классификация нейронных сетей. Правила обучения Хэбба, Розенблатта и Видроу-Хоффа. Алгоритм обратного распространения ошибки.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 29.09.2014
Размер файла 814,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

ВВЕДЕНИЕ

Первые шаги в области искусственных нейронных сетей сделали в 1943 г. В.Мак-Калох (W.MCculloch) и В.Питс (W.Pitts). Они показали, что при помощи пороговых нейронных элементов можно реализовать исчисление любых логических функций. В 1957-1962 гг. Ф.Розенблатт предложил и исследовал модель нейронной сети, которую он назвал персептроном, результаты исследований он обобщил в книге “Принципы нейродинамики”. В 1969г. М.Минский и С.Пайперт опубликовали монографию “Персептроны”, в которой был дан математический анализ персептрона, и показали ограничения, присущие ему. Выводы из были довольно пессимистичными, и это сыграло негативную роль для дальнейшего развития исследований в области нейронных сетей. Работы в этой области были практически остановлены.

В 70-е годы появился ряд работ в области ассоциативной памяти. В 1982г. Д.Хопфилд дал анализ устойчивости нейронных сетей с обратными связями и предложил использовать их для решения задач оптимизации. Ряд авторов (Румельхарт, Хинтон, Уильямс) предложили алгоритм обратного распространения ошибки, который стал мощным средством для обучения многослойных нейронных сетей. В 1987г. под эгидой IEEE (Institute of Electrical and Electronic Engineer's) проводится первая международная конференция в области нейронных сетей.

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

1. ПРИМЕНЕНИЕ нейронных сетей

Нейрокомпьютеры (компьютеры на основе нейронных сетей) или нейроимитаторы (программы, моделирующие работу нейронных сетей не ЭВМ) обладают целым рядом свойств, привлекательных с точки зрения их практического использования:

- сверхвысокое быстродействие за счет использования массового параллелизма обработки информации;

- толерантность к ошибкам - работоспособность сохраняется при повреждении значительного числа нейронов;

- способность к обучению - программирование системы заменяется обучением;

- способность к распознаванию образов в условиях сильных помех и искажений.

Однако, первые 2 свойства имеют место только при аппаратной реализации нейронных сетей. Аппаратно реализованные нейронные сети обеспечивают решение сложных задач за времена порядка времен срабатывания цепочек электронных и/или оптических элементов. Решение слабо зависит от неисправности отдельного нейрона. Это делает их привлекательными для использования в составе бортовых вычислительных систем.

В настоящее время нейронные сети применяются для решения многих неформализуемых или трудно формализуемых задач:

- распознавания и синтеза речи;

- распознавания аэрокосмических изображений;

- прогнозирования котировки ценных бумаг и курса валют;

- предупреждения мошенничества с кредитными карточками;

- оценки стоимости недвижимости;

- оценки финансового состояния предприятий и риска невозврата кредитов;

- обработки радиолокационных сигналов;

- контроля движения на скоростных автомагистралях и железных дорогах;

- диагностики в медицине;

- добычи знаний из больших объемов данных в бизнесе, финансах и научных исследованиях.

Нейронные сети можно использовать при следующих условиях:

- если задачу может решать человек;

- если при решении задачи можно выделить множество входных факторов (сигналов, признаков, данных и т.п.) и множество выходных факторов;

- если изменения входных факторов приводит к изменению выходных.

В то же время применение нейронных сетей при решении некоторых задач может оказаться эффективнее использования разума человека. Это объясняется тем, что человеческий разум ориентирован на решение задач в трехмерном пространстве. Многомерные задачи для него характеризуются значительно большей трудоемкостью. Искусственным нейронным сетям не свойственно такое ограничение. Им все равно решать трехмерную или 10-мерную задачу.

При применении нейронных сетей необходимо решить следующие задачи:

- постановка задачи, пригодной для решения с помощью нейронной сети;

- выбор модели ИНС;

- подготовка исходных данных для обучения ИНС;

- обучение ИНС;

- собственно решение задачи с помощью обученной ИНС.

Кроме того, иногда нужен еще один этап - интерпретация решения, полученного нейронной сетью.

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

2. Общие сведения о принципах построения нейронных сетей

2.1 Искусственные нейронные системы

Поиски алгоритмов, позволяющих автоматически использовать накопленных опыт, продолжаются уже более 100 лет. С появлением дешевых ЭВМ произошел резкий скачок в этой отрасли. Возникли новых обасти деятельности - нейроинформатика, нейрокибернетика и др. Приставка “нейро” в названии вовсе не случайна. Во-первых, нейрокомпьютеры и нейропрограммы явялются самообучающимися, что отличает их от обычных ЭВМ (программ); во-вторых, принципы их работы напоминают (хотя и отдаленно) взаимодействие клеток нервной системы - нейронов - через специальные связи - синапсы.

Основой работы самообучающихся нейропрограмм является нейронная сеть, представляющая собой совокупность нейронов - элементов, связанных между собой определенным образом. Нейроны и межнейронные связи задаются программно на обычном компьютере или могут иметь “материальную” основу - особые микросхемы, какие применяться в специально созданных нейрокомпьютерах. Функционирование нейрона в нейрокомпьютере или нейропрограмме отдаленно напоминает работу биологического нейрона.

Бионейрон - клетка, имеющая длинные отростки, связанные с другими нейронами с помощью синапсов, предающих электрический импульс от одного нейрона к другому. Отростки подразделяются на дендриты, передающие сигналы к данному нейрону, и аксоны, передающие сигналы от данного нейрона.

2.2 Математическая модель нейрона

Основной элемент нейронной сети - это формальный нейрон. Модель нейрона МакКаллока-Питтса, которая и сейчас является наиболее применяемым формализмом для описания отдельного нейрона в нейронной сети состоит из следующих элементов. Адаптивный сумматор, показанный на рисунке 2.1, вычисляет скалярное произведение вектора входного сигнала X на вектор параметров W. Преобразователь сигнала, изображенный на рисунке 2.2, получает скалярный входной сигнал (X,W) и переводит его в F(X,W). Последовательным соединением адаптивного сумматора с преобразователем, как показано на рисунке 2.3, получаем нейрон. В большинстве случаев на выходе каждого нейрона стоит точка ветвления, служащая для рассылки выходного сигнала нейрона по входам других элементов, рисунок 2.4.

Рисунок 2.1 - Адаптивный сумматор Рисунок 2.2 - Преобразователь

Рисунок 2.3 - Формальный нейрон

Рисунок 2.4 - Нейрон с точкой ветвления на выходе

Нейрон осуществляющий операцию нелинейного преобразования суммы произведения входных сигналов на весовые коэффициенты:

,(2.1)

где X - вектор входного сигнала;

W - весовой вектор;

F - оператор нелинейного преобразования.

Сумма произведений входных сигналов на весовые коэффициенты называется взвешенной суммой. Она представляет собой скалярное произведение вектора весов на входной вектор:

,

где |W|, |X| - соответственно длины векторов W и X;

- угол между векторами W и X.

Длины весового и входного векторов определяются через их координаты:

;

.

Так для нейронного элемента длина весового вектора после обучения |W|=const, то величина взвешенной суммы определяется проекцией входного вектора на весовой вектор:

,

где Xw - проекция вектора X на вектор W.

Если входные векторы нормированы, т.е. |X|=const, то величина взвешенной суммы будет зависеть только от угла между векторами X и W. Тогда при различных входных сигналах взвешенная сумма будет изменяться по косинусоидальному закону. Максимального значения она будет достигать при коллинеарности входного и весового векторов.

Если сила связи wi отрицательная, то такая связь называется тормозящей. В противном случае синоптическая связь является усиливающей.

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

Линейная функция. Функция активности для входных элементов может быть тождественной функцией, и в этом случае выходное значение нейронного элемента равняется:

,(2.2)

где k - коэффициента наклона прямой.

Входные элементы обычно предназначены для распределения вводимых сигналов между другими элементами сети, поэтому для входных элементов обычно требуется, чтобы исходящий от элемента сигнал был таким же, как и входящий, т.е. k=1, как показано на рисунке 2.5. В отличие от других элементов сети, входные элементы имеют только по одному входному значению. Например, каждый элемент может получать сигнал от одного соответствующего ему датчика, размещенного на фюзеляже самолета. Один этот элемент связывается со многими другими элементами сети, так что данные, полученные от одного датчика, оказываются распределенными между многими элементами сети. Поскольку входные элементы предназначены исключительно для того, чтобы распределять сигналы, получаемые из внешней среды, многие исследователи вообще не считают входные элементы частью нейронной сети.

Пороговая функция. В качестве пороговой функции активации может использоваться биполярная, рисунок 2.6,а или бинарная, рисунок 2.6,б функция. В случае использования пороговой бинарной функции:

.(2.3)

Если применяется пороговая биполярная функция активации, то выходное значение нейронного элемента:

.(2.4)

Сигмоидная функция. Эта функция является непрерывной, возрастающей функцией в диапазоне [0, 1]:

,(2.5)

где с>0 - коэффициент, характеризующий ширину функции по оси абсцисс

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

,(2.6)

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

Рисунок 2.5 - Линейная функция активации

а) б)

Рисунок 2.6 - Пороговая функция активации:

а) - бинарная

б) - биполярная

а) б)

Рисунок 2.7 - Сигмоидная функция активации:

а) - бинарная

б) - биполярная

2.3 Классификация нейронных сетей

Нейронные сети различают по структуре сети (связей между нейронами), особенностям модели нейрона, особенностям обучения сети.

По структуре нейронные сети можно разделить на неполносвязные (или слоистые) и полносвязные.

Слоистые сети: нейроны расположены в несколько слоев, рисунок 2.8. Нейроны первого слоя получают входные сигналы, преобразуют их и через точки весвления вередают нейронам второго слоя. Далее срабатывает второй слой и т.д. до k-го, который выдает выходные сигналы для интерпретатора и пользователя. Если не оговорено противное, то каждый выходной сигнал i-го слоя подается на вход всех нейронов i+1-го слоя. Число нейронов в каждом слое может быть любым и никак заранее не связано с количеством нейронов в других слоях. Стандартный способ подачи входных сигналов: все нейроны первого слоя получают каждый входной сигнал. Особое распространение получили трехслойные сети, в которых каждый слой имеет свое наименование: первый - входной, второй - скрытый, третий - выходной.

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

По используемым на входах и выходах сигналам нейронные сети можно разделить на аналоговые и бинарные.

По моделированию времени нейронные сети подразделяются на сети с непрерывным и дискретным временем. Для программной реализации применяется как правило дискретное время.

По способу подачи информации на входы нейронной сети различают:

- подачу сигналов на синапсы входных нейронов;

- подачу сигналов на выходы входных нейронов;

- подачу сигналов в виде весов синапсов входных нейронов;

- аддитивную подачу на синапсы входных нейронов.

По способу съема информации с выходов нейронной сети различают:

- съем с выходов выходных нейронов;

- съем с синапсов выходных нейронов;

- съем в виде значений весов синапсов выходных нейронов;

- аддитивный съем с синапсов выходных нейронов.

Рисунок 2.8 - Слоистая сеть

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

По организации обучения разделяют обучение нейронных сетей с учителем (supervised neural networks) и без учителя (nonsupervised). При обучении с учителем предполагается, что есть внешняя среда, которая предоставляет обучающие примеры (значения входов и соответствующие им значения выходов) на этапе обучения или оценивает правильность функционирования нейронной сети, и, в соответствии со своими критериями, запускает механизм изменения состояния нейронной сети. Под состоянием нейронной сети, которое может изменяться, обычно понимается:

- веса синапсов нейронов;

- установление новых связей между нейронами (свойство биологических нейронов устанавливать новые связи и ликвидировать старые называется пластичностью).

По способу предъявления примеров различают предъявление одиночных примеров и "страницы" примеров. В первом случае изменение состояния нейронной сети (обучение) происходит после предъявления каждого примера. Во втором - после предъявления "страницы" (множества) примеров на основе анализа сразу их всех.

2.4 Математическая модель нейронной сети

2.4.1 Однослойные нейронные сети

Рассмотрим нейронные сети, состоящие из одного слоя нейронных элементов, который осуществляет обработку входной информации. Такие сети принято изображать в виде двухслойной нейронной сети, где первый слой нейронных элементов является распределительным, а второй - обрабатывающим. Распределительный слой передает входные сигналы на обрабатывающий слой нейронных элементов, который преобразует входную информацию в соответствии с синоптическими связями и функцией активации. При этом каждый нейрон распределительного слоя имеет синоптические связи со всеми нейронами обрабатывающего слоя. Тогда выходное значение j-го нейронного элемента второго слоя, в соответствии с (2.1) можно представить как:

,

где Tj - порог j-го нейронного элемента;

wij - сила синаптической связи между i-м нейроном распределительного слоя и

j-м нейроном обрабатывающего слоя.

Порог нейронного элемента характеризует расположение функции активации по оси абсцисс. При операциях с нейронными сетями порог нейронного элемента выходного слоя, а так же и срытых слоев, можно выносить за пределы слоя и изображать как синоптическую связь с весовым коэффициентом, равным значению Т, и входным значением, равным -1, рисунок 2.9.

Совокупность весовых коэффициентов сети можно представить в виде матрицы:

.

Тогда вектор-столбец взвешенной суммы в матричном виде определяется как:

,

где Т - вектор-столбец порогов нейронных элементов второго слоя.

Рассмотрим нейронную сеть с двумя нейронами входного и одним нейроном выходного слоя, рисунок 2.9. Функция активации нейронов выходного слоя - пороговая (2.3). Взвешенная сумма:

.

Соответственно выходное значение нейронной сети:

.

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

.(2.7)

Она разделяет область решений, соответствующую одному классу, от другого класса и называется дискриминантной линией. Из (2.7) получим:

.(2.8)

В системе координат (х2, х1) уравнение (2.8) изображает прямую линию, которая отделяет один класс от другого, рисунок 2.10. При этом величина T1/|W| представляет собой расстояние от центра координат до прямой. Если размерность входного сигнала n=3, то разделяющей поверхностью будет плоскость, если n>3 - гиперплоскость.

Рисунок 2.9 - Однослойная сеть с одним выходным нейроном и представлением порогового значения в виде синоптической связи.

Рисунок 2.10 - Дискриминантная линия

Рассмотрим решение простейших задач логических операций на описанной выше сети. Эти задачи решаются с использованием нейронной сети, если их пространство решений можно разбить на два класса, рисунок 2.11. Из рисунка следует, что рассмотренная сеть может решить задачу И и ИЛИ, но неспособна решить задачу ИСКЛЮЧАЮЩЕЕ ИЛИ. Таким образом, линейная разделяющая поверхность, формируемая нейронной сетью с одним слоем обрабатывающих нейронных элементов, ограничивает круг решаемых задач. Это в свое время показали американские ученые М.Минский и С.Пайперт.

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

Теорема 1 Многослойная нейронная сеть с линейной функцией активации нейронных элементов эквивалентна однослойной нейронной сети с соответствующей функцией активации нейронных элементов.

Доказательство. Выходные значения нейронной сети в матричной форме определяются следующим образом:

,

где Х(2) - матрица выходных сигналов промежуточного слоя;

W(2) - матрица весовых коэффициентов выходного слоя.

Аналогично, матрицу выходных значений промежуточного слоя можно представить в виде:

.

Отсюда получаем:

,

,

,

Что и требовалось доказать.

а) б) в)

Рисунок 2.11 - Графическая интерпретация решения логических задач типов и (а), или (б) и исключающее или (в)

Рисунок 2.12 - Многослойная линейная сеть

2.4.2 Многослойные нейронные сети

Многослойная нейронная сеть способна осуществлять любое отображение входных векторов в выходные. Наибольшее распространение получили нейронные сети со слоистой архитектурой, и сигмоидной функцией активации (2.4) нейронных элементов во всех слоях кроме входного. Функция активации нейронов входного слоя, как отмечалось ранее, является линейной.

Пусть W(i) - матрица весовых коэффициентов i-го слоя многослойной сети. Тогда для нейронной сети с двумя скрытыми слоями выходные значения:

,

где Х=(х1, х2,…,хn) - вектор-строка входных сигналов;

F - оператор нелинейного преобразования.

Общее число синоптических связей:

,

где p - общее число слоев нейронной сети;

k(i) - количество нейронных элементов в i-м слое.

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

Рассмотрим решение задачи ИСКЛЮЧАЮЩЕЕ ИЛИ при помощи трехслойной нейронной сети. На рисунке 2.13 показана такая сеть, созданная в программе, описываемой в п.3 с указанием весовых коэффициентов и пороговых значений нейронных элементов. Слой скрытых нейронных элементов разбивает входное пространство образов на классы при помощи двух прямых, рисунок 2.14. Выходной нейронный элемент осуществляет композицию классов для реализации функции ИСКЛЮЧАЮЩЕЕ ИЛИ. В качестве функции активации нелинейных нейронных элементов используется сигмоидная функция, а поскольку она никогда не достигает значений 0 и 1, то вместо 0 используется 0,1, а вместо 1 - 0,9. Выбор конкретных значений 0,1 и 0,9 не обязателен, поскольку обычно считается, что сеть научилась выполнять задачу, когда все выходные данные попадают в определенные допустимые рамки.

Рисунок 2.13 - Нейронная сеть для решения задачи исключающее или

Рисунок 2.14 - Графическая иллюстрация решения задачи исключающее или

В 1957г. А.Н.Колмогоров показал, что любую непрерывную функцию n переменных на единичном отрезке [0, 1] можно представить в виде суммы конечного числа одномерных функций:

,

где функции g и цp являются одномерными и непрерывными;

лi = const для всех i.

Из данной теоремы следует, что любую непрерывную функцию f:[ 0, 1]n>[ 0, 1] можно аппроксимировать при помощи трехслойной нейронной сети, которая имеет n входных, (2n+1) скрытых и один выходной нейрон. Однако проблема здесь состоит в выборе соответствующих функций g и ц. В 1988г. ряд авторов обобщили приведенные результаты на многослойную нейронную сеть с алгоритмом обратного распространения ошибки:

Теорема2: Любая непрерывная функция f:[0, 1]n>[0, 1] может быть аппроксимирована трехслойной нейронной сетью с одним скрытым слоем и алгоритмом обратного распространения ошибки с любой степенью точности.

Данная теорема является основной для аппроксимации функций при помощи многослойных нейронных сетей.

2.5 Обучение нейронной сети

2.5.1 Правило обучения Хэбба

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

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

Пусть имеются два нейронных элемента i и j, между которыми существует сила связи, равная wij, тогда правило обучения Хебба запишется как:

,

где t - время;

xi и yj- соответственно выходное значение i-го и j-го нейронов.

В начальный момент времени предполагается, что:

.

Правило Хеббо для нейронной сети, изображенной на рисунке 2.9, можно представить в виде выражений:

,

,

.

Аналогичным образом правило Хебба записывается для нейронной сети большей размерности.

Правило Хебба может использоваться как при обучении с учителем, так и без него. Если в качестве выходных значений y нейронной сети используются эталонные значения, то это правило будет соответствовать обучению с учителем. При использовании в качестве y реальных значений, которые получаются при подаче на вход сети входных образов, правило Хебба соответствует обучению без учителя.

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

2.5.2 Правило обучения Розенблатта

Данную процедуру предложил американский ученый Ф.Розенблатт в 1959г. для нейронной сети, которую он назвал персептрон.

Персептрон - это сеть, состоящая из S, A и R нейронных элементов. Нейроны слоя S называются сенсорными и предназначены для формирования входных сигналов в результате внешних воздействий. Нейроны слоя А называются ассоциативными и предназначены для непосредственной обработки входной информации. Нейроны слоя R называются эффекторными. Они служат для передачи сигналов возбуждения к соответствующему объекту, например к мышцам.

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

Математическую формулировку правила обучения Розенблатта можно представить в следующем виде:

,(2.9)

где tj - эталонное значение j-го выхода нейронной сети;

б - коэффициент, характеризующий скорость обучения сети.

Величина скорости обучения характеризуется следующими значениями:

,

.

Процедура обучения Розенблатта состоит из следующих шагов:

1 Весовые коэффициенты W нейронной сети инициализируются случайным образом или устанавливаются в нулевое состояние.

2 На входы сети поочередно подаются входные образы X из обучающей выборки, которые трансформируются в выходные сигналы нейронных элементов Y.

3 Если реакция нейронной сети yj совпадает с эталонным значением tj, т.е. если yj=tj, то весовой коэффициент wij не изменяется.

4 Если выходная реакция сети yj не совпадает с эталонной, т.е. если yj ?tj, то производится модификация весовых коэффициентов по правилу (2.9).

5 Шаги 2-4 повторяются до тех пор, пока не станет yj=tj, для всех входных образов, или не перестанут изменяться весовые коэффициенты.

Согласно теореме сходимости персептрона, алгоритм сходится за конечное число шагов, если существует решение задачи.

Основные отличия процедуры обучения Розенблатта от правила обучения Хебба заключаются в следующем:

- В правиле обучения Розенблатта для персептрона присутствует скорость обучения б;

- Персептрон не изменяет весовые коэффициенты, если выходные сигналы совпадают с эталонными;

- Входные образы из обучающей выборки в модели персептрона подаются до тех пор, пока не произойдет обучение сети.

- Персептрон обучается за конечное число шагов, если существует решение задачи.

2.5.3 Правило обучения Видроу-Хоффа

Правило обучения Видроу-Хоффа известно под названием дельта-правило. Оно предполагает минимизацию среднеквадратичной ошибки нейронной сети, которая для L входных образов определяется следующим образом:

,(2.10)

где E(k) - среднеквадратичная ошибка сети для k-го образа;

у1k и tk - соответственно выходное и эталонное значение нейронной сети для k-го образа.

Критерий (2.10) характеризуется тем, что при малых ошибках ущерб является также малой величиной, так как Е меньше величины отклонения (y-t). При больших ошибках ущерб возрастает, так как Е возрастает с ростом величины ошибки.

Среднеквадратичная ошибка нейронной сети для одного входного образа определяется по формуле:

.

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

;

,

где ;

б - скорость или шаг обучения.

Найдем производные среднеквадратичной ошибки Е по настраиваемым параметрам сети wj1 и Т:

;

;

где xjk - j-я компонента k-го образа.

Отсюда получаем следующие выражения для обучения нейронный сети по дельта-правилу:

;(2.11)

,(2.12)

где .

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

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

,

где k - номер итерации в процессе обучения.

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

2.5.4 Алгоритм обратного распространения ошибки

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

Теорема 3 Для любого скрытого слоя i ошибка i-го нейронного элемента определяется рекурсивным образом через ошибки нейронов следующего слоя j:

,(2.13)

где m - число нейронов следующего слоя по отношению к слою i;

wij - синаптическая связь между i-м и j-м нейронами различных слоев;

Sj - взвешенная сумма j-го нейрона.

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

Теорема 4 Производные среднеквадратичной ошибки по весовым коэффициентам и порогам нейронных элементов для любых двух слоев i и j многослойной сети определяются следующим образом:

;

.

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

;

,

где б - скорость обучения.

Данное следствие определяет правило обучения многослойных нейронных сетей в общем виде, которое называется обобщенным дельта-правилом.

Рассмотрим сигмоидную функцию активации (2.5), как наиболее распространенную функцию активации нейронных элементов, причем примем с=1.

;

;

,

В результате обобщенное дельта-правило для сигмоидной функции можно представить в виде:

;(2.14)

.

Ошибка для j-го нейрона выходного слоя:

.(2.15)

Из (2.13) ошибка для j-го нейронного элемента скрытого слоя:

,(2.16)

где m - число нейронных элементов следующего слоя по отношению к слою j.

Рисунок 2.15 - Алгоритм обратного распространения ошибки

Используя вышеизложенное, можно определить алгоритм обратного распространения ошибки, рисунок 2.15. В алгоритме приняты следующие обозначения, соответствующие программе, реализующей этот алгоритм:

- б - шаг обучения;

- Em - требуемая среднеквадратичная ошибка;

- epoxa - целое число, равное количеству обучающих образцов;

- wij - весовой коэффициент связи между i-м и j-м нейронами смежных слоев;

- stArIN - массив входных значений обучающего образца;

- stArOUT - массив выходных значений обучающего образца;

- stAr - объект класса StadyArrays, хранящего stArIN и stArOUT вместе;

- massivStudy - массив объектов, содержащих объекты класса StadyArrays;

- STOP - логическая переменная, соответствующая окончанию обучения;

- layers - целое число, равное количеству всех слоев в нейронной сети;

- koli4estvo - целое число, равное количеству нейронов в слое;

- у - значение результата работы нейронного элемента;

- resultStudy - массив результатов всех нейронов слоя;

- result - массив целевых значений;

- г - ошибка результата работы нейрона;

- е[i] - сумма квадратов ошибок выходного слоя для i-го образца;

- Е - среднеквадратичная ошибка сети для всех образцов.

Описание действия алгоритма обратного распространения ошибки.

1 Пользователь вводит желаемые значения шага обучения (б), среднеквадратичной ошибки (Em), и количество образцов для обучения (epoxa).

2 Инициализируются случайным образом весовые коэффициенты (wij) нейронных элементов в пределах от -0,5 до +0,5.

3 Начало цикла ввода обучающих образцов.

4 Пользователь вводит подаваемый на вход нейронной сети массив данных, stArIN.

5 Пользователь вводит массив целевых выходных значений, stArOUT.

6 На основании stArIN и stArOUT создается объект класса StadyArrays.

7 Созданный объект добавляется в массив massivStudy.

8 Значение STOP устанавливается в “Ложь”, подразумевается что сеть не в состоянии правильно решать поставленную задачу, т.е. не обучена.

9 Проверка параметра остановки процесса обучения. Если STOP=”Истина”, то цикл прекращается (переход к блоку 30), в противном случае переход к шагу 11.

10 Начало цикла обучения всем образцам эпохи.

11 Считывается входной вектор значений очередного образца. Задается resultStudy.

12 Цикла прямого прохождения информации по нейронной сети. Происходит последовательное прохождение вводимой информации по всем слоям.

13 Цикла вычисления реакции каждого нейрона в слое на информацию подаваемую на этот слой.

14 Вычисляется результат работы каждого нейрона, исходя из (2.1):

,

где i - индекс, характеризующий нейроны предыдущего слоя по отношению к слою j. Для входного слоя yi берется из заданного в блоке 12 массива resultStudy.

15 Переопределяется массив resultStudy, для представления его как входной информации уже следующему слою.

16 Считывается целевой вектор значений текущего образца. Задается result.

17 Цикл вычисления ошибок всех нейронных элементов выходного слоя.

18 На основании полученного массива result и вычисленного resultStudy, находятся ошибки по (2.15):

;

где yj - вычисленное значение, т.е. элемент массива resultStudy;

tj - известное целевое значение, элемент массива result.

19 Цикл вычисления ошибок во всех скрытых слоях, начиная с последнего.

20 Цикл вычисления ошибок всех нейронных элементов текущего скрытого слоя.

21 На основании полученного вычисленного массива последующего слоя resultStudy, находятся ошибки по (2.16):

;

где индекс i характеризует нейронные элементы следующего слоя;

22 Цикл изменения весовых коэффициентов между всеми смежными слоями.

23 Цикл для текущего соля по всем его нейронным элементам.

24 Изменение весовых коэффициентов, согласно (2.14) находится как:

;

25 Вычисляется сумма квадратов ошибок для данного образца обучения:

Далее идет переход к пункту 12, для считывания следующего образца в эпохе обучения. Если это был последний образец, то выполняется блок 27.

26 Находится среднеквадратичная ошибка нейронной сети по всем образцам, (2.10):

,

где L - размерность обучающей выборки.

27 Проверка на достижение среднеквадратичной ошибки допустимого значения. Безусловный дальнейший переход к блоку 10.

28 При истинности блока 28, значение STOP так же устанавливается “Истина”. Безусловный дальнейший переход к блоку 10.

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

- неизвестность выбора числа слоев и количества нейронных элементов в слое для многослойных сетей;

- медленную сходимость градиентного метода с постоянным шагом обучения;

- сложность выбора подходящей скорости обучения б. Так, слишком малая скорость обучения увеличивает время обучения и приводит к скатыванию нейронной сети в локальный минимум. Большая скорость обучения может привести к пропуску глобального минимума и сделать процесс обучения расходящимся;

- невозможность определения точек локального и глобального минимумов, рисунок 2.16, так как градиентный метод их не различает;

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

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

2.6 Рекомендации по обучению и архитектуре многослойных нейронных сетей

Эффективность обучения многослойных нейронных сетей зависит от числа слоев, числа элементов в скрытых слоях нейронной сети и начальной инициализации весовых коэффициентов.

Рисунок 2.16 - Функция среднеквадратичной ошибки:

Ел - локальный минимум; Еmin - глобальный минимум.

Как отмечалось выше, разная инициализация весовых коэффициентов может приводить к различным решениям. Важную роль здесь играет размер случайно инициализируемых синаптических связей. Так, для сигмоидной функции активации нейронных элементов, если весовые коэффициенты будут иметь большие значения (положительные или отрицательные). То выходная активность нейронных элементов будет близка к единице или нулю. Тогда значение выражения yj(1-yj) будет близко к нулю и, согласно правилу обучения (2.14), весовые коэффициенты будут изменяться незначительно. Это приведет к тому, что процесс обучения остановится в ближайшем локальном минимуме от стартовой точки. Рекомендуется случайным образом инициализировать весовые коэффициенты и пороговые значения в диапазоне [-0,5; 0,5].

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

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

Для обеспечения требуемой точности и обобщающей способности можно использовать нейронную сеть с двумя скрытыми слоями, размерность которых меньше, чем при использовании трехслойной сети. Однако нейронные сети, которые имеют несколько скрытых слоев, обучаются значительно медленнее.

Так же одним из недостатков метода градиентного спуска является застревание в нежелательных локальных минимумах. Для нейтрализации этого недостатка можно использовать метод тяжелого шарика.

Исходя из приведенных рассуждений можно сделать выводы:

- нейронная сеть с одним скрытым слоем позволяет осуществить любое отображение входных сигналов в выходные;

- число нейронных элементов в промежуточном слое должно быть меньше числа тренировочных образцов;

- мощность нейронной сети можно увеличивать как за счет числа нейронов в слое, так и за счет числа слоев. Если на нейронную сеть накладывается ограничения п.2 и она не может решить поставленную задачу, то необходимо увеличивать число скрытых слоев;

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

3. Разработка программы моделирования нейронной сети

3.1 Выбор инструментария для моделирования

Объектно-ориентированное програмирование в настоящее время стало доминирующей парадигмой программирования, вытеснив “структурные”, процедурно-ориентированные способы программирования, разработанные в начале 1970-х годов. Язык Java представляет собой полностью объектно-ориентированный язык, и не нем невозможно программировать в процедурном стиле.

Для дальнейшей работы необходимо определиться с терминологией объектно-ориентированного программирования. Наиболее важным термином является класс. Класс - это шаблон, или проект, по которому будет сделан объект. Обычно класс сравнивается с формой для выпечки печенья. Объект - это самое печенье. Конструирование объекта на основе некоторого класса называется созданием экземпляра этого класса.

Как увидим далее, все коды, которые создаются в языке Java, находятся внутри классов. Стандартная библиотека языка Java содержит несколько тысяч классов, предназначенных для решения разных задач, например, для создания пользовательского интерфейса, календарей и т.д. Несмотря на это, программисты продолжают создавать свои собственные классы на языке Java, чтобы описать объекты, характерные для разрабатываемого приложения, а также адаптировать классы из стандартной библиотеки для своих нужд.

Инкапсуляция - это ключевое понятие при работе с объектами. Формально инкапсуляция - это просто объединение данных и операций над ними в одном пакете и сокрытие данных от пользователя объекта. Данные в объекте называются полями экземпляра, а функции и процедуры, выполняющие операции над данными, - его методами. В указанном объекте, т.е. экземпляре класса, поля экземпляра имеют определенные значения. Множество этих значений называется текущим состоянием объекта. Применение любого метода к какому-нибудь объекту может изменить его состояние.

Рассмотрим различия между объектно-ориентированным программированием и традиционным процедурным. В процедурно-ориентированном программировании сначала формируется задача, а затем

- с помощью пошагового уточнения исходная задача разбивается на все более мелкие подзадачи, пока они не станут настолько простыми, что их можно будет реализовать непосредственно (программирование “сверху вниз”)ж

- создаются процедуры, предназначенные для решения простых задач; затем эти процедуры объединяются в более сложные, пока программа не станет делать именно то, что требуется (программирование “снизу вверх”).

Большинство программистов, конечно, используют смешанные стратегии “сверху вниз” и “снизу вверх”. При исследовании процедур нужно придерживаться такого же правила, как и при объектно-ориентированном программировании: ищите глаголы, или действия, в описании задачи. Существенное отличие заключается в том, что при объектно-ориентированном программировании (ООП) в проекте сначала выделяются классы, и лишь затем определяются их методы.

Для решения небольших задач разбиение программы на процедуры вполне оправданно. Однако при разработке больших проектов классы и методы имеют два преимущества. Классы предоставляют удобный механизм кластеризации методов. Простенький Web-браузер для своей реализации может потребовать 2000 функций и 100 классов, т.е. в среднем 20 методов в классе. Программисту намного легче понять именно последнюю структуру. Кроме того, ее легче распределить в команде программистов. Этому способствует также инкапсуляция: классы скрывают детали представления данных от любого кода, кроме своих методов. Как показано на рисунке 3.1, это значит, что, если ошибка программирования искажает данные, причину легче найти среди 20 классов, чем среди 200 процедур.

Можно возразить, что это не слишком отличается ор принципа модульности. Процедурные программы могут разбиваться на модули, обменивающиеся друг с другом данными исключительно с помощью вызовов процедур, не прибегая к совместному использованию данных. Если правильно пользоваться этим приемом, можно осуществить инкапсуляцию данных. Однако во многих языках программирования малейшее отклонение от этого подхода открывает доступ к данным из другого модуля - инкапсуляцию легко разрушить.

Есть более серьезная проблема: в то время как на основе класса можно создать несколько объектов с одинаковым поведением, в процедурно-ориентированных языках невозможно получить несколько копий одного модуля. Допустим, мы достигли модульной инкапсуляции, объединив совокупность заказов вместе с прекрасным сбалансированным бинарным деревом, обеспечивающим быстрый доступ. И вдруг выясняется, что нужно иметь две такие совокупности: одну для текущих заказов, а другую - для выполненных. Нельзя просто дважды вызвать модуль, реализующий дерево заказов. Для этого нужно скопировать и переименовать все процедуры! Классы не имеют таких ограничений. Определив однажды класс, легко создать любое количество его экземпляров (в то время как модуль имеет только один экземпляр).

Еще один принцип, обеспечивающий высокую производительность ООП, заключается в том, что каждый объект предназначен для выполнения определенных задач. Если перед объектом стоит задача, для решения которой он не предназначен, у него должен быть доступ к другому объекту, который может эту задачу решить. Затем первый объект просит второго решить эту задачу. Это - обобщенный вариант вызова функций, применяемого в процедурном программировании.

Рисунок 3.1 - Процедурное и объектно-ориентированное программирование

Напомним, что в языке Java это обычно называется вызовом метода.

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

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

Одно из основных преимуществ языка Java - независимость от платформы, на которой выполняется программа: один и тот же код можно запустить под управлением операционных систем Windows, Solaris, Linux, Macintosh и др.

Другое преимущество заключается в том, что синтаксис языка Java похож на синтаксис языка С++, и программистам, знакомым с языками С и С++, его изучение не составит труда.

Кроме того, Java - полностью объектно-ориентированный язык, даже в большей степени, чем С++. Все сущности в языке Java являются объектами, за исключением немногих основных типов, например чисел. Однако, иметь еще один, слегка улучшенный, диалект языка С++ недостаточно, принципиально важно, что разрабатывать программы, не содержащие ошибок, на языке Java легче, чем на языке С++.

Почему? Разработчики языка Java долго размышляли о том, отчего программы, написанные на язык С++, так подвержены ошибкам. Они снабдили язык Java средствами,. Позволяющими исключить саму возможность создавать программы, в которых были бы скрыты наиболее распространенные ошибки. Для этого в языке Java сделано следующее.

- Исключена возможность явного выделения и освобождения памяти. Память в языке Java освобождается автоматически с помощью механизма сборки мусора. Программист гарантирован от ошибок, связанных с неправильным использованием памяти.

- Введены истинные массивы и запрещена арифметика указателей. Теперь программист в принципе не может стереть данные из памяти вследствие неправильного использования указателей.

- Исключена возможность перепутать операторы присваивания с оператором сравнения на равенство. Теперь нельзя даже скомпилировать выражение if (ntries = 3)… (программисты на языке Visual Basic могут вообще не заметить здесь никакой проблемы, поскольку эта ошибка - источник большинства недоразумений в языках С и С++).

- Исключено множественное наследование. Оно заменено новым понятием - интерфейсом, позаимствованным из языка Objectiv C. Интерфейс дает программисту почти все, что тот может получить от множественного наследования, избегая при этом сложностей, возникающих при управлении иерархиями классов.

Авторы языка Java написали руководство, в котором объяснялись цели его разработки и достоинства языка. В этом документе приведено одиннадцать характерных особенностей языка Java. Рассмотрим некоторые из них.

Простота. Java - это система, с помощью которой легко программируется, причем не требуется дополнительного обучения и учитывается сложившаяся практика и стандарты программирования. Поэтому язык Java был разработан максимально похожим на язык С++, несмотря на то, что сами разработчики считали язык С++ неподходящим для этих целей. Другой аспект простоты - краткость. Одна из целей языка Java - обеспечить разработку программ, которые можно было бы совершенно самостоятельно выполнять на небольших машинах. Размер основного интерпретатора и средств поддержки классов составляет около 40 Кбайт; стандартные библиотеки и средства поддержки потоков занимают еще 175 Кбайт.

Надежный. Язык Java предназначен для создания программ, которые должны надежно работать в любых ситуациях. Основное внимание в языке Java уделяется раннему обнаружению возможных ошибок, динамической проверке, а также исключению ситуаций, подверженных ошибкам.

Не зависящий от архитектуры. Компилятор генерирует объектный файл, формат которого не зависит от архитектуры компьютера, - скомпилированная программа может выполняться на любых процессорах под управлением системы выполнения программ языка Java. Для этого компилятор языка Java генерирует команды байт-кода. Байт-код разработан таким образом, чтобы на любой машине его можно было легко интерпретировать либо на лету перевести в машинно-зависимый код.

Распределенный. Язык Java обладает большой библиотекой программ для передачи данных на основе таких протоколов как TCP/IP, HTTP или FTP. Приложения, написанные на языке Java, могут открывать объекты и получать к ним доступ через сеть с помощью URL-адресов так же легко, как и в локальной сети.

Безопасный. Язык Java предназначен для использования в сетевой или распределенной среде. По этой причине большое внимание было уделено безопасности. Язык Java позволяет создавать системы, защищенные от вирусов и постороннего вмешательства.

Многопоточный. Многопоточность обеспечивает лучшую интерактивность и выполнение программ.

3.2 Разработка объектов, представляющих нейронную сеть

3.2.1 Разработка модуля нейрона


Подобные документы

  • Обучение простейшей и многослойной искусственной нейронной сети. Метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки. Реализация в программном продукте NeuroPro 0.25. Использование алгоритма обратного распространения ошибки.

    курсовая работа [1019,5 K], добавлен 05.05.2015

  • Механизм работы нервной системы и мозга человека. Схема биологического нейрона и его математическая модель. Принцип работы искусственной нейронной сети, этапы ее построения и обучения. Применение нейронных сетей в интеллектуальных системах управления.

    презентация [98,6 K], добавлен 16.10.2013

  • Математическая модель нейронной сети. Однослойный и многослойный персептрон, рекуррентные сети. Обучение нейронных сетей с учителем и без него. Алгоритм обратного распространения ошибки. Подготовка данных, схема системы сети с динамическим объектом.

    дипломная работа [2,6 M], добавлен 23.09.2013

  • Возможности программ моделирования нейронных сетей. Виды нейросетей: персептроны, сети Кохонена, сети радиальных базисных функций. Генетический алгоритм, его применение для оптимизации нейросетей. Система моделирования нейронных сетей Trajan 2.0.

    дипломная работа [2,3 M], добавлен 13.10.2015

  • Рассмотрение способов применения и основных понятий нейронных сетей. Проектирование функциональной структуры автоматизированной системы построения нейросети обратного распространения ошибки, ее классов и интерфейсов. Описание периода "бета тестирования".

    дипломная работа [3,0 M], добавлен 02.03.2010

  • Математическая модель искусственной нейронной сети. Структура многослойного персептрона. Обучение без учителя, методом соревнования. Правило коррекции по ошибке. Метод Хэбба. Генетический алгоритм. Применение нейронных сетей для синтеза регуляторов.

    дипломная работа [1,5 M], добавлен 17.09.2013

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

    реферат [654,2 K], добавлен 09.06.2014

  • Понятие искусственного нейрона и искусственных нейронных сетей. Сущность процесса обучения нейронной сети и аппроксимации функции. Смысл алгоритма обучения с учителем. Построение и обучение нейронной сети для аппроксимации функции в среде Matlab.

    лабораторная работа [1,1 M], добавлен 05.10.2010

  • Понятие и свойства искусственных нейронных сетей, их функциональное сходство с человеческим мозгом, принцип их работы, области использования. Экспертная система и надежность нейронных сетей. Модель искусственного нейрона с активационной функцией.

    реферат [158,2 K], добавлен 16.03.2011

  • Диагностический анализ изучения алгоритмов обучения нейронных сетей "с учителем". Сбор входных и выходных переменных для наблюдений и понятие пре/пост процессирования. Подготовка и обобщение многослойного персептрона, модель обратного распространения.

    курсовая работа [249,3 K], добавлен 22.06.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.