Добавить в цитаты Настройки чтения

Страница 16 из 17

Из-за описанных сложностей с LSTM-нейроном был разработан так называемый GRU-нейрон (от англ. gatedrecurrentunit – «рекуррентный нейрон с гейтами»), который практически повторяет структуру LSTM-нейрона, но в нём нет выходного гейта H и, соответственно, всех используемых этим гейтом потоков. Это позволило существенно снизить вычислительную сложность работы такого искусственного нейрона, однако он так же эффективен для отдельных задач, как и LSTM-нейрон (в частности, на GRU-нейронах хорошо решаются задачи синтеза – моделирование музыки или моделирование текста и разговора).

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

Самый первый интересный вариант – так называемый «автокодировщик». Этим словом обозначается специальная архитектура искусственной нейронной сети с одним скрытым слоем без обратных связей. Главная особенность такой сети заключается в том, что количество нейронов на входном и выходном слоях одинаково, а на скрытом слое – меньше. Это ограничение необходимо для того, чтобы сеть не зафиксировалась на тривиальном варианте в процессе обучения без учителя, которое для автокодировщиков заключается в получении на выходном слое результатов, как можно более похожих на входные параметры сети. Другими словами, обучение нейронов скрытого слоя в таких условиях позволяет автокодировщику как бы осуществлять обобщение, сжимающее кодирование входной информации, отсюда и такое наименование.

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

Автокодировщик

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

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

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

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

Теперь, наконец-то, перейдём к рассмотрению искусственных нейронных сетей, которые получили название «свёрточных» (а также двойственных им – «развёрточных»). Такие нейросети получили в последнее время самое широкое распространение, поскольку являются базовым строительным блоком для построения систем «глубокого обучения». Рассмотрим несколько примеров.





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

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

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

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

Для чего нужна свёрточная нейронная сеть? Как показали эксперименты, свёрточные нейросети:

• являются одним из лучших методов по распознаванию образов;

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

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

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