?

Log in

No account? Create an account

Компьютерная лингвистика

Новостная лента www.solarix.ru

Entries by category: технологии

дилемма с BERT в AGRR-2019
kelijah
По результатам тестов классификатора предложений для https://github.com/dialogue-evaluation/AGRR-2019, возникла дилемма.

С одной стороны, базовая нейросетевая модель выбивает на этой задаче более 90% точности при кросс-валидации.

С другой стороны, крайне урезанная BERT (обучена на 100,000 парах предложений, урезана до 2 heads и другие усечения) плюс fine tuning дала почти 85%.

По ощущениям, повысив сложность BERT хотя бы до 4 или 6 heads, можно поднять и точность последующей классификации. Но усеченная BERT обучалась на GTX 1080 Ti более суток. То есть любые улучшения потребуют несколько суток прогона. С другой стороны, эту обученную русскую BERT можно будет использовать и в других конкурсах. А до дедлайнов по AGRR осталось совсем немного.

Вот и вопрос - стоит ли оно того, при наличных вычислительных ресурсах.

PS (15-02-2019): Увеличил сложность BERT до 4х heads, переобучил на тех же 100,000 парах предложений. Точность классификации предложений для задачи AGRR на кроссвалидации выросла до ~91%.

Transformer и 30 тысяч сэмплов контекст-вопрос-ответ для русскоязычного чатбота
kelijah
Пытаюсь оценить перспективность использования keras-варианта Трансформера для задачи генерации реплики русскоязычного чатбота на основе контекста и вопроса.
Проверил разные варианты представления текста, в том числе отдельные слова и рекомендуемый авторами SentencePiece.
Параметры Трансформера варьировал в поисках оптимума, учитывая небольшой объем датасета - примерно 30 тысяч сэмплов.
Результат пока - негативный, качество генерации ответов сильно ниже самых плохих seq2seq моделей.

Слишком хороший f1 и roc-auc score в моделях релевантности/синонимичности с triple loss
kelijah
1. Что выдает модель сама по себе

Как работают эти модели? В качестве обучающих данных используются триады, содержащие опорное предложение, нерелевантное предложение и релевантное предложение. Для модели синонимичности эта тройка может выглядеть так:

(anchor) кошка ловит мышку
(positive) на мышку охотится кошка
(negative) дети играют в кошки-мышки
Read more...Collapse )

Неудачные эксперименты с triple и contrastive loss архитектурами для определения перефразировок
kelijah

1. Постановка задачи

Нужна модель, которая определяет, эквивалентны ли два фрагмента текста (предложения) семантически.Правила синтаксиса и морфологии допускают очень большую свободу выражения латентной семантики, поэтому простая похожесть цепочек символов недостаточно хороша для некоторых случаев:

Read more...Collapse )


Сравнение оптимизаторов nadam и rmsprop с помощью F-теста
kelijah
Еще одна серия экспериментов с моделью для векторизации символьного представления слов.
Сравним две штатных реализации оптимизаторов в Keras - rmsprop и nadam. Фиксируем batch_size значением 250, делаем несколько запусков обучения модели для каждого варианта оптимизатора (см. строку 356 в файле wordchar2vector_trainer.py).
ANOVA для сравнения алгоритмов оптимизации...Collapse )

Визуализация влияния batch_size на качество модели wordchar2vector - ч.2
kelijah
В комментарии к предыдущему посту коллега p2004r подсказал замечательную мысль по поводу того, что надо бы смотреть не на количество эпох, а на количество градиентов, которые увидела сетка при обучении. И получается вот такая замечательная картина.

1) Смотрим по-старому, динамика обучения в зависимости от числа эпох:
Read more...Collapse )2) Теперь то же самое, но в зависимости от количества батчей (масштаб по OX сделан криво, поэтому цена деления такая странная - надо домножать на число сэмплов в обучающем датасете):
Read more...Collapse )
То есть начиная с какого-то размера батча (>100 в данном случае) сетка обучается примерно с одинаковым темпом для разных batch_size. Разница только в том, что для каких-то значений обучение обрывается раньше, и максимальная точность не достигается.

Новая тетрадка выложена в репозиторий.

PS: сделан расчет еще для нескольких batch_size и получился вот такой график максимально достижимой точности:
Read more...Collapse )

Пробный диалоговый бот для Telegram
kelijah
После рафакторинга кода сделал пробный вариант чат-бота с использованием python-telegram-bot:
Read more...Collapse )

Autoencoders for word representations и ахитектура для встраивания доп. информации
kelijah
Для эксперимента WordRepresentations делаю последний вариант получения векторного представления слов с помощью автоэнкодеров.

Read more...Collapse )

Решаемые задачи в сеточных char-моделях
kelijah

В большинстве случаев модели учились строить для любого слова вектор заранее заданной фиксированной длины. Как можно использовать получаемый вектор:

Read more...Collapse )


char-rnn и char-feedforward модели
kelijah

Для алфавитных языков характерно большое разнообразие длин слов на письме. Простой анализ статистики длин токенов в большой корпусе русскоязычных текстов дает среднюю длину слова ~5.6 символов. Но кривая распределения частот такова, что с одной стороны есть немного очень коротких и очень частотных слов (я, и, да), а с другой неопределенное количество очень длинных слов с единичным употреблением (наиквалифицированнейшими). Насколько сильна асимметрия распределения?

Read more...Collapse )