Пакет attention R, описывающий, как с нуля реализовать механизм внимания, лежащий в основе трансформеров, на языке R, теперь доступен на CRAN.

Ключевым примером результатов, которые были достигнуты с использованием (гораздо более крупных и сложных форм) transformers, является переход от AlphaFold (1) (который в основном опирался на LSTM) на AlphaFold2 (который в основном основывался на transformers). Это изменение подтолкнуло результаты соревнования по сворачиванию белков CASP-14 к уровню точности, который сделал предсказание структуры белка достаточно точным для практических целей. Крупный научный прорыв, влияние которого едва ли можно переоценить.

Роль механизма attention здесь ключевая. Трехмерные структуры белка могут быть такими, что они «сворачиваются друг к другу», это означает, что аминокислоты, составляющие белок, могут быть разнесены далеко друг от друга в последовательности, но, тем не менее, пространственно в непосредственной близости и, следовательно, взаимодействуют друг с другом. другой. LSTM имеет ограниченную способность моделировать это, тогда как алгоритм attention не имеет ограничения на то, насколько далеко могут быть последовательно удалены элементы для взаимодействия друг с другом.

Пакет attention можно установить просто из R, запустив:

install.packages('attention')

Он не имеет никаких зависимостей, C++, Fortran, Java или каких-либо других сложностей. Он написан исключительно на base R, поэтому он должен без проблем установиться на любой версии R.

После установки вы можете загрузить пакет, используя:

library(attention)

Пакет содержит две виньетки HTML: simple_attention и complete_attention. Обе виньетки одинаково реализуют алгоритм attention. Однако simple_attention использует ряд вспомогательных функций, включенных в пакет attention, чтобы представить алгоритм в доступной форме. Виньетка complete_attention не использует никаких вспомогательных функций, а просто использует функции base R.

Предлагаемый способ обойти это — начать с simple_attention, который вы можете загрузить, используя:

vignette('simple_attention')

Поработав с виньеткой, вы можете немного глубже погрузиться в тот же пример с complete_attention, используя:

vignette('complete_attention')

Разработка

Разработка происходит на GitHub:



Версию для разработки, которую можно использовать на свой страх и риск, можно установить с GitHub с помощью пакета remotes:

if (!require('remotes')) install.packages('remotes')
remotes::install_github('bquast/attention') 

Ошибки

Вы также можете отправить туда любые отчеты об ошибках:

https://github.com/bquast/attention/issues

Код в значительной степени основан на посте прошлой недели: Самостоятельное внимание с нуля в R.

Первоначально опубликовано на https://qua.st 24 июня 2022 г.