Size: a a a

gonzo-обзоры ML статей

2019 March 01
gonzo-обзоры ML статей
Regularizing and Optimizing LSTM Language Models
Stephen Merity, Nitish Shirish Keskar, Richard Socher
Salesforce Research

#LM #regularization #NLP #ICLR #2018

Статья: https://arxiv.org/abs/1708.02182
Пара пересказов: https://yashuseth.blog/2018/09/12/awd-lstm-explanation-understanding-language-model/, https://medium.com/@bingobee01/a-review-of-dropout-as-applied-to-rnns-72e79ecd5b7b
Родной код на pytorch: https://github.com/salesforce/awd-lstm-lm

Довольно упоротая работа, также известна под кодовым названием AWD-LSTM. Суть статьи в том, как из уже известных костылей можно собрать SOTA для LM. Правда SOTA это было в 2017 году, но как обзор регуляризационных техник -- довольно полезно. Ну и оно всё ещё используется, например, ULMFiT на нём собран.

База такая:
- архитектура -- стандартный LM на базе RNN
- ядро -- многослойный LSTM или GRU или QRNN
- используют tie weights (синхронизация весов эмбеддингов в энкодере и декодере)

Дропауты:
- обычный Dropout.
- Locked Dropout (аналог variational dropout) -- dropout элементов, статичный на всё время обработки батча, используется между слоями RNN.
- DropConnect aka WeightDrop -- это Locked Dropout, но для весов на связях сети, а не активаций, используется на скрытом состоянии между тактами RNN.
- Embedding Dropout -- при обработке батча dropout на эмбеддинги делается так, что у всех слов синхронно дропаются одни и те же координаты.

Работа с градиентом:
- используют схему переключения между SGD и average SGD, утверждают, что для задач типа LM это лучше чем Adam или momentum SGD
- используют weight decay
- для каждого батча делают BPTT рандомизированной длины, при этом делают поправку на LR в зависимости от этой длины.
- используют обычный gradient clipping
- Activation Regularization (AR) -- дополнительная регуляризация на число активированных нейронов
- Temporal Activation Regularization (AR) -- аналогично, но на первую производную числа активированных нейронов

Приводят сравнительныей анализ эффективности этих методов, см табличку:
источник
gonzo-обзоры ML статей
источник
2019 March 05
gonzo-обзоры ML статей
Identity Crisis: Memorization and Generalization under Extreme Overparameterization
Chiyuan Zhang, Samy Bengio, Moritz Hardt, Yoram Singer
Google AI

Статья: https://arxiv.org/abs/1902.04698

#CNN, #FCN, #FFNN, #optimization, #memorization, #generalization, 2019

Ещё одна занятная статья про природу вещей.
Известно, что машинное обучение обычно сходится к компромису между запоминанием обучающей выборки и её обобщением.
Авторы исследуют следующий вопрос -- какие из архитектур сетей более склонны к заучиванию вместо обобщения.

Для этого рассматривается эксперимент в любопытной постановке:
- Возьмём достаточно большую (overparametrized) сеть (рассматривались полносвязные сети и СNN).
- Будем учить её выдавать вход на выход, MSE; но будем учить её только на одном примере А, N(А) = А.
- У такой задачи могут быть различные решения, в частности, есть два крайних случая: сеть выучивает константу N(X) = A, и сеть выучивает тождественную функцию N(X) = X. На практике получается что-то промежуточное. При этом авторы утверждают, что константа соответствует запоминанию, а тождественная функция -- обобщению.
- Далее, в режиме теста на примерах В, отличных от А, можно, сравнивая Corr(B, N(B)) и Corr(A, N(B)), понять, к чему ближе результат обучения -- к константе или к тождественной функции.

Используя этот подход, авторы тестируют:
- полносвязные линейные сети (склонны учить константу, а на совсем неизвестных входах -- шум),
- полносвязные нелинейные сети (склонны учить константу, но более эффективно, чем линейные),
- CNN (на малом числе слоёв учат тождественное преобразование, с увеличением числа слоёв плавно переходят к константе).

Дальше детальнее разбирают зависимость результата в случае CNN от разных факторов.
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
2019 March 08
gonzo-обзоры ML статей
Understanding and Improving Interpolation in Autoencoders via an Adversarial Regularizer
David Berthelot, Colin Raffel, Aurko Roy, Ian Goodfellow
Google Brain

#AE, #VAE, #representation, #ICLR 2019

Статья: https://arxiv.org/abs/1807.07543
Родной код на tf: https://github.com/brain-research/acai
Неродной код на pytorch: https://gist.github.com/kylemcdonald/e8ca989584b3b0e6526c0a737ed412f0

В статье рассматривается архитектура AE. В простейшем виде она сопоставляет каждому кодируемому объекту вектор в некотором фиксированном пространстве, но никаких дополнительных свойств этого пространства не гарантирует. Всякие модификации архитектуры (DAE, VAE, AAE, VQ-VAE) фактически накладывают на это пространство дополнительные ограничения, что даёт дополнительные удобства при его использовании.

Авторы предлагают архитектуру Adversarially Constrained Autoencoder Interpolation (ACAI), призванную строить более непрерывные, гладкие пространства представлений. Достигается это за счёт достаточно простого и красивого трюка:
- возьмём случайно два реальных объекта из обучающей выборки x1, x2, построим их свёртки l1 = E(x1), l2 = E(x2)
- возьмём случайное значение alpha (0 .. 0.5) и построим интерполяцию между свёртками l3 = alpha*l1 + (1-alpha)*l2
- декодируем объект из этого интерполированного представления y3 = D(l3)
- пусть критик (с архитектурой, такой же как у энкодера) пытается угадать alpha по y3, т.е. alpha_critic = C(y3)
За успех критика будем штрафовать энкодер и декодер, т.е. АЕ будет стараться делать так, чтобы критик предсказывал всегда нулевое значение alpha. Такая регуляризация приводит к тому, что области латентного пространства между представлениями реальных объектов гладко заполняются правдоподобными объектами. На практике (в коде) вся эта конструкция подпёрта ещё парой костылей, но общий смысл остаётся прежним.

Гладкость тестируют числено и органолептически на модельных задачах + оценивают качество на downstream задачах классификации и кластеризации. Сравниваются с другими АЕ-моделями, почти везде выигрывают (на втором месте обычно VAE).
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
2019 March 11
gonzo-обзоры ML статей
BioBERT: a pre-trained biomedical language representation model for biomedical text mining
Jinhyuk Lee, Wonjin Yoon, Sungdong Kim, Donghyeon Kim, Sunkyu Kim, Chan Ho So, Jaewoo Kang

Статья: https://arxiv.org/abs/1901.08746
BioBERT pre-trained weights: https://github.com/naver/biobert-pretrained
Код для fine-tuning на NER/RE/QA: https://github.com/dmis-lab/biobert

Работа из серии “давайте прикрутим BERT ещё к какой-нибудь задаче и сделаем новый state-of-the-art”. Прикрутили BERT для анализа биомедицинских текстов.

Причём прикрутили не просто BERT, а дообученный на биомед текстах (BioBERT).

BioBERT = 1) BERT (претренированный на general domain типа En-Wikipedia, BookCorpus) + 2) претренировка на биомед текстах (PubMed abstracts, PMC full texts) + 3) fine-tuning на конкретную задачу.

Проверяли на задачах: Named Entity Extraction, Relation Extraction, Question Answering.

Что интересно, некоторые из задач с крайне маленькими датасетами (QA дообучался на 327, 486 или 618 примерах; NER и RE максимум на нескольких десятках тысяч, 30681 -- самый крупный датасет).

В общем, как полагается, хорошо побили предыдущие результаты.

Поразительно, как хорошо работает на мелких датасетах в QA.

В итоге новый кубик в копилку тех, кто работает с биомед текстами.

Использовали свою платформу NSML (NAVER Smart Machine Learning, подробнее тут: https://arxiv.org/abs/1712.05902, NSML: A Machine Learning Platform That Enables You to Focus on Your Models).
источник
gonzo-обзоры ML статей
Overview of the pre-training and fine-tuning of BioBERT
источник
gonzo-обзоры ML статей
datasets
источник
gonzo-обзоры ML статей
NER results
источник
2019 March 20
gonzo-обзоры ML статей
Do we train on test data? Purging CIFAR of near-duplicates
Björn Barz, Joachim Denzler
Статья: https://arxiv.org/abs/1902.00423
Исправленный CIFAR, ciFAIR: https://cvjena.github.io/cifair/

Забавная статья про то, как в обоих картиночных датасетах CIFAR (10 и 100) обнаружили дубликаты между трейн и тест сетами, а также внутри тест сетов. И соответственно все оценки качества моделей на CIFAR завышены и могут быть перекошены в сторону запоминания вместо обобщения.

Проблема в том, что датасеты отфильтрованы недостаточно хорошо. Попиксельные дубликаты из них убраны, но остались другие дубликаты (near-duplicates) типа картинок с небольшими сдвигами или кропами, изменениями яркости и просто очень похожие объекты, различить которые можно только внимательно вглядываясь.

Найдено 3.3% дубликатов в CIFAR-10 и 10% (!) дубликатов в CIFAR-100. Рассматривается только кейс, когда для картинок из тест сета есть дубликаты в соответствующих трейн сетах. Дубликаты внутри самих трейн сетов не рассматриваются, потому что bias конечно вносят (на каких-то картинках сеть обучается больше), но оценку качества не смещают.

Дубликаты обнаруживают автоматизированной процедурой. Для каждого объекта находится ближайший в пространстве эмбеддингов из обученной на трейн сете CNN (взяты L2 нормализованные фичи с одного из верхних слоёв), а затем все пары отсматриваются вручную и размечаются людьми.

Все найденные дубликаты вычищены, заменены на картинки аналогичных классов, взятые из того же датасета-предшественника, из которого был собран CIFAR (это датасет Tiny Images, http://groups.csail.mit.edu/vision/TinyImages/, собранный из картиночной поисковой выдачи по запросам для synset’ов WordNet). Получился честный CIFAR (Fair CIFAR, ciFAIR), который можно взять по ссылке из начала поста.

Результаты моделей пересчитали (есть сложность, обученных на CIFAR моделей не опубликовано, поэтому обучали заново на референсных архитектурах), посчитали разницу в качестве (в среднем ошибка возросла на 0.41% для CIFAR-10 и на 2.73% на CIFAR-100; порядок лидеров не поменялся кроме одной пары на CIFAR-10). На сайте с датасетом есть лидерборд.

Вывод: в целом оферфита на дубликаты не произошло, и это хорошо (при этом модели, на которых проверялись, обладают достаточной capacity, чтобы тупо всё запомнить). Но всё-таки как-то неаккуратненько!

Следите за своими датасетами.
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
2019 March 25
gonzo-обзоры ML статей
Semantic Redundancies in Image-Classification Datasets: The 10% You Don't Need
Vighnesh Birodkar, Hossein Mobahi, Samy Bengio
Статья: https://arxiv.org/abs/1901.11409

Ещё одна статья про избыточность датасетов, идейно перекликающаяся со статьёй из предыдущего поста.

Идея в том, чтобы посмотреть, можно ли в датасете выделить подмножество примеров, на котором с одной стороны результат обучения будет лучше, чем на случайно выбранном подмножестве такого же размера, а с другой — сопоставим с полным датасетом.

Это удалось на CIFAR-10 и ImageNet, и таким образом авторы показывают избыточность этих датасетов (порядка 10%). То есть эти самые 10% можно найти простой техникой агломеративной кластеризации.

Для этого на полном датасете обучается модель (ResNet-32 на CIFAR-10/100, ResNet-101 на ImageNet), затем с предпоследнего слоя берутся представления данных и на них проводится процедура агломеративной кластеризации, где в качестве меры близости берётся косинусная мера (вернее 1 минус косинусная близость в качестве меры непохожести). Кластеризацию проводят до образования группы кластеров нужного размера (объединяют наименее непохожие). Затем из каждого кластера оставляют точку наиболее близкую к центроиду и выбрасывают остальные. Так получаем сокращённый датасет.

Затем на сокращённом датасете обучают сетку и оценивают её качество. Сравнивают с сеткой, обученной на рандомном подмножестве такого же размера, взятого из оригинального датасета.

На CIFAR-10 оказывается, что отобранные таким образом 90% точек дают качество полного датасета. То же самое на ImageNet.

Главная интрига — CIFAR-100. На нём предложенный метод не обнаружил избыточности! И отобранный кластеризацией датасет был лишь чуть лучше рандомного. Что входит в противоречие с предыдущей статьёй, где нам явно показали, что в этом датасете полно почти-дубликатов и есть даже почти полные дубликаты, в отличие от CIFAR-10 (там в статье было также написано, что при составлении CIFAR-100, похоже, были ослаблены строгие критерии фильтрации). Там на CIFAR-100 нашли как раз порядка 10% разных дубликатов, которых не нашли здесь.

Получается серьёзная нестыковка.

Интересно, проблема в различии функций близости (здесь косинусная мера, там евклидово расстояние) или в особенности агломеративной процедуры (где в качестве меры непохожести двух кластеров берётся максимальная непохожесть между всеми парами точек этих кластеров)?

В общем всё это подозрительно!

P.S. Хотя я не совсем корректен, в предыдущей статье искали дубликаты в тесте относительно трейна, здесь же работали с трейн. Но всё равно как-то не верится.
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
CIFAR-10
источник