Как понять, что нейросеть решит вашу проблему? Прагматичное руководство
(Продолжение, начало в № 45)
Правило 4. Нейронная сеть может решить проблему, если она детерминирована, есть релевантный контекст для входных данных и данные достаточно малы
Здесь я вернусь к одному из моих любимых примеров — сворачиванию (фолдингу) белка. Одна из немногих проблем в науке, где данные легко доступны, интерпретация и смысл не смешиваются с большим количеством теоретического багажа, а размер точек данных достаточно мал.
Вы можете свести проблему к следующему:
1. Около 2000 признаков на входе (третичная структура аминокислот) охватит 99 % белков, а не 100%.
2. Около 18 000 соответствующих выходных признаков (число позиций атомов в третичной структуре, то есть форма, которую необходимо предсказать, чтобы получить структуру).
Это лишь один из примеров. Как и в большинстве проблем NLP с субъективной оценкой размера входных данных, для этого типа входных данных требуется прямое кодирование, то есть кодирование с использованием индивидуальных переменных для каждого состояния. Тогда размер внезапно возрастает до 40 000 (генетическим кодом ДНК кодируются 20 протеиногенных аминокислот), 42 000 (с учётом селенопротеинов) или 44 000 (с учётом остальных белков, которые не появляются у эукариот) признаков.
Можно также утверждать, что размер входных и выходных данных намного меньше, поскольку в большинстве случаев белки намного меньше, а значит, значительную часть входных и выходных данных можно отбросить.
Тем не менее существует немало задач, где на вход подаётся, например, 255×255-пиксельное изображение, а на выходе получается другое 255×255-пиксельное изображение. Например, задачи по изменению стиля, повышению резкости, передаче стиля, выделению границ и так далее. Поэтому можно согласиться, что данные о сворачивании белка достаточно малы.
Действительно, задачи повышения резкости фотографий и фолдинга белков начали решать примерно в одно и то же время на нейросетях с похожей архитектурой. Но мы отвлеклись: не следует принимать корреляцию за причинно-следственные связи, которых здесь нет.
По моему опыту, даже очень простая модель способна узнать нечто значимое о свёртывании белка. Если задано достаточно параметров (135 миллионов), то после 12 часов обучения на RTX2080 она делает предположения лучше случайных и достаточно часто попадает в пределы 1% от фактического положения атомов.
Насколько мне известно, первая успешная сеть для расчёта фолдинга белков AlphaFold использовала некоторые доменные эвристики, а основную часть тяжёлой работы выполняла на остаточной сверточной нейросети. Такая архитектура изначально создана для категоризации изображений — сложно представить себе нечто более далёкое от фолдинга белков.
Это не значит, что такую проблему решит любая архитектура. Это скорее значит, что нам не нужно создавать совершенно новую технику для решения такого рода проблем. Мы знаем, что нейросеть способна решить задачу. Нужно только поискать, какая именно нейросеть.
Другой важный вывод заключается в том, что проблема кажется детерминированной. Конкретно:
1. Мы знаем, что пептиды сворачиваются в белки в той инертной среде, которую предполагает большинство наших моделей.
2. Мы знаем, что аминокислоты являются тем компонентом, который полностью описывает пептид.
3. Поскольку окружающая среда всегда одинакова, а сам процесс фолдинга не сильно изменяет ее, проблема не является функцией окружающей среды. Заметьте, что это только в случае фолдинга in vitro, то есть в пробирке, тогда как в живом организме, то есть in vivo, задача сильно усложняется.
Здесь возникает проблема во втором пункте. Мы знаем, что Вселенная детерминировано сворачивает пептиды, а сами пептиды полностью описываются аминокислотами. Однако Вселенная работает не с аминокислотами, а с триллионами взаимодействий между гораздо меньшими частицами.
Таким образом, хотя проблема является детерминированной и самодостаточной, нет никакой гарантии, что обучение фолдингу белков не повлечёт за собой изучение полной модели физики элементарных частиц, где каждая аминокислота расщепляется на более мелкие функциональные компоненты. Для такой задачи не хватит и миллионов параметров.
Вот почему наше четвёртое правило сложнее всего применить.
В качестве примеров можно привести предварительное (предикативное) обслуживание с прогнозированием будущего. Там модели машинного обучения активно используют для решения проблем, которые не подвластны человеческому разуму, во всяком случае, без математических моделей. На основании существующих данных есть основания предполагать, что эти проблемы частично (в основном?) детерминированы.
Есть и более простые примеры, но я не могу придумать ни одного, который на момент создания уже не попал в предыдущие три категории. По крайней мере, ничего такого, что не было бы частью обучения с подкреплением.
Подавляющее большинство примеров относится к области обучения с подкреплением, где человек решает внушительное количество проблем, как только находит способ их смоделировать.
Люди могут найти оптимальные аэродинамические формы, проектировать странные антенны, чтобы улучшить связь, побеждать в видеоиграх, таких как Dota и Starcraft, которые экспоненциально сложнее (с точки зрения степеней свободы), чем шахматы или Go.
Проблема обучения с подкреплением заключается в том, что спроектировать реальную симуляцию намного сложнее, чем использовать ее для поиска осмысленного ответа. Обучение с подкреплением — интересное занятие, но не всегда оно даёт полезный результат. Хотя и существуют крайние случаи, когда проектирование модели действительно проще, чем расчёт результата.
Кроме того, чем больше создаётся симуляций на нашем понимании эффективного моделирования физики (что само по себе помогает ML), тем больше проблем становится доступно для моделирования.
В заключение
Я попытался представить несколько простых правил для ответа на вопрос: «Как понять, что нейросеть решит проблему?» Какие задачи разрешимы с достаточным поиском архитектуры и текущими возможностями GPU?
Итак, подведём итог. Нейросеть решит вашу проблему:
1. [Почти наверняка]. Когда другие модели ML уже решили эту проблему.
2. [С очень высокой вероятностью]. Если похожая проблема уже решена алгоритмом ML, а различия между этой проблемой и вашей невелики.
3. [С высокой вероятностью]. Если входы и выходы достаточно малы, сопоставимы по размеру с другими рабочими моделями ML, а человек решает задачу без особой необходимости знать контекст.
4. [С разумной вероятностью]. Если входы и выходы достаточно малы, сопоставимы по размеру с другими рабочими моделями ML, и мы достаточно уверены в детерминированной природе проблемы, то есть что результат полностью определён входными данными.
Я не уверен ни в одном из этих правил, но считаю важными практические рассуждения на эту тему. Теория вероятно приближенного корректного обучения (PAC) даёт нам почти полную определённость и математическое обоснование, но она выходит за рамки простых задач классификации.
Такого рода правила не могут быть гарантированно точными. Они выводятся только из эмпирических наблюдений. Но я думаю, что их действительно можно применить к реальным задачам.
Я сам на практике применяю их к реальным проблемам, когда клиент или друг спрашивает меня, является ли данная задача выполнимой. Мне кажется, другие люди подсознательно руководствуются примерно такими же правилами, размышляя о том, какие проблемы можно решить.
Надеюсь, это послужит реальным практическим руководством для новичков в этой области и для людей, которые не слишком увлекаются ML, но хотят поработать с некоторыми конкретными наборами данных.
Автор Джордж Хосу
https://blog.cerebralab.com/