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

Не так давно AlphaGo победила Кэ Джи в 2017 году, игрока №1 в го в мире. Появление AlphaGo, знаменательное для развития искусственного интеллекта, привлекло внимание всего мира к развитию искусственного интеллекта.

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

Что заставляет глубокое обучение работать сегодня?

Проще говоря, модели глубокого обучения - это большие и глубокие искусственные нейронные сети, как показано на рисунке выше. Нейронная сеть («NN») может быть представлена ​​в виде ориентированного ациклического графа: входной слой принимает векторы сигналов; один или несколько скрытых слоев обрабатывают выходные данные предыдущего слоя.

Первоначальная концепция нейронной сети началась более 50 лет назад. Но почему это работает сейчас? И почему о них вдруг заговорили?

Причина на удивление проста:

  • У нас есть много дополнительных данных.
  • У нас есть очень мощные компьютеры.

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

Эндрю Нг очень хорошо рассказал о «Основах применения глубокого обучения» (см. Ниже). На небольшом наборе данных традиционные алгоритмы машинного обучения или статистическое обучение могут сделать приличную (иногда отличную) работу.

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

Теперь давайте рассмотрим несколько классических моделей глубокого обучения.

Сверточная нейронная сеть (CNN)

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

Первичная зрительная кора (V1) обнаруживает края необработанного визуального сигнала сетчатки. Вторичная зрительная кора (V2) получает краевые особенности от V1 и извлекает простые визуальные свойства, такие как ориентация, пространственная частота и цвет. Визуальная область V4 обрабатывает более сложные атрибуты объектов. Все обработанные визуальные функции переходят в конечный логический блок, нижнюю височную извилину (ИТ), для распознавания объектов.

Ярлык между V1 и V4 вдохновляет особый тип CNN со связями между несмежными слоями: остаточная сеть, содержащая «остаточный блок», который поддерживает некоторый ввод одного уровня, который будет передан компоненту двумя слоями позже.

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

Сверточные и объединяющие (или «суб-выборочные») слои действуют как единицы зрительной коры V1, V2 и V4, реагируя на извлечение признаков. Обоснование распознавания объектов происходит на более поздних полносвязных слоях, которые потребляют извлеченные признаки.

Рекуррентная нейронная сеть (RNN)

Модель последовательности обычно предназначена для преобразования входной последовательности в выходную последовательность, которая находится в другом домене. Рекуррентная нейронная сеть, сокращенно от «RNN», подходит для этой цели и показала огромное улучшение в решении таких проблем, как распознавание рукописного ввода, распознавание речи и машинный перевод.

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

Представьте себе случай, когда модель RNN читает все статьи Википедии, символ за символом, а затем может предсказать следующие слова с учетом контекста.

Однако простые нейроны перцептрона, которые линейно комбинируют текущий входной элемент и последнее единичное состояние, могут легко потерять долговременные зависимости. Например, мы начинаем предложение с «Томас работает над…», а позже, после целого абзаца, мы хотим правильно начать следующее предложение с «Он». Если модель забудет имя персонажа «Томас», мы никогда не узнаем.

Чтобы решить эту проблему, исследователи создали специальный нейрон с гораздо более сложной внутренней структурой для запоминания долгосрочного контекста, названный ячейкой Долгосрочная память (LSTM). Он достаточно умен, чтобы узнать, как долго он должен запоминать старую информацию, когда забывать, когда использовать новые данные и как объединить старую память с новым вводом.

Чтобы продемонстрировать возможности RNN, исследователи построили символьную языковую модель, используя RNN с ячейками LSTM. Не зная заранее какой-либо английский словарный запас, модель могла бы изучить отношения между символами для формирования слов, а затем отношения между словами для формирования предложений. Он мог добиться достойной производительности даже без огромного набора обучающих данных.

RNN: модель от последовательности к последовательности

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

Модель последовательность-последовательность состоит из двух RNN, кодировщика и декодера. Кодер изучает контекстную информацию из входных слов, а затем передает знания стороне декодера через «вектор контекста» (или «вектор мысли», как показано ниже). Наконец, декодер использует вектор контекста и генерирует правильные ответы.

Усиленное (глубокое) обучение

Обучение с подкреплением (« RL )» - один из секретов его успеха. RL - это подполе машинного обучения, которое позволяет машинам и программным агентам автоматически определять оптимальное поведение в заданном контексте с целью максимизировать долгосрочную производительность, измеряемую заданным показателем.

Система AlphaGo начинается с контролируемого процесса обучения для обучения политике быстрого развертывания и сети политик, опираясь на вручную подобранный набор обучающих данных для игр профессиональных игроков. Он узнает, какая стратегия является лучшей с учетом текущего положения на игровом поле. Затем он применяет обучение с подкреплением, настраивая самостоятельные игры. Сеть политик RL улучшается, когда она выигрывает все больше и больше игр против предыдущих версий сети политик. На этапе самостоятельной игры AlphaGo становится все сильнее и сильнее, играя против самого себя, не требуя дополнительных внешних данных для обучения.

Генеративная состязательная сеть

Генеративная состязательная сеть, сокращенно от GAN, - это разновидность глубинных генеративных моделей. GAN может создавать новые примеры после изучения реальных данных. Он состоит из двух моделей, конкурирующих друг с другом в рамках игры с нулевой суммой. Знаменитый исследователь глубокого обучения Янн ЛеКун дал ему очень высокую оценку: Generative Adversarial Network - самая интересная идея за последние десять лет в машинном обучении.

В исходной статье GAN GAN предлагалось генерировать значимые изображения после изучения реальных фотографий. Он состоит из двух независимых моделей: Генератор и Дискриминатор. Генератор создает поддельные изображения и отправляет результат в модель дискриминатора. Дискриминатор работает как судья, так как он оптимизирован для отличия настоящих фотографий от поддельных. Модель генератора изо всех сил пытается обмануть дискриминатор, в то время как судья изо всех сил старается не быть обманутым. Эта интересная игра с нулевой суммой между этими двумя моделями мотивирует как развивать задуманные ими навыки, так и улучшать их функциональные возможности. В конце концов, мы берем модель генератора для создания новых изображений.

Спасибо за прочтение!

Если вам понравилось, подпишитесь на меня на Medium, чтобы узнать больше. Это отличное кардио для 👏 И поможет другим людям увидеть историю.

Если вы хотите и дальше получать этот тип статей, вы можете поддержать меня, став Средним подписчиком. Это стоит 5 долларов в месяц. Мне достается часть вашей абонентской платы .

использованная литература