Кратчайшая история искусственного интеллекта
Искусственный интеллект, как научная область активно развивается с начала XIX века. Наибольшая активность в области происходила в 60-х и 70-х годах. В то время казалось, что ИИ это близкое будущее, что, в общем, не удивительно, т.к направление прогрессировало невероятно быстро. Компьютеры все чаще обыгрывали лучших шахматистов, а на исследования в области ИИ выделялись огромные деньги. Однако, к 1973 году стало понятно, что не все так хорошо, как кажется. В этом году был опубликован так называемый отчет Лайтхилла — документ «Искусственный интеллект: Общий обзор», дающий крайне пессимистические прогнозы для основных направлений отрасли. Документ предвещал наступление т.н. «зимы искусственного интеллекта».
Основными причинами «Зимы ИИ» стали:
- Проблема комбинаторного взрыва (Резкий рост временной сложности алгоритма при увеличении размера входных данных).
- Низкая производительность компьютеров (Более высокая производительность могла бы частично решить первую проблему).
- Проблема представлений знаний «здравого мысла» (Например, задача формализации процесса распознавания речи человеком не решена до сих пор).
- Парадокс Моравеца (Для компьютера многие задачи, очевидные с человеческой точки зрения, становятся сложными и наоборот).
Однако, уже имеющиеся достижения в области искусственного интеллекта не могли просто пропасть или заморозиться в ожидании лучших времен. Потеря перспективности ИИ положила начало развитию многих смежных областей, таких, как машинное обучение, компьютерное зрение, обработка естественных языков и т.д.
К своему удивлению, я не обнаружил на хабре статей по машинному обучению. Поэтому, в данном цикле статей я постараюсь исправить это недоразумение.
Введение в машинное обучение
Нестрогое определение машинного обучения дал Артур Самуэль в далеком 1959 году в своей инновационной работе по компьютерным шашкам. Он определил машинное обучение следующим образом:
Машинное обучение это процесс, в результате которого машина (компьютер) способна показывать поведение, которое в нее не было явно заложено (запрограммировано).
Если говорить о строгом, формальном определении, то его хорошо дал Том Митчел в своей книге о машинном обучении, ставшей классической.
Говорят, что компьютерная программа обучается на основе опыта E по отношению к некоторому классу задач T и меры качества P, если качество решения задач из T, измеренное на основе P, улучшается с приобретением опыта E.
Таким образом, машинное обучение — это подраздел искусственного интеллекта, изучающий алгоритмы, способные к обобщению и обучению. Машинное обучение находится на стыке многих разделов множества наук. В задачах машинного обучения часто применяются методы теории вероятностей, линейной алгебры, статистики, оптимизации и многих других дисциплин.
Список прикладных сфер применения машинного обучения невероятно широк. Сферы применения машинного обучения:
- Распознавание речи.
- Компьютерное зрение.
- Компьютерная лингвистика и обработка естественных языков.
- Медицинская диагностика.
- Техническая диагностика.
- Рубрикация текстов.
- Интеллектуальные игры.
В рамках машинного обучение существует большое количество открытых вопросов. Например:
- Какое количество и какой информации необходимо для обучения?
- Какие данные лучше выбирать для обучения и почему?
- Какой алгоритм решает поставленную задачу наилучшим образом?
- Как свести какую-либо задач обучения к аппроксимации или оптимизации некоторой функции?
Обучение может происходить как до работы программы (например, для распознавания лиц программа сначала учится, а затем работает на настоящих данных) или во время (например, для фильтрации спама).
Машинное обучение разделяется на несколько типов:
- Обучение с учителем (обучение по прецедентам) — На подмножестве рассматриваемых объектов известны ответы для каждого из них. Учителем, обычно, называют обучающую выборку пар объект-ответ. Задачей такого обучение является нахождение закономерности, согласно которой можно найти ответ для любого объекта.
- Частичное обучение — При частичном обучении большая часть ответов неизвестна.
- Активное обучение — Очень похоже на обучение с учителем с той разницей, что ответы изначально неизвестны. Основная идея состоит в том, что алгоритм сам может обучаться на малых выборках, если он сам выбирает какие данные ему нужны. То есть алгоритм составляет запросы, ответы на которые помогают ему обучаться.
- Стимулируемое обучение (обучение с подкреплением) — В этом случае правильных ответов не существует, а алгоритм пытается найти оптимальную стратегию.
- Обучение без учителя — (Алгоритм ищет не пары объект-ответ, а связи между объектами.
Рассмотрим подробнее обучение с учителем и без него.
Обучение с учителем
Определение
Пусть X — множество объектов, Y — множество ответов и имеется некоторая зависимость (детерминированная или вероятностная), позволяющая по x∈X предсказать y∈Y. То есть, если эта зависимость детерминированная, то существует некоторая функция ƒ*:X→Y. Причем изначально, эта зависимость известна только на объектах из обучающей выборки. Задача машинного обучения с учителем — научиться по новым объектам x∈X предсказывать y∈Y, т.е восстановить зависимость.
В зависимости от множества Y выделяют типы задач обучения:
- Задача классификации (Y={1,2,..,K} конечно) — множество X разбивается на K классов. По x∈X требуется предсказать к какому классу он принадлежит. В частности, задачей классификации является задача распознавания образов.
- Задача восстановления регрессии (Y=R) — требуется найти функцию ƒ из определенного класса, которая аппроксимирует ƒ*.
Практическое применение
Рассмотрим в качестве примера задачу медицинской диагностики.
Неформальная постановка задачи: по некоторому набору симптомов и характеристик пациента необходимо поставить диагноз или определить, что пациент здоров.
Формализуем задачу. Определим множество объектов X, как множество симптомов, а множество ответов Y, как множество всех существующих болезней и элемента «пациент здоров». Очевидно, что Y конечно, а, значит, перед нами задача классификации. Обучение будет проходить на достаточном объеме прецедентов.
Нам могут встречаться признаки различных типов:
- Бинарные (Пол, наличие боли в спине, в сознании ли пациент).
- Номинальные (Тип боли: колющая, режущая, ноющая).
- Порядковые (Общее состояние больного: удовлетворительное, средней тяжести, тяжелое, крайне тяжелое).
- Количественные (Температура тела, пульс, артериальное давление).
Пусть, например, у нас имеется некоторая информация о N пациентах. История болезни каждого из них состоит из информации о восьми различных характеристиках, а, также о том болен он сахарным диабетом или нет. Эта информация будет обучающей выборкой. Задача алгоритма — на основе обучающей выборки научиться по набору этих характеристик определять болен пациент (не из обучающей выборки) сахарным диабетом или нет.
Мы имеем N точек в 8-мерном пространстве.
Можно визуально представить расположение точек на бокс-диаграммах.
Можно спроецировать на двухмерную плоскость уровень глюкозы и индекс массы тела пациентов.
Задачей машинного обучения будет нахождение зависимости между набором характеристик и диагнозом. Однако, очевидно, что при небольшой обучающей выборке доверять программе будет нельзя. А вот при обучающей выборке в несколько сотен тысяч человек, машина будет правильно диагностировать в 99% случаев.
Обучение без учителя
Определение
В случае обучения без учителя, обучающая выборка состоит только из объектов. Пусть X — множество объектов. Задача программы — определить, как элементы из X связаны между собой. В частности, решить задачу кластеризации, т.е разбить объекты на группы таким образом, чтобы в одной группе оказались объекты похожие, а в разных — существенно различные.
Практическое применение
Рассмотрим в качестве примера задачу выделения групп родственных естественных языков на основе списка Сводеша. Список Сводеша — это список из 207 слов базового словаря языков.
На основе списка Сводеша можно построить матрицу родственности между языками.
В качестве заключения
Теперь каждый, кто осилил статью имеет общее представление о машинном обучении. Если хабрасообществу покажется интересным подобный цикл статей, мне будет интересно написать целый курс по машинному обучению в подобном стиле, и, возможно, рассмотреть несколько реальных задач с приведением исходного кода их решения.
Автор: Mellanore