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