Post content
Есть модели/статьи/архитектуры, в которых особенно интересно разбираться и думать, как они смогли перевернуть сферу применения. Одной из таких моделей является AlphaFold2, которая предсказывает 3D структура белка по последовательности аминокислот. Важно это потому, что структура белка практически полностью определяет его функцию, а функции белков в нашем организме сосчитать сложно. При этом экспериментально процесс очень долгий, дорогой и нестабильный. Наконец-то нашел время, чтобы хорошенько разобраться с этой моделью; из материалов помимо основной статьи рекомендую лекцию от исследователя из DeepMind и классный блогпост. Блогпост рекомендую прочитать самим, но постарался выделить какие-то главные интересные моменты с точки зрения ML: 1. На вход мы подаем две сущности: a. Pair representation - это тензор размера N_seq x N_seq x n_features, где N_seq - размер последовательности аминокислот, а features - попарные фичи о взаимодействии аминокислот друг с другом, которые мы можем посчитать заранее. b. MSA (multi aligned sequence) - это батч разных последовательностей, где первая последовательность - исходная, а остальные найдены из некоторой базы с помощью алгоритма поиска соседей. Мотивация здесь такая, что похожие последовательности могут дать полезную информацию о нашей текущей. 2. Энкодер модели называется Evoformer, он обрабатывает эти два инпута, передавая информацию от одного к другому. Делается это либо через attention, либо через операцию векторного произведения. В MSA авторы используют два attention: построчный (внутри последовательности) и поколоночный (между последовательностями), а вот в pair representation - triangle attention. Triangle attention - это попытка внести в модель некоторый inductive bias о том, что если 3 точки соединены в пространстве, то должно выполняться неравенство треугольника. Поэтому attention выполняется там по всем парам, которые могут быть соединены в такие структуры. 3. Вторая часть, назовем ее декодер, берет представления Evoformer и предсказывает уже необходимые координаты аминокислот в пространстве. Там очень много нюансов и эвристик, но тоже есть свой интересный attention слой - IPA, который инвариантен относительно перемещений и поворотов в пространстве. 4. Общий лосс для модели - взвешенная сумма лоссов из разных ее частей: там и финальный предикт (насколько мы отклоняемся от правильной структуры), и masked MSA (а-ля MLM, маскируем аминокислоты в последовательности и пытаемся их предсказать), и distogramm loss, где смотрим на попарные расстояния. 5. Во время обучения использовались техники дистилляции, а именно Noisy Student. Это связано с тем, что известных структур белков для обучения не так уж и много (в связи с тем, что их неимоверно трудно получить экспериментальным путем) и хочется данные для трейна как-то увеличивать. Много нюансов тут понятно не покрыто, так что, если интересно, посмотрите приложенные материалы.