Мы завели чатик для обсуждения статей. Иногда хочется, так что велкам:
https://news.1rj.ru/str/joinchat/BVpazxaJ5vHOsrnZ2xRlaQ
Вот ACT как раз можно пообсуждать ;)
https://news.1rj.ru/str/joinchat/BVpazxaJ5vHOsrnZ2xRlaQ
Вот ACT как раз можно пообсуждать ;)
В дополнение к посту про SACT есть видео доклада Миши Фигурнова на семинаре в Вышке:
https://youtu.be/xp5lLiA-hA8
https://youtu.be/xp5lLiA-hA8
YouTube
Spatially Adaptive Computation Time for Residual Networks, Michael Figurnov, bayesgroup.ru
We present a deep learning architecture based on Residual Networks that dynamically adjusts the number of executed layers for regions of an image. This architecture is end-to-end trainable, deterministic, and problem-agnostic. It uses two key components:…
Продолжение про ACT, часть 4-я.
#3: Universal Transformer
Наконец про трансформеры. Лёша про них уже недавно писал, но теперь более детально.
Universal Transformers
Mostafa Dehghani, Stephan Gouws, Oriol Vinyals, Jakob Uszkoreit, Łukasz Kaiser
Статья: https://arxiv.org/abs/1807.03819
Презентация: http://mostafadehghani.com/wp-content/uploads/2018/08/Universal_Transformers.pdf
Код: https://github.com/tensorflow/tensor2tensor/blob/master/tensor2tensor/models/research/universal_transformer.py
Некоторые другие реализации: https://github.com/topics/universal-transformer
Работа выставлялась постером на ICLR 2019, но известна уже более полугода.
По сути делаем трансформер с рекуррентностью и динамическим критерием останова. А заодно вроде как получаем Turing completeness (теоретическую способность вычислить всё вычислимое — сэмулировать машину Тьюринга).
Рекуррентность здесь такого же рода как рекуррентность добавляемая ACT, то есть не рекуррентность над последовательностью символов, а рекуррентность над репрезентациями каждого конкретного символа — итеративно улучшаем представления (фичи) входной последовательности. По идее получаем как бы более глубокий трансформер с шарингом весов (что эффективно).
Добавление рекуррентного inductive bias должно быть полезным в задачах, где такой bias естественнен (некоторые алгоритмические и языковые задачи).
На каждом рекуррентном шаге выполняются две операции: 1) self-attention по входной для этого слоя последовательности, 2) transition function поверх выходов self-attention’а, независимо в каждой позиции. В работе применяли две различные transition function в зависимости от задачи: separable convolution или полносвязную сеть с relu.
Это Universal Transformer.
А чтобы было совсем интересно для определения глубины этой рекуррентности добавим ACT, то есть адаптивное определение этой глубины. Применяется точно так же, как и в предыдущих кейсах с ACT.
Это Adaptive Universal Transformer.
Далее применяют полученный универсальный трансформер (а иногда и адаптивный) к разным задачам, на которых обычных трансформер работает плохо.
На bAbi QA dataset результат хороший. На subject-verb agreement обычный трансформер работает хуже LSTM, а адаптивный универсальный дотягивает до SOTA. На LAMBADA бьёт и обычный трансформер и LSTM. На алгоритмических задачах не дотягивает до Neural GPU (который обучался по специальному протоколу), но бьёт LSTM и обычный трансформер. На Learning to Execute тоже бьёт эту парочку. На машинном переводе в WMT 2014 en-de тоже бьёт обычные и weighted трансформеры.
В общем явно хорошая штука.
Среди преимуществ авторы отмечают эффективность по данным — работает на маленьких датасетах.
Авторы сводят Universal Transformer к Neural GPU (который Turing complete) и соответственно доказывают, что UT тоже Turing complete. Для тех, кто этой темой ранее не интересовался, про RNN также существует доказательство, что они Turing complete. Но про это как-нибудь отдельно, если будет интересно. Также на ICLR 2019 была другая интересная работа про универсальность обычных трансформеров и Neural GPU, но про неё тоже как-нибудь отдельно.
#3: Universal Transformer
Наконец про трансформеры. Лёша про них уже недавно писал, но теперь более детально.
Universal Transformers
Mostafa Dehghani, Stephan Gouws, Oriol Vinyals, Jakob Uszkoreit, Łukasz Kaiser
Статья: https://arxiv.org/abs/1807.03819
Презентация: http://mostafadehghani.com/wp-content/uploads/2018/08/Universal_Transformers.pdf
Код: https://github.com/tensorflow/tensor2tensor/blob/master/tensor2tensor/models/research/universal_transformer.py
Некоторые другие реализации: https://github.com/topics/universal-transformer
Работа выставлялась постером на ICLR 2019, но известна уже более полугода.
По сути делаем трансформер с рекуррентностью и динамическим критерием останова. А заодно вроде как получаем Turing completeness (теоретическую способность вычислить всё вычислимое — сэмулировать машину Тьюринга).
Рекуррентность здесь такого же рода как рекуррентность добавляемая ACT, то есть не рекуррентность над последовательностью символов, а рекуррентность над репрезентациями каждого конкретного символа — итеративно улучшаем представления (фичи) входной последовательности. По идее получаем как бы более глубокий трансформер с шарингом весов (что эффективно).
Добавление рекуррентного inductive bias должно быть полезным в задачах, где такой bias естественнен (некоторые алгоритмические и языковые задачи).
На каждом рекуррентном шаге выполняются две операции: 1) self-attention по входной для этого слоя последовательности, 2) transition function поверх выходов self-attention’а, независимо в каждой позиции. В работе применяли две различные transition function в зависимости от задачи: separable convolution или полносвязную сеть с relu.
Это Universal Transformer.
А чтобы было совсем интересно для определения глубины этой рекуррентности добавим ACT, то есть адаптивное определение этой глубины. Применяется точно так же, как и в предыдущих кейсах с ACT.
Это Adaptive Universal Transformer.
Далее применяют полученный универсальный трансформер (а иногда и адаптивный) к разным задачам, на которых обычных трансформер работает плохо.
На bAbi QA dataset результат хороший. На subject-verb agreement обычный трансформер работает хуже LSTM, а адаптивный универсальный дотягивает до SOTA. На LAMBADA бьёт и обычный трансформер и LSTM. На алгоритмических задачах не дотягивает до Neural GPU (который обучался по специальному протоколу), но бьёт LSTM и обычный трансформер. На Learning to Execute тоже бьёт эту парочку. На машинном переводе в WMT 2014 en-de тоже бьёт обычные и weighted трансформеры.
В общем явно хорошая штука.
Среди преимуществ авторы отмечают эффективность по данным — работает на маленьких датасетах.
Авторы сводят Universal Transformer к Neural GPU (который Turing complete) и соответственно доказывают, что UT тоже Turing complete. Для тех, кто этой темой ранее не интересовался, про RNN также существует доказательство, что они Turing complete. Но про это как-нибудь отдельно, если будет интересно. Также на ICLR 2019 была другая интересная работа про универсальность обычных трансформеров и Neural GPU, но про неё тоже как-нибудь отдельно.
arXiv.org
Universal Transformers
Recurrent neural networks (RNNs) sequentially process data by updating their state with each new data point, and have long been the de facto choice for sequence modeling tasks. However, their...
❤1
Open book on AutoML by Springer:
"Automated Machine Learning
Methods, Systems, Challenges"
Можно скачать pdf, epub
https://link.springer.com/book/10.1007/978-3-030-05318-5
"Automated Machine Learning
Methods, Systems, Challenges"
Можно скачать pdf, epub
https://link.springer.com/book/10.1007/978-3-030-05318-5
SpringerLink
Automated Machine Learning
This open access book gives the first comprehensive overview of general methods in Automatic Machine Learning, AutoML, collects denoscriptions of existing AutoML systems based on these methods, and discusses the first international challenge of AutoML systems.
Adaptive Attention Span in Transformers
Sainbayar Sukhbaatar, Edouard Grave, Piotr Bojanowski, Armand Joulin
Статья: https://arxiv.org/abs/1905.07799
Бенчмарки: https://paperswithcode.com/paper/adaptive-attention-span-in-transformers
Работа идейно близкая к ACT: давайте теперь сделаем адаптивным attention span трансформера.
Проблема обычного трансформера в том, что размер контекста, по которому считается self-attention, фиксирован и кроме того не может быть большим, потому что вычисления и память растут квадратично. Для увеличения контекста недавно уже было несколько решений, например, Transformer XL или Sparse Transformer. В первом из них ввели нечто вроде рекуррентности по времени, а во втором сильно облегчили матрицу внимания за счёт факторизации. Здесь же авторы (все из FB) вводят адаптивность, слой сам определяет необходимый ему размер контекста, так что это сокращает вычислительную сложность трансформера и позволяет, где надо, иметь большой контекст.
Кроме адаптивности в обычный трансформер вводятся две модификации.
1) Относительные позиционные ембеддинги (из работы Shaw et.al, https://arxiv.org/abs/1803.02155)
2) Механизм кеширования (из работы Dai про Transformer XL, https://arxiv.org/abs/1901.02860)
Далее размер контекста (attention span) каждой головы self-attention’а выучивается независимо от других (это называется adaptive attention span) путём добавления кусочно-линейной невозрастающей функции, маскирующей attention span. Функция состоит из двух кусков: константная единица от нуля до z (выучиваемый параметр) и спадающий до нуля кусок от z до z+R (гиперпараметр).
Усовершенствованным вариантом является dynamic attention span, динамически изменяющий attention span в зависимости от текущего входа. Здесь параметр z является функцией от входа (соответствует одному полносвязному слою с сигмоидальной активацией).
Проверяли на датасетах text8 и enwiki8, пробовали модели двух размеров (маленькая: 12 слоёв и размер внутреннего эмбеддинга 512; и большая: 24 слоя и эмбеддинг 768; везде 8 голов attention’а).
Сравнивались с Transformer XL и с глубоким (64 слоя) символьным трансформером Al-Rfou (https://arxiv.org/abs/1808.04444). Большие модели получили SotA на обоих датасетах с меньшим числом параметров и с меньшими FLOPS’ами.
На практике оказывается, что нижние слои обычно оперируют коротким контекстом, а верхние -- более длинным (несколько голов используют контекст до нескольких тысяч).
В общем прикольно, работает. В целом это довольно прямолинейный перенос идеи ACT.
Всё ещё кипятите? Тогда мы идём к вам. Что там ещё у нас в сетках зашито и не является адаптивным?
Sainbayar Sukhbaatar, Edouard Grave, Piotr Bojanowski, Armand Joulin
Статья: https://arxiv.org/abs/1905.07799
Бенчмарки: https://paperswithcode.com/paper/adaptive-attention-span-in-transformers
Работа идейно близкая к ACT: давайте теперь сделаем адаптивным attention span трансформера.
Проблема обычного трансформера в том, что размер контекста, по которому считается self-attention, фиксирован и кроме того не может быть большим, потому что вычисления и память растут квадратично. Для увеличения контекста недавно уже было несколько решений, например, Transformer XL или Sparse Transformer. В первом из них ввели нечто вроде рекуррентности по времени, а во втором сильно облегчили матрицу внимания за счёт факторизации. Здесь же авторы (все из FB) вводят адаптивность, слой сам определяет необходимый ему размер контекста, так что это сокращает вычислительную сложность трансформера и позволяет, где надо, иметь большой контекст.
Кроме адаптивности в обычный трансформер вводятся две модификации.
1) Относительные позиционные ембеддинги (из работы Shaw et.al, https://arxiv.org/abs/1803.02155)
2) Механизм кеширования (из работы Dai про Transformer XL, https://arxiv.org/abs/1901.02860)
Далее размер контекста (attention span) каждой головы self-attention’а выучивается независимо от других (это называется adaptive attention span) путём добавления кусочно-линейной невозрастающей функции, маскирующей attention span. Функция состоит из двух кусков: константная единица от нуля до z (выучиваемый параметр) и спадающий до нуля кусок от z до z+R (гиперпараметр).
Усовершенствованным вариантом является dynamic attention span, динамически изменяющий attention span в зависимости от текущего входа. Здесь параметр z является функцией от входа (соответствует одному полносвязному слою с сигмоидальной активацией).
Проверяли на датасетах text8 и enwiki8, пробовали модели двух размеров (маленькая: 12 слоёв и размер внутреннего эмбеддинга 512; и большая: 24 слоя и эмбеддинг 768; везде 8 голов attention’а).
Сравнивались с Transformer XL и с глубоким (64 слоя) символьным трансформером Al-Rfou (https://arxiv.org/abs/1808.04444). Большие модели получили SotA на обоих датасетах с меньшим числом параметров и с меньшими FLOPS’ами.
На практике оказывается, что нижние слои обычно оперируют коротким контекстом, а верхние -- более длинным (несколько голов используют контекст до нескольких тысяч).
В общем прикольно, работает. В целом это довольно прямолинейный перенос идеи ACT.
Всё ещё кипятите? Тогда мы идём к вам. Что там ещё у нас в сетках зашито и не является адаптивным?
arXiv.org
Adaptive Attention Span in Transformers
We propose a novel self-attention mechanism that can learn its optimal attention span. This allows us to extend significantly the maximum context size used in Transformer, while maintaining...