Компания машинного обучения, что в ней особенного?
Машинное обучение — это подраздел искусственного интеллекта, который занимается разработкой и созданием алгоритмов, позволяющих компьютерам со временем улучшать свою производительность на основе данных, таких как данные сенсоров или базы данных. Wikipedia
Десять лет назад компаний, занимающихся машинным обучением, практически не существовало, или, скажем, они были крайне маргинальными. Основная причина этого заключалась в том, что в то время не было столь многих алгоритмов, реально работающих и приносящих бизнес-ценность. Например, автоматический перевод до сих пор работает слабо и далек от того, чтобы быть пригодным для большинства бизнесов.
Lokad занимает особое место в обширной области машинного обучения, с особым акцентом на статистическое обучение. Лично я работаю в сфере машинного обучения уже почти десятилетие, и до сих пор удивительно, насколько вещи отличаются в этой области по сравнению с типичным миром готового программного обеспечения. Машинное обучение — это отдельный мир программного обеспечения.
Научный прогресс в областях, которые ранее казались искусственным интеллектом, шел медленно, очень медленно по сравнению с большинством других областей программного обеспечения. Но малопознанный факт заключается в том, что научный прогресс был стабильным; и на сегодняшний день существует довольно большое количество успешных компаний, занимающихся машинным обучением:
- Умный спам-фильтр: черт побери, akismet поймал более 71 000 спам-комментариев в моем блоге, с практически нулевым числом ложных срабатываний, насколько я могу судить.
- Распознавание голоса: Dragon Dictate теперь справляется довольно впечатляюще уже спустя несколько минут настройки пользователем.
- Распознавание рукописного ввода и даже распознавание уравнений встроены в Windows 7.
Машинное обучение стало мейнстримом.
- Продукт меняется, а пользовательский интерфейс остается неизменным
Для большинства софтверных компаний привлечение чего-то нового для глаз клиента – это основной способ получения повторяющихся доходов. SaaS постепенно меняет этот финансовый аспект, но все же, для большинства SaaS-продуктов эволюция сопровождается очень ощутимыми изменениями в пользовательском интерфейсе.
Наоборот, в машинном обучении разработка обычно не означает добавление каких-либо новых функций. Большая часть эволюции происходит на глубоком уровне с минимальными или вовсе отсутствующими поверхностными изменениями. Google Search — вероятно, самый успешный из всех продуктов машинного обучения — печально известен своей простотой и так остаётся уже десятилетие. Недавно была добавлена настройка ранжирования на основе предпочтений пользователя, но это изменение произошло почти через 10 лет после запуска, и, я полагаю, большинство пользователей его даже не заметили.
Тем не менее, это не означает, что ребята из Google бездействовали последние 10 лет. Наоборот, команды Google неустанно совершенствовали свои технологии, одерживая победу за победой над веб-спамерами, которые сейчас используют очень хитрые приемы.
- Десять порядков увеличения производительности
Когда речь заходит о производительности программного обеспечения, обычные операции с готовым софтом происходят в пределах 100 мс. Например, я предполагаю, что обычные времена вычислений на стороне сервера, необходимые для генерации веб-приложения, варьируются от 5 мс для самых оптимизированных приложений до 500 мс для самых медленных. Если это время больше, пользователи перестанут посещать ваш сайт. Хотя это едва ли можно проверить, я предполагаю, что такой диапазон производительности характерен для 99% веб-приложений.
Но когда дело касается машинного обучения, типичные вычислительные затраты варьируются более чем на 10 порядков, от миллисекунд до недель.
На сегодняшний день цена 1 месяца работы процессора на 2 ГГц снизилась до $10, и я ожидаю, что в ближайшие 5 лет эта цена упадет ниже $1. Кроме того, один месяц работы процессора можно сжать в несколько часов реального времени благодаря масштабной параллелизации. Для большинства алгоритмов машинного обучения точность можно повысить, выделив больше ресурсов процессора для решения задачи.
Таким образом, получение 1% повышения точности при инвестициях в 1 месяц работы процессора ($10) может быть чрезвычайно прибыльным, но такое рассуждение кажется просто безумием для большинства, если не для всех, областей программного обеспечения вне машинного обучения.
- Жесткие проблемы масштабируемости
Масштабирование Web2.0, такого как Twitter, действительно является вызовом, но в конечном итоге 90% решения сводится к единственной технике: кэшированию в памяти наиболее часто просматриваемых элементов.
Наоборот, масштабирование алгоритмов машинного обучения — обычно ужасающая по сложности задача. Google потребовались несколько лет, чтобы освоить масштабную диагонализацию разреженных матриц (PageRank); и линейная алгебра явно не является самой сложной областью математики, когда речь идет о проблемах машинного обучения.
Основная проблема машинного обучения заключается в том, что самый эффективный способ повысить точность заключается в добавлении большего объема входных данных. Например, если вы хотите улучшить точность своего спам-фильтра, вы можете попробовать усовершенствовать алгоритм, но также можно использовать большую базу данных, в которой электронные письма уже помечены как спам или не спам. Фактически, если у вас достаточно вычислительной мощности, зачастую намного проще повысить точность за счет увеличения объема входных данных, чем за счет более интеллектуальных алгоритмов.
Тем не менее, обработка большого объема данных в машинном обучении — это сложная задача, потому что вы не можете наивно разделить ваши данные. Наивное разбиение эквивалентно отбрасыванию входных данных и выполнению локальных вычислений, которые не используют всю доступную информацию. Вывод: машинное обучение требует очень хитрых способов распределения своих алгоритмов.
- Обратная связь от пользователей обычно оказывается совершенно неверной
Умные люди советуют проводить тестирование удобства использования в коридоре. Это также относится к любому пользовательскому интерфейсу вашего продукта машинного обучения, но когда речь идет об улучшении ядра вашей технологии, обратная связь от пользователей практически бесполезна и, если вовсе реализована, может оказаться вредной.
Основная проблема заключается в том, что большинство хороших / правильных / ожидаемых поведений в машинном обучении, к сожалению, являются контринтуитивными. Например, в Lokad частая жалоба клиентов заключается в том, что мы предоставляем плоские прогнозы, которые воспринимаются как некорректные. Однако эти плоские прогнозы соответствуют интересам этих клиентов, поскольку они оказываются более точными.
Несмотря на мои знания в области фильтрации спама, я почти уверен, что 99% предложений, которые я придумываю и отправляю команде akismet, для них окажутся просто ерундой, потому что задача фильтрации спама заключается не в том, как отфильтровать спам, а в том, как отфильтровать спам, не затрагивая легитимные письма. И да, сотрудники Pfizer имеют право обсуждать по электронной почте соединения цитрата силденафила, не опасаясь, что все их письма будут отфильтрованы.
- Но пользовательские данные хранят истину
Сымитированные данные и сценарии в основном не имеют смысла в машинном обучении. Реальные данные оказываются удивительными во многих неожиданных аспектах. Работа в этой области на протяжении 10 лет показала, что каждый новый набор данных, который я когда-либо исследовал, оказывался удивительным по-своему. Работать с выдуманными данными полностью бессмысленно. Без реальных данных клиентов ничего нельзя сделать в машинном обучении.
Этот аспект часто приводит к проблеме курицы и яйца в машинном обучении: если вы хотите начать оптимизировать показ контекстной рекламы, вам нужно огромное количество рекламодателей и издателей. Но без них вы не сможете усовершенствовать свою технологию и, как следствие, убедить их присоединиться.
- Настройка против математики, эволюция против революции
Умные люди утверждают, что полное переписывание с нуля – это стратегическая ошибка, которая часто губит софтверные компании. Однако в машинном обучении переписывание с нуля зачастую является единственным способом спасти вашу компанию.
Где-то в конце девяностых Altavista, ведущая поисковая система, не удостоилась времени на переписывание своей технологии ранжирования, основанной на безумных математических идеях крупномасштабной диагонализации. В результате они оказались в тени небольшой компании (Google), возглавляемой группой неопытных людей.
Настройка и постепенное улучшение лежат в основе классической разработки программного обеспечения, и это также справедливо для машинного обучения — как правило. Достижение следующего процента точности часто осуществляется путем тонкой настройки и доработки существующего алгоритма, с созданием множества ad-hoc механизмов отчетности для более глубокого понимания поведения алгоритма.
Однако каждый новый процент повышения точности таким способом требует в десять раз больше усилий, чем предыдущий; и спустя несколько месяцев или лет ваша технология просто застревает в тупике.
Именно здесь вступает в игру серьезная математика. Математика имеет решающее значение для перехода на следующий уровень производительности, для такого скачка, когда вы достигаете 10% улучшения, которое казалось невозможным с предыдущим подходом. Затем попытки применения новых теорий напоминают игру в рулетку: большую часть времени вы проигрываете, и новая теория не приносит дополнительных улучшений.
В конечном итоге, продвижение в машинном обучении зачастую означает попытки подходов, обреченных на провал с высокой вероятностью. Но время от времени что-то действительно работает, и технология совершает рывок вперед.