В последний год многие интересующиеся технологиями искусственного интеллекта замерли в ожидании и следят за развитием интересного стартапа. Он собирается предложить миру новый способ взаимодействия с компьютером и радикально усовершенствовать этот процесс...
▍ Экшн-трансформеры на подходе...
Стартап носит название Adept, и можно было бы отнестись к нему легкомысленно, если бы среди его основателей не было команды разработчиков из Google Brain, а именно — старшего научного сотрудника Ашиша Васвани (Ashish Vaswani). В 2017 году в сотрудничестве с другими авторами он написал одну из самых влиятельных статей в области искусственного интеллекта «Внимание — это всё что вам нужно» (Attention Is All You Need), предложив новую архитектуру, так называемый трансформер, базирующийся на понятии «внимания». Заявляется, что подобная модель исключает в своей работе повторения, очень хорошо распараллеливает вычисления, а также требует гораздо меньше времени для своего обучения. Ещё один соучредитель стартапа — Дэвид Луан, который был главой инженерного отдела OpenAi. Имена достаточно громкие…
Суть механизма внимания заключается в просмотре входной последовательности и принятии решения на каждом этапе насчёт остальных частей последовательности.
Это похоже на чтение текста человеком, когда в каждый момент времени он акцентируется на конкретном слове, но в то же время постоянно держит в памяти ключевые слова, чтобы улавливать общий смысл.
Несмотря на то, что подобное утверждение, возможно, выглядит не совсем очевидно, здесь можно привести более сжатый смысл: похоже, что это первый случай, когда мы наконец-то разработали способ понимать смысл фразы примерно так же, как это делают люди!
До появления этого механизма нейросетям, чтобы понять контекст, необходимо было извлечь его из всей фразы (что увеличивало требования к машинным ресурсам по мере роста длины фразы). Теперь же для понимания контекста нейросети достаточно одного слова. То есть она может проранжировать слова в предложении, поняв, какие из них имеют большее, а какие меньшее значение по отношению к этому слову (точно так же поступает и человек, читая текст).
Благодаря появлению такого механизма стали возможны широко известные всем ChatGPT, DALL-E и т. д.
С момента своего появления в 2017 году архитектура трансформер стала наиболее предпочтительной для решения задач естественного языка, позволяя объединять документы, переводить с одного языка на другой, классифицировать изображения и не только.
Тем не менее, стартап Adept предлагает пойти ещё дальше, разрабатывая так называемый экшн-трансформер, суть которого, если вкратце, заключается в автоматизации действий. Но он не делает то, что делали прежде, а позволяет максимально расширить возможности: нейросеть сможет использовать абсолютно все программные продукты и их возможности, которые уже были разработаны людьми!
Например, сможет нарисовать отсутствующий на картинке элемент, используя Photoshop, собрать сводную таблицу в Excel за определённый год с указанными параметрами и т. д.
Таким образом, они позиционируют свою разработку как универсального помощника для человека умственного труда.
В интервью TechCrunch Дэвид Луан заявил: «Нейросети, которые смогут читать или писать тексты, конечно, будут обладать ценностью, однако гораздо большей ценностью будет обладать нейросеть, которая сможет что-то делать по запросу на компьютере: забронировать билет, провести научный эксперимент, выписать чек и т. д.»
Например, вот здесь вы можете посмотреть ряд видео о том, как их нейросеть выполняет определённые действия на основе текстовых запросов. Несколько примеров оттуда:
Благодаря появлению такого нового подхода вполне можно создавать собственные модели, сравнимые по возможностям с GPT-3, и это будет гораздо проще и дешевле, чем когда-либо раньше.
Тем не менее, даже такая модель не является искусственным интеллектом в полном его понимании (хотя бы даже потому, что люди до сих пор до конца не представляют, что такое интеллект вообще, но в данный момент мы говорим всё-таки о более приземлённых вещах), так как человеческий язык характеризуется, в числе прочих, двусмысленностью и отсутствием контекста. Подобные системы, как и любые компьютерные алгоритмы, страдают от нехватки общих знаний о мире, которыми обладают люди (развиваясь с самого детства и набирая необходимый объём знаний о вещах и явлениях во всей их полноте). Также им частенько недостаёт контекста конкретного взаимодействия, так как он не всегда может быть передан посредством речи.
▍ Что вообще такое трансформер
Трансформер представляет собой преобразователь одной входной последовательности в другую, выходную.
Подобные модели состоят из двух частей — кодировщика и декодера. В процессе работы кодировщик переводит последовательность в пространство более высокой размерности (так называемый n-мерный вектор), после чего этот вектор может быть передан в декодер, который переводит его в выходную последовательность.
Общий вид архитектуры трансформер выглядит следующим образом:
Левая часть картинки представляет собой кодировщик, правая — декодер. Каждая из частей состоит из отдельных модулей, которые могут неоднократно накладываться друг на друга (Nx).
Кодировщик состоит из ряда слоёв, каждый из которых имеет два подслоя. Первый из них является механизмом самоконтроля с многоточечными элементами внимания, второй же представляет собой простую сеть с прямой связью. Вокруг каждого из слоёв используется остаточное соединение с последующей нормализацией слоя.
Декодер также состоит из стека одинаковых слоёв, но, в отличие от кодировщика, у него ещё имеется и третий подуровень, на который возложена задача оказания многоточечного внимания к выходным данным стека.
Точно так же, как и у кодировщика, у него используется остаточное соединение вокруг каждого из подуровней для нормализации слоя. Подобная нормализация в том числе осуществляется и с подуровнем самоконтроля. Это делается для того, чтобы позиции не обращались к последующим. Подобная маскировка вместе со смещением на одну позицию (Feed forward) даёт гарантию того, что прогнозы для конкретной позиции могут зависеть от уже известных выходных данных в позициях, которые меньше текущей.
Как мы уже говорили ранее, в работе трансформера существенное значение имеет понятие «внимания».
Для вычисления его значения используется функция, которая может быть выражена как сопоставление запроса и массива, состоящего из пар ключ-значение, где и сами значения, и выходные данные являются векторными.
Результатом расчётов является средневзвешенная сумма, где вес, который был присвоен каждому конкретному значению, может быть вычислен с помощью функции совместимости запроса с соответствующим ключом.
В указанной формуле:
- Q — матрица с запросом, которая представляет собой векторную запись слова в последовательности;
- K — ключи последовательности (или, другими словами, все слова в последовательности в векторной форме);
- V — значения всех слов последовательности в векторной форме.
На рисунке слева показан единичный механизм внимания, а на рисунке справа — то, как этот механизм может выполняться в параллельном режиме.
Допустим, трансформер используется для задачи перевода с одного языка на другой, и нужно его обучить этой задаче. Для этого на вход кодировщику подаётся слово или предложение на одном языке, а на вход декодеру подаётся предложение на другом языке. Как можно заметить по картинке, вход декодера будет смещён вправо на одно значение (shifted right).
Это сделано с целью того, чтобы модель не занималась простым копированием входа декодера. Вместо этого она должна научиться предсказывать следующее слово или конкретный символ, получив на вход предыдущий.
Как можно видеть, у декодера есть ещё один элемент, который носит название Masked Multi-head Attention, задача которого заключается в маскировке данных, чтобы декодер просматривал не все данные в ходе многоточечного внимания, а только те, которые не были предсказаны.
Как заявляют создатели алгоритма трансформера в своей работе, о которой мы уже говорили выше (Attention Is All You Need ), для обучения был использован стандартный англо-немецкий набор данных, состоящий из 4,5 миллиона пар предложений, которые были закодированы с использованием кодирования парами байтов. Также был использован англо-французский набор данных, состоящий из 36 миллионов предложений.
Обучение проходило на машине с восемью графическими процессорами NVIDIA P100, и для базовых моделей количество шагов составило около 100 000, что заняло порядка 12 часов. Большие же модели были обучены за 300 000 шагов, что заняло 3,5 дня.
Авторы заявляют, что модели по результатам тестов существенно превзошли ранее известные, кроме того, по их мнению, обучить их можно существенно быстрее, чем основанные на рекуррентных или свёрточных сетях.
Исходники кода, который они использовали в процессе обучения и для оценки моделей, находятся здесь.
На момент разработки в 2017 году авторы только планировали освоить другие модальности (звук, изображение) и применить трансформер для решения других задач, кроме работы с текстом.
▍ А можно руками потрогать?
В настоящее время множество других разработчиков включились в гонку и, например, вот здесь имеется огромная база (тысячи!) предварительно обученных моделей, которые вы можете применить в своих проектах.
Например:
- работа с текстом — классификация, извлечение информации, ответы на вопросы, обобщения, перевод, генерация текста на более чем 100 языках;
- работа с изображениями — классификация, обнаружение объектов, сегментация;
- работа со звуком — распознавание речи, классификация.
Модели поддерживаются и могут быть использованы в сочетании с тремя самыми популярными библиотеками глубокого обучения: Jax, PyTorch, TensorFlow.
Используя в своей работе трансформеры, разработчик получит всю мощь как обработки естественного языка, так и обработку в областях компьютерного зрения и аудио. Используя уже приведённые выше библиотеки и обученные модели, можно получить низкий порог входа в тему, лёгкое обучение своих моделей, а также доступ к базе готовых примеров.
Автор:
ru_vds