Продолжение про ACT
#1b: Repeat-RNN
Comparing Fixed and Adaptive Computation Time for Recurrent Neural Networks
Daniel Fojo, Víctor Campos, Xavier Giro-i-Nieto
https://arxiv.org/abs/1803.08165
Любопытная работа с ICLR 2018. А что если дело не в динамическом определении, сколько раз прогонять каждый слой, а просто в том, чтобы прогонять каждый слой несколько раз?
Сделали новый бейзлайн под названием Repeat-RNN, который выполняет фиксированное количество шагов (>1) на каждом элементе. Это по сути ablation полноценного ACT. Число повторов здесь является гиперпараметром.
Это также эквивалентно кратному увеличению количества каждого входного элемента с дополнительным флажком про то новый это токен или повторный.
Неожиданно оказалось, что Repeat-RNN научается решать задачи за меньшее число шагов SGD и с меньшим количеством повторов, чем ACT. Получилось, что предложенный baseline не хуже или лучше, чем ACT.
И в ACT, и в Repeat-RNN надо тюнить гиперпараметры, но гиперпараметр в Repeat-RNN более интуитивно понятный.
Открытым остаётся вопрос, почему именно итеративное обновление состояния для каждого токена перед тем, как начать обрабатывать следующий, улучшает способности сеток. То ли это понуждает сети итеративно улучшать оценки фич, то ли по факту увеличенное количество применённых нелинейностей даёт возможность моделировать более сложные функции при том же числе параметров модели.
(продолжение следует)
#1b: Repeat-RNN
Comparing Fixed and Adaptive Computation Time for Recurrent Neural Networks
Daniel Fojo, Víctor Campos, Xavier Giro-i-Nieto
https://arxiv.org/abs/1803.08165
Любопытная работа с ICLR 2018. А что если дело не в динамическом определении, сколько раз прогонять каждый слой, а просто в том, чтобы прогонять каждый слой несколько раз?
Сделали новый бейзлайн под названием Repeat-RNN, который выполняет фиксированное количество шагов (>1) на каждом элементе. Это по сути ablation полноценного ACT. Число повторов здесь является гиперпараметром.
Это также эквивалентно кратному увеличению количества каждого входного элемента с дополнительным флажком про то новый это токен или повторный.
Неожиданно оказалось, что Repeat-RNN научается решать задачи за меньшее число шагов SGD и с меньшим количеством повторов, чем ACT. Получилось, что предложенный baseline не хуже или лучше, чем ACT.
И в ACT, и в Repeat-RNN надо тюнить гиперпараметры, но гиперпараметр в Repeat-RNN более интуитивно понятный.
Открытым остаётся вопрос, почему именно итеративное обновление состояния для каждого токена перед тем, как начать обрабатывать следующий, улучшает способности сеток. То ли это понуждает сети итеративно улучшать оценки фич, то ли по факту увеличенное количество применённых нелинейностей даёт возможность моделировать более сложные функции при том же числе параметров модели.
(продолжение следует)
arXiv.org
Comparing Fixed and Adaptive Computation Time for Recurrent Neural Networks
Adaptive Computation Time for Recurrent Neural Networks (ACT) is one of the
most promising architectures for variable computation. ACT adapts to the input
sequence by being able to look at each...
most promising architectures for variable computation. ACT adapts to the input
sequence by being able to look at each...
Продолжение про ACT, часть 3-я.
#2: ResNet & SACT
Интересная работа про применение ACT к свёрточным сетям, конкретно к ResNet’ам. Главный автор -- Миша Фигурнов, который теперь тоже работает в DeepMind.
Пользуясь случаем передаю Мише привет :)
Spatially Adaptive Computation Time for Residual Networks
Michael Figurnov, Maxwell D. Collins, Yukun Zhu, Li Zhang, Jonathan Huang, Dmitry Vetrov, Ruslan Salakhutdinov
Статья: https://arxiv.org/abs/1612.02297
Код: https://github.com/mfigurnov/sact
Идея работы в том, что для разных участков изображения можно было бы регулировать количество вычислений, следуя интуиции, что одни участки изображения важнее других и “сложность” у них тоже разная. Для простых и менее важных регионов могло бы хватить одного-двух слоёв в residual блоке, для более важных и сложных требуется больше.
Эта вариация ACT называется Spatially Adaptive Computation Time (SACT).
Идейно внутри всё похоже на предыдущие варианты, только теперь применено не в рекуррентных сетях, а в (почти) обычных feed-forward -- ResNet’ах. Это своего рода встраивание механизма внимания в ResNet’ы. Мы прекращаем обрабатывать конкретную позицию изображения, как только её фичи стали “достаточно хорошими”.
ResNet’ы состят из блоков (block), каждый из которых содержит пачку слоёв (units). К выходу каждого юнита добавляется ветка, считающая halting score. Как только накопленная сумма halting scores для конкретной позиции достигла единицы (в реальности здесь тоже фигурирует небольшой epsilon как в оригинальной работе), все последующие юниты этого блока пропускаются. Все halting scores превращаются в распределение (усечением веса для последнего сработавшего юнита и занулением весов всех последующих, так чтобы сумма весов была равна единице). И наконец выход блока считается взвешенной суммой выходов юнитов этого блока с весами полученными описанным выше способом.
Визуализация SACT даёт карты, похожие на карты, продуцируемые механизмами внимания, что можно использовать для интерпретации результата и получения некой интуиции про работу сети.
В отличие от рекуррентных сетей здесь есть новые тонкости, например, можно получить мёртвые юниты (последние юниты в блоке), которые не получают достаточно сигнала для обучения. В случает RNN такой проблемы не было благодаря шарингу весов. В работе эта проблема решается.
SACT даёт лучшее качество и производительность по сравнению с обычным ACT или бейзлайновыми резнетами.
Поскольку механизм полносвёрточный, то всё это применимо и к разным разрешениям, и к разным задачам (классификация, детекция, …)
По-прежнему надо тюнить гиперпараметр про вклад ACT в функцию потерь.
(продолжение следует)
#2: ResNet & SACT
Интересная работа про применение ACT к свёрточным сетям, конкретно к ResNet’ам. Главный автор -- Миша Фигурнов, который теперь тоже работает в DeepMind.
Пользуясь случаем передаю Мише привет :)
Spatially Adaptive Computation Time for Residual Networks
Michael Figurnov, Maxwell D. Collins, Yukun Zhu, Li Zhang, Jonathan Huang, Dmitry Vetrov, Ruslan Salakhutdinov
Статья: https://arxiv.org/abs/1612.02297
Код: https://github.com/mfigurnov/sact
Идея работы в том, что для разных участков изображения можно было бы регулировать количество вычислений, следуя интуиции, что одни участки изображения важнее других и “сложность” у них тоже разная. Для простых и менее важных регионов могло бы хватить одного-двух слоёв в residual блоке, для более важных и сложных требуется больше.
Эта вариация ACT называется Spatially Adaptive Computation Time (SACT).
Идейно внутри всё похоже на предыдущие варианты, только теперь применено не в рекуррентных сетях, а в (почти) обычных feed-forward -- ResNet’ах. Это своего рода встраивание механизма внимания в ResNet’ы. Мы прекращаем обрабатывать конкретную позицию изображения, как только её фичи стали “достаточно хорошими”.
ResNet’ы состят из блоков (block), каждый из которых содержит пачку слоёв (units). К выходу каждого юнита добавляется ветка, считающая halting score. Как только накопленная сумма halting scores для конкретной позиции достигла единицы (в реальности здесь тоже фигурирует небольшой epsilon как в оригинальной работе), все последующие юниты этого блока пропускаются. Все halting scores превращаются в распределение (усечением веса для последнего сработавшего юнита и занулением весов всех последующих, так чтобы сумма весов была равна единице). И наконец выход блока считается взвешенной суммой выходов юнитов этого блока с весами полученными описанным выше способом.
Визуализация SACT даёт карты, похожие на карты, продуцируемые механизмами внимания, что можно использовать для интерпретации результата и получения некой интуиции про работу сети.
В отличие от рекуррентных сетей здесь есть новые тонкости, например, можно получить мёртвые юниты (последние юниты в блоке), которые не получают достаточно сигнала для обучения. В случает RNN такой проблемы не было благодаря шарингу весов. В работе эта проблема решается.
SACT даёт лучшее качество и производительность по сравнению с обычным ACT или бейзлайновыми резнетами.
Поскольку механизм полносвёрточный, то всё это применимо и к разным разрешениям, и к разным задачам (классификация, детекция, …)
По-прежнему надо тюнить гиперпараметр про вклад ACT в функцию потерь.
(продолжение следует)
arXiv.org
Spatially Adaptive Computation Time for Residual Networks
This paper proposes a deep learning architecture based on Residual Network that dynamically adjusts the number of executed layers for the regions of the image. This architecture is end-to-end...
Мы завели чатик для обсуждения статей. Иногда хочется, так что велкам:
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