Разработка и исследование моделей адаптивного поведения искусственного объекта на базе нейронных сетей
Анализ моделей адаптивного поведения. Модель эволюционного возникновения коммуникаций в коллективе роботов. Бионическая модель поискового адаптивного поведения. Основные принципы построения модели адаптивного поведения системы на базе нейронных сетей.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 07.08.2018 |
Размер файла | 2,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
1. инициализируем веса случайным образом
2. выбираем обучающие данные
3. подаём их на вход
4. вычисляем выход сети
5. вычисляем разность между правильным и неправильным ответами
6. корректируем веса с учетом минимизации ошибки
Повторяем 2,3,6 пока счётчик ошибок не станет равен 0.
2.2 Разработка алгоритма адаптивного поведения
В результате изучения теоретических основ, нами были выявлены принципы, которые необходимы системе управления для того, чтобы считаться адаптивной:
система управления должна непрерывно адаптироваться к событиям внешней среды;
система управления должна иметь минимальный набор врождённых рефлексов и примитивных моделей поведения;
система управления должна быть способной обобщать имеющийся у неё опыт на другие ситуации.
Для описания информационной модели выделим основные характеристики объекта для того, чтобы он мог являться адаптивным [13-14].
1. Наличие механизмов восприятия окружения
2. Наличие механизмов взаимодействия с окружением
3. Наличие памяти
4. Наличие мыслительных систем
5. Возможность принимать решения о взаимодействии с окружающим миром на основе поступающей информации.
Рис.2.8 - Основные характеристики объекта
Окружение или окружающий мир в нашем случае - это двумерное пространство в плоскости с евклидовой метрикой и некоторым количеством моделируемых объектов.
Механизм восприятия - в нашем случае 4 сенсора, дающие информацию об окружении с 4 сторон объекта (верх, низ, лево, право). Под информацией об окружении, мы подразумеваем расстояние до ближайшего объекта (в том числе границ плоскости). Так как эти сенсоры смещены от центра объекта, он получит представление о нахождении ближайшего.
Рис.2.9 - Ориентация поля зрения относительно направления агента
Механизм взаимодействия - в нашей модели 4 "двигателя", каждый из которых представляет информацию о скорости стремлении объекта двигать в ту или иную сторону. Наличие четырёх "двигателей" позволит свободно перемещаться объекту в пределах плоскости.
Наличие памяти - в нашей модели реализовано следующим образом: объекту будут подаваться на входы нейронной сети данные с сенсоров и скоростей "двигателей", таким образом мы получаем массив, из которого мы можем составить полную информацию о том, что происходило с объектом.
Мыслительная система - непосредственно сама нейронная сеть, в любой своей структуре. Возможность принимать решения обусловлена архитектурой нейронной сети, опыт и воспринимаемая информация - памятью и сенсорами.
Рис.2.10 - Базовая архитектура нейронной сети
Важным свойством адаптивного поведения является целенаправленность, которая проявляется на различных уровнях организации живой материи.
Чтобы решения, принимаемые объектом, имели целесообразность введём "стремления" в нашу модель:
1. "Съесть" соперника (в нашем случае, если объект находится на достаточном расстоянии и имеет достаточно силы)
2. "Не быть съеденным", объект должен стараться не попасть на съедение другим объектам
3. "Размножаться", объект будет размножаться с целью сохранения популяции
Рис.2.11 - Модель объекта (в виде персонажа из игры PacMan)
Система управления состоит агента состоит из однослойной модульной нейронной сети, состоящей из входных и выходных модулей. Количество модулей изменяется в процессе эволюции. Набор этих модулей и связь между ними задаётся геномом агента.
Геном агента - совокупность наследственного материала, т.е. содержит информацию, заложенную родителем.
Состоит из двух хромосом S = (W, M), где W - хромосома, содержащая веса всех синапсов нейронной сети wij, М - хромосома, определяющая структуру нейронной сети.
Рис.2.12 - Пример карты генома популяции
Изменение генома происходит от поколения к поколению. В результате "размножения" у агента появляется "потомок", геном которого задается по следующему принципу:
1. Добавить к каждому гену Wij хромосомы, определяющие вес связи;
2. Изменить число Мj, определяющее наличие того или иного модуля поведения в структуре.
2.3 Реализация моделей адаптивного поведения
Для реализации моделей воспользуемся языком программирования C++, а нейронную сеть будем реализовывать с помощью Encog Machine Learning Framework и библиотекой FANN (Fast Artificial Neural Network - “быстрая нейронная сеть”). Данные средства вполне гибкие, быстрые в реализации и просты в использовании. Одна модель будет обладать возможностью анализа всего окружающего пространства. Другая будет иметь функцию "размножения", с целью сохранения цепочки последовательностей.
Функция DoLive () - главная функция, вокруг которой построено функционирование системы. Данная функция состоит из следующих жизненных этапов объекта (методов):
RefreshSensors - обновление данных сенсоров ("как бы осмотреться вокруг");
Move - движение, перемещение в пространстве;
SaveToMemory - обновление памяти, с последующим запоминанием текущего состояния окружения;
Train - анализ памяти (обучение);
Compute - принятие решения о положении объекта на основе опыта и информации о ближайших объектах
Output - движение объекта на основе принятых решений.
Объектам подаётся минимум информации. Т.е. только информация об окружающем мире.
Нейронная сеть состоит из слоёв: Первый слой - "рецепторы" или нейроны входных данных. Последний слой - нейроны выходных данных. Все остальные слои - скрытые.
Все модели будут обладать одинаковым основным набором функций. Ниже приведен программный, опуская сложные части реализации. (полный код см. Приложение А)
Реализация нейронной сети имеет следующий вид.
for (int i = 0; i <n; i++) {
float tmp, sumator=0;
for (int j = 0; j < m; j++) {
tmp = (weight [i] [j] * inputs [i]); // аксон
sumator += tmp;
}
output. push_back (sumator);
}
В данном фрагменте кода описывается процесс создания входных импульсов на нейроны. Умножается вес связи между двумя нейронами на значение входа. После чего данное произведение складывается с переменного сумматора. Конечная сумма помещается в вектор значений выходов. Если нейрон был скрытого слоя, то в дальнейшем элементы этого вектора складываются и пропускаются через активационную функцию.
Ниже приведен код главной функции DoLive
public void DoLive () {
RefreshSensors (); // осмотреться
Move (); // do step
step++;
В данной части кода происходит следующие: наш объект первым делом обновляет данные сенсоров, т.е. осматривает окружающую обстановку. Совершает движение. Увеличивает значение шага step на единицу (это значение нам понадобиться для дальнейшего обучения всех потомков.
if (step>stepmax) {
int maxstep = sL + sR + sB + sT;
step = null;
SaveToMemory ();
Train ();
}
В данной части функции проверяется условие: если "шаг, выполненный объектом, больше максимального шага, сделанного родителем или самим объектом до этого", то выполняется ряд команд. Под шагом подразумевается не перемещение объекта, а выполненное действие. Вычисляется и округляется максимальное значение шага объекта с сенсоров. Значение текущего шага обнуляется. Текущее состояние окружения запоминается и обновляется в памяти. Память анализируется, и система обучается на предмет дальнейших действий в похожей ситуации.
В дальнейшем нужно чтобы объект принял решение и совершил действие, поэтому с помощью функции Compute принятое решение передаётся на вход "двигателем" и даёт команду на дальнейшее действие.
double output [4] = network.compute (states []);
if (output [0] > pL) { pL += 0.001; } else { pL - = 0.001; }
if (output [1] > pR) { pR += 0.001; } else { pR - = 0.001; }
if (output [2] > pB) { pB += 0.001; } else { pB - = 0.001; }
if (output [3] > pT) { pT += 0.001; } else { pT - = 0.001; }
}
Выше описано самое простое поведение нашего моделируемого объекта, а именно наш объект пока умеет только анализировать окружение, ходить, принимать решения и запоминать. Но этого недостаточно, и принятые решения имеют слабую целесообразность.
Добавим объекту стимул "быть самым сильным", тем самым, заставив объекты охотится друг на друга. Это добавит нашей модели более осмысленные действия.
Важную роль в модели играют цели поведения нашего моделируемого объекта.
Создадим метод getAction, который принимает на вход значения силы текущего объекта и его соседа. Данный метод сравнивает эти значения, и отвечать за предпринимаемое действие объекта.
String getAction (double &live, double &nearlive) {
If (live > nearlive) return “Attack”
}
Здесь же появляется проблема. Было выведено ранее что, для того чтобы принятые решения объекта имели хоть какую-то целесообразность нам недостаточно чтобы объекты только атаковали друг друга.
a) б)
Рис.2.13 - Объект без стимула к самосохранению.
"Камикадзе" объекты не несут смысла, поскольку в таком случае могут возникнуть не разрешаемые ситуации и, тем более, инстинкт самосохранения присущ всем живым организмам. Поэтому добавим в наше условие поправку, что если сила соседа больше, то "стараться держаться на расстоянии" от него.
If (live > nearlive) return “attack”
Else return “run”
Проектируемый объект теперь вполне жизнеспособный, и его действия имеют целесообразность и адаптируется к условиям окружения, но реагирует он только на объекты, которые являются "соседями". Реализуем первую модель, которая анализирует полное пространство окружения. Поэтому изменим метод refreshSense так, чтобы моделируемый объект воспринимал не только "соседей", а всё поле.
foreach (Life life in World) {
if (life. id! = this. id) {
getAction (life. id. power, this. id. power)
}
Цикл foreach, позволяет перебрать все живые объекты в окружении и с помощью метода getAction принять более продуманное решение.
Рис. 2.14 - Объект воспринимает не только "соседей"
На рисунке 2.13 показано, что объекты в центре не атакуют друг друга, поскольку могут стать жертвами объектов по краям.
Реализуем вторую модель, обладающую функцией размножения.
Почему же именно размножения?
Функция размножения позволит добиться больших возможностей адаптации объекта, так как потомок несёт уже полученную ранее родителем информацию, что позволит её развивать без потери в случае смерти родителя.
Для этого добавим в наш код метод Mutation (мутация).
List<double> Mutation (List<double> gen) {
List<double> newgen = new List<double> ();
foreach (var g in gen) {
newgen. push (g);
}
return newgen;
}
В данном методе описывается процесс сохранения "набора генов" или "процесс генетического наследования удачных генов родителя потомком". Т.е. процесс размножения является своеобразной "контрольной точкой" нашего объекта. Он создаёт точную копию себя и передаёт ему накопленные знания.
Мутация считается наиболее приемлемым способом настройки весовых коэффициентов нейронных сетей.
а) б)
Рис.2.15 - Функция размножения
Рассмотрим реализацию каждой функции моделируемого объекта.
Ниже приведен код функции RefreshSensors
Void RefreshSensors (float sensors []) {
foreach (auto i in sensors) {
sensors [i] = 0;
}
foreach (Life life in World) {
if (life. id! = this. id) {
getAction (life. id. power, this. id. power)
}
}
Функция refreshSensors, как говорилось выше, отвечает за обновление за обновление датчиков и реакцию объекта на окружение, т.е. наш объект как бы "осматривается".
Данная функция представляет следующий набор действий:
1. Получаемый массив значений с сенсоров обнуляется, тем самым мы сбрасываем их значения.
2. "Осматриваемся", выполняем уже знакомый нам выше метод реакции на окружающие объекты.
Код функции Move имеет вид:
void Move (float truster [], float signal) {
foreach (auto i in truster) {
if (i == signal)
truster [i] +=0.01
}
}
Данная функция отвечает за перемещение объекта в пространстве, в основе её лежит принцип увеличения значения "двигателя", если его индекс совпадает с входным сигналом. Для демонстрации движения, за объектом оставляем небольшой след (шлейф).
Рис. 2.16 - Движение объекта
Ниже представлен код функции SaveToMemory
Void SaveToMemory (void &sensors, void &trusters) {
memory->addSensors (sensors);
memory->addTrusters (trusters);
}
Данная функция отвечает за сохранение значений сенсоров и "двигателей" в памяти (в качестве памяти у нас выступает файл с расширением. txt).
Функция Train.
В основе данной функции лежит обработка весов нейронной сети, которая описывалась выше.
3. Практическое применение и тестирование разработанных моделей адаптивного поведения искусственного объекта
3.1 Практическое применение разработанных моделей
Одним из распространённых практических применений разработанной модели является (как в практической значимости). Необходимо, чтобы система смогла принимать решения за персонажа компьютерной игры, который может встретить одного или нескольких врагов.
Рис.3.1 - Пример тестируемой ситуации (на примере игры PacMan)
В начале эксперимента мир заселяется агентами в случайном порядке, имеющими минимальный набор аспектов поведения. Веса синапсов заданы таким образом, чтобы обеспечить агенту два начальных инстинкта - питание и размножение и два действия - движение и деление. Если агент видит пищу перед собой, то ему подается команда "съесть соседа", если рядом есть какой-нибудь сосед, то "двигаться на соседнюю клетку", если рядом нет соседей, то "размножаться".
Объединим разработанные модели, для большего эффекта, и проведем тестирование системы, способной моделировать адаптивное поведение программных агентов в мультиагентной компьютерной игре.
В начале эксперимента каждый агент имеет только минимальный набор стратегий и обладает емкостью внутренней энергии (силы). Изменение энергетического ресурса задано следующим образом: если объект стоит - он не тратит энергию, если движется - тратит в 2 раза больше, а если размножается, то в 4 раза больше. Когда агент поедает "соседа", он восстанавливает энергию до максимума.
Цель эксперимента заключается в том, чтобы показать возможность возникновения иерархии целей у агента в процессе эволюции.
Рис.3.2 - Дерево условий для управления выбором подцелей
Мы имеем двух ботов:
"Глупый бот" - описана только логика с изменением весов нейронной сети ("персептрон"), так же он не имеет знание о силе ближайшего объекта и имеет меньшую инертность мышления.
"Умный бот" - использует объединенные разработанные модели адаптивного поведения.
"Глупому боту" задается логика поведения и обучающая выборка, в то время как "Умному боту" дана только обучающая выборка, на основании которой он должен построить целесообразную логику принятия решений.
Система управления "умного бота" состоит из однослойной нейронной сети.
Модель представляет из себя искусственный мир в двухмерном пространстве. Это пространство поделено на клетки, причем в каждый момент времени на одной клетке может быть только один объект. В каждый такт времени объекты совершают какое-либо действие. Каждый агент имеет внутренний энергетический ресурс - "здоровье". Главной целью объекта является не допустить, чтобы это значение стало равным нулю.
После проведения обучения и ряда тестов в одинаковых условиях для "умного" и "глупого" ботов имеем следующие результаты:
"Глупый бот"
ЗдоровьеВрагиДействие
100%1Есть
90%3Есть
100%5размножаться
10%0Ничего не делать
"Умный бот"
ЗдоровьеВрагиДействие
100%1Есть
24%5Бежать
100%5размножаться
10%0Ничего не делать
3.2 Анализ результатов тестирования
Анализ результатов эксперимента показал, что в процессе эволюции популяция разбивается на два подвида. К первому подвиду относится 70% агентов всей популяции, которые имеют большую приспособленность к модельной среде с более гибким поведением.
В таблице 3.1 приведены более подробные результаты тестирования "умного" бота. Подробные результаты тестирования "умного" бота.
Вид 1 (70% популяции) |
Вид 2 (30% популяции) |
||
Мало энергии (R = 0.02 Rmax) |
|||
Ничего не видно |
двигаться вперед |
двигаться вперед |
|
Еда рядом |
есть |
есть |
|
Еда впереди |
двигаться вперед |
двигаться вперед |
|
Агент впереди |
поворачивать на лево |
поворачивать на лево |
|
Еда слева/справа |
поворачивать на лево/право |
поворачивать на лево/право |
|
Агент слева/справа |
двигаться вперед |
двигаться вперед |
|
Среднее количество энергии (R = 0.05 Rmax) |
|||
Ничего не видно |
двигаться вперед |
двигаться вперед |
|
Еда рядом |
есть |
есть |
|
Еда впереди |
двигаться вперед |
двигаться вперед |
|
Агент впереди |
поворачивать налево |
ударить/поворачивать на право |
|
Еда слева/справа |
поворачивать на лево/право |
поворачивать на лево/право |
|
Агент слева/справа |
двигаться вперед |
двигаться вперед |
|
Много энергии (R = 0.96 Rmax) |
|||
Ничего не видно |
двигаться вперед |
двигаться вперед |
|
Еда рядом |
есть |
делиться |
|
Еда впереди |
делиться |
двигаться вперед |
|
Агент впереди |
поворачивать налево |
ударить |
|
Еда слева/справа |
поворачивать на лево/право |
поворачивать на лево/право |
|
Агент слева/справа |
двигаться вперед |
двигаться вперед |
Как мы можем видеть, у "умного бота" более развита целесообразность атаки на превосходящее число противников при небольшом количестве здоровья. Благодаря адаптации, за 10-20 тестов бот сложил примерное представление об условиях, при которых он может атаковать: на одного врага в целом тратится 30% здоровья, за одного убитого врага он получает +1 к силе и тратит на одного врага уже на 10% от предыдущего количества здоровья.
Ниже приведён график зависимости количества выработанных алгоритмов поведения ботов от времени:
Рис.3.1 - Зависимость количества выработанных алгоритмов поведения от времени
Как видно из графика, с течением времени у обоих ботов вырабатываются n-ое количество вариантов поведения. Это связано с тем, что на протяжении всей своей "жизни" они подвергаются разным ситуациям, к которым они адаптируются. У "глупого" бота эта зависимость изменяется по линейному закону, а у "умного" - по экспоненциальному, что демонстрирует скорость адаптации агента, использующего разработанную модель адаптивного поведения. Это связано с тем, что "умный" бот имеет способность к размножению, тем самым не прерывая цепочку последовательности поведений.
Ниже приведён график зависимости количества смертей от времени (n-ое количество проведённых тестов):
Рис.3.2 - Зависимость количества смертей бота от времени
Как видно из графика, количество смертей "глупого" и "умного" ботов стремится к нулю. Это связано с тем, что с течением времени агент подвергается максимальному количеству всевозможных ситуаций, к которым он вырабатывает различные варианты поведения, тем самым увеличивая выживаемость объекта. Однако, у "глупого" агента данная зависимость изменяется по линейному закону, а у "умного" по экспоненциальному, тем самым демонстрируя, что разработанный алгоритм поведения имеет преимущество по времени адаптации перед своим конкурентом, благодаря восприятию полного пространства окружения.
Последним параметром сравнения является зависимость продолжительность жизни одного агента от времени. Далее представлен график этой зависимости:
Рис.3.3 - Зависимость времени жизни одного объекта от времени.
Как видно из графика, "глупый" и "умный" боты с течением времени увеличивают продолжительность своей жизни по линейному закону. Только у агента, использующего разработанную модель, эта продолжительность растёт быстрее за счёт быстрой приспосабливаемости, чем у конкурента, благодаря объединению функций двух разработанных моделей.
Данный эксперимент показывает, что в процессе искусственной эволюции в популяции агентов вырабатывается стратегия, реализующая поведение, управляемое в соответствии с некоторой иерархией целей. Рассматриваемая иерархия имеет тенденцию усложняться в процессе эволюции. Формирование данной иерархии ведет к потребности создания механизма выбора текущих подцелей - мотивации.
Данная модель демонстрирует влияние неоднородности распределения врагов на поведение и видообразование в популяции. Как мы видим, неоднородное распределение приводит к увеличению числа подвидов.
Заключение
В ВКР была подчеркнута перспективность и важность исследования нейронных сетей и моделирования "адаптивного поведения". Поставлена цель исследования принципов построения нейронных сетей и моделирования адаптивного поведения объекта на базе нейронных сетей с дальнейшей разработкой "адаптивных" моделей на базе нейронных сетей.
В ходе выполнения работы был выполнен ряд задач:
1. В работе рассмотрены и проанализированы известные модели адаптивного поведения объектов: модели мозга и поведения в Институте нейронаук Дж. Эдельмана, модель эволюционного возникновения коммуникаций в коллективе роботов, бионическая модель поискового адаптивного поведения, обучение с подкреплением, проект "Мозг анимата". В ходе анализа выяснилось, что нейронные сети имеют ряд преимуществ при моделировании "адаптивного поведения", в частности, они способны переучиваться в реальном времени, что уже является подобием адаптации, они более быстрые и отказоустойчивые. Тем не менее, выяснился и ряд недостатков, которые были устранены в ходе разработки модели.
2. В работе рассмотрены основы построения нейронных сетей и моделирования "адаптивного поведения", в частности, структура нейронных сетей, структура нейрона, виды нейронных сетей, правила которыми нужно руководствоваться при построении нейронной сети (правила Хебба, правило обратного распространения ошибки). Всё это позволило построить структуру моделируемой модели.
3. В ходе работы были разработаны модели адаптивного поведения искусственного объекта на базе нейронных сетей, в основе которых лежат положения WTM (Waveform temporal memory) - волновой временной памяти и FANN (Fast Artificial Neural Network) - быстрой нейронной сети. Данные модели имеет ряд преимуществ перед известными прототипами, в частности, обладает меньшей инертностью (меньшее время принятия решения), реакцией на все объекты в окружении, а не только на соседей, и размножением, которое позволяет развивать цепочку последовательности действий без потерь при “смерти родителя”.
4. Проведен ряд тестов новой модели с адаптивным поведением и сопоставлены полученные результаты с параметрами объекта без адаптивного поведения.
Практическим применением разработанных моделей явилась разработка "адаптивного поведения" для персонажа компьютерной игры. В ходе выполнения данной задачи проведен ряд тестов и выявлен ряд преимуществ персонажа, использующего разработанную модель: более быстрое обучение, большее количество вырабатываемых алгоритмов поведения и более целесообразное поведение самого персонажа.
Выполнение данного ряда задач позволило достичь поставленной цели.
Из всего выше сказанного видно, что нейронные сети при моделировании "адаптивного поведения" имеют ряд преимуществ. Разработанная модель так же может быть использован в других сферах применения: в бизнес-приложениях, для оценки фальсификации или оценки рисков, в робототехнике, в промышленности, в частности, в сборочном производстве и т.д. В работе было рассмотрено практическое применение в сфере компьютерных игр, которое является на данный момент одной из самых востребованных в сфере мультимедиа развлечений.
Данное направление развития позволит добиться наибольших результатов при создании искусственного интеллекта, так как в основе модели нейронных сетей лежит структура мозга.
Размещено на Allbest.ru
Подобные документы
- Разработка и исследование метода сетевого оператора для адаптивного управления динамическим объектом
Понятие адаптивного управления как совокупности действий и методов, характеризующихся способностью управляющей системы реагировать на изменения внешней среды. Применение метода сетевого оператора для синтеза адаптивного управления мобильным роботом.
дипломная работа [1,4 M], добавлен 17.09.2013 Разработка программы, моделирующей процессы обучения, работы и прогнозирования ИНС с использованием постоянного, а также адаптивного шага обучения. Исследование поведения системы в зависимости от количества входов при постоянном шаге самообучения.
контрольная работа [92,5 K], добавлен 16.10.2011Общие сведения о принципах построения нейронных сетей. Искусственные нейронные системы. Математическая модель нейрона. Классификация нейронных сетей. Правила обучения Хэбба, Розенблатта и Видроу-Хоффа. Алгоритм обратного распространения ошибки.
дипломная работа [814,6 K], добавлен 29.09.2014Понятие и свойства искусственных нейронных сетей, их функциональное сходство с человеческим мозгом, принцип их работы, области использования. Экспертная система и надежность нейронных сетей. Модель искусственного нейрона с активационной функцией.
реферат [158,2 K], добавлен 16.03.2011Описание технологического процесса напуска бумаги. Конструкция бумагоделательной машины. Обоснование применения нейронных сетей в управлении формованием бумажного полотна. Математическая модель нейрона. Моделирование двух структур нейронных сетей.
курсовая работа [1,5 M], добавлен 15.10.2012Анализ существующих стандартов образовательных сред в системах адаптивного компьютерного обучения. Краткая характеристика и оценка состояния рассматриваемой проблемы. Стандарты и спецификации ЭО. Обоснование выбранного метода направления исследования.
научная работа [8,3 K], добавлен 29.01.2009Диагностический анализ изучения алгоритмов обучения нейронных сетей "с учителем". Сбор входных и выходных переменных для наблюдений и понятие пре/пост процессирования. Подготовка и обобщение многослойного персептрона, модель обратного распространения.
курсовая работа [249,3 K], добавлен 22.06.2011Построение векторной модели нейронной сети. Проектирование и разработка поискового механизма, реализующего поиск в полнотекстовой базе данных средствами нейронных сетей Кохонена с применением модифицированного алгоритма расширяющегося нейронного газа.
курсовая работа [949,0 K], добавлен 18.07.2014Способы применения нейронных сетей для решения различных математических и логических задач. Принципы архитектуры их построения и цели работы программных комплексов. Основные достоинства и недостатки каждой из них. Пример рекуррентной сети Элмана.
курсовая работа [377,4 K], добавлен 26.02.2015Искусственные нейронные сети как одна из широко известных и используемых моделей машинного обучения. Знакомство с особенностями разработки системы распознавания изображений на основе аппарата искусственных нейронных сетей. Анализ типов машинного обучения.
дипломная работа [1,8 M], добавлен 08.02.2017