Алгоритм нейронная сеть: Нейросети для чайников. Начало / Хабр

Содержание

Нейронные сети, генетические алгоритмы и прочее… Мифы и реальность / Хабр

В продолжение статьи «Сравнение технологических подходов к решению задач по извлечению данных» рассмотрим технологии, наиболее часто упоминающиеся в связи с понятием «искусственный интеллект» в контексте поисковых задач. На habrahabr.ru опубликовано множество статей на эту тему, например, об использовании нейросетей в поиске Яндкса, в которой говорится что «Фактически, формулу ранжирования пишет машина (получалось около 300 мегабайт)», о глубоком обучении, о вероятностном программировании и т.д.

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

В качестве основы для наших рассуждений мы можем выбрать любую из приведенных ниже технологий. Ввиду того, что наиболее часто упоминается нейронные сети, их и возьмем. Набрав что-то про нейросети в поисковой строке, мы получим огромную массу статей о «невообразимых» успехах, достигнутых нейронными сетями. Это и сообщения о новых аппаратных решениях, например, и спиновые электронные устройства, и заявления IBM, о том что нейронные сети по анализу слов смогут выявлять психические болезни, и «супергеройское» зрение, и множество других чудес науки. Поэтому, попробуем сделать краткий обзор текущего положения дел.


Прежде всего, хотелось бы выделить некий общий пул технологий, объединенных под общим термином «системы искусственного интеллекта». К нему с разной степенью достоверности можно отнести:

1. Нейронные сети
2. Генетические алгоритмы
3. Методы вероятностного программирования и т.д.

Возможно, что кому-то покажется, что здесь «в одну кучу» свалены совершенно различные технологии. Но это впечатление обманчиво, ибо несмотря на очевидные отличия, они все имею общие черты:

1. Предполагают обучение системы.
2. Основа базы знаний — совокупность образцов в рамках классифицирующих признаков.
3. Предполагают наличие избыточных конкурирующих вычислений до достижения одним из потоков заданного порога достоверности.

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

Само же обучение характеризуется следующими основными чертами:
1. Наличие априорных знаний, заданных в виде классифицирующих моделей
2. Наличие базы образцов для построения «модели мира» по классифицирующим признакам.

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

Нейронные сети
Согласно Википедии, да простится ссылка на нее, нейронные сети «представляют собой систему соединённых и взаимодействующих между собой простых процессоров (искусственных нейронов)». Красиво. Существуют различные варианты реализации такие как байесовские сети[1], рекуррентные сети[2] и т.д… Основная модель работы: база образов-передаточная функция-оптимизатор.

Наибольшее распространение сегодня получили ограниченные машины Больцмана в многослойном варианте. Многослойность, т.е. глубина необходима для преодоления проблемы «XOR». Кроме того, как показано Хинтоном, рост количества слоев скрытых нейронов позволяет увеличить точность за счет наличия «промежуточных» образов с минимальным отличием в каждом слое. При этом, чем ближе промежуточный слой к выходу, тем выше конкретизация образа.

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

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

В какой-то степени, работу нейронной сети можно сопоставить с работой безусловных рефлексов живых существ[3] со всеми вытекающими недостатками.

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

Кто-то может поспорить что это не так. Но прежде чем отметать вышесказанную мысль необходимо определится в том, что имеется ввиду под термином «новая сущность»? Это еще один экземпляр в рамках существующего пространства классов-векторов выбранной предметной области или создание новых областей-пространств? Теме сравнения чего-либо с чем-либо, что можно сравнивать и что нельзя, проблеме смешения предметных областей будет посвящена одна из следующих статей.

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

1. Наличие самого факта появления нового профиля и его осмысления (что это не шум) и необходимость стороннему эксперту определить соответствие профиля результату.[1]

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

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

Генетические алгоритмы
Согласно все той же Википедии: «Генетческий алгортм (англ. genetic algorithm) — это эвристический алгоритм поиска, используемый для решения задач оптимизации и моделирования путём случайного подбора, комбинирования и вариации искомых параметров с использованием механизмов, аналогичных естественному отбору в природе».

Существует масса работ таких авторов как Панченко Т.В[4]., Гладкова Л. А., Курейчика В. В[5] и т.д… Основы «генетического подхода» хорошо раскрыты здесь.

Существует множество интересных работ, посвященных применению генетических алгоритмов. Например, работа Плешакова И.Ю., Чуприной С.И.[6], статья Иванова В.К. и Манкина П.И.[7], статьи на хабре и ряд других.

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

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

Общий же недостаток — отсутствие индукционных алгоритмов — присутствует в полной мере.

Методы вероятностного программирования
Включение методов вероятностного программирования в данную статью является скорее данью моде, нежели необходимостью. Сами по себе стохастические методы, которые сегодня гордо называют методами вероятностного программирования известны довольно давно и, как и нейронные сети, переживают очередной взлет. Хорошим примером стохастического подхода являются генетические алгоритмы. В интернете существует масса статей, например «Вероятностное программирование – ключ к искусственному интеллекту?». Поэтому останавливаться подробно на самих методах не имеет смысла и перейдем сразу к выводам.

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

Таким образом, сегодня под термином «ИИ» скорее подразумевается подвид технологических (алгоритмических) подходов к решению задач комбинаторики. Основными задачами которого являются достоверное отделение «статически значимых» по своей сути закономерностей и построение на основе статистики образов-объектов, без анализа причинно-следственных связей. Основные направления — это распознавание образов. Под образами можно понимать изображения, звуки, совокупность симптомов болезней и т.д.

Результатом обучения нейронной сети или работы генетического алгоритма должен быть некая выявленная закономерность, представленная в виде некой матрицы (вектора). Безусловно, эта матрица или множество может постоянно корректироваться за счет новых примеров, но это не влияет на суть происходящего. В любом случае, выявленное и очищенная от шума множество может быть представлена в виде «отчуждаемой логики», которая представляет собой некий «оптимальный» способ решения задачи. Примером такой области может служить задача автоматической рубрикации текстов, но не сточки зрения разнесения текстов по уже известным рубрикам, а собственно само создание рубрик. Их аннотирование, а также автоматическое построение различного рода онтологий.

Выводы
Рождение современной математики, конечно же, процесс долгий, затянувшийся на века. Но, наблюдая современные тенденции, напрашивается неутешительный вывод: все движется по кругу. Философы древней Греции не знали математики и математических формул, оперировали понятиями на уровне образов и «бытовых» понятий. Этого становилось недостаточно для организации более сложных и, самое главное, абстрактных рассуждений. Кроме того, одной из основных задач математики является поиск логик, позволяющих значительно снизить затраты на расчеты путем вывода компактных и оптимальных закономерностей. Все это послужило толчком для создания сегодняшней математики с ее современными нотациями. Начало же просматривается не ранее XVI века целым рядом ученых таких как Декарт, Лейбниц и т.д.

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

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

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

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

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

[1] Байесовская сеть (или байесова сеть, байесовская сеть доверия, англ. Bayesian network, belief network) — графическая вероятностная модель, представляющая собой множество переменных и их вероятностных зависимостей по Байесу. Например, байесовская сеть может быть использована для вычисления вероятности того, чем болен пациент по наличию или отсутствию ряда симптомов, основываясь на данных о зависимости между симптомами и болезнями. Математический аппарат байесовых сетей создан американским учёным Джудой Перлом, лауреатом Премии Тьюринга (2011).

[2] Рекуррентные нейронные сети (англ. Recurrent neural network; RNN) — вид нейронных сетей, в которых имеется обратная связь. При этом под обратной связью подразумевается связь от логически более удалённого элемента к менее удалённому. Наличие обратных связей позволяет запоминать и воспроизводить целые последовательности реакций на один стимул. С точки зрения программирования в таких сетях появляется аналог циклического выполнения, а с точки зрения систем — такая сеть эквивалентна конечному автомату. Такие особенности потенциально предоставляют множество возможностей для моделирования биологических нейронных сетей[источник?]. Однако большинство возможностей на данный момент плохо изучены в связи с возможностью построения разнообразных архитектур и сложностью их анализа.

[3] Барский А.Б. «Логические нейронные сети» М.: Интернет-Университет Информационных Технологий, 2007

[4] Панченко, Т. В. Генетические алгоритмы [Текст]: учебно-методическое пособие / под ред. Ю. Ю. Тарасевича. — Астрахань: Издательскии дом «Астраханскии университет», 2007.

[5] Гладков Л. А., Курейчик В. В., Курейчик В. М. Генетические алгоритмы: Учебное пособие. — 2-е изд. — М: Физматлит, 2006. — С. 320. — ISBN 5-9221-0510-8.

[6] Плешакова И.Ю., Чуприна С.И. «Генетический алгоритм для улучшения качества семантического поиска по текстам научных публикаций» cyberleninka.ru/article/n/geneticheskiy-algoritm-dlya-uluchsheniya-kachestva-semanticheskogo-poiska-po-tekstam-nauchnyh-publikatsiy

[7] Иванов В.К. и Манкин П.И. «Реализация генетического алгоритма для эффективного документального тематического поиска» Тверскоигосударственныитехническии

Обзор методов эволюции нейронных сетей / Хабр

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

Построение искусственной нейронной сети по традиционной методике выполняется, фактически, методом проб и ошибок. Исследователь задает количество слоев, нейронов, а также структуру связей между ними (наличие/отсутствие рекуррентных связей), а затем смотрит, что же у него получилось — сеть обучается с помощью какого-либо метода, а затем тестируется на тестовой выборке. Если полученные результаты работы удовлетворяют заданным критериям, то задача построения ИНС считается выполненной успешно; в противном случае — процесс повторяется с другими значениями исходных параметров.

Естественно, бурное развитие теории и практики использования генетических алгоритмов, заставило исследователей (лень — двигатель прогресса) искать способы применить их к задаче поиска оптимальной структуры ИНС (эволюция нейронных сетей или нейроэволюция), тем более, что, так сказать, proof-of-concept был налицо, или, точнее, в голове — природа наглядно демонстрировала решаемость подобной задачи на примере эволюции нервной системы с последующим образованием и развитием головного мозга.


UPD:Спасибо за карму 🙂 Перенес в Искусственный интеллект.
UPD2: Переделал концевые ссылки

Сначала пара слов об авторстве. Большая часть описательного текста взято из статьи Антона Конушина [1]. Дополнительно, использовались материалы, перечисленные в конце статьи (соответствующие ссылки приведены по ходу изложения), а также результаты моих собственных изысканий.

Далее я буду исходить из предположения, что читатель знаком с концепциями ИНС и генетических алгоритмов, и опущу их описание. Желающий узнать — да погуглит или обратится к перечню источников в конце статьи. Итак, поехали.

Схемы кодирования


Как отмечают большинство исследователей, центральной точкой любого метода эволюционного построения нейронных сетей является выбор генетического представления (т.е. схемы кодирования и соответствующего декодирования). Выбор представления определяет класс сетей, которые могут быть построены с помощью данного метода. Кроме того, от них зависит эффективность метода по всем параметрам.
Общие свойства генетических представлений, по которым можно оценивать и сравнивать различные методы, выделялись многими авторами. Балакришнан и Хонаван [2] предлагают использовать следующий набор свойств: полнота, замкнутость, компактность, масштабируемость, множественность, онтогенетическая приспосабливаемость, модульность, избыточность сложность.
В этой статье я не буду более подробно останавливаться на данном перечне. Краткое описание указанных свойств можно найти в [1], а более детальное — в [2]

В настоящее время обычно выделяют два больших класса способов кодирования: прямое кодирования (direct encoding) и косвенное кодирование (indirect encoding).

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

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

Этот способ представления нейронной сети является наиболее простым и интуитивным, а также позволяет применять к полученным хромосомам уже имеющийся аппарат генетического поиска (например, операторы кроссинговера и мутации). Из наиболее очевидных минусов такой схемы кодирования можно отметить «распухание» генотипа при увеличении количества нейронов и связей ИНС и, как следствие, низкую эффективность за счет значительного увеличения пространства поиска

Справедливости ради стоит сказать, что для прямого кодирования предложены методики, целью которых является купирование вышеописанных недостатков (например, NEAT — описанный ниже)

Косвенное кодирование (в некоторых источниках также используется термин weak — слабые, имея в виду слабосвязанные) исповедует более «биологичный» принцип — в генотипе кодируется не сам фенотип, но правила его построения (условно говоря, некая программа). При декодировании генотипа эти правила применяются в определенной последовательности (зачастую, рекурсивно и, зачастую, применимость правил зависит от текущего контекста), в результате чего и строится нейронная сеть.

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

Исторически, прямое кодирование было исследовано раньше и глубже, однако ряд минусов этого подхода (см. например [4]) заставляют исследователей все более пристально присматриваться к косвенным методам кодирования. Однако по своей сути косвенные методы весьма сложны для анализа. Например, одна и та же мутация правила, расположенного в начале «программы», оказывает колоссальный эффект, а примененная к «концевым» правилам — эффекта не оказывает вовсе, а в результате — генетический поиск имеет сильную тенденцию к преждевременной сходимости. Подбор операторов кроссинговера также является нетривиальной задачей, т.к. использование стандартных бинарных операторов, как правило, приводит к частому появлению нежизнеспособных решений.

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

Прямое кодирование

Миллер, Тодд и Хедж


В 1989 году Миллер предложил кодировать структуру нейронной сети с помощью матрицы смежности (аналогично матрице смежности для графов). Он использовал ее для записи только многослойных нейронных сетей без обратных связей. Каждой возможной прямой связи нейрона i и не входного нейрона j соответствует элемент матрицы с координатами (i,j). Если значение этого элемента равно 1, связь есть; если 0 — связи нет. Для смещений каждого нейрона выделен отдельный столбец. Таким образом, нейронной сети из N нейронов соответствует матрица размерности N * (N+1).

Геном нейронной сети по методу прямого кодирования составляется путем конкатенации двоичных строк матрицы смежности нейронной сети.

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

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

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

Анализ данного метода прямого кодирования является нетривиальной задачей. Существуют два основных вопроса:

  • Какова вероятность того, что сеть будет «мертвой», т.е. входы и выходы сети вообще не соединены?
  • Кодирование одной и той же структуры сети может быть выполнено множеством способов. Как узнать точно, сколько этих способов существует, и как это влияет на адаптацию в процессе генетического поиска?

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

Стэнли, Мииккулайнен


Одной из наиболее потенциально успешных попыток избавиться от недостатков прямого кодирования с сохранением всех его достоинств является предложенный в 2002 году метод, под названием NEAT — Neural Evolution through Augmenting Topologies [6].

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

  • Конкурирующие представления (Competing Conventions) — один и тот же фенотип (топологически) ИНС может быть по разному представлена в генотипе даже в рамках одного способа кодирования. Например — в ходе эволюции между двумя ранее созданными генами (например, А и B) был вставлен ген C, который (как это часто бывает с мутациями) на начальном этапе не несет никакой полезной информации. В результате, мы имеем особь с двумя генами (A, B) и особь с тремя генами (A, C, B). При скрещивании этих двух особей оператор кроссинговера будет применяться к генам, стоящим в соответствующих позициях (т.е. A <->A, C <-> B), что не есть очень здорово, т.к. мы начинаем скрещивать свинью (С) с апельсинами (B).
  • Незащищенные инновации — при нейроэволюции инновации (т.е. изменения структуры ИНС) производятся добавлением или удалением нейронов и/или груп нейронов. И зачастую, добавление новой структуры в ИНС ведет к тому, что значение её фитнес-функции снижается. Например, добавление нового нейрона вносит нелинейность в линейный процесс, что приводит к снижению значения фитнес-функции до тех пор, пока вес добавленного нейрона не оптимизируются.
  • Начальные размер и топологические инновации — во многим методиках нейроэволюции начальная популяция является набором случайных топологий. Помимо того, что приходится тратить определенное время на отсеивание изначально нежизнеспособных сетей (например, таких, у которых ни один вход не соединен ни с одним выходом), такие популяции имеют тенденцию к преждевременной сходимости к решениям, размер которых неоптимален (т.е. слишком велик). Это вызвано тем, что изначально сгенерированная случайная топология уже имеет набор связей, которые крайне неохотно редуцируются в ходе генетического поиска. Как показали эксперименты, наиболее эффективным является поиск с последовательным увеличением размера нейросети — в этом случае пространство поиска сильно сужается. Одним из способов решения этой задачи является введение штрафной функции, которая уменьшает значение фитнесс-функции в зависимости от размера сети. Однако по прежнему остается решить задачу оптимального вида этой функции, а также подбора оптимальных значений её коэффициентов.

Предложенное авторами методики решение базируется на биологическом понятии гомологичных генов (алеллей), а также на существовании в природе процесса синапсиса — выравнивания гомологичных генов перед кроссовером.
Аллели (от греч. allēlōn — друг друга, взаимно), наследственные задатки (гены), расположенные в одинаковых участках гомологичных (парных) хромосом и определяющие направление развития одного и того же признака.

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

Использование исторических маркеров (historical markings) положено в основу решения всех трех описанных выше задач, за счет:

  1. Выполнения кроссовера только между гомологичными генами
  2. Защиты инноваций за счет введения «нишевания» — особи, имеющие близкие топологические структуры, отсеиваются, таким образом оставляя место для «новичков».
  3. Минимизации размерности за счет последовательного роста от минимального размера

Более подробное и полное описание методики, равно как и сравнение её с прочими методиками, приведено в [6].

Косвенное кодирование

Китано


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

Самый известный подход к реализации этой идеи базируется на Системах Линдемайра, или L-системах. Этот формализм был изначально грамматическим подходом к моделированию морфогенеза растений. Грамматика L-системы состоит из набора правил, использовавшихся для генерации строки-описания структуры. Процесс применения правил называется переписыванием строк (string-rewriting). К начальному символу S последовательно применяются правила переписывания строк, пока мы не получим строчку только из терминальных символов.

В 1990 году Китано разработал грамматику генерации графов (Graph Generation Grammar -GGG). Все правила имеют вид:

Алфавит этой грамматики содержит символы трех типов: нетерминальных N={A,B,:,Z}, предтерминальных P={a,b,:,p} и терминальных T={0,1}. Грамматика состоит из двух частей: переменной и постоянной. Переменная часть записывается в геном и состоит из последовательности описаний правил грамматики. Все символы из левой части правил должны быть нетерминальными, а из правой часть — из множества N?P. Постоянная часть грамматики содержит 16 правил для каждого предтерминального символа слева, и матрицы 2*2 из {0,1} справа. Для терминальных символов также задаются грамматические правила. Ноль раскрывается в матрицу 2*2 из нулей, а единичка — в матрицу и единиц.

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

Процесс декодирования состоит из последовательных применений правил из генома к начальному символу S. Количество применений правил задается в начале. Полученная матрица интерпретируется следующим образом: если на диагонали элемент (i,i)=1, то ему соответствует нейрон. Все элементы (i,j) обозначают связь нейрона i с нейроном j, если они оба существуют. Все обратные связи удаляются.

Нолфи, Париси


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

В начале процесса декодирования все нейроны помещаются на плоскости в точках, заданных их координатами. Затем они индексируются. Индекс скрытых нейронов определяется их координатой х. Если у двух нейронов их х-овые координаты совпадают, то больший номер получает тот нейрон, который был считан из генома позже (д.е. закодирован дальше, чем другой). Индексы всех входных и выходных нейронов рассчитываются иначе. Каждому нейрону в генотипе также соответствует параметр тип. Для входных нейронов индекс равен I = type mod N(input), а для выходных нейронов он рассчитывается по формуле j = N — N(output) + type mod N(output). Где N(input) — количество входов в нейронную сеть, N(output) — количество выходов из нейронной сети. Очевидно, что некоторые входные и выходные нейроны будут иметь один и тот же индекс. Поэтому, при декодировании к нейронной сети добавляется N(input) входных и N(output) выходных реальных нейронов, к которым присоединены входы и выходы сети. Каждый такой дополнительный нейрон связывается со всеми нейронами с соответствующим индексом.

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

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

Кангелосси, Париси и Нолфи


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

Этот подход был разработан Кангелоси, Париси и Нолфи. Вместо того, чтобы кодировать каждый нейрон напрямую, они записывают набор правил для разделения и смещения нейронов. Поэтому метод получил название порождающего пространства из ячеек (Generative cell space GCS).

Процесс онтогенеза начинается с одной клетки — <яйца> специального типа. Эта клетка затем разделяется (<переписывается>) в две дочерние клетки, причем параметры разделения задаются в правиле. Каждая из клеток-потомков могут быть размещены в одной из 8-и соседних с родительской клетках. Процесс повторяется заданное число раз, после чего все построенные клетки <взрослеют> и превращаются в нейроны. Они разделяются на входные, выходные и скрытые по тому же принципу, что и в предыдущем методе.

Кангелосси и Элман


Этот метод является более биологичным развитием предыдущего. Он использует т.н. genetic regulation network (GRN) для контроля процесса построения сети. Их GRN состоит из 26 регулирующих элементов (генов), построенных по аналогии с биологическими оперонами. Каждый оперон разделен на две части — регуляторную (regulatory) и экспрессивную (expression). Регуляторная часть состоит из двух регионов: индуктор и ингибитор. Экспрессивная часть также состоит из двух регионов: регуляторный и структурный. Если регуляторный регион гена совпадает с индуктором другого гена, последний экспрессируется (т.е. выполняются команды, заданные в его структурной части). Экспрессия происходит если она не была запрещена ингибитором другого гена. Количество экспрессируемого гена («количество получаемых химических элементов») зависит от индукторной части регуляционного элемента.

О’Нил и Брабазон


Предложенный авторами метод основан на методе формальных грамматик. Однако формальная грамматика, используемая для построения последовательности комманд, в свою очередь описывается некоторой мета-грамматикой.
Например, нижеуказанная универсальная или мета-грамматика позволяет генерировать произвольный 8-битовые последовательности:
<g> ::=
"<bitstring> ::=" <reps>
"<bbk4> ::=" <bbk4t>
"<bbk2> ::=" <bbk2t>

"<bbk1> ::=" <bbk1t>
"<bit> ::=" <val>
<bbk4t> ::= <bit><bit><bit><bit>

<bbk2t> ::= <bit><bit>
<bbk1t> ::= <bit>
<reps> ::= <rept>
| <rept> "|" <reps>

<rept> ::= "<bbk4><bbk4>"
| "<bbk2><bbk2><bbk2><bbk2>"
| "<bbk1><bbk1><bbk1><bbk1><bbk1><bbk1><bbk1><bbk1>"

<bit> ::= "<bit>"
| 1
| 0
<val> ::= <valt>
| <valt> "|" <val>

<valt> ::= 1 | 0

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

Например, вышеописанная мета-грамматика, может породить следующую грамматику:

<bitstring> ::= <bit>11<bit>00<bit><bit>

| <bbk2><bbk2><bbk2><bbk2>
| 11011101
| <bbk4><bbk4>
| <bbk4><bbk4>
<bbk4> ::= <bit>11<bit>

<bbk2> ::= 11
<bbk1> ::= 1
<bit> ::= 1 | 0 | 0 | 1

Таким образом, генотип особи представляет собой две бинарных строки — одна предназначена для генерации грамматики на основе мета-грамматики, а другая — для генерации уже, собственно, ИНС на основе полученной грамматики.

Более подробно описание метода см. в [7], [8]

Прочие методики


Существует множество прочих методик нейроэволюции (часть из которых в [5]). здесь я приведу только краткие описания каждой из них:
  • Боерс и Куйпер (Boers and Kuiper) — использование контексто-зависимых L-систем
  • Дилаерт и Бир (Dellaert and Beer) — подход, аналогичный Кангелосси и Элману, но с использованием случайных булевых нейросетей (random boolean networks)
  • Харп, Самад и Гуха (Harp, Samad, and Guha) — позонное прямое кодирование структуры
  • Груау (Gruau) — использование грамматического дерева для задания инструкций при делении клеток (чем-то похоже на Кангелосси, Париси и Нолфи)
  • Ваарио (Vaario) — рост клеток задается L-системами

Сравнение различных подходов к нейроэволюции


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

Исключительно в ознакомительных целях привожу краткие результаты сравнений, выполненных в [5] (сравниваются ряд алгоритмов между собой) и в [6] (сравнивается методика NEAT с некоторыми другими методиками).

В [5] выполнялось сравнение следующих методик

  • Миллер (прямое кодирование)
  • Китано (кодирование на L-системах)
  • Нолфи (пространство ячеек)
  • Кангелоси (порождающее пространство ячеек)

Для сравнения использован ряд искусственных и жизненных проблем на которых и проводилось сравнение.
Детальные результаты приведены в [5], однако в общем можно отметить, что:
  • Сети, эволюционированные по методу Китано дают лучшие результаты
  • Сети, построенные по методу Миллера не сильно хуже Китано
  • Сети, построенные по методу Нолфи заметно хуже Китано и Миллера
  • Сети, построенные по методу Кангелосси еще хуже Нолфи.

Впрочем, отмечается, что лучшие сети построенные с помощью двух «плохих» методов (Нолфи и Кангелосси) демонстрируют заметно больший потенциал к обучаемости в тех случаях, когда они обучаются несколько раз с различными случайными начальными весами.

В [6] выполняется сравнение NEAT с некоторыми другими методиками (эволюционное программирование [7], conventional neuroevolution [8], Sane [9], и ESP [10]). Результаты сравнения на одной из задач (балансирование двуми жердями — детали см. в [11]) приведены в таблице.

Method  Evaluations 
Generations 
No. Nets
Ev. Programming 307,200 150 2048
307,200
150
2048
Conventional NE  80,000
800
100
SANE 
12,600
63
200
ESP  3,800
19
200
NEAT 
3,600
24
150

Как можно увидеть, NEAT ведет себя значительно лучше, чем большинство сравниваемых методик (неудивительно, учитывая, что данные были опубликованы авторами методики), однако, опять же, эти данные требуют проверки в прочих проблемных областях.

Вместо заключения [3]


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

[1] — Эволюционные нейросетевые модели с незаданным заранее числом связей
[2] — Properties of genetic representations of neural architectures (1995, Karthik Balakrishnan, Vasant Honavar)
[3] — Эволюционный подход к настройке и обучению искусственных нейронных сетей (2006, Цой Ю.Р., Спицын В.Г.)
[4] — Evolving Neural Networks (2009, Risto Miikkulainen and Kenneth O. Stanley)
[5] — Evolutionary Design of Neural Networks (1998, Marko A. Gronroos)
[6] — Evolving Neural Networks through Augmenting Topologies (2002, K. O. Stanley and R. Miikkulainen)
[7] — Evolving neural control systems (1995, Saravanan, N. and Fogel, D. B.)
[8] — Evolving neural network controllers for unstable systems (1991, Wieland, A.)
[9] — SANE
[10] — Learning robust nonlinear control with neuroevolution (2002, Gomez, F. and Miikkulainen, R.)
[11] — Pole Balance Tutorial

НЕЙРОННЫЕ СЕТИ • Большая российская энциклопедия

Авторы: А. И. Галушкин

НЕЙРО́ННЫЕ СЕ́ТИ искусственные, многослойные высокопараллельные (т. е. с большим числом независимо параллельно работающих элементов) логические структуры, составленные из формальных нейронов. Начало теории нейронных сетей и нейрокомпьютеров положила работа американских нейрофизиологов У. Мак-Каллока и У. Питтса «Логическое исчисление идей, относящихся к нервной деятельности» (1943), в которой они предложили математическую модель биологического нейрона. Среди основополагающих работ следует выделить модель Д. Хэбба, который в 1949 г. предложил закон обучения, явившийся стартовой точкой для алгоритмов обучения искусственных нейронных сетей. На дальнейшее развитие теории нейронной сети существенное влияние оказала монография американского нейрофизиолога Ф. Розенблатта «Принципы нейродинамики», в которой он подробно описал схему перцептрона (устройства, моделирующего процесс восприятия информации человеческим мозгом). Его идеи получили развитие в научных работах многих авторов. В 1985–86 гг. теория нейронных сетей получила «технологический импульс», вызванный возможностью моделирования нейронных сетей на появившихся в то время доступных и высокопроизводительных персональных компьютерах. Теория нейронной сети продолжает достаточно активно развиваться в начале 21 века. По оценкам специалистов, в ближайшее время ожидается значительный технологический рост в области проектирования нейронных сетей и нейрокомпьютеров. За последние годы уже открыто немало новых возможностей нейронных сетей, а работы в данной области вносят существенный вклад в промышленность, науку и технологии, имеют большое экономическое значение.

Основные направления применения нейронных сетей

Потенциальными областями применения искусственных нейронных сетей являются те, где человеческий интеллект малоэффективен, а традиционные вычисления трудоёмки или физически неадекватны (т. е. не отражают или плохо отражают реальные физические процессы и объекты). Актуальность применения нейронных сетей (т. е. нейрокомпьютеров) многократно возрастает, когда появляется необходимость решения плохо формализованных задач. Основные области применения нейронных сетей: автоматизация процесса классификации, автоматизация прогнозирования, автоматизация процесса распознавания, автоматизация процесса принятия решений; управление, кодирование и декодирование информации; аппроксимация зависимостей и др.

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

Распознавание речи – одна из наиболее популярных областей применения нейронных сетей.

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

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

Исследование спроса  позволяет сохранить бизнес компании в условиях конкуренции, т. е. поддерживать постоянный контакт с потребителями через «обратную связь». Крупные компании проводят опросы потребителей, позволяющие выяснить, какие факторы являются для них решающими при покупке данного товара или услуги, почему в некоторых случаях предпочтение отдаётся конкурентам и какие товары потребитель хотел бы увидеть в будущем. Анализ результатов такого опроса – достаточно сложная задача, так как существует большое число коррелированных параметров. Нейросетевая система позволяет выявлять сложные зависимости между факторами спроса, прогнозировать поведение потребителей при изменении маркетинговой политики, находить наиболее значимые факторы и оптимальные стратегии рекламы, а также очерчивать сегмент потребителей, наиболее перспективный для данного товара.

В медицинской диагностике нейронные сети применяются, например, для  диагностики слуха у грудных детей. Система объективной диагностики обрабатывает зарегистрированные «вызванные потенциалы» (отклики мозга), проявляющиеся в виде всплесков на электроэнцефалограмме, в ответ на звуковой раздражитель, синтезируемый в процессе обследования. Обычно для уверенной диагностики слуха ребёнка опытному эксперту-аудиологу необходимо провести до 2000 тестов, что занимает около часа. Система на основе нейронной сети способна с той же достоверностью определить уровень слуха уже по 200 наблюдениям в течение всего нескольких минут, причём без участия квалифици

Обучение с подкреплением на нейронных сетях. Теория / Хабр

Я тут написал статью Проблема «двух и более учителей». Первые штрихи, пытаясь показать одну сложную нерешенную проблему. Но первые штрихи оказались немного за сложными. Поэтому я решил для читателей немного разжевать теорию. Увы, сейчас видимо учат/(учатся ?) несколько шаблонно — типа как для каждой задачи свои методы.

Так мне указали, что для задачи классификации — нейронные сети (обучение с учителем), генетические алгоритмы (обучение без учителя) — задача кластеризации, а еще есть обучение с подкреплением (Q-обучение) — как задача агента, который бродит и что-то делает. И вот такими шаблонами многие и судят.

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

И заодно проанализируем диссертацию Бурцев М.С., «Исследование новых типов самоорганизации и возникновения поведенческих стратегий», в которой не больше не меньше красиво сделано именно применение простеньких нейронных сетей в задаче обучения с подкреплением.

Теория

В генетических алгоритмах и в методах для обучения с подкреплением (напр., Q-обучение) есть одна существенная проблема — нужно задавать функцию пригодности. Причем она задается явно формулой. Иногда она появляется косвенно — тогда кажется, что этой функции явно нет (это мы проследим далее, на анализе диссертации Бурцева М.С.). И все «чудеса» агентного поведения происходят только от этой формулы.

Но что такое формула? — Функция. Или что тоже самое отображение входов на выходы. А что делает нейронная сеть/перцептрон? Именно это он и делает — обучается отображать входы на выходы.

Возьмем утрированный теоретический пример. Агент — это какой-то организм, которому хочется выжить. Для этого ему надо есть. Он есть два вида животных — ну пусть зайцев и мышей. Соответственно у него есть два входных параметра — количество килограмм, которые содержит съеденная зайчатина и мышатина :). Он (организм) хочет оценивать на сколько он сыт. Тогда в зависимости от того, на сколько он сыт он может бегать с большей или меньшей скоростью и желанием. Но это уже другая задача, а мы остановимся на оценке сытости.

Нам ничего не известно как оценивать сытость, кроме килограмм того и другого. Поэтому первая естественная оценка — это научиться складывать килограммы. Т.е. мы вводим простую функцию пригодности c= a+b. Замечательно, но имея такую жесткую функцию оценки мы не можем корректировать свое поведение.

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

Но далее происходит несчастье — он оценил, что он сыт на 7 баллов = съев 4 кило зайчатины и 3 мышатины. И бегал думая, что наелся, так что чуть не переусердствовал и не помер. Оказалось, что 4 кило зайчатины и 3 мышатины — это не тоже самое, что 7 кило зайчатины. Мышатина не дает такой же сытости, и складывать на самом деле нужно как 4 + 3 = 6. Вот этот сделанный им вывод он и вкидывает как точную данность в нейронную сеть. Она переобучается, и её функция пригодности уже не простое сложение, и приобретает совершенно другой вид. Таким образом, имея нейронную сеть мы может корректировать функцию пригодности, чего не можем делать в других алгоритмах.

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

Практика на примере диссертации Бурцева М.С.

Какая у него модельная среда:

Популяция P агентов A, находящихся в одномерной клеточной среде, замкнутой в виде кольца. В клетках с некоторой вероятностью появляется ресурс, необходимый агентам для совершения действий. В одной клетке может находиться только один агент. Агент-потомок может появиться только в результате скрещивания двух агентов-родителей. У агента 9 входов

1,2,3 — 1 если в данной клетке поля зрения (слева, рядом, справа) есть ресурс, 0 в противном случае;
4, 5 — 1 если в клетке слева/справа есть агент, 0 в противном случае;
6,7 — мотивация к скрещиванию Mr соседа слева/справа;
8 — собственная мотивация к поиску пищи
9 — собственная мотивация к скрещиванию

Мотивация к скрещиванию и поиску пищи определяется через отношение двух коэффициентов выбранных экспериментатором — r0 — значения внутреннего ресурса для насыщения и r1 — для скрещивания.

Существует 6 действий: скрещиваться с соседом справа, скрещиваться с соседом слева, прыгать, двигаться на одну клетку вправо, двигаться на одну клетку влево, потреблять ресурс, отдыхать

Как решалось:

Была изначально настроенная ИНС, конечно её сетью назвать сложно — без внутреннего слоя, но пусть. Она имела различные коэффициенты, как входы связанны с действиями (выходами). Далее применялся генетический алгоритм, который настраивал коэффициенты нейронной сети, и отбраковал организм с плохим поведением.

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

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

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

Заключение.

Я пробежался быстро, т.к. нам важны лишь выводы, а не детали. Но Вам возможно нужно почитать об этом самим подробнее.

В итоге функция пригодности агента представлена нейронной сетью. Как в изложенной теории выше, так и у Бурцева в диссертации.

Но отличаем её от функции пригодности среды. Она тут косвенно задана через коэффициенты r0 и r1. Причем эта функция пригодности среды — экспериментатору известна. Поэтому нет ни какой фантастики, когда Бурцев обнаруживает как функция пригодности агента начинает приближаться к функции пригодности среды.

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

Надеюсь теперь будет немного более понятно.

алгоритмов нейронной сети — узнайте, как обучить ANN

1. Цель

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

Итак, приступим к изучению алгоритмов нейронных сетей.

Алгоритмы нейронной сети — узнайте, как обучать ИНС

2. Лучшие алгоритмы нейронной сети

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

Для обучения доступно множество алгоритмов нейронных сетей Искусственная нейронная сеть .Давайте теперь посмотрим на некоторые важные алгоритмы обучения нейронных сетей:

  • Градиентный спуск — Используется для поиска локального минимума функции.
  • Эволюционные алгоритмы — Основаны на концепции естественного отбора или выживания наиболее приспособленных в биологии.
  • Генетический алгоритм — Включите наиболее подходящие правила для решения проблемы и выберите их. Таким образом, они отправляют свой «генетический материал» в «детские» правила. Подробнее о них мы узнаем ниже.

Получите введение в правила обучения в нейронной сети для лучшего понимания алгоритмов нейронной сети.

2.1. Градиентный спуск

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

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

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

Правильная скорость пропорциональна наклону поверхности и скорости обучения. Скорость обучения контролирует степень изменения весов в процессе обучения.

Следовательно, момент нейронной сети может повлиять на производительность многослойного персептрона .

2.2. Эволюционные алгоритмы

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

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

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

Двумя основными элементами эволюционных алгоритмов в нейронной сети являются:

  • Операторы вариации (рекомбинация и мутация)
  • Процесс отбора (отбор наиболее приспособленных)

Знаете ли вы о функциях ядра

Общие черты эволюционных алгоритмов:

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

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

  • Генетический алгоритм Генетический алгоритм — Обеспечивает решение проблем оптимизации. Он предлагает решение с помощью естественных эволюционных процессов.Как мутация, рекомбинация, кроссовер и наследование.
  • Генетическое программирование — Генетическое программирование предлагает решение в виде компьютерных программ. По умению решать вычислительные задачи измеряется точность программы.
  • Эволюционное программирование — В смоделированной среде для разработки ИИ мы его используем.
  • Стратегия эволюции Это алгоритм оптимизации. Основан на концепциях адаптации и эволюции в биологической науке.
  • Neuroevolution — Для обучения нейронных сетей мы используем Neuroevolution. Указывая структуру и веса связей, геномы используют для разработки нейронных сетей.

Во всех этих алгоритмах нейронных сетей генетический алгоритм является наиболее распространенным эволюционным алгоритмом.

2.3. Генетический алгоритм

Генетические алгоритмы, разработанные группой Джона Холланда с начала 1970-х годов. Это позволяет выбрать наиболее подходящие правила для решения проблемы.Чтобы они отправляли свой «генетический материал» (свои переменные и категории) в «детские» правила.

Здесь обозначают как набор категорий переменных. Например, клиенты в возрасте от 36 до 50 лет, имеющие финансовые активы менее 20 000 долларов США и ежемесячный доход более 2000 долларов США.

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

Давайте пересмотрим глубинное обучение и нейронные сети

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

  • Шаг 1 : Случайная генерация начальных правил — Сначала сгенерируйте правила с ограничением, что все они должны быть разными.Каждое правило содержит случайное количество переменных, выбранных пользователем.
  • Step 2 : Выбор лучших правил — Проверьте правила с точки зрения функции «цель по фитнесу», чтобы направить эволюцию к лучшим правилам. Лучшие правила максимизируют фитнес-функцию и сохраняют ее с вероятностью, которая увеличивается по мере улучшения правила. Некоторые правила исчезнут, а другие выберут несколько раз.
  • Шаг 3 : Генерация новых правил путем мутации или скрещивания — Сначала переходите к шагу 2, пока выполнение алгоритма не остановится.Выбранные правила случайным образом видоизменяются или пересекаются. Мутация — это замена переменной или категории исходного правила на другую.

Пересечение двух правил — это замена некоторых их переменных или категорий для создания двух новых правил. Скрещивание встречается чаще, чем мутация.
Алгоритм нейронной сети завершается, когда выполняется 1 из следующих 2 условий:

  • Указанное количество достигнутых итераций.
  • Начиная с поколения ранга n, правила поколений n, n-1 и n-2 (почти) идентичны.

Итак, это все об алгоритмах нейронных сетей. Надеюсь, вам понравится наше объяснение.

3. Заключение

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

Если вы хотите поделиться своим мнением и задать вопрос об алгоритмах искусственной нейронной сети, сделайте это в разделе комментариев.
См. Также-

Ссылка — Машинное обучение

.

c ++ — Использование генетических алгоритмов для нейронных сетей

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании

Загрузка…

.

Как нейронные сети используют генетические алгоритмы и обратное распространение в играх?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании
.

обучающая нейронная сеть с использованием генетического алгоритма

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании
.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *