В статье рассматриваются общие сведения о машинном обучении, его основные виды, а также наиболее значительные библиотеки для машинного обучения на языке Python.
Ключевые слова: машинное обучение, искусственные нейронные сети, Python, Scikit-learn, TensorFlow.
Машинное обучение — основной способ демонстрации науки о данных широкой общественности. В машинном обучении вычислительные и алгоритмические возможности науки о данных соединяются со статистическим образом мышления, в результате возникает набор подходов к исследованию данных, связанных в основном с эффективностью и теорией о вычислении. Термин «машинное обучение» иногда рассматривают как некоторую «волшебную таблетку», которая решает все проблемы с данными, однако в реальности это не так. Хотя возможности этих методов огромны, для их эффективного использования необходимо хорошо разбираться в сильных и слабых сторонах каждого метода, как и в общих понятиях, таких как «систематическая ошибка» (bayes), «дисперсия» (varience), «переобучение» (overfitting), недообучение (underfitting) и т. д.
Машинное обучение часто рассматривают как часть сферы искусственного интеллекта, однако такая классификация нередко вводит в заблуждение. В контексте приложения методов машинного обучения к науке о данных, полезнее рассматривать машинное обучение как средство создания модели данных. Оно занимается построением математических моделей для исследования данных. Задачи обучения начинаются с появления в этих моделях настраиваемых параметров, которые можно приспособить для отражения наблюдаемых данных. Таким образом, программа обучается на реальных данных, после чего их можно будет использовать для предсказания и понимания различных аспектов данных новых наблюдений.
На базовом уровне машинное обучение можно разделить на два основных вида:
— машинное обучение с учителем (supervised learning);
— машинное обучение без учителя (unsupervised learning).
Машинное обучение с учителем включает моделирование признаков данных и соответствующих им меток. После выбора модели ее можно использовать для присвоения меток новым, неизвестным ранее данным. Оно разделяется на задачи классификации и задачи регрессии. При классификации метки представляют собой дискретные категории, а при регрессии они являются непрерывными величинами.
Машинное обучение без учителя включает моделирование признаков набора данных без каких-либо меток. Эти модели включают такие задачи как кластеризация и понижение размерности. Алгоритмы кластеризации служат для выделения отдельных групп данных, в то время как алгоритмы понижения размерности предназначены для поиска более сжатых представлений данных.
Кроме того существует так называемый метод частичного обучения, который сочетает в себе достоинства и недостатки первых двух способов [1].
Язык Python, появившийся в 1991 году быстро набрал популярность и стал общепринятым языком для машинного обучения. Он сочетает в себе мощь высокоуровневых языков программирования и простоту использования предметно-ориентированных скриптовых языков программирования. Python имеет библиотеки для загрузки и визуализации данных, статистических вычислений, обработки изображений и многого другого. Самые популярные библиотеки для машинного обучения на языке Python: Scikit-learn, PyTorch, Caffe, TensorFlow, OpenCV. Подробнее рассмотрим библиотеки Scikit-learn и TensorFlow [2].
Scikit-learn — одна из самых старых и некогда популярных библиотек для обучения нейронных сетей. Она была создана в 2007 году и до сих пор является надежным инструментом в таких областях, как: классификация, регрессия, кластеризация, моделирование.
Основные принципы API статистического оценивания библиотеки Scikit-learn:
— единообразие (интерфейс всех объектов идентичен и основан на ограниченном наборе методов);
— контроль (видимость всех задаваемых значений параметров как открытых атрибутов);
— ограниченная иерархия объектов (классы языка Python используются только для алгоритмов, наборы данных представлены в стандартных форматах);
— объединение (многие задачи машинного обучения можно выразить в виде последовательности алгоритмов более низкого уровня);
— разумные значения по умолчанию (библиотека задает соответствующие значения по умолчанию для необходимых моделей пользовательских параметров).
На практике эти принципы очень облегчают изучение библиотеки Scikit-learn.
Чаще всего использование API статистического оценивания библиотеки Scikit-learn включает следующие шаги:
- выбор класса модели с помощью импорта соответствующего класса-оценивателя из библиотеки Scikit-learn;
- выбор гиперпараметров модели путем создания экземпляра этого класса с соответствующими значениями;
- компоновка данных в матрицу признаков и целевой вектор;
- обучение модели на своих данных;
- применение модели к новым данным [1].
TensorFlow — самая популярная библиотека для машинного обучения на данный момент. Она обладает простым, интуитивно понятным интерфейсом, облегчающим введение в работу с нейронными сетями, идеально подходит для разработки сложных проектов, таких как создание многослойных нейронных сетей, а ее методы обучения постоянно улучшаются.
Рассмотрим архитектуру библиотеки TensorFlow более подробно. Она оперирует статическим графом вычислений. Вначале определяется граф, далее запускаются вычисления и, если необходимо, вносятся изменения в архитектуру, а модель обучается заново. Такой подход выбран ради эффективности, но многие современные инструменты для машинного обучения умеют учитывать изменения в процессе обучения без существенной потери скорости.
Библиотеку TensorFlow можно использовать, чтобы производить численные вычисления. В рамках данной библиотеки эти вычисления производятся с помощью, так называемых data-flow графов. В этих графах вершины представляют собой математические операции, в то время как ребра представляют собой данные, которые обычно представляются в виде многомерных массивов или тензоров, сообщающихся между этими ребрами.
Название «TensorFlow» происходит от вычислений, которые искусственная нейронная сеть производит с многомерными данными и тензорами, буквально — «поток тензоров». Тензоры являются основными объектами в TensorFlow и реализованы как n-мерные массивы данных, которые позволяют представлять данные в сложных измерениях. Каждое измерение можно рассматривать как отдельный признак.
В заключение следует сказать, что машинное обучение стало неотъемлемой частью нашей жизни, начиная от постановки медицинского диагноза c последующим лечением и заканчивая поиском друзей в социальных сетях. Одним из самых популярных инструментов для машинного обучения является язык Python, который сочетает в себе мощь и простоту использования. Он позволяет работать с множеством библиотек для машинного обучения, например Scikit-learn, PyTorch, Caffe, TensorFlow, OpenCV.
Литература:
- Лекция 6. Python и Машинное обучение [Электронный ресурс] — Режим доступа: https://www.youtube.com/watch?v=CqNf4mfd4Hw&feature=emb_logo (дата обращения: 03.03.2021).
- Балабанов, Н. Р. Обзор библиотек обучения нейронных сетей на языке Python / Н. Р. Балабанов. — Текст: непосредственный // Молодой ученый. — 2020. — № 46 (336). — С. 6–8. — URL: https://moluch.ru/archive/336/75084/ (дата обращения: 03.03.2021).
- Краткое руководство по Tensorflow [Электронный ресурс] — Режим доступа: https://pythonist.ru/kratkoe-rukovodstvo-po-tensorflow/ (дата обращения: 03.03.2021).