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

Десять лет назад компании по машинному обучению практически не существовали, или скажем, были маргинальными в лучшем случае. Основная причина такой ситуации заключалась в том, что на тот момент не было так много алгоритмов, которые действительно работали и приносили бизнес-ценность. Автоматический перевод, например, до сих пор практически не работает и далеко не пригоден для использования в большинстве предприятий.

Lokad вписывается в широкую область машинного обучения, с особым интересом к статистическому обучению. Лично я работаю в области машинного обучения уже почти десять лет, и все еще удивляюсь, насколько сильно отличается этот мир от типичного мира программного обеспечения. Машинное обучение - это свой собственный мир программного обеспечения.

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

  • Умный спам-фильтр: черт возьми, akismet поймал более 71 000 спам-комментариев на моем блоге, практически без ложных срабатываний, насколько я могу судить.
  • Распознавание голоса: Dragon Dictate теперь делает впечатляющую работу всего через несколько минут настройки пользователем.
  • Распознавание почерка и даже распознавание уравнений встроены в Windows 7.

Машинное обучение стало широко распространенным.

1. Продукт меняется, но пользовательский интерфейс остается

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

Напротив, в машинном обучении разработка обычно не означает добавление новой функции. Большая часть эволюции происходит глубоко внутри с очень малыми или без видимых изменений. Google Search -, вероятно, самый успешный из всех продуктов машинного обучения - известен своей простотой и таким остается уже десять лет. Недавно была добавлена настройка ранжирования на основе предпочтений пользователей, но эти изменения произошли почти через 10 лет после запуска и, я думаю, до сих пор остаются незамеченными большинством пользователей.

Однако, это не означает, что сотрудники Google бездействовали последние 10 лет. Совсем наоборот, команды Google усердно улучшали свои технологии, одерживая победу за победой над веб-спамерами, которые теперь используют очень хитрые трюки.

2. Десять порядков в производительности

Когда речь идет о производительности программного обеспечения, обычные операции shrinkwrap выполняются за 100 мс. Например, я подозреваю, что обычное время вычислений на стороне сервера, необходимое для генерации веб-приложения, составляет от 5 мс для наиболее оптимизированных приложений до 500 мс для самых медленных. Будьте медленнее, и ваши пользователи откажутся посещать ваш веб-сайт. Хотя это трудно проверить, я предполагаю, что этот диапазон производительности справедлив для 99% веб-приложений.

Но когда дело доходит до машинного обучения, типичные вычислительные затраты варьируются на несколько порядков величины, от миллисекунд до недель.

На сегодняшний день стоимость 1 месяца работы процессора на 2 ГГц снизилась до $10, и я ожидаю, что эта цена упадет до $1 в ближайшие 5 лет. Кроме того, один месяц работы процессора может быть сжат в несколько часов реального времени благодаря масштабированию параллельных вычислений. Для большинства алгоритмов машинного обучения точность может быть улучшена за счет выделения большего количества процессорного времени для выполнения задачи.

Таким образом, получение 1% точности с инвестицией в 1 месяц работы процессора ($10) может быть чрезвычайно прибыльным, но такое рассуждение является просто безумием для большинства, если не для всех, областей программного обеспечения, кроме машинного обучения.

  1. Проблемы масштабируемости высокого уровня

Масштабирование веб-приложения Web2.0, например, Twitter, действительно представляет собой сложную задачу, но, в конечном счете, 90% решения заключается в одной технике: кэшировании в памяти наиболее часто просматриваемых элементов.

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

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

Однако обработка большого объема данных в машинном обучении - это сложная проблема, потому что вы не можете наивно разделить свои данные. Наивное разделение эквивалентно отбрасыванию входных данных и выполнению локальных вычислений, которые не используют все доступные данные. В итоге: машинному обучению требуются очень умные способы распределения своих алгоритмов.

  1. Обратная связь пользователя обычно неправильна

Умные люди советуют проводить тестирование удобства в коридоре. Это также относится к любому пользовательскому интерфейсу, который вы используете в своем продукте машинного обучения, но когда речь идет о улучшении ядра вашей технологии, обратная связь пользователя практически бесполезна, если она действительно реализована.

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

Хотя я хорошо разбираюсь в фильтрации спама, я уверен, что 99% предложений, которые я придумываю и отправляю людям из Akismet, для них будут просто мусором, просто потому что задача в фильтрации спама не заключается в как фильтровать спам, а в как фильтровать спам, не фильтруя легитимные электронные письма. И да, сотрудники Pfizer имеют право обсуждать по электронной почте соединения силденафила цитрата, не фильтруя все их письма.

  1. Но пользовательские данные содержат истину

Мокрые данные и сценарии в основном не имеют смысла в машинном обучении. Реальные данные часто оказываются удивительными во многих неожиданных способах. Работая в этой области уже 10 лет, каждый новый набор данных, с которым я когда-либо работал, был удивителен во многих отношениях. Работа с выдуманными данными совершенно бесполезна. Без настоящих данных клиентов под рукой вы не можете сделать ничего в машинном обучении.

Этот аспект часто приводит к проблеме курицы и яйца в машинном обучении: если вы хотите начать оптимизировать отображение контекстной рекламы, вам нужно множество рекламодателей и издателей. Однако без множества рекламодателей и издателей вы не можете усовершенствовать свою технологию и, следовательно, не можете убедить множество рекламодателей и издателей присоединиться.

  1. Настройка против математики, эволюция против революции

Умные люди советуют, что переписывание с нуля - это тип стратегической ошибки, которая часто убивает программные компании. Однако в машинном обучении переписывание с нуля часто является единственным способом спасти вашу компанию.

Где-то в конце девяностых годов Altavista, ведущий поисковый движок, не потратил время на переписывание своей технологии ранжирования на основе безумных математических идей, основанных на диагонализации большого масштаба. В результате они были подавлены небольшой компанией (Google), возглавляемой группой неопытных людей.

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

Однако каждый новый процент точности таким образом стоит вам в десять раз больше усилий, чем предыдущий; и через несколько месяцев или лет ваша технология оказывается в тупике.

Вот где вступает в игру математика. Математика критически важна для перехода на следующий уровень производительности, такой прыжок, при котором вы делаете улучшение на 10%, которое казалось даже невозможным с предыдущим подходом. Затем, попытка новых теорий - это как игра в рулетку: большую часть времени вы проигрываете, и новая теория не приносит никаких дополнительных улучшений.

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