Machine Learning

Machine learning (машинное обучение) – дисциплина компьютерных наук, изучающая алгоритмы, которые последовательно улучшаются в результате накопления опыта. Задача алгоритмов машинного обучения состоит не в том, как запрограммировать компьютер с условиями if – else, а в том, как построить математическую модель на основе множества данных для получения предсказаний или решений. Поэтому Machine Learning может быть применен в любой области, где есть большой набор данных (Big Data).

История развития Machine Learning

1950 год. Алан Тьюринг предложил тест, который отвечает на вопрос: “Могут ли машины мыслить” [1]. Но, по существу, Тьюринг предлагает заменить этот философский вопрос на более прагматический: “Могут ли машины выполнять те функции и действия, которые выполняет человек”. С позиции настоящего времени можно ответить: “Да, но полностью человека заменить не удалось”.

1957 год. Франк Розенблатт разработал первую нейронную сеть для компьютеров – перцептрон (Perceptron). Смоделированная сеть на компьютере IBM 704 показала, что машины могут обучаться [2].

1959 год. Артур Самюэл написал самообучающуюся игру в шашки. Программа пыталась настроить веса оценочной функции, чтобы получить наилучшую стратегию для победы в данный момент времени [3].

1967 год. Был предложен метод ближайших соседей, который стал базовым алгоритмом для распознавания образов. Он также был использован для решения задачи коммивояжера [4].

1979 год. Студенты Стэнфордского университета изобрели робота, который мог перемещаться по комнате, обходя препятствия [5].

1981 год. Геральд Дежон предлагает концепт “объяснение на основе обучения (Explanation Based Learning, EBL)”, с помощью которого компьютер анализирует тренировочный пакет данных и генерирует обобщенное правило, отбрасывая неважные данные из пакета [6].

1986 год. Был предложен метод обратного распространения ошибки (Backpropogation).

1997 год. Deep Blue, разработка IBM, выиграла мировой чемпионат по шахматам [7].

2007 год. Рекуррентные сети LSTM (Long short-term memory) применяются для распознавания речи [8].

2011 год. Программа Watson, еще одна разработка IBM, побеждает людей в игру-викторину Jeopardy! (аналог “Своей игры”) [9].

2014 год. DeepFace, программа от Facebook, с высокой точностью распознает лица[10].

2016 год. AlphaGo от Google побеждает в го чемпиона мира [11]. После этого года специалисты Machine Learning снова находятся в фазе накопления знаний и улучшения существующих моделей, особенно благодаря вычислениям на GPU, что уменьшает время обучения.

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

Контролируемое обучение (обучение с учителем, supervised learning) используется в случаях, когда есть маркированные выходные данные. Благодаря возможности сравнивать предсказанные значения с ожидаемыми, модель можно настраивать. Рекомендуется сводить целевые задачи свести к этому виду машинного обучения.

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

Обучение с частичным привлечением учителя (Semi-supervised learning) применяется, когда есть и размеченные, и неразмеченные выходные данные. Такое разделение связано с тем, что разметка данных является сложным, длительным, а иногда и затратным процессом.

Обучение с подкреплением использует метод “кнута и пряника”. Если машина (агент) выполняет свои действия в зависимости от состояния среды хорошо, то ей дают пряник; в противном случае кнут, и она перенастраивается. Особое применение этот тип обучения нашел в беспилотных автомобилях и играх.

Бесплатные, открытые и поддерживаемые библиотеки машинного обучения для Python

  • ApacheMXNet – фреймворк глубокого обучения, который используется для создания моделей и развертывания их в production. Интерфейс схож с TensorFlow, помимо Python поддерживает еще 10 языков программирования.
  • Caffe– фреймворк, который поддерживает интерфейс для Python. В первую очередь нацелен на решение задачи классификации и сегментации изображений на CPU или GPU. Yahoo! использует Caffe вместе с Apache Spark, назвав эту интеграцию CaffeOnSpark [12].
  • Keras– библиотека для построения архитектур глубокого обучения (Deep Learning). На данный момент является интерфейсом для TensorFlow 2.
  • PySparkMLlib – модуль PySpark, который предоставляет некоторые алгоритмы машинного обучения (по сравнению с Scikit-learn их меньше) с интерфейсом для распределенных вычислений.
  • Pytorch– библиотека глубокого обучения от Facebook. Является конкурентом TensorFlow и применяется в Tesla, Uber [13].
  • Scikit-learn– библиотека с широким перечнем услуг для классического Machine Learning (без глубокого обучения).
  • TensorFlow– разработанный в Google фреймворк является одним из самых популярных среди Data Scientist’ов. Обладает понятным интерфейсом, позволяет проводить быстрые эксперименты с моделями.

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

Читайте также:
ТОП-4 Python-библиотек машинного обучения по версии Kaggle за 2019 год
4 шага к моделированию Machine Learning: практические примеры на Python
3 метода детектирования объектов c Deep Learning: R-CNN, Fast R-CNN и Faster R-CNN