Анонс: как устроено машинное обучение
Все кругом говорят про Искусственный Интеллект, создают вокруг него ореол таинственности и предсказывают фантастическое будущее. На конференциях обсуждают неизбежные угрозы человечеству. Так ли это на самом деле? Насколько мы далеки от создания компьютерного разума?
На самом деле очень далеки. Искусственный Интеллект принято разделять на сильный и слабый. Под сильным (или общим) ИИ понимают нечто, обладающее сознанием, способностью думать и решать любые задачи не хуже человека. Ему приписывают чувства, личные переживания, стремление к саморазвитию. На него возлагают надежды футурологи. Он справится со всеми проблемами человечества. Звучит впечатляюще, но ничего подобного сейчас в разработке нет. Нам бы сначала разобраться как наш естественный интеллект работает.
А вот слабый (или узкий) ИИ уже вокруг нас. Он у каждого в кармане и в компьютере: распознаёт голос, переводит тексты, рекомендует фильмы и покупки, формирует новостную ленту в фейсбуке. Короче говоря, решает конкретные довольно узкие задачи, с которыми хорошо справляется человеческий мозг, но непонятно, как их запрограммировать.
А действительно, как? Как научить компьютер различать объекты на фотографии, отличить кошку от собаки? Вывести формулу кошки? Не получится, слишком уж разнообразен кошачий мир. Но как человек узнаёт предметы окружающего мира? Очень просто. Уже с пелёнок ему показывают всё вокруг и называют своими именами: это мама, это папа, это кукла, а вон собачка побежала. Ребёнок запоминает соответствие внешнего вида и словесного описания. Давайте поступим так же с компьютером. Покажем ему тысячу кошек и собак, скажем, кто где – и компьютер по каким-то общим признакам буквально научится их различать.
В этом заключается идея машинного обучения – одного из главных направлений ИИ: компьютерная программа самостоятельно обучается на большом объёме специально подобранных данных. Тема крайне интересная и применима где угодно, в том числе на Голосе, чему я и хочу посвятить цикл статей, если будет встречный интерес.
А для начала подумаем над таким вопросом. Если компьютер такой умный, что обучается самостоятельно, то какова здесь роль программиста? И в чём отличие от традиционного программирования? Чтобы уяснить эту разницу, давайте представим пример из жизни.
Вы хотите получить паспорт. Обращаетесь в соответствующий орган, где вам дают список необходимых документов: заявление, свидетельство о рождении, квитанцию об оплате, 4 фотографии и так далее. Не будет в наличии хотя бы чего-то из данного списка – паспорта вам не видать. И наоборот, когда все документы в порядке, вы можете быть уверены в положительном результате. Причём результат будет полностью ожидаем: паспорт вам выдадут в оговоренные правилами сроки, в нём будут ваши персональные данные, уникальный личный номер и срок действия в соответствии с законом.
Этот процесс очень напоминает мне классическую компьютерную программу. Она принимает на вход строго заданный список параметров, действует по определённой логике (заданной программистом) и возвращает результат. Что именно она делает – складывает два числа, загружает картинку на хостинг Голоса или подсчитывает вознаграждение за пост – не важно. Главное, что это полностью предопределённый процесс, который будет стабильно работать. И любой другой программист сможет, глядя на исходный код, понять, что именно там происходит.
А теперь другая ситуация. Вы хотите получить американскую визу. Сразу же возникает элемент неопределённости: а куда собственно обращаться? Сейчас с этим туго, в свете политической напряжённости. Россиянам приходится выбирать консульства в соседних странах. Собрать нужные документы – та ещё задачка. Справки с работы, из банка, сведения о родственниках, имуществе – на собеседовании могут спросить что угодно. В довесок огромная форма DS-160 с её десятками вопросов. И нехилый денежный сбор.
И что в итоге? Можете ли вы быть уверены в получении визы? Нет. Никаких гарантий нет. Вы можете лишь надеяться на лояльность принимающей стороны. А в случае отказа вам скорее всего даже не объяснят причину. Получается некий чёрный ящик: как он устроен, какие именно факторы влияют на решение, вам неизвестно. Они наверняка есть: это могут быть сомнительные факты из вашей биографии, непроверенные источники дохода, слабая привязанность к нынешнему месту жительства, прошлые поездки за границу. И в совокупности эти факторы могут стать причиной отказа.
Это типичная задача для машинного обучения: спрогнозировать, выдадут вам визу или нет. Как и в случае с паспортом, на вход программы подаются требуемые параметры. Однако здесь они обрабатываются путём совсем неочевидных вычислений. Вместо понятного кода, на 100% продуманного программистом, здесь будут бессчётные математические операции над числами. В качестве результата программа тоже выдаст число: процент от 0 до 100, который означает вероятность получения визы.
Для того, чтобы программа работала хорошо, она должна обучиться на исторических данных. Где их взять? Люди на форумах охотно рассказывают о своём удачном и неудачном опыте. Кто-то даже выкладывает заполненные анкеты. Посредники, помогающие с оформлением документов, также обладают обширной клиентской базой. Всё это можно систематизировать и подготовить данные для машинного обучения – чем больше, тем лучше.
В этом и заключается роль программиста: собрать данные, представить их в цифровом формате, выбрать один из существующих алгоритмов и запустить обучение. Программа видит, что одна комбинация входящих параметров даёт положительный ответ, а при другой получен отказ. При этом она совершенно не понимает смысла этих параметров, для неё это просто набор цифр. Зато благодаря большому объёму данных компьютер может уловить некоторые закономерности между параметрами, о которых человек даже и не подозревал. В отличие от первого случая, когда для того, чтобы быть уверенным в выдаче паспорта, нам не нужно искать никакие закономерности – все правила и так известны и понятны.
Таким образом, программа обучается на данных. Разработчик же направляет её в нужную сторону: подбирает лучшие данные, отсеивает лишнее, находит оптимальный алгоритм. Этот циклический процесс повторяется до тех пор, пока эффективность предсказаний не перестанет улучшаться.
В этой вводной статье, надеюсь, мне удалось дать общее представление о теме. А в следующий раз мы пойдём на рыбалку (если ИИ посоветует).
Источники картинок:
- Photo by Alex Knight on Unsplash
- VISION-ARY
- Википедия
- Скриншот формы DS-160
- Pixabay