Продолжим изучать основы Искусственного Интеллекта, и сейчас у нас рассмотрение третьего подхода в ИИ к построению интеллектуальных систем. В прошлый раз мы изучили символьный и логический подходы, ну а сегодня у нас структурный подход, и он является главным в восходящей парадигме. Вперёд.
Как я уже писал, структурный подход или коннекционизм исходит из того понимания, что интеллект и сознание являются функцией сложности сети переплетённых и взаимодействующих базовых элементов. Поскольку нервная система человека состоит из нейронов и ряда других специальных клеток, то основой структурного подхода в Искусственном Интеллекте является использование искусственных нейронных сетей.
Мы уже изучали искусственный нейрон Уоррена Маккаллока и Уолтера Питтса, а также персептроны, разработанные в первой половине XX века Фрэнком Розенблаттом. Фактически, это самые первые примеры математических моделей и программных систем, разработанных в духе коннективизма.
Давайте кратко пробежимся по тем достижениям, которые были сделаны со времени первого персептрона до наших дней. Вообще, этой теме можно посвятить отдельный курс или даже целый факультет, поскольку она практически неисчерпаема. Так что мы сейчас погрузимся очень кратко, а потом, по мере продвижения, будет узнавать новые аспекты и нюансы.
Необходимо отметить, что в процессе развития перцептронов появились некоторые расширения первоначальной модели, предложенной Фрэнком Розенблаттом. Самый простой классификатор основан на количестве слоёв в перцептроне: однослойный, с одним скрытым слоем (классический) и многослойный. Все эти типы были в своё время описаны самим Розенблаттом.
Другая классификация включала: элементарный перцептрон, простой перцептрон, перцептрон с последовательными связями, перцептрон с перекрёстными связями, перцептрон с обратными связями, перцептрон с переменными связями. Первые три класса были описаны Розенблаттом, а следующие три развиты в дальнейшем при детальной проработке модели искусственных нейронных сетей.
Фактически, перцептрон — это самый простой пример нейронной сети прямого распространения. Другим интересным примером является сеть ELM, экстремальная обучающаяся машина. В этой нейросети нейроны не располагаются в слои, а связаны друг с другом случайным образом. Выделяются только входной и выходной слои, а остальные нейроны находятся между ними и связаны друг с другом именно случайно.
Перцептрон получал развитие и с точки зрения изменения структуры. Так, например, Джефф Элман и Майкл Джордан предложили свои варианты изменения перцептрона и включения в него обратных связи так, чтобы получилась рекуррентная сеть. В варианте Джордана на вход многослойного перцептрона также подаются выходные значения с задержкой от одного и более тактов.
В нейронной сети Элмана используется такой же подход, только рекуррентные связи с задержкой в несколько тактов подаются не с выходных нейронов, а со скрытых слоёв многослойного перцептрона. Оба варианта структурного развития перцептрона обладают определённой памятью. Впрочем, различными вариантами память обладают все рекуррентные сети.
Ещё один интересный вариант нейросети с небольшим количеством скрытых слоёв — сеть Ворда, в которой имеется только один внутренний слой, но его нейроны разбиты на группы. В каждой группе используется своя передаточная функция, и результаты работы каждого блока передаются на выходной слой, который как бы рассматривает вход с разных точек зрения. Кроме того, входной слой может напрямую замыкаться на выходной, и это тоже позволяет добавить гибкости сети.
В 1982 году Джон Хопфилд предложил интересный вариант однослойной нейросети, который позволял достаточно просто решать некоторые задачи оптимизации или предоставлять механизм автоассоциативной памяти. В этой сети имеются только входные нейроны, каждый из которых соединён со всеми другими (то есть сеть представляет собой полносвязный граф). Обучение сети также своеобразно — для всех связей между нейронами необходимо аналитически рассчитать веса, и это значит, что обучение длится один цикл. Сеть Хопфилда работает до тех пор, пока её следующее состояние не будет равно предыдущему, то есть сеть должна достигнуть равновесия. Достигнутое равновесное состояние обязательно соответствует одному из запомненных эталонных образцов. Тем самым осуществляется распознавание и даже восстановление повреждённых образцов.
Развитием сети Хопфилда стала так называемая машина Больцмана, которая представляет собой стохастический вариант этой сети. Машина Больцмана представляет собой рекуррентную нейронную сеть, которая для обучения использует алгоритм имитации отжига. Неограниченная машина позволяет решать сложные комбинаторные задачи, однако её практическое применение затруднительно или даже невозможно из-за комбинаторного взрыва в части гигантского количества связей между нейронами. Однако если использовать ограничение на количество связей между нейронами, то машина Больцмана становится менее мощной, но её использование вполне возможно. В частности, из каскадов из машин Больцмана составляются глубокие сети доверия — сначала сеть обучается при помощи стандартного алгоритма для машин Больцмана, а потом дообучается при помощи обратного распространения ошибки.
Рассмотрим каскадное объединение ограниченных машин Больцмана, при котором скрытые нейроны одной машины становятся входными для следующей. Именно так формируется глубокая сеть доверия. Такая сеть обучается без учителя, причём обучение происходит послойно. Как и в случае сети Хопфилда и машины Больцмана сеть глубокого доверия осуществляет кластеризацию и восстановление входов, а при дополнительном обучении с учителем осуществляется и классификация, которая может быть очень точной. Именно на глубоких сетях доверия были построены первые алгоритмы глубинного обучения.
Рекуррентными нейронными сетями называют любые искусственные нейросети, в которых есть обратные связи от нейронов более глубоких слоёв к нейронам менее глубоких, либо замыкание нейронов самих на себя или на нейроны того же самого слоя. При этом такая архитектура связей между нейронами и слоями может создаваться и в уже рассмотренных типах сетей, в которых изначально рекуррентных связей не предполагалось. Такие сети могут запоминать информацию, организовывать циклы и иметь другие интересные свойства. Однако из-за сложности анализа поведения таких моделей большая часть предложенных или потенциальных архитектур изучена плохо.
В процессе исследований рекуррентных нейронных сетей стало ясно, что с обычными искусственными нейронами они работают не совсем эффективно — обычные нейроны с течением времени как будто бы «размываются», теряют своё обучение.
Это не позволяет эффективно использовать обычные нейроны в рекуррентных нейронных сетях для задач классификации и, главное, прогнозирования временных рядов. И тогда появилась идея по разработки новых типов искусственных нейронов. Одним из наиболее знаменитых в этом плане является LSTM-нейрон.
И к концу нашего сегодняшнего занятия давайте изучим свёрточные сети. Свёрточная сеть — ещё одна специальная архитектура искусственных нейронных сетей, которая очень эффективно решает задачу распознавания образов. Сама по себе архитектура была предложена в 1988 г. французским учёным Яном Лекуном, который взял некоторые идеи из устройства нервной системы млекопитающих и, в частности, зрительной коры головного мозга.
Структура свёрточной нейронной сети состоит из большого количества слоёв двух чередующихся типов — свёрточных и субдискретизирующих. Обычно работа такой сети описывается как постепенный переход от конкретных особенностей распознаваемого образа к абстрактным деталям всё выше и выше по иерархии уровней абстракции. Например, в применении к изображениям это обозначает, что первые слои обнаруживают в частях изображения различные типовые элементы, вроде разнонаправленных отрезков, а на последних слоях нейроны уже активируются в ответ на наличие в составе изображения каких-либо форм, конкретных объектов или образов.
Наибольший интерес вызывает то, что в операции свёртки матрица или ядро свёртки изначально не закладывается разработчиком нейронной сети, а самостоятельно подбирается в процессе обучения нейронной сети (чаще всего методом обратного распространения ошибки). В итоге для каждого свёрточного слоя получается большое количество карт признаков — отрезки и дуги, направленные под разными углами, границы между сплошными средами, точки и иные примитивы; а на более глубоких слоях — лица, животные, автомобили, здания и т. д. Количество карт признаков для каждого слоя является мета-параметром сети и определяется разработчиком.
Существует ещё большое количество архитектур искусственных нейронных сетей, некоторые из которых уже устарели и представляют собой только архивно-исследовательский интерес, а некоторые из которых только разработаны и ещё не до конца исследованы. Из наиболее интересных можно упомянуть следующие: самоорганизующаяся карта Кохонена, когнитрон и неокогнитрон, осцилляторная нейронная сеть, вероятностная нейронная сеть Решетова, нейронная сеть адаптивного резонанса, импульсная нейронная сеть, автокодировщики различной топологии, нейронная машина Тьюринга, нечёткая нейронная сеть и даже хаотическая нейронная сеть. Описания каждой из них можно найти в специальной литературе, а мы постепенно заканчиваем этот и без того раздувшееся занятие.
Несмотря на то, что большинство из описанных и перечисленных мной сегодня архитектур нейронных сетей было разработано довольно давно, бум и применения начался как раз с волной третьего хайпа в Искусственном Интеллекте, поскольку у нас появилась возможность использовать громадные вычислительные мощности.