Чтобы создать решение для обработки любого естественного языка, нужно множество текстовых данных. Однако значительная часть языков считается низкорепрезентативными или низкоресурсными. Это означает, что данных на этих языках в свободном доступе представлено мало. Причем речь идет даже о тех языках, на которых говорят миллионы носителей: вьетнамском, казахском, армянском.
Для создания языковых моделей низкоресурсных языков разработчики используют множество решений. А чтобы оценить качество, применяют различные методики. Одна из них — пробинг.
В статье рассказали, как с помощью пробинг-фреймворка от AIRI оценивали модели низкоресурсных языков и какие неочевидные результаты получили.
Дообучаем BERT
Всё началось с исследования языковых моделей казахского и уйгурского языков. Нам хотелось улучшить качество этих моделей. Выдвинули гипотезу: для низкорепрезентативных языков эффективнее дообучать большие модели на языковых группах, в которые эти языки входят, нежели дообучать большую мультилингвальную модель. Рассмотрели 2 предобученные модели:
Мы дообучили обе модели на датасетах cc100 Dataset, Deutscher Wortschatz / Wortschatz Leipzig для уйгурского языка и на cc100 Dataset и Википедии для казахского языка. Результаты обучения сравнивали методом пробинга.
Что такое пробинг?
Пробинг больших языковых моделей – это метод, который используется для анализа внутренних представлений больших моделей обработки естественного языка. Пробинг позволяет исследовать, как модель обрабатывает различные языковые задачи и какие лингвистические категории (падеж, род, наклонение, тип местоимения) она усваивает. Среди задач:
определение времени глагола;
определение числа подлежащего;
определение числа прямого дополнения;
идентификация предложений, в которых одно из слов заменили;
определение сложносочиненных предложений, в которых части поменяли местами.
Расчёт глубины синтаксического дерева и т.д.
Для пробинга нужно к каждому из двенадцати расположенных друг за другом энкодеров присоединить по классификатору. Затем классификаторы обучаются и тестируются по следующей схеме:
На вход модели подаётся предложение.
Энкодер вырабатывает внутреннее представление этого предложения.
Расположенный на выходе энкодера классификатор определяет, какая лингвистическая категория (в рамках задачи) есть в предложении.
Результаты классификаций будут говорить о том, насколько языковая модель усвоила лингвистические категории, и, соответственно, насколько качественными внутренними представлениями о языке она оперирует.
Мы выполнили пробинг с использованием фреймворка от AIRI – это казалось наиболее простым способом протестировать только что обученную на новый язык модель. Фреймворк позволяет подключить новую модель, установить гиперпараметры для классификации, после чего получить результаты в виде метрик F1 и Accuracy для всех доступных лингвистических задач, по каждому энкодеру в отдельности. Одной из особенностей фреймворка являются данные, на основе которых проводится пробинг - датасеты Universal Dependencies (UD), специальным образом размеченных и отражающих грамматические зависимости между словами.
Результаты пробинга
Фреймворк от AIRI позволяет исследователю выбрать классификатор: многослойный перцептрон или логистическую регрессию. В первую очередь мы использовали логистическую регрессию.
На тепловой карте ниже — результаты пробинга для уйгурского языка. Мы проверяли свойства четырех моделей:
mult_bert - mBERT без дообучения на датасете уйгурского;
turk_bert - BERTurk без дообучения на датасете уйгурского;
ug_mult_bert - mBERT с дообучением;
ug_ turk_bert - BERTurk с дообучением.
Как мы видим, показатели F1 и Accuracy у разных моделей по всем лингвистическим задачам не меняются.
Аналогичная ситуация наблюдается и в случае пробинга модели, дообученной на казахском языке, хотя существуют некоторые различия в показателях F1 для категорий Aspect (вид глагола), PronType (тип местоимения) и NumType (тип числительного). Были рассмотрены модели:
mult_bert - mBERT без дообучения на датасете казахского;
turk_bert - BERTurk без дообучения на датасете казахского;
kk_mult_bert - mBERT с дообучением;
kk_ turk_bert - BERTurk с дообучением.
Далее в качестве классификатора применен многослойный перцептрон (MLP). В данном случае наблюдается динамика показателей в определении некоторых лингвистических категорий:
Анализируй это: control task
Проанализировав результаты, предположили, что различия в особенностях усвоения моделями различных лингвистических категорий обусловлены устройством языка. Тем не менее, вопрос о том, почему разные модели по определенным лингвистическим категориям продемонстрировали идентичные результаты, оставался открытым.
Мы решили изучить репрезентацию грамматических категорий в датасетах UD для казахского и уйгурского языков.
Выявили, что классы категорий в датасетах UD представлены крайне неравномерно. Предположили, что именно в этом заключается причина идентичности результатов пробинга, так как при сильном доминировании одного класса классификатор всегда будет предсказывать доминирующий класс.
Для начала проверки гипотезы мы провели control task [Hewitt, Liang, 2019]. Перед обучением классификаторов метки, указывающие на принадлежность предложения к тому или иному классу, перемешиваются случайным образом. Основная идея заключается в следующем: если результаты пробинга зависят внутренних представлений предложений, а не от баланса классов, то его результаты станут хуже относительно результатов до перемешивания меток.
Усредненная по слоям оценка Accuracy для четырех языковых моделей для уйгурского языка с выполненным control task приведена на рисунке 9.
Заметим, что значение Accuracy на рисунке 2 и рисунке 9 совпадают по всем задачам и моделям. Это значит, что предсказания логистической регрессии не зависят от внутренних представлений предложений, классификатор «запоминает» наиболее встречающийся класс и всегда предсказывает именно его. Соответственно, ставится под вопрос целесообразность использования UD в качестве датасета для пробинга модели уйгурского языка.
Далее мы рассмотрели матрицы ошибок для двух низкоресурсных языков – уйгурского и казахского, а также для турецкого языка. Это было сделано для того, чтобы понять, существует ли дифференциация между результатами для низкоресурсных и высокоресурсных языков.
Ниже представлены матрицы ошибок по результатам логистической регрессии для категорий Case (падеж) и Number (число) дообученного на корпусе уйгурского mBERT. Матрицы ошибок для других лингвистических категорий, а также остальных языков и моделей находятся в приложении:
Классификаторы над энкодерами модели mBERT, дообученной на уйгурском языке, всегда предсказывают доминирующий класс. Аналогичная ситуация наблюдается и в случае с другими моделями, а также с другими исследуемыми языками, в том числе и с турецким, который считается высокоресурсным языком.
Матрицы ошибок по результатам применения пробинга многослойного перцептрона находятся в приложении 2. Они подтверждают тезис о том, что динамика в показателях моделей наблюдается только в том случае, когда классы внутри лингвистических категорий менее разбалансированы.
Выводы и перспективы исследования
Подведём итоги исследования. На данном этапе известно, что:
в данных UD для некоторых языков существует значительная разбалансировка по классам лингвистических категорий;
предсказания логистической регрессии и MLP в сильно разбалансированных лингвистических категориях не зависят от эмбеддингов модели, классификаторы всегда предсказывают доминирующий класс.
Резюмируя вышесказанное: данный фреймворк не всегда является подходящим для оценки того, как именно модель усваивает лингвистические признаки и категории, и это суждение справедливо не только для низкоресурсных языков, но для всех языков, в датасетах UD которых наблюдается несбалансированность. Классификаторы, обученные на несбалансированных данных, не способны выявить, насколько модель усвоила язык.
Таким образом, при проведении методики пробинга с помощью фреймворка AIRI необходимо обращать внимание на баланс классов внутри категорий и в случае работы с высокоресурсными языками выбирать наиболее сблансированный датасет UD.
Авторы исследования и статьи:
Юлия Маковка
Стажер аналитик-разработчик моделей машинного обучения
Макар Шатилов
Стажер аналитик-разработчик моделей машинного обучения
berng
Похоже у вас вообще ничего не работает (рис.10): чтобы безусловно предсказывать 1 (в последнем случае) и 5 (в предпоследнем случае) даже нейронки не надо - ведь судя по вашим матрицам ошибок у вас выход от входа не зависит.
blognaumen Автор
Действительно, для уйгурского языка из-за сильного дисбаланса классов внутри лингвистических категорий — не работает. Этим наблюдением мы и хотели поделиться. Но если обратиться к результатам для турецкого языка, для которого дисбаланс классов выражен не так сильно, динамику увидеть всё-таки можно
berng
А при чем тут дисбаланс классов? Мне всегда казалось, что матрица ошибок - исходные данные, и по ним можно оценивать метрики при (почти) любых дисбалансах классов. Если у вас что-то не работает при сильном дисбалансе классов - значит для обучения выбраны неверные метрики обучения и функции потерь, неустойчивые к дисбалансу. Обычно замена метрик решает проблему - взвешанную кросс-энтропию, например, вместо кроссэнтропии для логистической регрессии или просто исходно сбалансировать датасет (оверсемплинг/андерсемплинг).
А результаты для турецкого языка у вас не приведены, извините, поэтому непонятно где это можно увидеть.
blognaumen Автор
В статье рассматривается фреймворк без осуществления дополнительных действий с его кодом или датасетом.
Мы хотели осветить проблему с датасетом и показать, что к тем результатам пробинга, которые аналитик получит с использованием фреймворка "из коробки", нужно относиться с осторожностью.
Результаты для турецкого языка можно увидеть в приложении ("Логистическая регрессия", "Многослойный перцептрон").