В этом параграфе вы познакомитесь с нейронными сетями — семейством моделей, которое начиная с 2012-го постепенно добивается превосходства во всё новых и новых приложениях, во многих став де-факто стандартом.
Они были придуманы ещё в 70-х, но техническая возможность и понимание того, как обучать нейросети большого размера, появились лишь примерно к 2011 году, и это дало мощный толчок к их развитию. Совокупность нейросетевых подходов и сама наука о нейросетях носит название глубинного обучения или deep learning.
Глубинное обучение основано на двух идеях.
- Во-первых, это стремление к переходу от построения сложных пайплайнов, каждая компонента которых тренируется сама по себе решать кусочек задачи, к end-to-end обучению всей системы, как одного целого. Так, мы можем обучать не каждый слой отдельно, а все вместе, и не учить какие-нибудь линейные модели поверх случайных лесов, а работать с одной цельной моделью
- Во-вторых, это обучение представлений объектов — информативных признаковых описаний, учитывающих структуру данных, построенных лишь на основе самих данных, зачастую неразмеченных. Это позволяет автоматизировать процесс отбора признаков: теперь вместо того, чтобы руками экспертов искать «более информативное» или «более простое» признаковое описание наших объектов, мы можем получить их автоматически, притом используя не только данные, доступные нам для задачи, но и, к примеру, все тексты мира.
Обучению представлений будет посвящён отдельный параграф, а в этом мы постараемся убедить вас, что нейросети — это гибкий инструмент для решения самых разных задач и для работы с самыми разными типами данных.
Надо признать, впрочем, что современные модели весьма сложны и мало напоминают своих элегантных предшественников из 2012 года. Развитие нейросетей во многом мотивируется нуждами и возможностями индустрии, ростом производительности компьютеров и объёмов доступных данных.
При этом теория отчаянно не поспевает за практикой. В глубинном обучении весьма распространён чисто инженерный подход к построению алгоритмов, изобилие деталей, основанных на интуиции и обосновывающихся фразой «просто потому, что так работает, а иначе — нет», поэтому ряд учёных продолжает относиться к нейросетям скептически.
Однако результаты, достигнутые с их помощью за последние 10 лет, столь впечатляющие, что их нельзя игнорировать. Особенно существенный прогресс был достигнут в области анализа данных, обладающих некоторой внутренней структурой: текстов, изображений, видео, облаков точек, графов и так далее.
Тем не менее, есть и подходы к теоретическому осмыслению того, почему нейросети работают так хорошо, и мы познакомим вас с ними в отдельном параграфе, посвящённой теории машинного обучения.
Но довольно предисловий! Давайте набросаем план нашего вторжения в мир глубинного обучения:
-
Первое знакомство с полносвязными нейросетями. Вы впервые встретитесь с самой простой нейросетевой архитектурой, узнаете, как строятся и как применяются нейронные сети.
-
Обратное распространение ошибки. Вы узнаете, как легко и быстро дифференцировать по параметрам сложного вычислительного графа, после чего будете (теоретически) понимать, как обучить несложную нейросеть.
-
Тонкости обучения. Нейросети — могущественный, но капризный инструмент, и чем сложнее глубинная модель, тем труднее обучить её. В этом разделе мы начнём знакомить вас с разными приёмами, которые позволяют повысить вероятность успеха, а также с регуляризационными техниками для нейросетей.
-
Свёрточные нейросети. Классический пример структурированных данных — это изображения. В этом параграфе вы познакомитесь с базовым инструментарием для работы с ними — свёртками, пулингом и со свёрточными сетями в целом.
В первых четырёх главах вы познали основы глубинного обучения, но в основном имели дело с ситуацией, когда и данные, и выходы представляют из себя непритязательные векторы. А что делать, если мы должны работать с чем-то более сложно устроенным? Оказывается, за счёт своей гибкости и возможности сочетать в себе самые разные компоненты нейросети отлично справляются с данными, имеющими однородную структуру (изображениями, текстами, облаками точек ). Для работы с каждым из этих типов данных требуются специфические инженерные решения, и мы постараемся познакомить вас с ними, разверзнув перед вами всю бездну способностей нейросетей!