Файл: Основы проектирования программ. Этапы создания программного обеспеченияКурсовая работа.pdf
Добавлен: 30.03.2023
Просмотров: 319
Скачиваний: 2
|
Архитектура |
Точность (%) |
|
LSA |
49 |
|
CBoW |
57.3 |
|
Skip-gram |
58.9 |
В своей работе Пеннингтон приводит сравнение своего метода GloVe с несколькими другими, в том числе и с CBoW на пяти различных датасетах
(табл. 5) [21]. Отсюда видно, что на некоторых входных данных GloVe демонстрирует преимущество над CBoW.
Таблица 5
Сравнение модели CBoW и GloVe
|
Model |
WS353 |
MC |
RG |
SCWS |
RW |
|
CBoW |
57.2 |
65.6 |
68.2 |
57.0 |
32.5 |
|
GloVe |
65.8 |
72.7 |
77.8 |
53.9 |
38.1 |
Однако, что касается классификации текстов по их тональности на три класса: позитивный, негативный, нейтральный, интересные результаты использования Word2Vec и GloVe в совокупности с нейронными сетями показывает один из победителей соревнований SemEval-2017 Task4 по анализу тональности постов из Twitter Мэтью Клише (табл. 6) [22]. Видно, что при использовании Word2Vec точность классификации текстов выше, чем при использовании каких-либо других методов word embedding.
В итоге, для решения задачи отображения слов в векторное пространство (word embedding) был выбран метод Word2Vec, а именно CBoW, так как он быстрее Skip-gram и работа предстоит для больших корпусов текстов. Огромная популярность его использования для задач NLP послужила созданию множества библиотек на разных языках программирования, где он полностью реализован, из-за чего очень удобно применять его на практике. У метода GloVe, который появился немногим позже, не смотря на его незначительное преимущество в показателях точности, ситуация обстоит иначе и, более того, для использования его в программном коде требуется предустановка большого количества различного функционала, таких как компиляторы, Microsoft Visual Studio и многое другое, что делает его менее привлекательным. И основная причина заключается в том, что упор в данной работе делается на сентимент-анализ текста, а для этого метод Word2Vec показывает более высокие результаты.
Таблица 6
Точность классификации постов из Twitter по их тональности на тестовой выборке, состоящей из: 3813 твитов – в 2013 г., 1853 твитов – в 2014 г., 2392 твитов – в 2015 г., 20632 твитов – в 2016 г.
Методы классификации текстов по их тональности
Как упоминалось выше наиболее подходящими методами для анализа тональности текстов являются методы машинного обучения с учителем. Кратко опишем суть наиболее эффективных и популярных из них и выберем наиболее подходящий для решения нашей задачи.
Наивный байесовский классификатор
Алгоритм наивного байесовского классификатора, как правило, является базовым решением для решения задачи анализа тональности текстов [23]. Основная идея состоит в том, чтобы находить вероятность принадлежности текста к определенному классу, используя совместные вероятности слов и классов.
Дана зависимость вектора признаков (x₁,…, xn) и класса Ck. Теорема Байеса математически формулируется как следующее отношение (16):
(16)
Согласно «наивным» предположениям об условной независимости для данного класса Ckкаждый признак вектора xi условно не зависит от любого другого признака xj при i ≠ j (17):
(17)
Таким образом, отношение (16) упрощается до такого вида (18):
(18)
Так как знаменатель представляет собой константу, из (18) можно получить следующее отношение (19), по которому будет определяться класс, к которому принадлежит текст:
(19)
Как и в методе наивного байесовского классификатора, изначально дан вектор признаков (x₁,…, xk) и класса Ck. Зависимость между ними определяется бинарной функцией fi, её ещё называют классификационным индикатором [24]. Она принимает значение «1», если данный признак принадлежит классу, и «0», если наоборот (табл. 7).
Таблица 7
Взаимосвязь признаков и классов
|
С1 |
С2 |
|
|
х1 |
f1 |
f2 |
|
х2 |
f3 |
f4 |
продолжение таблицы 7
|
х3 |
f5 |
f6 |
Сама классификация осуществляется по формуле (20):
, (20)
где n – количество классов; k – количество признаков; fi – бинарная функция;
- вес i-ого индикатора fi; С – множество классов; d – классифицируемый текст.
Метод опорных векторов
Даны объекты di, представляющие собой векторы, принадлежащие многомерному пространству Rn, и ci, которые принимают значения «-1» или «1», соответствующие одному из классов. Суть метода опорных векторов заключается в поиске гиперплоскости с максимальной разностью (margin), которая разделит в пространстве объекты, принадлежащие разным классам [25].
Разделяющая гиперплоскость записывается в виде (21):
, (21)
где W = {w1, w2, …, wn} – вектор нормали, которая однозначно определяет гиперплоскость (вектор весов), b – смещение гиперплоскости.
Поиск этого вектора происходит по формуле (22):
, (22)
где j получаем благодаря решению задачи двойной оптимизации.
Рекуррентные нейронные сети
Рекуррентные нейронные сети (RNN) – это очень популярная модель, повсеместно использующая для обработки текстовой информации [26]. Её идея заключается в том, RNN обладает так называемой «памятью» - происходит учёт предыдущей информации. Название рекуррентные они получили по причине того, что происходит выполнение одной и той же задачи для каждого элемента и при этом данные, получаемые на выходе, зависимы от предыдущих вычислений.
Архитектура рекуррентной нейронной сети представлена на рис. 12. Обратим внимание, что нейроны получают информацию о состоянии сети от своих предшественников. Это позволяет качественно работать с информацией, которая представлена в последовательном изложении (текст, музыка, видео).
Рис. 12. Архитектура рекуррентной нейронной сети в развернутом состоянии
Разберем, что представлено на данном рисунке:
- хt – входные данные на t-ом шаге;
- st – функция, зависящая от данных, получаемых от предыдущего нейрона, и новых данных, которые поступают на вход st = f(Wst-1 +Uxt), где f – нелинейная функция, зачастую представимая в виде гиперболического тангенса: tahn(x) = (е2x-1)/( е2x+1), или ReLU: f(x) = max(0, x). st в данном контексте можно назвать «памятью» нейронной сети;
- U, W, V – параметры нейронной сети. Они не меняются при переходе на следующий шаг. В этом и заключается рекурентность сети. Также это позволяет уменьшить количество параметров, которые необходимо обучать;
- ot – выход t-ом шаге. Однако, в зависимости от задачи, в нашем случае это определение тональности текста, выход понадобится только на последнем шаге.
Рекурсивные нейронные сети
Рекурсивная нейронная сеть (RecNN) является одним из видов рекуррентных нейронных сетей [27]. Она имеет древовидную структуру с фиксированным количеством ветвей (рис. 13). На вход ей подаётся n-грама, где каждое слово представлено в виде вектора. В случае бинарного дерева вектор скрытого состояния текущего узла вычисляется из векторов скрытого состояния левого и правого дочерних узлов следующим образом:
(23)
где f = tahn – нелинейная функция гиперболического тангенса; W∈Rdx2d – параметры, которые будут меняться в ходе обучения.
Рис. 13. Архитектура модели рекурсивной нейронной сети
Эта операция последовательно рассчитывается от конечных узлов к корневому узлу. Ожидается, что рекурсивная нейронная сеть будет выражать отношения между дальними элементами по сравнению с рекуррентной нейронной сетью, потому что глубины достаточно с log2(T), если число элементов равно Т.
Свёрточные нейронные сети
На данный момент свёрточные нейронные сети являются не менее популярными для решения задач NLP, чем рекуррентные. Одними из первых, кто максимально подробно изложил про применение этой архитектуры (рис.14) для анализа тональности текстов, являются Ye Zhang и Byron C. Wallace [28].
Рис. 14. Пример архитектуры свёрточной нейронной сети для классификации текстов. Используется по два свёрточных слоя для каждого размера фильтра: 2, 3, 4
Исследуемое предложение токенизируется (разбивается на лексемы), затем преобразуется в матрицу, где каждая строка представлена вектором токена. Зачастую отображение слов в векторное пространство делается с помощью вектора Word2Vec или GloVe. Обозначим размерность векторов слова через d. Если размер данного предложения равняется s, что размер матрицы будет s х d.
Затем мы можем эффективно работать с матрицей, как с изображением, выполняя свёртку с помощью фильтров. Это происходит на первом шаге работы нейронной сети с помощью свёрточного слоя. Поскольку строки представляют собой векторы слов одинакового размера, то разумно использовать фильтры с шириной равной d. Таким образом, меняется только высота фильтров h. Этот параметр определяет, сколько соседних строк матрицы будут подвергаться обработке фильтром совместно.
Предположим, что существует фильтр, параметризованный весовой матрицей w с размером области h; w будет содержать h · d параметров для оценки. Мы обозначаем матрицу предложений через A ∈ Rs x d и используем A [i : j] для представления подматрицы A от строки i до строки j. Выходная последовательность o ∈ Rs-h-1 оператора свертки получается путем многократного применения фильтра к подматрицам матрицы A:
(24)
где i = 1…s – h +1, а · - это скалярное произведение между подматрицей и фильтром (сумма по поэлементным произведениям). Добавляем смещение b ∈ R и функцию активации f к каждому oi, и, таким образом, получаем карту признаков c ∈ Rs-h+1 для этого фильтра:
(25)
(26)
Можно использовать несколько фильтров одного и того же размера, чтобы изучить дополнительные свойства каждой области. Можно также использовать несколько фильтров разной высоты.
Размерность карты признаков, созданной каждым фильтром, будет зависеть от длины предложения и высоты самого фильтра. Затем они подаются на вход слою субдискретизации (уплотнение), где к каждой полученной карте применяется операция 1-max pooling:
, которая получает максимальное значение, таким образом, уменьшая размерность карт признаков. Идея этой операции заключаются в том, что мы получаем по одному самому важному признаку из соответствующих карт. Другими словами, слои свёртки и субдискретизации позволяют извлекать из матрицы наиболее значимые n-грамы.
Затем мы конкатенируем полученные данные из слоя субдискретизации в один общий вектор и подаём его на вход выходного слоя, где функция softmax осуществляет классификацию. Она выводит вектор, который представляет собой распределение вероятностей потенциальных результатов (рис. 15).
Рис. 15. Демонстрация работы функции активации softmax
Существует такая проблема как переобучение. В результате нейронная сеть хорошо работает с обучающей выборкой, но, не обретая свойства обобщения, плохо работает на тестовом наборе. Другими словами, переобучение – это результат чрезмерной подгонки сети к обучающим примерам. Соответственно, чтобы избежать этого, применяются различные методы, в том числе и регуляризация. В случае нашей свёрточной сети зачастую используется исключающий (dropout) слой. При обучении он исключает из сети с вероятностью p нейроны. Это означает, что при любых входных данных он выдаст в виде результата «0».