Искусственный интеллект
Шрифт:
Автокодировщики часто используются для последовательного обучения слоёв искусственных нейронных сетей. При таком подходе каждый новый слой представляется в качестве скрытого слоя автокодировщика, при этом входным слоем является предыдущий слой, обученный на предыдущем же шаге. Размерность каждого следующего слоя снижается, и тем самым нейросеть должна находить всё больше и больше обобщений, она должна всё сильнее и сильнее повышать степень абстракции кодируемой информации. После такого обучения нейросеть на каждом скрытом слое содержит нейроны, которые отвечают за очень глубокие уровни абстракции входной информации, и чем глубже слой, на котором находится нейрон, тем выше уровень абстракции. Сегодня это один из основных подходов в технологии глубокого обучения.
Автокодировщик
Перед
• Вариационный автокодировщик – автокодировщик, в рамках которого делаются сильные предположения относительно распределения скрытых переменных. Такие автокодировщики используют вариационное исчисление для обучения представлению скрытых переменных, что приводит к дополнительной потере компонентов при использовании специализированного алгоритма обучения. Он предполагает, что данные сгенерированы направленной графической моделью, и автокодировщик при обучении строит аппроксимацию апостериорного распределения.
• Автокодировщик, удаляющий шум – автокодировщик, который принимает частично «повреждённые» входные данные, а обучение осуществляется для получения неискажённого выхода. Такие автокодировщики восстанавливают так называемое «хорошее представление», которое может быть получено из повреждённого выхода так, что достаточно точно воспроизводит ожидаемый выход.
• Разрежённый автокодировщик – автокодировщик, который во время обучения имеет большее число скрытых нейронов, чем входных. Это создаёт так называемую «разрежённость» в нейронах, которая накладывается и на выходные нейроны. Иногда это бывает полезно при решении задач классификации. • Контрастный автокодировщик – автокодировщик, который явным образом добавляет регуляризацию своей целевой функции, что заставляет нейронную модель исследовать функцию, которая является устойчивой к небольшим изменениям входных значений.
Теперь, наконец-то, перейдём к рассмотрению искусственных нейронных сетей, которые получили название «свёрточных» (а также двойственных им – «развёрточных»). Такие нейросети получили в последнее время самое широкое распространение, поскольку являются базовым строительным блоком для построения систем «глубокого обучения». Рассмотрим несколько примеров.
Свёрточная сеть – ещё одна специальная архитектура искусственных нейронных сетей, которая очень эффективно решает задачу распознавания образов. Сама по себе архитектура была предложена в 1988 г. французским учёным Яном Лекуном, который взял некоторые идеи из устройства нервной системы млекопитающих и, в частности, зрительной коры головного мозга. Структура свёрточной нейронной сети состоит из большого количества слоёв двух чередующихся типов – свёрточных и субдискретизирующих. Обычно работа такой сети описывается как постепенный переход от конкретных особенностей распознаваемого образа к абстрактным деталям всё выше и выше по иерархии уровней абстракции. Например, в применении к изображениям это обозначает, что первые слои обнаруживают в частях изображения различные типовые элементы вроде разнонаправленных отрезков, а на последних слоях нейроны уже активируются в ответ на наличие в составе изображения каких-либо форм, конкретных объектов или образов.
Суть операции свёртки, из-за которой сеть получила своё название, заключается в том, что каждый фрагмент входного образа поэлементно умножается на матрицу свёртки, результат этого перемножения суммируется, и итоговая сумма передаётся в аналогичную позицию выходного образа для заданного слоя.
Каждый слой свёртки передаёт свой выход на слой субдискретизации, и это важная особенность рассматриваемой архитектуры. Субдискретизация нелинейно уплотняет карту признаков так, что группа пикселей (обычно 3x3) преобразуется в один пиксель, и это делается при помощи нелинейного преобразования (обычно используется функция
Наибольший интерес вызывает то, что в операции свёртки матрица или ядро свёртки изначально не закладывается разработчиком нейронной сети, а самостоятельно подбирается в процессе обучения нейронной сети (чаще всего методом обратного распространения ошибки). В итоге для каждого свёрточного слоя получается большое количество карт признаков – отрезки и дуги, направленные под разными углами, границы между сплошными средами, точки и иные примитивы; а на более глубоких слоях – лица, животные, автомобили, здания и т. д. Количество карт признаков для каждого слоя является метапараметром сети и определяется разработчиком.
Для чего нужна свёрточная нейронная сеть? Как показали эксперименты, свёрточные нейросети:
• являются одним из лучших методов по распознаванию образов;
• по сравнению с полносвязными архитектурами (например, с перцептронами), требуют намного меньшего количества вычисляемых в процессе обучения параметров, из чего следует возможность построения сетей с большим количеством слоёв; • позволяют эффективно распараллеливать свои вычисления;
• обладают устойчивостью к поворотам и сдвигам распознаваемых образов.
Если про искусственные нейронные сети можно написать отдельную книгу, то про свёрточные нейронные сети можно написать ещё одну, поэтому оставим их и перейдём к следующему типу архитектуры – развёрточным сетям.
Развёрточные нейронные сети – это как бы перевёрнутые задом наперёд свёрточные сети. Они были предложены Мэтью Зайлером для простой задачи – анализа работы свёрточных нейронных сетей. Дело в том, что глубинное обучение задействует воистину огромное количество слоёв, а в свёрточных нейросетях эти слои ещё и разных типов, и субдискретизация осуществляется по разным каналам, а с учётом того, что чем глубже и полносвязнее сеть, тем сложнее понять, как она обучается, необходим хотя бы какой-то эвристический механизм или инструмент для оценки того, правильно ли обучается свёрточная нейросеть и не переобучилась ли она.
Если говорить самым простым языком, то развёрточная нейронная сеть строит иерархические представления свёрточной нейросети, к которой подключена. При этом в рассмотрение принимаются все карты признаков и параметры, которые были получены во время обучения свёрточной нейросети. Развёрточная нейронная сеть как бы пытается восстановить тот сигнал, который распознавала свёрточная нейросеть, но из-за большого количества нелинейных и необратимых преобразований это удаётся сделать лишь частично. Однако развёрточная нейросеть подключена к каждому свёрточному слою свёрточной нейросети и восстанавливает изображения для всех свёрточных слоёв, обучаясь параллельно. В итоге получается нейронная сеть, которая позволяет «видеть» то, как обучена свёрточная нейронная сеть и хотя бы отчасти объяснять результаты.
Перейдём к следующему важному варианту архитектуры искусственных нейронных сетей. Это генеративно-состязательная сеть (GAN), которая предназначена для обучения без учителя. Генеративно-состязательная нейронная сеть составлена из двух подсетей. Одна из них (сеть G – генеративная сеть) генерирует различные образцы, а вторая (сеть D – дискриминационная сеть) – отличает правильные образцы от неправильных. Для целей машинного обучения сети G и D имеют противоположные задачи, и между ними организуется «антагонистическая игра», т. е. игра, в которой участвуют два игрока, выигрыши которых противоположны. Сеть G генерирует образец (например, изображение), начиная со смешивания некоторых исходных образцов, используя случайные значения своих скрытых параметров (весовых коэффициентов). После генерации образца сеть D пытается отбраковать те образцы, которые выглядят неприемлемо, и результат работы этой сети подаётся на вход сети G, которая при помощи метода обратного распространения ошибки перестраивает свои весовые коэффициенты так, чтобы «обмануть» сеть D. В итоге на каждой итерации генерируемые образцы становятся всё лучше и лучше.
Меняя маски
1. Унесенный ветром
Фантастика:
боевая фантастика
попаданцы
рейтинг книги
![Меняя маски](https://style.bubooker.vip/templ/izobr/no_img2.png)