![](https://habrastorage.org/webt/ax/ja/_g/axja_ggj7npbgsf32kkrbya1jwu.jpeg)
Инженер по машинному обучению Джордж Хосу задает вопрос: «Какие проблемы решает машинное обучение?». Или конкретнее, с учетом современного развития отрасли: «Какие проблемы нейросеть способна решить на практике?». Команда Mail.ru Cloud Solutions перевела статью, так как рассуждения на эту тему, как нам кажется, встречаются редко.
На первый взгляд, этот вопрос рассматривают такие теории, как вероятно приближенно корректное обучение (PAC learning). Однако они изучают машинное обучении в целом, но на практике не дают никаких осмысленных ответов. Автор утверждает, что если взять конкретную проблему, то часто можно разумно и уверенно ответить, сможет нейросеть решить ее или нет. Достаточно взглянуть на исходные данные и саму задачу.
Наверное, полезно изложить правила, которые позволяют находить ответы на такие вопросы. «Я ни в коем случае не утверждаю, что эти правила точны или основаны на фактических данных в научном смысле, но это может стать хорошей отправной точкой для дальнейшего обсуждения», — пишет автор статьи.
Правило 1. Нейронная сеть почти наверняка решит проблему, если ее уже решил другой алгоритм ML
Если проблему можно решить каким-то из существующих методов машинного обучения (ML), то относительно универсальная нейронная сеть после значительного увеличения параметров тоже сможет ее решить.
Например, игра в шахматы — уже решенная проблема. Компьютерные программы обыгрывают человека с помощью небольших деревьев решений и нескольких простых эвристик поиска (пример: Chess-AI-TDD).
Таким образом, мы можем предположить, что достаточно универсальную нейросеть, которая использует значительно больше параметров, чем исходные модели на основе деревьев решений, можно обучить так же хорошо играть в шахматы.
Похоже, что так оно и есть: довольно универсальная полносвязная нейросеть действительно хорошо играет в шахматы после обучения, не требуя никаких дополнительных встроенных эвристик или специализированной архитектуры.
Или взять любой «игрушечный» набор данных из репозитория UCI. Найдите наиболее подходящую классическую модель ML с библиотекой вроде Sklearn, а затем попробуйте использовать простую нейросеть, которую предоставляет Sklearn. Если установить достаточно большой размер скрытых слоев _hidden_layer_sizes, то вы почти наверняка увидите хорошую эффективность — независимо от модели.
Формально это предположение не всегда верно, потому что:
- Архитектура нейросети может быть непригодна для данной задачи. Например, в шахматы не сможет играть сверточная сеть с большим окном и размером шага, даже очень большая.
- В некоторых методах ML много встроенных эвристик, которые нейросети трудно изучить. Успеха можно добиться только тогда, когда в технику ML не встроены критические эвристики или, по крайней мере, вы в состоянии включить те же эвристики в свою модель нейросети.
Но первый пункт к нам не относится, потому что мы говорим о нейросетях, способных к генерализации, то есть обобщению: например, о полносвязных сетях, которые у большинства людей ассоциируются с типичной нейронной сетью.
Второй пункт тоже почти никогда не станет особой помехой, потому что большинство эвристик одинаково хорошо применяются к любой модели, даже вроде шахмат. Большой размер иногда даже позволяет нейросети просто усвоить эвристику в процессе обучения.
Я действительно не могу придумать здесь контрпримера… может, какие-то конкретные типы числовых проекций?
Первое правило довольно скучное, но его следовало изложить в качестве отправной точки.
Правило 2. Нейронная сеть почти наверняка решит проблему, очень похожую на те, что уже решены
Предположим, у вас есть модель прогнозирования риска невозврата кредита для конкретного кредитора. Она основана на нескольких параметрах, например: текущем балансе на счете, предыдущей кредитной истории, возрасте, статусе водительских прав, судимостях, годовом доходе, стаже работы, различной информации о текущем состоянии экономики, семейном положении и детях, а также количестве сайтов, посещенных за последние 60 дней.
Допустим, эта модель решает вашу проблему, то есть предсказывает риск невозврата кредита лучше, чем 80% аналитиков.
Но вступают в действие законы GDPR о защите частной жизни — и вы больше не можете легально следить за поведением клиента, покупая историю посещенных страниц, как раньше. Придется строить для него новую модель.
У вас теперь меньше входных данных, а история посещения сайтов более не доступна или ее запрещено анализировать.
Можно ли с уверенностью предположить, что вы по-прежнему способны построить разумную модель для решения этой проблемы?
Ответ почти наверняка положительный. Учитывая наши знания о мире, мы можем с уверенностью предположить, что история просмотра сайтов конкретным человеком не так важна для его кредитного рейтинга, как некоторые другие параметры.
Другой пример. Предположим, кто-то другой использует модель, но его данные немного отличаются от ваших.
Вы знаете некий американский зоомагазин со специализацией на рептилиях, который анализирует предыдущие покупки клиентов, чтобы рекомендовать им новые товары, — и довольно эффективно делает это. Вы — британский зоомагазин со специализацией на попугаях. Можете ли вы доверять модели американского магазина для решения своей проблемы, если она будет обучаться на ваших данных?
Опять же, ответ будет положительным, потому что данные достаточно похожи. Вот почему создание алгоритма рекомендаций было горячей темой 20 лет назад, но в настоящее время каждый может взять для своего магазина плагин WordPress и приблизиться к уровню Amazon.
Или более серьезная тема. Предположим, у вас есть определенный алгоритм обнаружения рака молочной железы. После обучения на 100 000 изображениях он показывает лучший результат, чем средний рентгенолог.
Учитывая генерализацию, можно ли построить модель для обнаружения рака в других типах мягких тканей?
И снова ответ положительный. Здесь вкратце не объяснишь, потому что из-за отсутствия данных мы уже не так уверены в результате. Но все-таки ответ положительный: я подробно рассмотрел эту тему в отдельной статье.
В системах обработки естественного языка (NLP) точно такие же архитектуры нейронных сетей одинаково достаточно хороши для перевода или генерации текста на любом языке, если он принадлежит к индоевропейской семье и для него имеется значительный объем данных — эквивалентный тому, который используется для обучения существующих моделей на английском языке.
Вероятно, современные методы NLP способны охватить все языковые семьи и для этого им нужно всё меньше и меньше данных. Однако способность модели к быстрому обобщению на многие языки сильно зависит от степени схожести данных и количества примеров для обучения.
Или посмотрим на модели распознавания изображений и обнаружения объектов. Их узкое место — объем хорошо маркированных данных, а не контент изображений. Конечно, есть пограничные случаи. Но если подать достаточно примеров из другой задачи (например, из сверточной остаточной сети для ImageNet), как правило, все объекты и изображения можно распознать и классифицировать.
Кроме того, такая нейросеть может учиться гораздо быстрее. Вместо того чтобы начинать с нуля, мы можем использовать начальные веса и смещения — по сути, то, что сеть «выучила» на наборе данных ImageNet.
Правило 3. Нейросеть способна решить те же задачи, что может решить человек с небольшими точками данных и почти без контекста
Допустим, перед нами черно-белые изображения двух объектов 20×20 пикселей. Мы видим их впервые, они очевидно отличаются друг от друга, но нам неизвестны. Вполне разумно предположить, что с кучей обучающих примеров люди достаточно хорошо будут их различать.
Также разумно предположить, что после кучи примеров (скажем, 100) почти любая нейросеть с миллионами параметров справится с этой задачей не хуже человека.
Вы можете посчитать количество пикселей как объем информации, которую нужно изучить. Так, здесь у нас 400 пикселей по 255 значений каждый, значит, разумно предположить, что с несколькими миллионами параметров в нашем уравнении можно учесть все возможные паттерны.
Что имеется в виду под «небольшими точками данных»? Если вкратце, это понятие вытекает из нескольких факторов:
- Размер модели. Чем больше модель, тем более сложные паттерны она может выучить, тем больше возможный объем входных и выходных данных.
- Детализация ответа (выдачи). Например, 1000 классов против 10 классов или диапазон целых чисел от 0 до 1000 против одного числа от 0 до 100 000. В нашем случае детализация равна 2.
- Размер входного сигнала. В данном случае 400 пикселей, так как размер изображений 20×20.
Возьмите классическую задачу классификации изображений, такую как MNIST. Несмотря на пару незначительных улучшений, эффективность лучших систем не сильно повысилась. За последние 8 лет качество улучшилось с 98,5% до 99,4%, что в обоих случаях хорошо вписывается в обычный «человеческий диапазон ошибок».
Сравните это с какой-нибудь системой, которая работает с большим объемом входных и выходных данных, например ImageNet. Там за последние 8 лет произошел скачок от 50% до почти 90%.
В конце концов, задача MNIST в основном решается даже методами предыдущего поколения, которые использовались до появления сверточных нейросетей.
Но даже с учетом вышеперечисленного, у нас нет конкретной формулы для определения, что такое «небольшие точки данных». Думаю, полный ответ слишком сложен, а нам достаточно краткой формулировки, которая справедлива в большинстве случаев:
- Задача может считаться небольшой, если другие задачи с одинаковым или большим размером входных и выходных данных уже решены с помощью машинного обучения с более чем одной архитектурой на одном GPU.
Это может показаться глупой эвристикой, но она удивительно хорошо подходит для большинства простых задач машинного обучения. Например, именно по причине малого размера многие задачи NLP теперь лучше решаются, чем большинство задач с видео, хотя существующая сетевая архитектура изначально больше подходит для видеообработки. Но размер входных и выходных данных у серьезных видеозадач намного больше. С другой стороны, хотя NLP находится совершенно в другой области, по размеру данных эта задача гораздо ближе к обработке изображений.
Что же означает «практически без контекста»?
Это сложнее сформулировать, но можно посмотреть на примеры с «большим» и «малым» объемом контекста:
- Прогнозирование фондового рынка, вероятно, требует большого объема контекста. Нужно глубоко анализировать компании, проверять рыночные индикаторы, последние финансовые отчеты, биографию руководителей. Нужно понимать продукт компании, возможно, получить некоторую информацию от ее сотрудников и клиентов. Если возможно, то получить инсайдерские данные о предстоящих продажах, слияниях и так далее. Вы можете попытаться предсказать фондовый рынок исключительно по индикаторам, но обычно люди иначе подходят к решению этой задачи.
- С другой стороны, с помощью контекста в какой-то степени можно предсказать выдачу конкретного печатного пресса по температуре и влажности окружающей среды. Инженер может знать, что некоторые компоненты по-разному ведут себя в определенных условиях. Но на практике инженер обычно не будет трогать принтер, посмотрит на условия среды и результат, а затем подумает над действиями. В такой ситуации и алгоритм машинного обучения может предложить не худшее или даже лучшее решение.
В этом смысле алгоритм ML выдает результаты примерно так, как математик решает уравнение, поскольку для человека контекст практически отсутствует.
Конечно, есть некоторые ограничения. Пока мы не испытаем наш принтер при температуре 4000 °C, алгоритм никак не узнает, что результат равен нулю, потому что машина расплавится. А вот инженер может это заподозрить.
Итак, третий принцип можно сформулировать следующим образом.
Общая нейросеть, вероятно, может решить проблему, если:
- Человек может ее решить
- Задачи с входными данными и выдачей похожего размера уже решены сетью такого же размера
- Бóльшая часть релевантных контекстных данных, которыми располагает человек, включена во входные данные нашего алгоритма.
Такая нейросеть по-прежнему сравнима с человеком. Однако многие приложения машинного обучения интересны именно потому, что они решают проблемы, на которые не способен человек.
Правило 4. Нейронная сеть может решить проблему, если она детерминирована, есть релевантный контекст для входных данных и данные достаточно малы
Здесь я вернусь к одному из моих любимых примеров — сворачиванию (фолдингу) белка. Одна из немногих проблем в науке, где данные легко доступны, интерпретация и смысл не смешиваются с большим количеством теоретического багажа, а размер точек данных достаточно мал.
Вы можете свести проблему к следующему:
- Около 2000 признаков на входе (третичная структура аминокислот) охватит 99, Х% белков, а не 100%.
- Около 18 000 соответствующих выходных признаков (число позиций атомов в третичной структуре, то есть форма, которую необходимо предсказать, чтобы получить структуру).
Это лишь один из примеров. Как и в большинстве проблем NLP с субъективной оценкой размера входных данных, для этого типа входных данных требуется прямое кодирование, то есть кодирование с использованием индивидуальных переменных для каждого состояния. Тогда размер внезапно возрастает до 40 000 (генетическим кодом ДНК кодируются 20 протеиногенных аминокислот), 42 000 (с учетом селенопротеинов) или 44 000 (с учетом остальных белков, которые не появляются у эукариот) признаков.
Можно также утверждать, что размер входных и выходных данных намного меньше, поскольку в большинстве случаев белки намного меньше, а значит, значительную часть входных и выходных данных можно отбросить.
Тем не менее существует немало задач, где на вход подается, например, 255×255-пиксельное изображение, а на выходе получается другое 255×255-пиксельное изображение. Например, задачи по изменению стиля, повышению резкости, передаче стиля, выделению границ и так далее. Поэтому можно согласиться, что данные о сворачивании белка достаточно малы.
Действительно, задачи повышения резкости фотографий и фолдинга белков начали решать примерно в одно и то же время на нейросетях с похожей архитектурой. Но мы отвлеклись: не следует принимать корреляцию за причинно-следственные связи, которых здесь нет.
По моему опыту, даже очень простая модель способна узнать нечто значимое о свертывании белка. Если задано достаточно параметров (135 миллионов), то после 12 часов обучения на RTX2080 она делает предположения лучше случайных и достаточно часто попадает в пределы 1% от фактического положения атомов.
Насколько мне известно, первая успешная сеть для расчета фолдинга белков AlphaFold использовала некоторые доменные эвристики, а основную часть тяжелой работы выполняла на остаточной сверточной нейросети. Такая архитектура изначально создана для категоризации изображений — сложно представить себе нечто более далекое от фолдинга белков.
Это не значит, что такую проблему решит любая архитектура. Это скорее значит, что нам не нужно создавать совершенно новую технику для решения такого рода проблем. Мы знаем, что нейросеть способна решить задачу. Нужно только поискать, какая именно нейросеть.
Другой важный вывод заключается в том, что проблема кажется детерминированной. Конкретно:
- Мы знаем, что пептиды сворачиваются в белки в той инертной среде, которую предполагает большинство наших моделей.
- Мы знаем, что аминокислоты являются тем компонентом, который полностью описывает пептид.
- Поскольку окружающая среда всегда одинакова, а сам процесс фолдинга не сильно изменяет ее, проблема не является функцией окружающей среды. Заметьте, что это только в случае фолдинга in vitro, то есть в пробирке, тогда как в живом организме, то есть in vivo, задача сильно усложняется.
Здесь возникает проблема во втором пункте. Мы знаем, что Вселенная детерминировано сворачивает пептиды, а сами пептиды полностью описываются аминокислотами. Однако Вселенная работает не с аминокислотами, а с триллионами взаимодействий между гораздо меньшими частицами.
Таким образом, хотя проблема является детерминированной и самодостаточной, нет никакой гарантии, что обучение фолдингу белков не повлечет за собой изучение полной модели физики элементарных частиц, где каждая аминокислота расщепляется на более мелкие функциональные компоненты. Для такой задачи не хватит и миллионов параметров.
Вот почему наше четвертое правило сложнее всего применить.
В качестве примеров можно привести предварительное (предикативное) обслуживание с прогнозированием будущего. Там модели машинного обучения активно используют для решения проблем, которые не подвластны человеческому разуму, во всяком случае, без математических моделей. На основании существующих данных есть основания предполагать, что эти проблемы частично (в основном?) детерминированы.
Есть и более простые примеры, но я не могу придумать ни одного, который на момент создания уже не попал в предыдущие три категории. По крайней мере, ничего такого, что не было бы частью обучения с подкреплением.
Подавляющее большинство примеров относится к области обучения с подкреплением, где человек решает внушительное количество проблем, как только находит способ их смоделировать.
Люди могут найти оптимальные аэродинамические формы, проектировать странные антенны, чтобы улучшить связь, побеждать в видеоиграх, таких как Dota и Starcraft, которые экспоненциально сложнее (с точки зрения степеней свободы), чем шахматы или Go.
Проблема обучения с подкреплением заключается в том, что спроектировать реальную симуляцию намного сложнее, чем использовать ее для поиска осмысленного ответа. Обучение с подкреплением — интересное занятие, но не всегда оно дает полезный результат. Хотя и существуют крайние случаи, когда проектирование модели действительно проще, чем расчет результата.
Кроме того, чем больше создается симуляций на нашем понимании эффективного моделирования физики (что само по себе помогает ML), тем больше проблем становится доступно для моделирования.
В заключение
Я попытался представить несколько простых правил для ответа на вопрос: «Как понять, что нейросеть решит проблему?». Какие задачи разрешимы с достаточным поиском архитектуры и текущими возможностями GPU?
Итак, подведем итог. Нейросеть решит вашу проблему:
- [Почти наверняка]. Когда другие модели ML уже решили эту проблему.
- [С очень высокой вероятностью]. Если похожая проблема уже решена алгоритмом ML, а различия между этой проблемой и вашей невелики.
- [С высокой вероятностью]. Если входы и выходы достаточно малы, сопоставимы по размеру с другими рабочими моделями ML, а человек решает задачу без особой необходимости знать контекст.
- [С разумной вероятностью]. Если входы и выходы достаточно малы, сопоставимы по размеру с другими рабочими моделями ML, и мы достаточно уверены в детерминированной природе проблемы, то есть что результат полностью определен входными данными.
Я не уверен ни в одном из этих правил, но считаю важными практические рассуждения на эту тему. Теория вероятно приближенного корректного обучения (PAC) дает нам почти полную определенность и математическое обоснование, но она выходит за рамки простых задач классификации.
Такого рода правила не могут быть гарантированно точными. Они выводятся только из эмпирических наблюдений. Но я думаю, что их действительно можно применить к реальным задачам.
Я сам на практике применяю их к реальным проблемам, когда клиент или друг спрашивает меня, является ли данная задача выполнимой. Мне кажется, другие люди подсознательно руководствуются примерно такими же правилами, размышляя о том, какие проблемы можно решить.
Надеюсь, это послужит реальным практическим руководством для новичков в этой области и для людей, которые не слишком увлекаются ML, но хотят поработать с некоторыми конкретными наборами данных.
Что еще почитать по теме: