Дипломная работа: Методы Transfer Learning для задачи семантического анализа

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Матрица ошибок:

Рисунок 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 для задачи семантического анализа на примере задачи классификации упоминаний банка в сети Интернет. Было рассмотрено несколько подходов для решения задачи: обучение модели с нуля, использование предобученных текстовых векторов в сочетании с классификатором, а также предобученные модели, позволяющие получать контекстные векторные представления текстов. Задача, помимо прочего, усложнялась относительно небольшим количеством доступных данных.

Источник: https://otherreferats.allbest.ru/download/1179304/