Просто о сложном: как человек учит машину учиться

0 View

Машинное обучение — дисциплина на стыке теории вероятностей, статистики и оптимизации, в рамках которой создаются компьютерные программы, способные обучаться. За последние годы дисциплина стала, пожалуй, самым популярным разделом Computer Science и активно применяется в самых разных областях — от научных лабораторий до банков и маркетинговых отделов компаний. Как научить машину учиться и почему это пользуется таким спросом, T&P рассказал специалист в области Computer Science, разработчик компании Yandex, аспирант МФТИ Виктор Кантор.


Машинное обучение является подразделом науки об искусственном интеллекте — науки о создании интеллектуальных машин, способных на творческую деятельность, которая традиционно считалась присущей только человеку. В 1959 году Артур Самуэль, который учил компьютер игре в шашки, дал следующее определение машинному обучению: «Это процесс, в результате которого машина (компьютер) способна показывать поведение, которое в нее не было явно заложено (запрограммировано)».
Эффективность машинного обучения в решении задач была продемонстрирована достаточно давно: еще в 1936 году знаменитый английский статистик Рональд Фишер сумел научить компьютер определять вид ириса по ширине цветка и чашелистика. В 60–70 годах XX века компьютеры уже начали обыгрывать лучших шахматистов, а на сегодняшний день достижения в этой области помогают компьютерам управлять автомобилями, рассчитывать прибыли компаний, предсказывать самые разные явления: от платежеспособности клиентов и пробок на дорогах до уровня мутаций в клетке.

Машина с предсказаниями.

Изучим процесс машинного обучения более подробно. Допустим, банку нужно выдать клиенту кредит. Разумеется, первому выгодно, чтобы человек вернул эти деньги, то есть оказался платежеспособным. У каждого клиента имеется набор характеристик, которые он предоставляет банку: возраст, пол, заработная плата, кредитная история, профессия, семейное положение и так далее. Заранее угадать, вернет ли конкретный человек свой кредит, только по его персональным данным невозможно. Но у банка имеется подобная информация о клиентах, вернувших кредит, а также о тех, кто оказался неплатежеспособным. Задача специалиста машинного обучения — построить алгоритм, прогнозирующий условное значение платежеспособности каждого нового клиента по уже существующим данным о других. Такие данные называются обучающей выборкой, а известные характеристики клиентов — признаками. Задачи подобного рода, когда по данным с уже известной классовой принадлежностью (обучающая выборка) на классы разбивается новая информация, относятся к задачам классификации. Задачи часто осложняются неидеальностью данных, поэтому одним из критериев хорошего алгоритма является его устойчивость к шумам.

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

«Мешок слов» и другие признаки.

Чтобы начать разделять данные по признакам, и в классификации, и в кластеризации нужно эти признаки найти. Допустим, необходимо отличить два текста — один про машины, а второй про политику. Каким образом из набора символов выделить признаки? Один из самых простых способов — так называемый «мешок слов». Составляется словарь, в котором присутствует само слово и его встречаемость в тексте. При анализе текстов можно искать характерные для каждой темы слова и, если они встречаются достаточно часто, делать некие выводы. Очевидно, что вряд ли в тексте о политике будут часто употребляться марки машин и технические детали, а в тексте про машины — политические термины. Однако у такого метода есть существенный минус: он не учитывает порядок слов. В случае определения темы это не играет большой роли, однако иногда оказывается критичным. Пример реальной задачи — мониторинг и оценка отзывов об услуге. Компании требуется отслеживать отзывы о товаре, автоматически разделять их на хорошие и плохие, чтобы обеспечивать обратную связь. Если такая задача будет решаться методом «мешка слов», то отзывы «Не ходите в другие магазины, здесь лучше» и «Не ходите в этот магазин, в других лучше» будут расценены одинаково. Поэтому в зависимости от типа поставленной задачи учитываются различные дополнительные признаки.

Так нужно ли вообще фильтровать признаки? Ведь на первый взгляд чем больше признаков мы возьмем, тем больше информации в результате получим. Но далеко не всегда увеличение количества признаков дает лучшие результаты. Например, если при предсказании, сколько человек придет на следующую лекцию «Физтех. Читалки», учитывать в качестве дополнительного параметра фазу Луны, то предсказание только ухудшится. А если таких «важных» факторов будет достаточно много, они могут задавить действительно значимые: время проведения лекции, строгость оценки лекционного предмета, близость к праздникам. Поэтому зачастую предсказания улучшают выбрасыванием ненужных признаков. Нередко неправильный признак для обучения дорого обходится разработчикам. Например, во время Второй мировой войны инженеры изучали вернувшиеся с поля боя подбитые самолеты, выявляли части, в которых были обнаружены серьезные повреждения, и дорабатывали их. Хотя по прошествии времени стала понятна простая мысль: смотреть надо было не на вернувшиеся, пусть и поврежденные самолеты, а на сбитые окончательно, ведь именно они и пострадали больше всего. Известно также, что количество пиратов, грабящих суда, обратно пропорционально эффекту от глобального потепления, однако эта корреляция выявляет только случайное временное совпадение двух процессов и не несет в себе никакого смысла.

Переобучение машины.

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

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

Главная проблема.

Машинное обучение активно прогрессирует, что вызывает ряд трудностей. Часть из них была описана выше: неидеальные данные, неоднозначности в выделении признаков, переобучение. Но на этом проблемы не заканчиваются. Допустим, мы получили данные, выделили признаки, написали алгоритм для разделения данных по комбинации признаков. Теперь необходимо оценить качество проделанной работы. Из-за проблемы переобучения задача не очень тривиальна: на обучающей выборке алгоритмы зачастую показывают завышенную результативность (как в примере с танками и студентом-зубрилой). Поэтому обучающую выборку много раз разными способами делят на две части — часть для обучения и часть для проверки уровня качества, а затем усредняют показатель, полученный в результате этих испытаний. Такой метод под названием cross validation активно используется специалистами.

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

Источник: http://theoryandpractice.ru/posts/12577-machine-learning