Очень советую GSoC. Хороший способ прокачать свои скилы и резюме, при этом помочь коммьюнити. А ещё вроде бы гугл неплохо это оплачивает.
Forwarded from DeepPavlov notifications
Всем привет😃
DeepPavlov выбрали в качестве наставнической организации Google Summer of Code for Summer 2021 🔥
GSoC – это международная программа для студентов старше 18 лет, позволяющая участвовать в работе над открытыми проектами. В этом году студенты в течение 10 недель (с 7 июня по 16 августа) могут оттачивать навыки программирования под присмотром наставников-волонтеров из DeepPavlov и получать стипендию от Google.
Посмотреть задачи и связаться с нами можно тут:
https://bit.ly/DPGSoC2021
Обратите внимание на требования к участию:
https://developers.google.com/open-source/gsoc/faq#students
В скором времени опубликуем полные требования по подаче заявки 🤗
DeepPavlov выбрали в качестве наставнической организации Google Summer of Code for Summer 2021 🔥
GSoC – это международная программа для студентов старше 18 лет, позволяющая участвовать в работе над открытыми проектами. В этом году студенты в течение 10 недель (с 7 июня по 16 августа) могут оттачивать навыки программирования под присмотром наставников-волонтеров из DeepPavlov и получать стипендию от Google.
Посмотреть задачи и связаться с нами можно тут:
https://bit.ly/DPGSoC2021
Обратите внимание на требования к участию:
https://developers.google.com/open-source/gsoc/faq#students
В скором времени опубликуем полные требования по подаче заявки 🤗
Withgoogle
Google Summer of Code
Google Summer of Code is a global program focused on bringing more developers into open source software development.
Random Feature Attention
Peng et al. [DeepMind]
arxiv.org/abs/2103.02143
Ещё одна статья про линеаризацию attention. Основная идея, использовать математический трюк, что случайная функция f(x)*f(y) определённого вида выдаёт нам в среднем exp(-||x - y||^2 / sigma).
Дальше под эту формулу подгоняется attention и у авторов получается избавиться от недиагональных элементом матрицы attention. Математика довольно простая, рекомендую посмотреть в статье.
По-результатам: показывают сравнимое с BigBird качество при более высокой скорости на классификации длинного текста и на машинном переводе.
Peng et al. [DeepMind]
arxiv.org/abs/2103.02143
Ещё одна статья про линеаризацию attention. Основная идея, использовать математический трюк, что случайная функция f(x)*f(y) определённого вида выдаёт нам в среднем exp(-||x - y||^2 / sigma).
Дальше под эту формулу подгоняется attention и у авторов получается избавиться от недиагональных элементом матрицы attention. Математика довольно простая, рекомендую посмотреть в статье.
По-результатам: показывают сравнимое с BigBird качество при более высокой скорости на классификации длинного текста и на машинном переводе.
Dan Jurafsky: How AI is changing our understanding of language
https://engineering.stanford.edu/magazine/article/dan-jurafsky-how-ai-changing-our-understanding-language
https://engineering.stanford.edu/magazine/article/dan-jurafsky-how-ai-changing-our-understanding-language
Stanford University School of Engineering
Dan Jurafsky: How AI is changing our understanding of language
A linguist and computer scientist explores how AI is expanding from capturing individual words and sentences to modeling the social nature of language.
Approximating How Single Head Attention Learns
Snell et al., [Berkeley]
arxiv.org/abs/2103.07601
A look inside LSTM seq2seq with attention training dynamics. The main idea of the paper is KTIW – Knowledge to Translate Individual Words. To explain the dynamics, the authors divide training into two stages: uniform attention (KTIW) and non-uniform attention.
In the first stage of model training, attention does not change significantly from the uniform, and the model mainly learns to translate individual words (KTIW, a.k.a. dictionary translation). After KTIW is learned, attention starts forming its patterns, and this process is driven by the KTIW. As correct word translations are already more probable, now attention mainly needs to align the words from the source and target language.
To quantitatively test the hypothesis, they develop a new lexical prob that is essentially hard attention. Yet, the most impressive result is that attention cannot learn a simple copy operation if KTIW is not learned.
Snell et al., [Berkeley]
arxiv.org/abs/2103.07601
A look inside LSTM seq2seq with attention training dynamics. The main idea of the paper is KTIW – Knowledge to Translate Individual Words. To explain the dynamics, the authors divide training into two stages: uniform attention (KTIW) and non-uniform attention.
In the first stage of model training, attention does not change significantly from the uniform, and the model mainly learns to translate individual words (KTIW, a.k.a. dictionary translation). After KTIW is learned, attention starts forming its patterns, and this process is driven by the KTIW. As correct word translations are already more probable, now attention mainly needs to align the words from the source and target language.
To quantitatively test the hypothesis, they develop a new lexical prob that is essentially hard attention. Yet, the most impressive result is that attention cannot learn a simple copy operation if KTIW is not learned.
Народ пытается сделать opensource GPT-3. Выкатили новые модельки на 1.3B и 2.7B.
twitter.com/arankomatsuzaki/status/1373732645444579331
github: тык
colab (TPU): тык
twitter.com/arankomatsuzaki/status/1373732645444579331
github: тык
colab (TPU): тык
Twitter
Aran Komatsuzaki
We've released the weights (1.3B and 2.7B) of our replication of GPT-3 🥳 Using the updated Colab notebook in the repo you should be able to finetune the models on your own data as well as run inference. github.com/EleutherAI/gpt…
Давно я не рекомендовал тут других каналов про ML.
Gradient Dude похож на этот канал в плане техничности. В основном там можно увидеть статьи по CV, но вот недавно был пост и про controllable text generation.
Вот как автор описывает свой канал:
TL;DR for DL/CV/ML/AI papers from an author of publications at top-tier AI conferences (CVPR, NIPS, ICCV,ECCV).
Most ML feeds go for fluff, we go for the real meat.
Gradient Dude похож на этот канал в плане техничности. В основном там можно увидеть статьи по CV, но вот недавно был пост и про controllable text generation.
Вот как автор описывает свой канал:
TL;DR for DL/CV/ML/AI papers from an author of publications at top-tier AI conferences (CVPR, NIPS, ICCV,ECCV).
Most ML feeds go for fluff, we go for the real meat.
Telegram
Gradient Dude
TL;DR for DL/CV/ML/AI papers from an author of publications at top-tier AI conferences (CVPR, NIPS, ICCV,ECCV).
Most ML feeds go for fluff, we go for the real meat.
YouTube: youtube.com/c/gradientdude
IG instagram.com/gradientdude
Most ML feeds go for fluff, we go for the real meat.
YouTube: youtube.com/c/gradientdude
IG instagram.com/gradientdude
Update Frequently, Update Fast: Retraining Semantic Parsing Systems in a Fraction of Time
Lialin et al. [UMass Lowell, Google]
https://arxiv.org/abs/2010.07865
Основная NLU компонена Google Assistant, Alexa и других ассистентов – это модель семантического парсинга, которая переводит фразы на естественном языке в команды. В проде, датасеты для таких систем часто обновляются. Например, в редкие интенты/слоты могут докинуть примеров. Но при каждой такой итерации приходится перетренировывать модель, что может занимать недели.
В этой статье предлагается использовать continual learning для решения этой проблемы. Вместо того, чтоы каждый раз учить новую модель, старая фантюнится немного хитрым методом. Главная сложность заключается в том, чтобы модель не потеряла в качестве на старом датасете. Для этого используется комбинация двух простых методов: sampling из старых данных и специальный вид регуляризации – EWC.
Экспериенты показывают, что такой простой подход позволяет сократить время на тренировку иногда в десятки раз, при этом качество финальной модели выходит такое же, как если бы она тренировалась с нуля.
Lialin et al. [UMass Lowell, Google]
https://arxiv.org/abs/2010.07865
Основная NLU компонена Google Assistant, Alexa и других ассистентов – это модель семантического парсинга, которая переводит фразы на естественном языке в команды. В проде, датасеты для таких систем часто обновляются. Например, в редкие интенты/слоты могут докинуть примеров. Но при каждой такой итерации приходится перетренировывать модель, что может занимать недели.
В этой статье предлагается использовать continual learning для решения этой проблемы. Вместо того, чтоы каждый раз учить новую модель, старая фантюнится немного хитрым методом. Главная сложность заключается в том, чтобы модель не потеряла в качестве на старом датасете. Для этого используется комбинация двух простых методов: sampling из старых данных и специальный вид регуляризации – EWC.
Экспериенты показывают, что такой простой подход позволяет сократить время на тренировку иногда в десятки раз, при этом качество финальной модели выходит такое же, как если бы она тренировалась с нуля.
Meta Learning and Its Applications to Natural Language Processing
https://meta-nlp-2021.github.io
Начнём с того, что это воркшоп по meta-learning в NLP, что уже интересно. И одним из спикеров будет Chelsea Finn, автор MAML. Вряд ли много кто из читалетей этого канала будет что-то сабмитить на этот воршоп, но зато на сайте есть отличная подборка материалов по meta-learning и meta-NLP включая курсы, ключевые статьи (разбитые по темам) и набор статей посвежее (листать до самого низа).
https://meta-nlp-2021.github.io
Начнём с того, что это воркшоп по meta-learning в NLP, что уже интересно. И одним из спикеров будет Chelsea Finn, автор MAML. Вряд ли много кто из читалетей этого канала будет что-то сабмитить на этот воршоп, но зато на сайте есть отличная подборка материалов по meta-learning и meta-NLP включая курсы, ключевые статьи (разбитые по темам) и набор статей посвежее (листать до самого низа).
meta-nlp-2021.github.io
MetaNLP at ACL 2021
Meta Learning and Its Applications to Natural Language Processing workshop at ACL 2021
Forwarded from Just links
Our new(ish) paper, Contrast To Divide. TL;DR: self-supervised pre-training is a very strong instrument when working with noisy labels. Like+retweet are more than welcome
https://twitter.com/evgeniyzhe/status/1375486632728616969
https://twitter.com/evgeniyzhe/status/1375486632728616969
Twitter
Evgenii Zheltonozhskii
Our new paper, C2D (https://t.co/AhrDVP8C0I, https://t.co/UcdS4nYTqH) shows how self-supervised pre-training boosts learning with noisy labels, achieves SOTA performance and provides in-depth analysis. Authors @evgeniyzhe @ChaimBaskin Avi Mendelson, Alex…
Оказывается, Google не выкладывал датасет C4 на котором тренировался T5, а выложили они лишь скрипт для его сборки. Всё бы хорошо, но на предобработку нужно несколько дней и несколько сотен CPU. AllenNLP выложили запрепроцешенную версию C4, теперь, чтобы скачать все 800Gb достаточно выполнить
также обещают скоро выложить его в формате 🤗 Datasets, чтобы можно было загрузить в одну строчку из питона
sudo apt install git-lfs
git clone https://huggingface.co/datasets/allenai/c4
cd c4
git lfs pull --include c4/en
также обещают скоро выложить его в формате 🤗 Datasets, чтобы можно было загрузить в одну строчку из питона
GitHub
Download the C4 dataset! · allenai/allennlp · Discussion #5056
Lots of people are interested in looking at or working with Google's C4 dataset. Unfortunately, Google does not offer it for download, and instead published open source tools to re-create it fr...
GPT Understands, Too
Liu et al.
arxiv.org/abs/2103.10385
После BERT все как-то свыклись, что двунаправленные сетки и MLM всегда работают лучше, чем однонаправленные сетки и LM. Авторы p-tuning показывают, что мы просто не умеем готовить языковые модели.
Как мы обычно файнтюним LM. Мы подаём в неё текст text, берём последний хидден с последнего слоя и запихиваем его в классификатор, файнтюним всю модель. В p-tuning авторы предлагают модифицировать вход в модель и вместо text подавать promt_start text promt_end, где promtstart и promtend могут быть, например, эмбеддингами такого текста "Этот текст text позитивный?". Эмбеддинги слов "Этот текст" будут promt_start, а "позитивный" – promt_end.
Но авторы идут дальше и предлагают вместо эмбеддинов настоящих слов, подавайть в качестве promtstart и promtend просто произвольные тензоры, которые мы и будем обучать. При этом веса сети не обучаются. Следующий шаг, который они делают – это вставляют LSTM после этих псевдоэмбеддингов (утвержают, что тогда язык будет лучше моделироваться и работать лучше, но никаких ablation studies не дают🤦♂️).
В общем результаты: в их кспериментах p-tuning очень хорошо улучшает и BERT и GPT. Внезапно, GPT даже вырывается вперёд на SuperGLUE.
Liu et al.
arxiv.org/abs/2103.10385
После BERT все как-то свыклись, что двунаправленные сетки и MLM всегда работают лучше, чем однонаправленные сетки и LM. Авторы p-tuning показывают, что мы просто не умеем готовить языковые модели.
Как мы обычно файнтюним LM. Мы подаём в неё текст text, берём последний хидден с последнего слоя и запихиваем его в классификатор, файнтюним всю модель. В p-tuning авторы предлагают модифицировать вход в модель и вместо text подавать promt_start text promt_end, где promtstart и promtend могут быть, например, эмбеддингами такого текста "Этот текст text позитивный?". Эмбеддинги слов "Этот текст" будут promt_start, а "позитивный" – promt_end.
Но авторы идут дальше и предлагают вместо эмбеддинов настоящих слов, подавайть в качестве promtstart и promtend просто произвольные тензоры, которые мы и будем обучать. При этом веса сети не обучаются. Следующий шаг, который они делают – это вставляют LSTM после этих псевдоэмбеддингов (утвержают, что тогда язык будет лучше моделироваться и работать лучше, но никаких ablation studies не дают🤦♂️).
В общем результаты: в их кспериментах p-tuning очень хорошо улучшает и BERT и GPT. Внезапно, GPT даже вырывается вперёд на SuperGLUE.
Few-Shot Text Classification with Triplet Networks
Wei et al.
arxiv.org/abs/2103.07552
Очень простой подход к few-shot. Тренируем ранжирующую сетку с triplet loss на основе BERT. Добавляем к этому всему аугментации данных (случайные добавления/выбрасывания/... слов). Называем умным словом curriculum learning то, что мы в начале учимся на настоящих данных, а потом на аугментированных (разве не наоборот обычно делают на кагле?). Увеличиваем силу аугментаций в течение тренировки. Добавляем к этому hard negative mining.
В результате эти хаки помогают заметно улучшить бейзлайн, в особенности hard negatives и усиление аугментаций.
Весьма практичная статья, думаю может быть интересно попробовать на настоящих задачах.
код: github.com/jasonwei20/triplet-loss
ещё один обзор: andlukyane.com/blog/paper-review-nlptriplettricks
Wei et al.
arxiv.org/abs/2103.07552
Очень простой подход к few-shot. Тренируем ранжирующую сетку с triplet loss на основе BERT. Добавляем к этому всему аугментации данных (случайные добавления/выбрасывания/... слов). Называем умным словом curriculum learning то, что мы в начале учимся на настоящих данных, а потом на аугментированных (разве не наоборот обычно делают на кагле?). Увеличиваем силу аугментаций в течение тренировки. Добавляем к этому hard negative mining.
В результате эти хаки помогают заметно улучшить бейзлайн, в особенности hard negatives и усиление аугментаций.
Весьма практичная статья, думаю может быть интересно попробовать на настоящих задачах.
код: github.com/jasonwei20/triplet-loss
ещё один обзор: andlukyane.com/blog/paper-review-nlptriplettricks
GitHub
GitHub - jasonwei20/triplet-loss
Contribute to jasonwei20/triplet-loss development by creating an account on GitHub.
Learning Neural Network Subspaces
Wortsman et al. [Apple]
arxiv.org/abs/2102.10472
Как мы обычно тренируем сетки – выучиваем параметры W. Но вообще говоря в пространстве параметров нейросети очень много подходящих нам W. Есть уже довольно много работ, которые показывают, что различные подходящие нам W связаны друг с другом (обычно, непрямыми) линиями, на проятжени которых наша тестовая accuracy остаётся высокой. В этой статье предлагают вместо выучивания одного W, выучивать целый симплекс. Зачем это надо? Во-первых это интересно. Но есть и практическая польза, о ней ниже.
Сам алгоритм выучивания симплекса очень простой. У нас есть параметризованая линия P(a) в пространстве наших весов нейросети. Например, в случае симплекса P(a) = sum(a_i * W_i), где sum(a_i) = 1. Мы хотим подобрать N такие сетов параметров нейросети W_i (вершин симплекса), что на всей линии P(a) у нас будет низкий лосс. Звучит сложно, а решение очень классное. Мы просто применяем chain rule и он выдаёт нам обыкновенный градиент лосса по параметром нейросети (тот же, что вам выдаёт loss.backward() в торче) взвешенный на параметры линии a. Обучаем мы N вершин нашего симплекса W_i в одном и том же тренировочном цикле просто семплируя различные a из равномерного распределения.
На выходе получается симплекс, в котором каждая точка должна давать достаточно высокий тренировочную (а на практике и тестовую) accuracy. Как это можно использовать? Взять центральную точку этого симплекса в качестве параметров нейросети. В статье эта точка зачастую обходит по тестовой accuracy и обычные методы тренировки и stochastic weight averaging. Ещё при тренировке в лосс добавляют регяляризатор, максимизирующий квадрат косинусного расстояния между различными W_i, это позволяет немножко улучшить результат.
Wortsman et al. [Apple]
arxiv.org/abs/2102.10472
Как мы обычно тренируем сетки – выучиваем параметры W. Но вообще говоря в пространстве параметров нейросети очень много подходящих нам W. Есть уже довольно много работ, которые показывают, что различные подходящие нам W связаны друг с другом (обычно, непрямыми) линиями, на проятжени которых наша тестовая accuracy остаётся высокой. В этой статье предлагают вместо выучивания одного W, выучивать целый симплекс. Зачем это надо? Во-первых это интересно. Но есть и практическая польза, о ней ниже.
Сам алгоритм выучивания симплекса очень простой. У нас есть параметризованая линия P(a) в пространстве наших весов нейросети. Например, в случае симплекса P(a) = sum(a_i * W_i), где sum(a_i) = 1. Мы хотим подобрать N такие сетов параметров нейросети W_i (вершин симплекса), что на всей линии P(a) у нас будет низкий лосс. Звучит сложно, а решение очень классное. Мы просто применяем chain rule и он выдаёт нам обыкновенный градиент лосса по параметром нейросети (тот же, что вам выдаёт loss.backward() в торче) взвешенный на параметры линии a. Обучаем мы N вершин нашего симплекса W_i в одном и том же тренировочном цикле просто семплируя различные a из равномерного распределения.
На выходе получается симплекс, в котором каждая точка должна давать достаточно высокий тренировочную (а на практике и тестовую) accuracy. Как это можно использовать? Взять центральную точку этого симплекса в качестве параметров нейросети. В статье эта точка зачастую обходит по тестовой accuracy и обычные методы тренировки и stochastic weight averaging. Ещё при тренировке в лосс добавляют регяляризатор, максимизирующий квадрат косинусного расстояния между различными W_i, это позволяет немножко улучшить результат.