Раздел 2.2. Искусственные нейронные сети
Искусственная нейронная сеть – это в первую очередь математическая модель машинного обучения, которая решает задачи примерно по тем же принципам, что и биологические нейронные сети, состоящие из нервных клеток. Искусственные нейронные сети имеют программную или аппаратную реализацию, поэтому чисто абстрактная математическая модель воплощена в действительности в виде вычислительной системы. В то же самое время искусственные нейронные сети представляют собой самую широко распространённую модель машинного обучения и одновременно с этим являются типичным подходом в рамках восходящего искусственного интеллекта.
Искусственная нейросеть состоит из множества взаимодействующих друг с другом искусственных нейронов, чаще всего собранных в слои так, что нейроны одного слоя получают информацию только от нейронов предыдущего слоя и передают информацию на следующий слой. Сам по себе искусственный нейрон представляет собой очень упрощённую модель биологического нейрона. У искусственного нейрона есть множество входов, один выход, а также две функции: суммирования и активации. Впрочем, существуют и другие типы искусственных нейронов, в том числе и таких, работа которых зависит от времени. Фактически каждый искусственный нейрон решает задачу простой логистической регрессии (в случае если его функция активации представляет собой сигмоиду).
Первую модель искусственного нейрона предложили Мак-Каллок и Питтс в 1943 году. Эта модель выглядит следующим образом.
Чаще всего в качестве упрощения считается, что входные переменные x1, x2…, xn и выходное значение y принимают значения из интервала [0, 1]. Функция суммирования представляет собой обычную взвешенную сумму, результат которой равен сумме произведений каждого входного значения xi на свой вес wi, а некоторый специальный вес w0 добавляется всегда. Наибольший интерес представляет функция активации, которая может принимать различные формы, так что свойства как искусственного нейрона, так и всей нейросети часто зависят от выбора формы функции активации.
Результат функции суммирования передаётся на вход функции активации. В свою очередь, её результат является выходом нейрона y, который передаётся на вход следующим нейронам. Обычно, как уже было указано, функцию активации подбирают так, чтобы область её значений лежала в интервале [0, 1], хотя это и необязательно. В первых реализациях искусственных нейронных сетей функция активации вообще была дискретной с областью определения {0, 1}, и такие нейросети неплохо справлялись с задачами классификации. Сегодня в сетях глубокого обучения могут использоваться разные функции активации у разных нейронов, но обычно все они входят в класс сигмоид – это и логистическая функция, и гиперболический тангенс, и функция Гаусса, и многие другие. Выбор функции активации зависит от многих параметров задачи, и часто архитектор, проектирующий искусственную нейросеть, должен проявить для этого немалый уровень творчества.
Со времён, когда первые разработчики искусственных нейронных сетей сделали свои первые искусственные нейросети, были созданы многочисленные модификации модели, которые подходят для решения более специфичных задач. Конечно, для погружения в теорию искусственных нейросетей необходимо читать специализированную литературу и изучать курсы, но здесь можно кратко охарактеризовать многие интересные модели и решаемые ими задачи. Так что начнём…
Несомненно, первой реализованной моделью искусственной нейронной сети был перцептрон Ф. Розенблатта, который тот предложил в 1957 году. Эта модель была реализована «в железе», первым в мире «нейрокомпьютером» стал компьютер Марк-1, построенный под руководством Розенблатта в 1960 году. Перцептрон – это простая нейронная сеть с тремя слоями: входным, скрытым и выходным. Таким образом, перцептрон реализует простейшую кибернетическую машину с сенсорами (слой входных нейронов), управляющим устройством (слой скрытых нейронов) и аффекторами (слой выходных нейронов). В перцептроне используется пороговая передаточная функция и прямое распространение сигнала. Как математическая модель перцептрон уже был достаточно мощным формализмом для решения большого количества задач, поскольку он на основе обучения позволял классифицировать, кластеризовать и прогнозировать, т. е. решать большинство классических задач машинного обучения. Впрочем, после публикации книги М. Минского и С. Паперта «Перцептроны», в которой авторы показали принципиальную невозможность для перцептрона решить некоторые задачи (сюрприз – задача «XOR», традиционно включаемая в класс нерешаемых перцептроном, на самом деле к таковым не относится), постепенно интерес к перцептрону снизился, и большее внимание стала получать нисходящая парадигма в искусственном интеллекте, при этом сам Марвин Минский был её оппонентом. Тем не менее сегодня с развитием математического аппарата и средств вычислительной техники интерес к перцептрону и его расширениям вновь вырос.
Однослойный перцептрон
Классический перцептрон
Необходимо отметить, что в процессе развития перцептронов появились некоторые расширения первоначальной модели, предложенной Ф. Розенблаттом. Самый простой классификатор основан на подсчёте слоёв в перцептроне: однослойный, с одним скрытым слоем (классический) и многослойный. Все эти типы были в своё время описаны Розенблаттом. Другая авторская классификация включала: элементарный перцептрон, простой перцептрон, перцептрон с последовательными связями, перцептрон с перекрёстными связями, перцептрон с обратными связями, перцептрон с переменными связями. Первые три класса были описаны самим автором, а следующие три развиты в дальнейшем при детальной проработке модели искусственных нейронных сетей.
Многослойный перцептрон
Из-за первоначальной неразберихи в терминологии и повышенных ожиданий, которые появились в отношении перцептрона и модели искусственного нейрона, Дэвидом Румельхартом был предложен новый класс перцептронов, которые сейчас называются «многослойными перцептронами Румельхарта» и отличаются от многослойных перцептронов Розенблатта тем, что для обучения в них используется метод обратного распространения ошибки, в то время как у Розенблатта использовался метод коррекции ошибки. Есть ещё несколько отличий, в частности у Румельхарта в качестве функции активации используется сигмоида, а число обучаемых слоёв больше одного.
Фактически перцептрон – это самый простой пример нейронной сети прямого распространения. Другим интересным примером является сеть ELM, экстремальная обучающаяся машина. В этой нейросети нейроны не располагаются в слои, а связаны друг с другом случайным образом. Выделяются только входной и выходной слои, а остальные нейроны находятся между ними и связаны друг с другом именно случайно. Обучение сети также производится методом обратного распространения ошибки. А вот если обучение производится при помощи обновления состояния нейронов по результатам наблюдения за их работой, за порядком активации, то это уже нейронная эхо-сеть, ESN.
Далее некоторое время модель искусственных нейронных сетей развивалась в сторону тонкого подбора функций активации (например, в сплайн-модели Хакимова функция активации реализована в виде сигмоидального сплайна, либо в сети Брумхеда-Лоу используются радиально-базисные функции), типов весовых коэффициентов между нейронами и других параметров, не влияющих на структуру сетей. Это не позволяло выходить на новые объёмы данных или решать новые задачи, но было обусловлено скорее тем, что на существующих в те времена вычислительных мощностях было затруднительно реализовывать нейронные сети больших размеров.
Однако перцептрон получал развитие и с точки зрения изменения структуры. Так, например, Джефф Элман и Майкл Джордан предложили свои варианты изменения перцептрона и включения в него обратных связей так, чтобы получилась рекуррентная сеть. В варианте Джордана на вход многослойного перцептрона также подаются выходные значения с задержкой от одного и более тактов. В нейронной сети Элмана используется такой же подход, только рекуррентные связи с задержкой в несколько тактов подаются не с выходных нейронов, а со скрытых слоёв многослойного перцептрона. Оба варианта структурного развития перцептрона обладают определённой памятью. Впрочем, различными вариантами памяти обладают все рекуррентные сети.
Ещё один интересный вариант нейросети с небольшим количеством скрытых слоёв – сеть Ворда, в которой имеется только один внутренний слой, но его нейроны разбиты на группы. В каждой группе используется своя передаточная функция, и результаты работы каждого блока передаются на выходной слой, который как бы рассматривает вход с разных точек зрения. Кроме того, входной слой может напрямую замыкаться на выходной, и это тоже позволяет добавить гибкости сети. Топология конкретной реализации сети Ворда определяется количеством блоков в скрытом слое и наличием прямого замыкания входных нейронов на выходные. Сеть показывает отличные результаты для задачи распознавания образов.
Сеть Ворда
Сеть Хопфилда
В 1982 году Джон Хопфилд предложил интересный вариант однослойной нейросети, который позволял достаточно просто решать некоторые задачи оптимизации или предоставлять механизм автоассоциативной памяти. В этой сети имеются только входные нейроны, каждый из которых соединён со всеми другими (т. е. сеть представляет собой полносвязный граф). Обучение сети также своеобразно – для всех связей между нейронами необходимо аналитически рассчитать веса, и это значит, что обучение длится один цикл. Обучение (или аналитический расчёт весов) как бы сохраняет в весовых коэффициентах сети набор эталонных образцов, которые сеть должна запомнить. После того как сеть обучена, её можно запускать в рабочем режиме, и он также отличается от традиционного единичного прогона. Сеть Хопфилда работает до тех пор, пока её следующее состояние не будет равно предыдущему, т. е. сеть должна достигнуть равновесия. Достигнутое равновесное состояние обязательно соответствует одному из запомненных эталонных образцов. Тем самым осуществляется распознавание и даже восстановление повреждённых образцов.
Развитием сети Хопфилда стала так называемая неограниченная машина Больцмана, которая представляет собой стохастический вариант этой сети. Машина Больцмана представляет собой рекуррентную нейронную сеть, которая для обучения использует алгоритм имитации отжига. Неограниченная машина позволяет решать сложные комбинаторные задачи, однако её практическое применение затруднительно или даже невозможно из-за комбинаторного взрыва в части гигантского количества связей между нейронами. Однако если использовать ограничение на количество связей между нейронами, то машина Больцмана становится менее мощной, но её использование вполне возможно. В частности, из каскадов из машин Больцмана составляются глубокие сети доверия – сначала сеть обучается при помощи стандартного алгоритма для машин Больцмана, а потом дообучается при помощи обратного распространения ошибки.
Машина Больцмана
Ограниченная машина Больцмана
Итак, рассмотрим каскадное объединение ограниченных машин Больцмана, при котором скрытые нейроны одной машины становятся входными для следующей. Именно так формируется глубокая сеть доверия. Такая сеть также обучается без учителя, причём обучение происходит послойно. Как и в случае сети Хоп-филда и машины Больцмана, сеть глубокого доверия осуществляет кластеризацию и восстановление входов, а при дополнительном обучении с учителем осуществляется и классификация, которая может быть очень точной. Именно на глубоких сетях доверия были построены первые алгоритмы глубинного обучения.
Глубокая сеть доверия
Ещё один пример глубокой нейронной сети прямого распространения – это глубокая остаточная сеть (DRN). В ней количество скрытых слоёв может быть очень велико, и прямые связи от слоя передаются не только на следующий слой, но и на дальнейшие слои. При этом на каждый слой также передаётся входная информация в неизменённом виде, так что каждый слой получает как бы пару (входная информация, выходная информация предыдущего слоя). Такая архитектура может очень неплохо распознавать образы, однако было показано, что подобная нейросеть тождественна рекуррентным нейросетям без учёта времени.
Так что теперь более подробно рассмотрим эти самые рекуррентные нейронные сети, т. е. такие, в которых возможно либо замыкание выхода нейрона на его же вход, либо создание обратных связей от нейронов дальних слоёв к нейронам ближних. При этом значение на рекуррентные связи подаётся с определённой временной задержкой, измеряемой в тактах работы нейронной сети. В принципе, и сеть Хопфилда, и машина Больцмана уже сами по себе являются рекуррентными сетями, но они представляют самый примитивный их класс. Теперь пришло время познакомиться с более продвинутыми.
Одна из самых первых рекуррентных нейронных сетей была предложена в 1987 г. – так называемая сеть Хэмминга, которая является расширением сети Хопфилда и решает задачу классификации бинарных векторов, критерием различия которых является расстояние Хэмминга. Сеть Хэмминга представляет собой трёхслойную сеть, при этом количество нейронов во втором и третьем слоях равно количеству классов классификации, и со второго и третьего слоёв есть рекуррентные связи – со второго на первый, а с третьего на третий же. После обучения сеть выдаёт номер класса, которому принадлежит образец, поданный на вход. Эта сеть очень эффективно работает на довольно узком классе задач. В частности, она может использоваться для распознавания чёрно-белых изображений: штрих-кодов, цифр индекса и др.
В 1988 г. Барт Коско разработал тип нейронной сети, названный им «двунаправленной ассоциативной памятью» (а сегодня она называется сетью Коско). Это вариант сети Хопфилда, в котором входными является часть нейронов, а выходными – оставшиеся нейроны. Все нейроны входного и выходного слоёв соединены друг с другом двунаправленными связями, которые обучаются так же, как и для сети Хопфилда. Сеть Коско работает на тех же задачах, что и сеть Хопфилда, но делает это немногим более эффективно. Также разработаны некоторые подтипы этой сети, в частности адаптивный вариант, в котором осуществляется изменение весов связей в процессе работы. Тем самым адаптивная сеть Коско позволяет идентифицировать искажённые и зашумлённые образцы.
Вообще, рекуррентными нейронными сетями называют любые искусственные нейросети, в которых есть обратные связи от нейронов более глубоких слоёв к нейронам менее глубоких, либо замыкание нейронов самих на себя или на нейроны того же самого слоя. При этом такая архитектура связей между нейронами и слоями может создаваться и в уже рассмотренных типах сетей, в которых изначально рекуррентных связей не предполагалось. Подобные сети могут запоминать информацию, организовывать циклы и иметь другие интересные свойства. Однако из-за сложности анализа поведения таких моделей большая часть предложенных или потенциальных архитектур изучена плохо.
Сеть Коско
Общий вид архитектуры рекуррентной нейронной сети можно представить следующим образом.
В процессе исследований рекуррентных нейронных сетей стало ясно, что с обычными искусственными нейронами они работают не совсем эффективно – обычные нейроны с течением времени как будто бы «размываются», теряют своё обучение. Это не позволяет эффективно использовать обычные нейроны в рекуррентных нейронных сетях для задач классификации и, главное, прогнозирования временных рядов. И тогда появилась идея по разработке новых типов искусственных нейронов. Одним из наиболее знаменитых в этом плане является LSTM-нейрон (от англ. LongShort-TermMemory – «долгая краткосрочная память»).
Итак, Сепп Хохрайтер и Юрген Шмидхубер в 1997 г. предложили новый вариант искусственного нейрона, который затем был улучшен Феликсом Герсом в 2000 г. Искусственная нейросеть, составленная из LSTM-нейронов, является универсальной в смысле Тьюринга, т. е. при помощи неё можно вычислить любую вычислимую функцию (матрицу весов такой нейросети можно воспринимать как программу). Именно такие нейросети сегодня являются фундаментальной основой для построения решений ведущих компаний, работающих в области искусственного интеллекта. Сам же LSTM-нейрон может быть представлен при помощи следующей диаграммы.
Представленные выше диаграммы нарисованы с использованием следующих условных обозначений:
• обычная стрелка – входные и выходные связи нейрона, поток значений между функциями внутри нейрона;
• пунктирная стрелка – входные и выходные связи нейрона, поток значений между функциями внутри нейрона с задержкой по времени (на один или более тактов работы нейронной сети);
• плюс – функция суммирования входных значений;
• точка – функция перемножения входных значений;
• чёрный круг – дубликатор потока значений;
• гейт S – функция активации, обычно представляющая собой сигмоиду;
• гейт G – функция активации для входного потока, обычно являющаяся гиперболическим тангенсом;
• гейт H – функция активации для выходного потока, обычно тоже гиперболический тангенс;
• поток i – результат активации для входного потока;
• поток z – результат активации для рекуррентного входного потока (обычно с нейронов того же слоя);
• поток f – результат активации для гейта забывания;
• поток o – результат активации для выходного потока;
• поток y – результат работы LSTM-нейрона в целом.
На сегодняшний день, как уже сказано выше, LSTM-нейрон является самой продвинутой моделью биологического нейрона. Однако он всё так же имеет одно важное упущение – нейроны в нервной системе млекопитающих получают информацию не только при помощи передачи электрических импульсов от дендритов через аксоны к следующим нейронам, но ещё используются различные нейромедиаторы в синаптических щелях, а также гуморальное воздействие на весь нейрон в целом. Кроме того, до сих пор не до конца изучена роль глиальных клеток, которых в нервной системе на порядок больше, чем нейронов. Другая сложность, которая проявляется при реализации искусственных нейросетей на LSTM-нейронах, – их относительно высокие требования к вычислительным ресурсам.
Из-за описанных сложностей с LSTM-нейроном был разработан так называемый GRU-нейрон (от англ. gatedrecurrentunit – «рекуррентный нейрон с гейтами»), который практически повторяет структуру LSTM-нейрона, но в нём нет выходного гейта H и, соответственно, всех используемых этим гейтом потоков. Это позволило существенно снизить вычислительную сложность работы такого искусственного нейрона, однако он так же эффективен для отдельных задач, как и LSTM-нейрон (в частности, на GRU-нейронах хорошо решаются задачи синтеза – моделирование музыки или моделирование текста и разговора).
Мы изучили сети прямого распространения и рекуррентные сети, и уже по пройденному материалу видно, как широко это направление исследований. Так что теперь мы можем перейти к более прикладным вариантам, на которых сегодня решается большинство задач, где используются искусственные нейронные сети.
Самый первый интересный вариант – так называемый «автокодировщик». Этим словом обозначается специальная архитектура искусственной нейронной сети с одним скрытым слоем без обратных связей. Главная особенность такой сети заключается в том, что количество нейронов на входном и выходном слоях одинаково, а на скрытом слое – меньше. Это ограничение необходимо для того, чтобы сеть не зафиксировалась на тривиальном варианте в процессе обучения без учителя, которое для автокодировщиков заключается в получении на выходном слое результатов, как можно более похожих на входные параметры сети. Другими словами, обучение нейронов скрытого слоя в таких условиях позволяет автокодировщику как бы осуществлять обобщение, сжимающее кодирование входной информации, отсюда и такое наименование.
Автокодировщики часто используются для последовательного обучения слоёв искусственных нейронных сетей. При таком подходе каждый новый слой представляется в качестве скрытого слоя автокодировщика, при этом входным слоем является предыдущий слой, обученный на предыдущем же шаге. Размерность каждого следующего слоя снижается, и тем самым нейросеть должна находить всё больше и больше обобщений, она должна всё сильнее и сильнее повышать степень абстракции кодируемой информации. После такого обучения нейросеть на каждом скрытом слое содержит нейроны, которые отвечают за очень глубокие уровни абстракции входной информации, и чем глубже слой, на котором находится нейрон, тем выше уровень абстракции. Сегодня это один из основных подходов в технологии глубокого обучения.
Автокодировщик
Перед переходом к рассмотрению глубоких нейронных сетей остаётся отметить несколько особенных вариантов автокодировщиков.
• Вариационный автокодировщик – автокодировщик, в рамках которого делаются сильные предположения относительно распределения скрытых переменных. Такие автокодировщики используют вариационное исчисление для обучения представлению скрытых переменных, что приводит к дополнительной потере компонентов при использовании специализированного алгоритма обучения. Он предполагает, что данные сгенерированы направленной графической моделью, и автокодировщик при обучении строит аппроксимацию апостериорного распределения.
• Автокодировщик, удаляющий шум – автокодировщик, который принимает частично «повреждённые» входные данные, а обучение осуществляется для получения неискажённого выхода. Такие автокодировщики восстанавливают так называемое «хорошее представление», которое может быть получено из повреждённого выхода так, что достаточно точно воспроизводит ожидаемый выход.
• Разрежённый автокодировщик – автокодировщик, который во время обучения имеет большее число скрытых нейронов, чем входных. Это создаёт так называемую «разрежённость» в нейронах, которая накладывается и на выходные нейроны. Иногда это бывает полезно при решении задач классификации. • Контрастный автокодировщик – автокодировщик, который явным образом добавляет регуляризацию своей целевой функции, что заставляет нейронную модель исследовать функцию, которая является устойчивой к небольшим изменениям входных значений.
Теперь, наконец-то, перейдём к рассмотрению искусственных нейронных сетей, которые получили название «свёрточных» (а также двойственных им – «развёрточных»). Такие нейросети получили в последнее время самое широкое распространение, поскольку являются базовым строительным блоком для построения систем «глубокого обучения». Рассмотрим несколько примеров.
Свёрточная сеть – ещё одна специальная архитектура искусственных нейронных сетей, которая очень эффективно решает задачу распознавания образов. Сама по себе архитектура была предложена в 1988 г. французским учёным Яном Лекуном, который взял некоторые идеи из устройства нервной системы млекопитающих и, в частности, зрительной коры головного мозга. Структура свёрточной нейронной сети состоит из большого количества слоёв двух чередующихся типов – свёрточных и субдискретизирующих. Обычно работа такой сети описывается как постепенный переход от конкретных особенностей распознаваемого образа к абстрактным деталям всё выше и выше по иерархии уровней абстракции. Например, в применении к изображениям это обозначает, что первые слои обнаруживают в частях изображения различные типовые элементы вроде разнонаправленных отрезков, а на последних слоях нейроны уже активируются в ответ на наличие в составе изображения каких-либо форм, конкретных объектов или образов.
Суть операции свёртки, из-за которой сеть получила своё название, заключается в том, что каждый фрагмент входного образа поэлементно умножается на матрицу свёртки, результат этого перемножения суммируется, и итоговая сумма передаётся в аналогичную позицию выходного образа для заданного слоя.
Каждый слой свёртки передаёт свой выход на слой субдискретизации, и это важная особенность рассматриваемой архитектуры. Субдискретизация нелинейно уплотняет карту признаков так, что группа пикселей (обычно 3?3) преобразуется в один пиксель, и это делается при помощи нелинейного преобразования (обычно используется функция максимизации). Суть этой операции в том, чтобы получить карту признаков с предыдущего слоя свёртки и «огрубить» изображение. Другими словами, происходит отказ от ненужных деталей, и нейронная сеть начинает рассматривать всё более и более абстрактные признаки исходного изображения. Кроме максимизации в качестве операции субдискретизации, могут использоваться и другие, и от этого зависят свойства получаемой нейронной сети, лучше или хуже подходящие для решения поставленной задачи.
Наибольший интерес вызывает то, что в операции свёртки матрица или ядро свёртки изначально не закладывается разработчиком нейронной сети, а самостоятельно подбирается в процессе обучения нейронной сети (чаще всего методом обратного распространения ошибки). В итоге для каждого свёрточного слоя получается большое количество карт признаков – отрезки и дуги, направленные под разными углами, границы между сплошными средами, точки и иные примитивы; а на более глубоких слоях – лица, животные, автомобили, здания и т. д. Количество карт признаков для каждого слоя является метапараметром сети и определяется разработчиком.
Для чего нужна свёрточная нейронная сеть? Как показали эксперименты, свёрточные нейросети:
• являются одним из лучших методов по распознаванию образов;
• по сравнению с полносвязными архитектурами (например, с перцептронами), требуют намного меньшего количества вычисляемых в процессе обучения параметров, из чего следует возможность построения сетей с большим количеством слоёв; • позволяют эффективно распараллеливать свои вычисления;
• обладают устойчивостью к поворотам и сдвигам распознаваемых образов.
Если про искусственные нейронные сети можно написать отдельную книгу, то про свёрточные нейронные сети можно написать ещё одну, поэтому оставим их и перейдём к следующему типу архитектуры – развёрточным сетям.
Развёрточные нейронные сети – это как бы перевёрнутые задом наперёд свёрточные сети. Они были предложены Мэтью Зайлером для простой задачи – анализа работы свёрточных нейронных сетей. Дело в том, что глубинное обучение задействует воистину огромное количество слоёв, а в свёрточных нейросетях эти слои ещё и разных типов, и субдискретизация осуществляется по разным каналам, а с учётом того, что чем глубже и полносвязнее сеть, тем сложнее понять, как она обучается, необходим хотя бы какой-то эвристический механизм или инструмент для оценки того, правильно ли обучается свёрточная нейросеть и не переобучилась ли она.
Если говорить самым простым языком, то развёрточная нейронная сеть строит иерархические представления свёрточной нейросети, к которой подключена. При этом в рассмотрение принимаются все карты признаков и параметры, которые были получены во время обучения свёрточной нейросети. Развёрточная нейронная сеть как бы пытается восстановить тот сигнал, который распознавала свёрточная нейросеть, но из-за большого количества нелинейных и необратимых преобразований это удаётся сделать лишь частично. Однако развёрточная нейросеть подключена к каждому свёрточному слою свёрточной нейросети и восстанавливает изображения для всех свёрточных слоёв, обучаясь параллельно. В итоге получается нейронная сеть, которая позволяет «видеть» то, как обучена свёрточная нейронная сеть и хотя бы отчасти объяснять результаты.
Перейдём к следующему важному варианту архитектуры искусственных нейронных сетей. Это генеративно-состязательная сеть (GAN), которая предназначена для обучения без учителя. Генеративно-состязательная нейронная сеть составлена из двух подсетей. Одна из них (сеть G – генеративная сеть) генерирует различные образцы, а вторая (сеть D – дискриминационная сеть) – отличает правильные образцы от неправильных. Для целей машинного обучения сети G и D имеют противоположные задачи, и между ними организуется «антагонистическая игра», т. е. игра, в которой участвуют два игрока, выигрыши которых противоположны. Сеть G генерирует образец (например, изображение), начиная со смешивания некоторых исходных образцов, используя случайные значения своих скрытых параметров (весовых коэффициентов). После генерации образца сеть D пытается отбраковать те образцы, которые выглядят неприемлемо, и результат работы этой сети подаётся на вход сети G, которая при помощи метода обратного распространения ошибки перестраивает свои весовые коэффициенты так, чтобы «обмануть» сеть D. В итоге на каждой итерации генерируемые образцы становятся всё лучше и лучше.
Обычно в качестве сети D берётся свёрточная сеть глубокого обучения – ну просто потому, что именно свёрточные сети, как уже описано, лучше всего занимаются распознаванием образов, а дискриминационная сеть должна именно распознавать образы, которые создаёт генеративная сеть. А в качестве последней используются те сети, которые могут генерировать образы. И вообще говоря, сегодня именно генеративные нейронные сети находятся на пике интереса, и здесь могут быть самые разные варианты нейросетей. Например, генеративно-состязательные нейронные сети нашли очень широкое применение в вопросе так называемого машинного творчества.
Финский учёный в области искусственного интеллекта Теуво Кохонен предложил несколько интереснейших концепций в рамках машинного обучения и искусственных нейронных сетей, из-за чего он стал наиболее часто цитируемым финским учёным. В частности, им предложены:
• фундаментальная теория ассоциативной памяти;
• особенный алгоритм обучения нейронных сетей;
• особый класс нейронных сетей (нейронные сети Кохонена);
• самоорганизующиеся карты Кохонена;
• модель нейрона и специального слоя (слой Кохонена).
Наибольший интерес представляет самоорганизующаяся карта Кохонена. Это особая архитектура нейронной сети Кохонена для обучения без учителя. Карта решает задачи кластеризации и снижения размерности и применяется для решения задач моделирования, прогнозирования, выявления наборов независимых признаков, поиска закономерностей в больших массивах данных, квантизации признаков к их ограниченному числу индексов и некоторых других.
Самоорганизующаяся карта Кохонена получает на вход массив многомерных данных и проецирует его на двумерную плоскость, «раскрашивая» её и получая что-то вроде разноцветной административной карты территории (отсюда и название архитектуры). От разработчика или аналитика необходимо только задание количества кластеров, на которые необходимо разбить входной массив, а дальше нейросеть всё сделает самостоятельно.
Самоорганизующаяся карта Кохонена
Очень интересный подход предложили несколько учёных в 2014 г. В рамках него искусственную нейронную сеть совместили с внешней памятью, ведь произвольный доступ к памяти является критически важной функцией при обработке информацией. И компьютеры, и мозг человека работают с тем или иным видом памяти, к которой можно обращаться более или менее произвольно. Так вот, в предлагаемой архитектуре, которая была названа «нейронной машиной Тьюринга», нейронная сеть получает входную информацию и выдаёт выходную информацию не только во взаимодействии с внешним миром, но и использует внутреннюю память в виде матрицы чисел. Ячейки этой матрицы-памяти индексируются при помощи так называемых нечётких индексов, что позволяет нейросети обращаться ко всем ячейкам как бы одновременно, получая их линейную комбинацию.
На диаграмме показана общая структурная схема нейронной машины Тьюринга. Нейронная сеть является управляющим устройством машины и получает из среды входную информацию, выдавая в неё выходную информацию. Нейронная сеть управляет устройствами чтения и записи в память, которые, соответственно, осуществляют чтение и запись в память с нечётким доступом. Обращение к памяти осуществляется на каждом цикле работы нейронной сети, но при этом она сама обучается, как и когда это делать.
Эта архитектура, как предполагается, имеет много интересных приложений. Уже сегодня в экспериментах по распознаванию образов, обработке текста и по решению некоторых других задач такая нейронная машина Тьюринга показала результаты, превосходящие по производительности рекурсивные сети с LSTM-нейронами.
В большинстве моделей для кластеризации данных предполагается, что количество кластеров определяется заранее до старта алгоритма, сам алгоритм кластеризации работает один раз, а при изменении входных данных его необходимо запускать повторно (возможно, с изменением числа кластеров). Это схема работы большинства моделей машинного обучения, в том числе и многих нейросетевых моделей. В качестве альтернативной модели была предложена модель расширяющегося нейронного газа, в которой нет этих недостатков, – в ней число кластеров определяется самостоятельно, а сама модель является динамической, так что при изменении входных данных она тут же пересчитывает свои параметры и выдаёт новый результат, основанный на истории своей работы, в том числе и до изменения входных данных.
Данный текст является ознакомительным фрагментом.