Книга построена как учебник – от простого к сложному. Читатель сможет:
* в первых трёх главах создать простейшую нейронную сеть распознавания и классификации изображений,
* в последующих – углубиться в устройство и архитектуру для оптимизации,
* далее расширить понимание экосистемы как компании в целом, в которой работают нейронные сети, как её составная часть, способы ее взаимодействия с окружающими технологиями и их использование,
* закончить изучение развёртыванием полномасштабной производственной системы в облаке полного цикла.
Фактически каждая глава в начале даёт общую информацию, необходимую для последующей практической части. В практической части:
* демонстрируется процесс подготовки окружения, но чаще используются бесплатные готовые облачные сервисы,
* демонстрируется процесс написания совместно с разбором написанного и обзором альтернативных решений,
* проводится анализ результата и формирование способов дальнейшего развития.
Книга состоит из разделов:
* Введение в Машинное обучение. Это единственная глава без практической части, созданная для того, чтобы дать начальное представление о границах применимости машинного обучения, преимуществах перед другими методами и об общем устройстве нейронных сетей для начинающих. Также производится классификация нейронных сетей по принципам, заложенных в них, и разделение на группы, о которых будет говориться в книге.
* Основы для написания сетей. Здесь даются базовые знания, необходимые для написания первой сети на PyTorch, знакомство со средой разработки Jupyter в облачном сервисе Google Colab, которая является упрощенным вариантом облачной платформы Google ML, запуск кода в нём и использование фреймворка на написания нейронных сетей PyTorch.
* Создаём первую сеть. Автор демонстрирует для практики читателя создание простой нейронной сети на PyTorch в Colab с детальным разбором написанного кода, обучение её на DataSet изображений MNIST и запуском.
* Улучшаем распознавание нейросети на сложных изображениях. Здесь автор для читателя демонстрирует на практике обучение нейронным сетям для цветных картинок, методы повышения качества предсказаний сети. Детально разбирается устройство, подводные камни при написании и обучении эффективных нейронных сетей.
* Современные архитектуры нейронных сетей. Приводятся архитектурные принципы, используемые в современных нейронных сетях для повышения качества предсказаний. Приводится разбор различных архитектур нейронных сетей, сделавших прорыв в качестве обучения и принёсших новые подходы. Рассматриваются различные архитектурные универсальные паттерны увеличения качества, такие как создание ансамблей нейронных сетей.
* Использование предобученных сетей. Демонстрируется использование в своих сетях уже обученных слоёв.
* Масштабирование ML. Приводятся примеры подготовки окружения для запуска их в облачной инфраструктуре.
* Получение данных от BigData. Рассказывается, как можно из Jupyter подключаться к различным источникам данных, в том числе BigData, для обучения моделей.
* Подготовка больших данных. В этом разделе описываются BigData технологии, такие как Hadoop и Spark, которые являются источниками данных для обучения моделей.
* ML в промышленной среде. В этом разделе рассказываются о таких системах, как Kubeflow и MLflow. Читатель может попробовать развернуть платформу, настроить процесс обучения и запустить в облачной среде модель, как это делается в компаниях.
Об авторе. Автор является корпоративным (главным) архитектором крупного подразделения (трайба) компании Сбер. Сбер лидер по объёмам накопленных данных в России и обладатель вычислительного центра для обучения моделей Кристофари, занимающей 39 место в ТОП500 мира и самый мощный в России и СНГ (первое место в ТОП50 СНГ), в нём разработано более 5000 моделей более тысячью DataSience учёных. Автор проходил обучение (Sber AI Architect, Sber Certified Architect) в Сбер в области искусственного интеллекта, создавал внутренние курсы по этой тематике для других архитекторов, разрабатывал предиктивную аналитику на машинном обучении в нейронных сетях для универсальных облачных систем, участвовал в качестве ментора (команда заняла 2 место среди всех команд Сбер) и оценщиком на соревнованиях Сбер.
Введение в машинное обучение
Искусственный интеллект (Artificial Intelligence, AI) – это область науки, созданная на стыке многих академических наук. Терми бы введён в 1956 году, в эпоху попыток эмитировать работу человеческого мозга. Один из способов его достижения – машинное обучение (Machine Learning). Дисциплина машинное обучение (ML) строится на трёх составляющих: данных (разнородные данные), алгоритмах и признаках. Другие, смежные дисциплины, строятся на двух сущностях. Так, классическое программирование строится на алгоритмах, применяемых к конкретным признакам, Data Scienes – на данных и получаемых из них фичах, Data Mining – на обработке алгоритмах и данных. ML с помощью алгоритмов и фич предоставляет новые данных. Так, как ML использует фичи, которые подаются как основа для обучения, то он использует результаты Data Scienes. Для разработки самих сетей используются языки программирования.
Когда мы подаём нейронные сети данных, на их основе происходит обучение нахождению решений и выявление закономерностей и данных, ранее которых не было. Для обучения могут использоваться статистические алгоритмы, например, на языке R, поиск в глубину на языке Prolog или поиск в ширину на Refal, а также подстраивающиеся структуры – нейронные сети. Нейронные сети, в зависимости от задач, строятся по разным принципам, имеют структуру и по–разному обучаются. В последнее время наибольший прорыв получили нейронные сети представления данных (Representation learning), занимающиеся выявлением в информации закономерностей, так как саму информацию из–за её размеров они не могут запомнить. Большой эффект дают глубокие нейронные сети, имеющие множество уровней признаков, признаки на последующих уровнях строятся на основании признаков с предыдущих уровней, о них и пойдёт речь в этой главе.
Под Machine Learning (ML) понимается адаптация преобразования входных данных в выходные данные в зависимости от истории решений. Такой класс задач решается или алгоритмическим способом, или с помощью нейронных сетей. О том, где какое решение и в какой ситуации лучше применять далее и пойдёт речь. Для практического примера мы возьмём классификацию изображений с помощью обучения глубокой нейронной сети с учителем. Посмотрим её местоположение в классификации.
Типы построения:
* Классическое обучение (экспертное);
* Нейронные сети.