Введение в машинное обучение

Машинное обучение – это подполе искусственного интеллекта (AI). Цель машинного обучения состоит в анализе структур данных и создании на их основе моделей, которые могут понимать и использовать люди.

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

Машинное обучение положительно влияет на все современные технологии.

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

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

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

Методы машинного обучения

В машинном обучении задачи обычно подразделяются на широкие категории. Эти категории основаны на том, как проходит обучение или как разработанная система получает обратную связь.

Два наиболее широко используемых метода машинного обучения:

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

Рассмотрим эти методы более подробно.

Машинное обучение с учителем

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

К примеру, в машинном обучении с учителем алгоритм может получить набор изображений рыб, маркированных как fish, и набор изображений водоемов, маркированных как water. Изучая эти данные, позже алгоритм должен суметь распознать немаркированные изображения рыб и как fish и немаркированные изображения водоемов как water.

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

Машинное обучение без учителя

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

Цель обучения без учителя – обнаружение в наборе данных явных и скрытых шаблонов и черт, что позволяет вычислительной машине автоматически обнаруживать схожесть, необходимую для классификации необработанных данных.

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

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

Подходы в машинном обучении

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

Для исследования взаимосвязи между количественными переменными обычно используются понятия корреляции и регрессии.

Корреляция – это мера сходства между двумя переменными, которые не являются ни зависимыми, ни независимыми. Регрессия на базовом уровне используется для изучения взаимосвязи между одной зависимой и одной независимой переменной. Регрессионная статистика может прогнозировать зависимую переменную, если известна независимая переменная, а потому регрессия позволяет использовать возможности прогнозирования.

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

Метод k-ближайшего соседа

Метод k-ближайшего соседа (сокращенно k-N) – это модель распознавания шаблонов, которая может использоваться как для классификации, так и для регрессии. Здесь k является положительным целым числом (обычно небольшим). В любой классификации или регрессии вход будет состоять из k-ближайших примеров обучения в пространстве.

Сосредоточимся на методах для классификации объектов в k-NN. Вывод этого метода относит объект к одному из доступных классов. Это присвоит новый объект классу, наиболее часто используемому среди его ближайших соседей. Если k = 1, объект присваивается классу ближайшего соседа.

Для примера представьте, что у нас есть два класса объектов: красные ромбы и синие треугольники.

Если в пространстве появляется новый объект – к примеру, зеленый круг, — алгоритм должен отнести его к определенному классу.

При k = 3 алгоритм находит трех ближайших соседей зеленого круга и классифицирует их. Предположим, тремя ближайшими соседями круга оказались один ромб и два треугольника. В таком случае круг будет отнесен к классу треугольников.

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

Деревья принятия решений

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

Цель дерева решений – создать модель, которая будет прогнозировать целевое значение на основе входных переменных.

В предсказательной модели атрибуты данных, которые определяются посредством наблюдения, представлены ветвями, а выводы о целевом значении данных представлены в виде листьев.

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

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

Глубокое обучение

Глубокое обучение (или глубинное обучение) пытается подражать тому, как человеческий мозг может обрабатывать световые и звуковые стимулы в зрение и слух. Архитектура глубокого обучения вдохновлена биологическими нейронными сетями и состоит из нескольких слоев в искусственной нейронной сети, которая включает в себя ряд аппаратных средств и графических процессоров.

Глубокое обучение использует каскад нелинейных модулей обработки, чтобы извлекать или преобразовывать функции (или представления) данных. Выход одного слоя служит входом следующего слоя. При глубоком обучении с учителем алгоритмы могут служить для классификации данных, а без учителя – для анализа шаблонов.

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

Подходы глубокого обучения оказали существенное влияние на развитие компьютерного зрения и распознавания речи. Хорошим примером системы, которая использует глубокое обучение, является IBM Watson.

Языки программирования и машинное обучение

При выборе языка программирования для машинного обучения нужно учитывать доступные функции и библиотеки.

Сегодня можно предположить, что наиболее востребованным языком программирования в профессиональной области машинного обучения является Python. Затем идет Java, затем R и C ++.

Популярность Python может быть вызвана интенсивной разработкой систем глубокого обучения: TensorFlowPyTorch и Keras. Будучи языком с удобочитаемым синтаксисом, который можно использовать в качестве языка сценариев, Python одинаково производителен как в предварительной обработке данных, так и в работе с данными напрямую. Библиотека машинного обучения scikit-learn построена на основе нескольких других пакетов Python, популярных среди разработчиков: NumPySciPy и Matplotlib.

Читайте также:

Java обычно используется корпорациями и сторонними разработчиками настольных приложений, которые работают над корпоративным машинным обучением. Обычно Java не рассматривается как вариант для программистов-новичков, которые хотят научиться машинному обучению; этот язык предпочитают те, у кого есть опыт разработки Java, достаточный для применения в машинном обучении. Что касается приложений машинного обучения в промышленности, обычно Java чаще, чем Python, используется в сетевой безопасности, в том числе для предотвращения кибератак и обнаружения мошенничества.

Среди библиотек машинного обучения для Java:

  • Deeplearning4j, распределенная библиотека с открытым исходным кодом для глубокого обучения, написанная для Java и Scala.
  • MALLET  (MAchine Learning for LanguagE Toolkit), набор инструментов для машинного обучения по текстам, который включает поддержку обработки естественного языка, моделирования тем, классификации документов и кластеризации.
  • Weka, набор алгоритмов машинного обучения для обработки интеллектуального анализа данных.

R — язык программирования с открытым исходным кодом, используемый в основном для статистических вычислений. За последние годы он стал популярным и пользуется большим успехом у ученых. R обычно не используется в промышленных производственных средах, но его популярность в промышленных приложениях растет из-за повышенного интереса к науке о данных. Популярные пакеты для машинного обучения в R:

  • caret (сокращение от Classification And REgression Training), библиотека для создания прогностических моделей.
  • randomForest, пакет для классификации и регрессии.
  • e1071, пакет, предоставляющий функции статистики и теории вероятностей.

Язык C++ обычно используется для машинного обучения и искусственного интеллекта в игровых или роботизированных приложениях (в том числе для передвижения роботов). Разработчики встроенных вычислительных аппаратов и инженеры-электроники предпочитают использовать C++ или C в приложениях для машинного обучения благодаря их гибкости и предлагаемому уровню контроля. Популярными библиотеками машинного обучения C++ являются масштабируемый пакет mlpack, Dlib с широким набором алгоритмов машинного обучения и модульная библиотека с открытым исходным кодом Shark.

Человеческий фактор в машинном обучении

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

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

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

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

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

Заключение

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

Машинное обучение постоянно развивается, потому важно иметь в виду, что алгоритмы, методы и подходы будут изменяться со временем.

Читайте также:

Tags: ,