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