Матрица ошибок:
Рисунок 21. Матрица ошибок модели fastText + NN
Как видно из метрик выше, качество классификации практически не изменилось и максимальная точность по-прежнему на уровне 64%.
3.7 BERT pretrained + SVM
Следующим шагом было принято решение использовать предтренированную модель BERT для feature extraction, как было описано ранее. Существует несколько имплементаций модели BERT, мною была выбрана и использована реализация на pytorch [36], поскольку я был знаком с этой библиотекой ранее, и она предоставляет более удобный и высокоуровневый API (https://ru.wikipedia.org/wiki/API), нежели исходная реализация на tensorflow [37].
Специалисты компании Google в своём GitHub-репозитории [38] поддерживают актуальный список предтренированных моделей на разных языках. В данной работе за основу бралась модель BERT-Base, Multilingual Cased, которая была выложена в открытый доступ в конце ноября 2018 года и имеет следующие характеристики:
· Поддерживает 104 различных языка
· Имеет 12 attention-head
· 110 миллионов настраиваемых параметров
· Обучена на большом количестве данных, среди которых не только формальные тексты, но также и выдержки с различных сайтов/форумов и т.д.
Для чистоты эксперимента и проверки гипотезы о том, что предобученные лингвистические модели дают более хороший старт, модель никаким образом не дообучалась и использовалась в том виде, в котором доступна по ссылке выше.
Выходы сети с последнего слоя для каждого текста были получены следующим образом:
где массив после окончания работы будет содержать столько элементов, сколько было текстов на входе, где каждый элемент - искомый embedding текста, с помощью которого будет обучаться SVM.
После подбора параметров модель была протестирована на валидационной выборке и получена точность в 54%.
Ниже расположен график зависимости точности от размера тренировочной выборки:
Рисунок 22 Кривая обучения модели BERT pretrained + SVM
Как видно из графика, существенный рост точности на тестовой выборке происходит вплоть до выборки размером 1500-2000. После этого рост практически останавливается.
Ниже приведена таблица с основными метриками, а также матрица ошибок:
Таблица 4. Результаты модели BERT pretrained + SVM
|
Метрики Класс |
precision |
recall |
F1-score |
|
|
Не определено |
0.69 |
0.58 |
0.63 |
|
|
Негативная |
0.56 |
0.65 |
0.60 |
|
|
Позитивная |
0.64 |
0.64 |
0.64 |
|
|
micro avg |
0.62 |
0.62 |
0.62 |
|
|
macro avg |
0.63 |
0.62 |
0.62 |
Рисунок 23 Матрица ошибок модели BERT pretrained + SVM
3.8 BERT pretrained + fine tuning + SVM
Помимо обучения самого SVM для классификации упоминаний, также можно дообучить саму модель BERT под имеющиеся данные. Так как модель обучалась на общих данных, она не заточена под какой-либо конкретный домен, поэтому сразу во многих задачах способна показывать неплохой результат, но практически ни в одной задаче хороший. BERT будет дообучаться под банковский домен на данных, используемых в текущей работе. Способ дообучения в точности совпадает с обучением модели с нуля, которое описано в первой части работы, а основанная цель дообучения - улучшить качество модели, не имея большого количества данных и вычислительных ресурсов.
Дообучение производилось с помощью функционала, представленного в библиотеке pytorch-pretrained-bert [39], который был несколько доработан под доступные данные. Для того, чтобы запустить процесс тонкой настройки параметров, необходимо подготовить данные - все отзывы были предварительно отформатированы в следующем формате:
· Каждое предложение упоминания с новой строки
· Упоминания между собой разделены пустой строкой
Такое форматирование необходимо для того, чтобы модель могла обучаться на обеих задачах из исходного подхода: предсказание того, является ли следующее предложение продолжением предыдущего, а также предсказание замаскированных слов.
После дообучения самого BERT, были подобраны новые параметры для SVM и удалось получить точность классификации на тестовой выборке в 62%.
Таким образом, дообучение модели под специфичный домен, которое заняло порядка часа, дало прирост примерно в 8%.
Рисунок 24 Кривая обучения модели BERT pretrained + fine tuning + SVM
На графике показана зависимость точности от размера выборки. Как видно, обучение эффективно лишь доопределённого размера выборки, как и в предыдущем случае. В данном примере обучение практически прекращается на размере выборки более 2500. Точность при этом находится в районе 61-62%.
Ниже расположены таблица с основными метриками и матрица ошибок:
Таблица 5. Результаты модели BERT pretrained + fine tuning + SVM
|
Метрики Класс |
precision |
recall |
F1-score |
|
|
Не определено |
0.70 |
0.62 |
0.65 |
|
|
Негативная |
0.59 |
0.67 |
0.63 |
|
|
Позитивная |
0.67 |
0.65 |
0.66 |
|
|
micro avg |
0.65 |
0.65 |
0.65 |
|
|
macro avg |
0.65 |
0.65 |
0.65 |
Рисунок 25. Матрица ошибок модели BERT pretrained + fine tuning + SVM
Как видно из метрик, модель показывает схожую с моделью fastText + SVM точность классификации. Самая «проблемная» тональность, как и прежде, «Не определено».
3.9 BERT pretrained + Classification layer
Помимо feature extraction, модель предоставляет возможность добавить Fully-Connected и Softmax слои для того, чтобы использовать модель сразу же для классификации. Для этого в библиотеке pytorch-pretrained-bert существует специальный класс - BertForSequenceClassification, который добавляет нужные слои к исходной модели. В отличие от самой модели, эти слои не являются предобученными, поэтому их необходимо обучить перед использованием. Ниже расположены графики точности и значения loss-функции при обучении модели:
Рисунок 26. Графики зависимости значения loss-функции и точности от итерации BERT pretrained + Classification layer
Как видно из графиков, точность модели уже после первых итераций достигает 75%. Это объясняется тем, что модель не требуется обучать целиком, по факту происходит обучение только новых слоёв для классификации. В этом преимущество предобученных моделей - на их дообучение под конкретную задачу не требуется большого количества вычислительных ресурсов и времени, они показывают хорошие результаты уже «из коробки». Ниже дополнительно расположены таблица с основными метриками и матрица ошибок:
Таблица 6. Результаты модели BERT pretrained + Classification layer
|
Метрики Класс |
precision |
recall |
F1-score |
|
|
Не определено |
0.76 |
0.74 |
0.75 |
|
|
Негативная |
0.75 |
0.78 |
0.77 |
|
|
Позитивная |
0.79 |
0.78 |
0.78 |
|
|
micro avg |
0.77 |
0.77 |
0.77 |
|
|
macro avg |
0.77 |
0.77 |
0.77 |
Рисунок 27. Матрица ошибок модели BERT pretrained + Classification layer
Как видно из метрик, данный подход показывает наиболее хорошие результаты из всех выше рассмотренных. Также стоит отметить, что значение точности и полноты примерно равно для разных классов, что означает, что классификатор одинаково хорошо определяет любой из классов.
3.10 ELMo + SVM
Следующая модель, которая была использована - эмбеддинг ELMo в совокупности с SVM. Как и в случае с fastText, была использована предобученная модель ELMo, доступная в пакете deeppavlov [40]. Данная модель была обучена на корпусе, состоящем из русскоязычных постов социальной сети Twitter, поскольку это наиболее близкий домен к тому, что используется в работе.
После того, как текст был переведён в числовые вектора с помощью ELMo, были подобраны параметры для классификатора SVM и максимальная точность, которую удалось получить - 73%.
Ниже расположен график зависимости точности на обучающей и тестовой выборке от размера обучающей выборки. Как видно из графика, точность на тестовой выборке стабильно растёт с увеличением размера обучающей выборки, в то время как точность на обучающей выборке падает достаточно медленно. Из этого можно предположить, что с увеличением размера обучающей выборки, точность классификатора продолжит возрастать.
Рисунок 28 Кривая обучения модели ELMo + SVM
Ниже расположены основные метрики и матрица ошибок:
Таблица 7. Результаты модели ELMo + SVM
|
Метрики Класс |
precision |
recall |
F1-score |
|
|
Не определено |
0.75 |
0.71 |
0.73 |
|
|
Негативная |
0.70 |
0.76 |
0.73 |
|
|
Позитивная |
0.75 |
0.72 |
0.73 |
|
|
micro avg |
0.73 |
0.73 |
0.73 |
|
|
macro avg |
0.73 |
0.73 |
0.73 |
Рисунок 29 Матрица ошибок модели ELMo + SVM
3.11 ELMo + NN
По аналогии с BERT, вместо SVM для классификации полученных векторных представлений текстов была использована нейронная сеть. Сеть имеет следующую архитектуру: входной слой размером 1024 нейрона, 2 скрытых слоя размером 512 и 256 нейронов соответственно, и выходной слой размерностью 3 нейрона.
Максимальная точность, которую удалось получить - 71%. Ниже расположены графики зависимости точности на тестовой выборке и значения loss-функции от номера итерации. Как видно из графика точности, нейронная сеть уже на 7-8 итерации выходит на максимальную точность и дальше не обучается, хотя значение loss-функции падает.
Рисунок 30. Графики зависимости значения loss-функции и точности от итерации модели ELMo + NN
Также ниже расположены таблица с основными метриками и матрица ошибок:
Таблица 8. Результаты модели ELMo + NN
|
Метрики Класс |
precision |
recall |
F1-score |
|
|
Не определено |
0.80 |
0.60 |
0.69 |
|
|
Негативная |
0.64 |
0.78 |
0.71 |
|
|
Позитивная |
0.71 |
0.73 |
0.72 |
|
|
micro avg |
0.70 |
0.70 |
0.70 |
|
|
macro avg |
0.72 |
0.71 |
0.70 |
Рисунок 31. Матрица ошибок модели ELMo + NN
Ниже расположена сводная таблица по всем методам, использованным в работе, со значениями полученных метрик.
Таблица 9. Сводная таблица результатов по всем использованным методам
|
Модель Метрика |
Bi-LSTM + Attention |
fastText + SVM |
fastText + NN |
BERT pretrained + SVM |
BERT pretrained + fine tuning + NN |
BERT pretrained + fine tuning + NN |
ELMo + SVM |
ELMo + NN |
|
|
accuracy |
0.44 |
0.63 |
0.64 |
0.54 |
0.62 |
0.75 |
0.73 |
0.71 |
|
|
micro precision |
0.41 |
0.65 |
0.64 |
0.62 |
0.65 |
0.77 |
0.73 |
0.70 |
|
|
micro recall |
0.41 |
0.65 |
0.64 |
0.62 |
0.65 |
0.77 |
0.73 |
0.70 |
|
|
micro F1 |
0.41 |
0.65 |
0.64 |
0.62 |
0.65 |
0.77 |
0.73 |
0.70 |
|
|
macro precision |
0.41 |
0.66 |
0.65 |
0.63 |
0.65 |
0.77 |
0.73 |
0.72 |
|
|
macro recall |
0.41 |
0.65 |
0.64 |
0.62 |
0.65 |
0.77 |
0.73 |
0.71 |
|
|
macro F1 |
0.40 |
0.65 |
0.64 |
0.62 |
0.65 |
0.77 |
0.73 |
0.70 |
Как видно из результатов, наиболее хорошо себя показал дообученный BERT с классификационными слоями на выходе. Также смежные результаты показал ELMo в совокупности с SVM.
Помимо прочего, из таблицы видно, что все методы с применением Transfer Learning показывают неплохие результаты относительно объёма доступных данных для обучения. На этом же объёме данных модель Bi-LSTM + Attention смогла обучиться до максимальной точности лишь в 44%.
Также стоить отметить, что все micro/macro метрики примерно равны между собой для каждой модели. Это связанно с тем, что датасет, на котором проводились эксперименты, сбалансирован по классам.
ЗАКЛЮЧЕНИЕ
В работе рассмотрено применение различных алгоритмов с применением Transfer Learning для задачи семантического анализа на примере задачи классификации упоминаний банка в сети Интернет. Было рассмотрено несколько подходов для решения задачи: обучение модели с нуля, использование предобученных текстовых векторов в сочетании с классификатором, а также предобученные модели, позволяющие получать контекстные векторные представления текстов. Задача, помимо прочего, усложнялась относительно небольшим количеством доступных данных.