Страница 14 из 17
Со времён, когда первые разработчики искусственных нейронных сетей сделали свои первые искусственные нейросети, были созданы многочисленные модификации модели, которые подходят для решения более специфичных задач. Конечно, для погружения в теорию искусственных нейросетей необходимо читать специализированную литературу и изучать курсы, но здесь можно кратко охарактеризовать многие интересные модели и решаемые ими задачи. Так что начнём…
Несомненно, первой реализованной моделью искусственной нейронной сети был перцептрон Ф. Розенблатта, который тот предложил в 1957 году. Эта модель была реализована «в железе», первым в мире «нейрокомпьютером» стал компьютер Марк-1, построенный под руководством Розенблатта в 1960 году. Перцептрон – это простая нейронная сеть с тремя слоями: входным, скрытым и выходным. Таким образом, перцептрон реализует простейшую кибернетическую машину с сенсорами (слой входных нейронов), управляющим устройством (слой скрытых нейронов) и аффекторами (слой выходных нейронов). В перцептроне используется пороговая передаточная функция и прямое распространение сигнала. Как математическая модель перцептрон уже был достаточно мощным формализмом для решения большого количества задач, поскольку он на основе обучения позволял классифицировать, кластеризовать и прогнозировать, т. е. решать большинство классических задач машинного обучения. Впрочем, после публикации книги М. Минского и С. Паперта «Перцептроны», в которой авторы показали принципиальную невозможность для перцептрона решить некоторые задачи (сюрприз – задача «XOR», традиционно включаемая в класс нерешаемых перцептроном, на самом деле к таковым не относится), постепенно интерес к перцептрону снизился, и большее внимание стала получать нисходящая парадигма в искусственном интеллекте, при этом сам Марвин Минский был её оппонентом. Тем не менее сегодня с развитием математического аппарата и средств вычислительной техники интерес к перцептрону и его расширениям вновь вырос.
Однослойный перцептрон
Классический перцептрон
Необходимо отметить, что в процессе развития перцептронов появились некоторые расширения первоначальной модели, предложенной Ф. Розенблаттом. Самый простой классификатор основан на подсчёте слоёв в перцептроне: однослойный, с одним скрытым слоем (классический) и многослойный. Все эти типы были в своё время описаны Розенблаттом. Другая авторская классификация включала: элементарный перцептрон, простой перцептрон, перцептрон с последовательными связями, перцептрон с перекрёстными связями, перцептрон с обратными связями, перцептрон с переменными связями. Первые три класса были описаны самим автором, а следующие три развиты в дальнейшем при детальной проработке модели искусственных нейронных сетей.
Многослойный перцептрон
Из-за первоначальной неразберихи в терминологии и повышенных ожиданий, которые появились в отношении перцептрона и модели искусственного нейрона, Дэвидом Румельхартом был предложен новый класс перцептронов, которые сейчас называются «многослойными перцептронами Румельхарта» и отличаются от многослойных перцептронов Розенблатта тем, что для обучения в них используется метод обратного распространения ошибки, в то время как у Розенблатта использовался метод коррекции ошибки. Есть ещё несколько отличий, в частности у Румельхарта в качестве функции активации используется сигмоида, а число обучаемых слоёв больше одного.
Фактически перцептрон – это самый простой пример нейронной сети прямого распространения. Другим интересным примером является сеть ELM, экстремальная обучающаяся машина. В этой нейросети нейроны не располагаются в слои, а связаны друг с другом случайным образом. Выделяются только входной и выходной слои, а остальные нейроны находятся между ними и связаны друг с другом именно случайно. Обучение сети также производится методом обратного распространения ошибки. А вот если обучение производится при помощи обновления состояния нейронов по результатам наблюдения за их работой, за порядком активации, то это уже нейронная эхо-сеть, ESN.
Далее некоторое время модель искусственных нейронных сетей развивалась в сторону тонкого подбора функций активации (например, в сплайн-модели Хакимова функция активации реализована в виде сигмоидального сплайна, либо в сети Брумхеда-Лоу используются радиально-базисные функции), типов весовых коэффициентов между нейронами и других параметров, не влияющих на структуру сетей. Это не позволяло выходить на новые объёмы данных или решать новые задачи, но было обусловлено скорее тем, что на существующих в те времена вычислительных мощностях было затруднительно реализовывать нейронные сети больших размеров.
Однако перцептрон получал развитие и с точки зрения изменения структуры. Так, например, Джефф Элман и Майкл Джордан предложили свои варианты изменения перцептрона и включения в него обратных связей так, чтобы получилась рекуррентная сеть. В варианте Джордана на вход многослойного перцептрона также подаются выходные значения с задержкой от одного и более тактов. В нейронной сети Элмана используется такой же подход, только рекуррентные связи с задержкой в несколько тактов подаются не с выходных нейронов, а со скрытых слоёв многослойного перцептрона. Оба варианта структурного развития перцептрона обладают определённой памятью. Впрочем, различными вариантами памяти обладают все рекуррентные сети.
Ещё один интересный вариант нейросети с небольшим количеством скрытых слоёв – сеть Ворда, в которой имеется только один внутренний слой, но его нейроны разбиты на группы. В каждой группе используется своя передаточная функция, и результаты работы каждого блока передаются на выходной слой, который как бы рассматривает вход с разных точек зрения. Кроме того, входной слой может напрямую замыкаться на выходной, и это тоже позволяет добавить гибкости сети. Топология конкретной реализации сети Ворда определяется количеством блоков в скрытом слое и наличием прямого замыкания входных нейронов на выходные. Сеть показывает отличные результаты для задачи распознавания образов.
Сеть Ворда
Сеть Хопфилда
В 1982 году Джон Хопфилд предложил интересный вариант однослойной нейросети, который позволял достаточно просто решать некоторые задачи оптимизации или предоставлять механизм автоассоциативной памяти. В этой сети имеются только входные нейроны, каждый из которых соединён со всеми другими (т. е. сеть представляет собой полносвязный граф). Обучение сети также своеобразно – для всех связей между нейронами необходимо аналитически рассчитать веса, и это значит, что обучение длится один цикл. Обучение (или аналитический расчёт весов) как бы сохраняет в весовых коэффициентах сети набор эталонных образцов, которые сеть должна запомнить. После того как сеть обучена, её можно запускать в рабочем режиме, и он также отличается от традиционного единичного прогона. Сеть Хопфилда работает до тех пор, пока её следующее состояние не будет равно предыдущему, т. е. сеть должна достигнуть равновесия. Достигнутое равновесное состояние обязательно соответствует одному из запомненных эталонных образцов. Тем самым осуществляется распознавание и даже восстановление повреждённых образцов.
Развитием сети Хопфилда стала так называемая неограниченная машина Больцмана, которая представляет собой стохастический вариант этой сети. Машина Больцмана представляет собой рекуррентную нейронную сеть, которая для обучения использует алгоритм имитации отжига. Неограниченная машина позволяет решать сложные комбинаторные задачи, однако её практическое применение затруднительно или даже невозможно из-за комбинаторного взрыва в части гигантского количества связей между нейронами. Однако если использовать ограничение на количество связей между нейронами, то машина Больцмана становится менее мощной, но её использование вполне возможно. В частности, из каскадов из машин Больцмана составляются глубокие сети доверия – сначала сеть обучается при помощи стандартного алгоритма для машин Больцмана, а потом дообучается при помощи обратного распространения ошибки.