gonzo-обзоры ML статей – Telegram
gonzo-обзоры ML статей
24K subscribers
2.75K photos
2 videos
3 files
1.36K links
Авторы:
Гриша Сапунов, ранее руководитель разработки Яндекс-Новостей, ныне CTO Intento. Области интересов: AI/ML/DL, биоинформатика.
Лёша Тихонов, ранее аналитик в Яндексе, автор Автопоэта, Нейронной Обороны... Области интересов: discrete domain, NLP, RL.
Download Telegram
Продолжение про 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 в функцию потерь.

(продолжение следует)
Мы завели чатик для обсуждения статей. Иногда хочется, так что велкам:
https://news.1rj.ru/str/joinchat/BVpazxaJ5vHOsrnZ2xRlaQ

Вот ACT как раз можно пообсуждать ;)
Продолжение про 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, но про неё тоже как-нибудь отдельно.
1
Results on bAbI tasks
Universal Transformer with dynamic halting
Внимание, трансформер думает!
Перспектива