Академический Документы
Профессиональный Документы
Культура Документы
1. Генетические алгоритмы
Методы эволюционных вычислений - направление в искусственном интеллекте, которое
использует и моделирует процессы естественного отбора.
Среди методов эволюционных вычислений можно выделить:
• генетические алгоритмы — эвристический алгоритм поиска, используемый для решения задач
оптимизации и моделирования путём случайного подбора, комбинирования и вариации искомых
параметров.
• генетическое программирование — автоматическое создание или изменение программ с помощью
генетических алгоритмов;
• эволюционное программирование — аналогично генетическому программированию, но структура
программы постоянна, изменяются только числовые значения;
• эволюционные стратегии — похожи на генетические алгоритмы, но в следующее поколение
передаются только положительные мутации;
• нейроэволюция — аналогично генетическому программированию, но геномы представляют собой
искусственные нейронные сети, в которых происходит эволюция весов при заданной топологии сети,
или помимо эволюции весов также производится эволюцию топологии;
Метод эволюционных вычислений (ЭВ) можно описать следующим образом. На каждой
итерации содержится популяция индивидуумов 𝑃(𝑡) = {𝑥1𝑡 , 𝑥2𝑡 … . 𝑥𝑛𝑡 }. Каждый индивидуум есть
потенциальное решение рассматриваемой проблемы. Каждое решение оценивается с точки зрения
величины пригодности. Затем создается новая популяция на следующей итерации 𝑡 + 1 путем отбора
наиболее пригодных индивидуумов (этап селекции). Некоторые члены новой популяции
подвергаются преобразованиям (этап рекомбинации) посредством генетических операторов для
формирования новых решений. Среди операторов можно выделить оператор скрещивания,
формирующий новые индивидуумы посредством комбинирования частей нескольких исходных и
оператор мутации, который создает новый индивидуум путем малых изменений исходного. После
ряда таких генераций находится лучший индивидуум, который представляет сбой оптимальное
решение.
Рассмотрим генетические алгоритмы (ГА), которые позволяют решать оптимизационные
задачи с помощью метода эволюционных вычислений, то есть путем отбора из множества решений
наиболее подходящего.
Генетические алгоритмы имеют следующие особенности: применяются бинарные строки
фиксированной длины (хромосомы) и два оператора (бинарные мутация и скрещивание).
Генетические алгоритмы используют следующие понятия:
Хромосома, особь, индивидуум (битовая строка 0101….101) – определяет точку пространства поиска
и представляет потенциальное решение задачи.
Гены (биты) – элементы, из которых состоит хромосома.
Популяция – набор хромосом.
Локус (местоположение) – позиция гена в хромосоме.
Аллель – значение гена.
Фенотип – раскодированное решение задачи.
1
Генотип – закодированное решение.
Поколение (генерация) – новое поколение после каждого шага работы ГА.
«Родители» - хромосомы, из которых путем скрещивания и отбора формируются хромосомы –
«потомки».
Фитнесс функция (функция пригодности) – функция, оценивающая пригодность (качество)
хромосомы.
Генетические операторы (отбор, скрещивание, мутация) – преобразования, которым подвергаются
хромосомы в процессе эволюции и борьбы за выживание.
Отбор осуществляется в соответствии со значениями фитнесс функции. Скрещивание
комбинирует признаки двух родительских хромосом для образования двух потомков обменом
соответствующих сегментов родителей. Например, если родители отображаются пяти размерными
векторами (𝑎1 , 𝑏1 , 𝑐1 , 𝑑1 , 𝑒1 ) и (𝑎2 , 𝑏2 , 𝑐2 , 𝑑2 , 𝑒2 ), то выбрав точку скрещивания после второго гена,
получим такие потомки: (𝑎1 , 𝑏1 , 𝑐2 , 𝑑2 , 𝑒2 ) и (𝑎2 , 𝑏2 , 𝑐1 , 𝑑1 , 𝑒1 ). Очевидно, что оператор скрещивания
представляет собой обмен информацией между различными потенциальными решениями. Мутация
произвольно изменяет один или больше генов выбранной хромосомы случайной заменой значения,
равного единице, на ноль, или наоборот.
Генетический алгоритм для решения задачи оптимизации должен содержать следующие
компоненты:
1. Генетическое представление потенциальных решений задачи.
2. Способ создания начальной популяции потенциальных решений.
3. Оценочную фитнес-функцию (функцию пригодности), которая ранжирует решения по степени их
пригодности.
4. Генетические операторы, изменяющие генетический состав потомства.
5. Значения параметров ГА (вероятности скрещивания и мутации, размер популяции, количество
поколений)
В качестве критериев остановки выполнения алгоритма могут использоваться такие:
1. Сформировано заданное число поколений.
2. Популяция достигла заданного качества, что оценивается с помощью фитнес-функции.
3. Достигнут определенный уровень сходимости, что оценивается по сходству строк в популяции.
Схема работы ГА представлена на следующем рисунке.
2
кодирования этого числа находится с помощью следующего выражения: 2𝑚𝑗−1 < (𝑏𝑗 − 𝑎𝑗 ) ∗ 105 <
2𝑚𝑗 − 1,
или log 2 ((𝑏𝑗 − 𝑎𝑗 ) ∗ 105 + 1) < 𝑚𝑗 < log 2 ((𝑏𝑗 − 𝑎𝑗 ) ∗ 105 ) + 1
Обратное преобразование строки битов в действительное значение переменной 𝑥𝑗 выполняется
(𝑏 −𝑎 )
по следующей формуле: 𝑥𝑗 = 𝑎𝑗 + 𝑑𝑒𝑐𝑖𝑚𝑎𝑙(строка битов) 𝑚𝑗 𝑗 𝑗 , где 𝑑𝑒𝑐𝑖𝑚𝑎𝑙(строка битов)
2 −1
представляет собой десятичное значение, закодированное в бинарной строке.
Поскольку требуемая точность составляет 5 знаков после запятой, то найдем число битов,
необходимых для кодирования переменных 𝑥1 , 𝑥2 следующим образом:
1. (1,1 − 0,5) ∗ 100 000 = 60 000, тогда
log 2 (60 000 + 1) < 𝑚1 < log 2 (60 000) + 1 или 15,87 < 𝑚1 < 16,87.
Следовательно, 𝑚1 = 16.
2. (4,6 − 1,0) ∗ 100 000 = 360 000, тогда log 2 (360 000 + 1) < 𝑚2 < log 2 (360 000) + 1 или 18,45 <
𝑚2 < 19,45.
Следовательно, 𝑚2 = 19.
Таким образом: 𝑚 = 𝑚1 + 𝑚2 = 16 + 19 = 35.
Таким образом, суммарная длина хромосомы составляет 35 битов, 16 первых битов
используется как код переменной 𝑥1 , а 19 следующих – код переменной 𝑥2 . Например, рассмотрим
хромосому 01000001010100101001101111011111110. Тогда
𝑑𝑒𝑐𝑖𝑚𝑎𝑙(0100000101010010) = 16722, 𝑑𝑒𝑐𝑖𝑚𝑎𝑙(1001101111011111110) = 319230.
А сама хромосома соответствует значениям переменных 𝑥1 , 𝑥2 :
1,1−0,6
𝑥1 = 0,5 + 16722 216 −1 = 0,65310.
4,6−1,0
𝑥2 = 1,0 + 319230 = 3,19198.
219 −1
𝑞𝑘 = ∑ 𝑝𝑗 , 𝑘 = 1,2 … 𝑚
𝑗=1
Процесс отбора начинается с вращения колеса 𝑚 раз; при этом каждый раз выбирается одна
хромосома по следующему алгоритму:
1. Генерируем случайное число 𝑟из интервала [0,1].
2. Если 𝑟 ≤ 𝑞1 , то выбираем хромосому 𝜗1 ; иначе выбираем хромосому 𝜗𝑘 , (2 ≤ 𝑘 ≤ 𝑚) такую, что
𝑞𝑘−1 < 𝑟 ≤ 𝑞𝑘
Для рассматриваемого примера общая функция соответствия 𝐹 всей популяции равна:
10
5
точкой скрещивания. Выбранные хромосомы обмениваются частями, стоящими после точки
скрещивания.
Для нашего примера длина хромосомы равна 35, тогда интервал равен [1,34]. Допустим было
сгенерировано число, равное 1, то есть хромосомы-родители обмениваются частями после первого
гена:
𝜗5′ = (11111000111000001000010101001000110)
𝜗7′ = (01000001010100101001101111011111110)
111 4 6 0.009857
172 5 32 0.003113
211 7 1 0.000946
347 10 32 0.001282
6
Мутируемые строчки отмечены звездочкой, а измененные биты – жирным шрифтом.
Таким образом, завершена одна итерация генетического алгоритма. Проделав 1000 итераций, мы
получим наилучшую хромосому в 419-м поколении:
𝜗 ∗ = [01000011000100110110010011011101001]
𝑃(𝜗 = 𝑓(0,65721,2,41840)= 31,31356. Таким образом: 𝑥1∗ = 0,65721; 𝑥2∗ = 2,41840.
∗)
Литература.
1. Кричевский М.Л. Интеллектуальные методы в менеджменте. – Спб:Питер, 2005 – 304.с.
2. Ротштейн А.П. Интеллектуальные технологии идентификации: нечеткая логика, генетические
алгоритмы, нейронные сети. — Винница: УНіВЕРСУМ-Вінниця,1999. — 320 с.
СНС MLP
Р(кошка)
Блок Р(собака)
понижения
разрешения Р(лошадь)
7
Рис.2. Последовательность слоев в СНС.
Легче всего понять, что такое нейрон свёрточного слоя, если представить его в виде фонарика,
который светит на верхнюю левую часть изображения. Допустим свет, который излучает этот
фонарик, покрывает площадь (5×5). Таким образом, на рисунке фрагмент исходного изображения
(5×5) сворачивается в один нейрон сверточного слоя. Пусть необходимо свернуть фрагмент исходного
изображения размерности (s×k). Тогда свертка происходит согласно формуле:
s k
С xy = Wij I x + i −1, y + j −1 (1)
i =1 j =1
Здесь Cxy – число, значение нейрона в позиции (x,y) сверточного слоя, Ix+i-1,y+j-1 – элемент
сжимаемого (сворачиваемого) участка исходного изображения, Wij-матрица синаптических
коэффициентов той же размерности, что и сворачиваемый участок. Она также называется
ФИЛЬТРОМ, или ЯДРОМ свертки.
В случае цветного изображения добавляется суммирование по каналам RGB:
s k 3
Сxy = Wijl I x + i −1, y + j −1,l (2)
i =1 j =1l =1
Сворачиваемый фрагмент называется рецептивным полем.
8
Элементы ядра кодируют определенный заданный признак изображения. Тогда чем выше
значение Cxy, тем с большей вероятностью на сжимаемом фрагменте присутствует данный признак.
Пусть необходимо распознать на изображении размерности (5х5) кривую линию. Зададим
фильтр как пиксельную структуру, в которой численные значения выше вдоль области, определяющей
форму кривой. Тогда ядро такой свертки может иметь вид:
Рис.4. Задание ядра свертки для примитива «кривая линия» размерности 5х5.
Следующий шаг — перемещение фильтра вправо на S пикселей, здесь S – шаг, чаще всего S=1.
То есть свертке подвергается другой фрагмент изображения, который однако в большей своей части
перекрывает старый, затем еще на S (например на единицу) вправо и так далее. Каждая уникальная
позиция введённого изображения производит число – значение нейрона сверточного слоя.
Например, мы двигаем по изображению размерности (32х32) фрагмент размерности (5х5) с
шагом 1. Тогда после прохождения фильтра по всем позициям получается матрица (28х28), которую
называют картой признака (в данном случае признак – кривая линия). Матрица (28х28) получается
потому, что есть 784 различных позиции, которые могут пройти через фильтр (5х5) изображения
(32х32).
Рассмотрим пример изображения: мышь.
9
Рис.7. Наложение рецептивного окна
на левый верхний угол изображения.
Рис.9. Вычисление значения нейрона сверточного слоя для рецептивного окна, смещенного в правый
верхний угол изображения.
Значение намного ниже потому, что в новой области изображения нет ничего, что фильтр
определения кривой мог засечь.
Полученная в результате матрица называется картой свойств или картой признаков. В самом
простом случае, при наличии одного фильтра свертки (и если этот фильтр — детектор кривой), карта
свойств покажет области, в которых больше вероятности наличия кривых. В этом примере в левом
верхнем углу значение нашей (28х28) карты свойств будет 6600. Это высокое значение показывает,
что, возможно, что-то похожее на кривую присутствует на изображении, и такая вероятность
активировала фильтр. В правом верхнем углу значение у карты свойств будет 0, потому что на
картинке не было ничего, что могло активировать фильтр (проще говоря, в этой области не было
кривой).
Заметим, что все вышесказанное справедливо только для одного фильтра. Это фильтр, который
обнаруживает линии с изгибом наружу. Могут быть другие фильтры для линий, изогнутых внутрь или
просто прямых. Каждый фильтр породит собственную матрицу (28х28). Количество таких матриц
называется ГЛУБИНОЙ карты признаков.
Сверточный слой с глубиной карт признаков=3
Карта признака №1
Карта признака №2
Карта признака №3
(W − F + 2 P)
С= +1 (3)
S
Например, для входного объема 7×7 и фильтра 3×3 с шагом 1 и дополнением 0, на выходе
мы получим объем 5×5 (С=((7-3+0)/1)+1=5). С шагом 2 выходное значение было бы равно 3×3.
Сверточных слоев в сети может быть несколько. Для каждого такого слоя необходимо указать
так называемые ГИПЕРПАРАМЕТРЫ –характеристики, задаваемые до начала обучения:
• Глубина (depth) — сколько признаков будет кодировать сверточный слой, то есть сколько ядер
(фильтров, матриц синаптических весов) и соответственно карт признаков будет в слое;
• Высота (height) и ширина (width) каждого ядра, или, что тоже самое – какова будет размерность
рецептивного поля;
• Шаг (stride) — на сколько смещается ядро на каждом шаге при вычислении следующего пикселя
результирующего изображения. Обычно его принимают равным 1, и чем больше его значение, тем
меньше размерность карт признаков;
• Отступ (padding) – заполнение нулями по краям изображения (если необходимо).
j =1
Здесь z –вектор числовых значений – входов последнего слоя, N-размерность вектора z=числу
определяемых классов, i-номер выходного нейрона (номер класса).
Функция Softmax превращает вектор действительных чисел в вектор вероятностей
(неотрицательные действительные числа, не превышающие 1), сумма которых равна 1. В нашем
контексте выходные значения являются вероятностями попадания изображения в определённый
класс.
Обучение сверточной нейронной сети.
Все матрицы синаптических весов в СНС подбираются в процессе обучения, в том числе и ядра
сверток. Обучение производится по стандартному методу обратного распространения ошибки, где в
качестве обучающих кортежей используются пары «Изображение – вектор вероятности
принадлежности к заданному классу», где в векторе вероятностей вероятность правильного класса
устанавливается в 1, а остальные обнуляются.
Для практического применения метода обратного распространения ошибки к обучению
сверточной сети ее необходимо представить в виде многослойного персептрона, и передавать ошибку
от последнего слоя софтмакс к первому сверточному слою.
Для понимания того, как происходит разворачивание сверточной сети в персептрон, обратимся
к рисунку 12. Обозначим синим цветом входную карту (входное изображение или карта предыдущего
слоя), разноцветным – синаптическое ядро, то есть веса, которые должны быть настроены в процессе
обучения, а оранжевым – получившаяся свертка, то есть карта признаков после применения фильтра.
Входная карта (синяя) и выходная (оранжевая) развернутся в слои персептрона, а фильтр будет
представлять собой связи между этими слоями.
Недостатки СНС:
Слишком много варьируемых параметров сети, рекомендаций по выбору которых не существует.
Это такие параметры как:
• количество слоев свертки,
• размерность ядра свёртки для каждого из слоёв,
• количество ядер для каждого из слоёв,
• шаг сдвига ядра при обработке слоя,
• необходимость слоев субдискретизации,
• степень уменьшения ими размерности,
• функция по уменьшению размерности (выбор максимума, среднего и т. п.),
• параметры выходной полносвязной нейросети на выходе свёрточной.
𝑃(𝑤1, 𝑤2, ..., 𝑤𝑁 ) = 𝑃(𝑤1)𝑃(𝑤2| 𝑤1)... 𝑃(𝑤𝑁 | 𝑤1, 𝑤2 ,... ,𝑤𝑁−1). (1.1)
а) б).
Рис. 1.1. Языковые модели: а) Языковая модель, предсказывающая следующее слово; б)
Маскированная языковая модель [20]
Рис. 1.3. Языковая модель на основе рекуррентной нейронной сети. Рисунок взят из [20]
15
Рис. 1.4. Модель рекуррентной нейронной сети (РНС)
Как вы видите на рис. 1.4, отдельный рекуррентный нейрон из скрытого слоя добавляет в сеть
рекуррентный цикл для «повторного использования» выходного сигнала скрытого слоя для момента
t. Выходной сигнал для момента t прибавляется к следующему входному сигналу для момента t + 1. В
результате обработки сетью этого нового входного сигнала на временном шаге t + 1 получается
выходной сигнал скрытого слоя для момента t + 1. Этот выходной сигнал для момента времени t + 1
далее повторно используется сетью и включается во входной сигнал на временном шаге t + 2 и т. д.
Обучение сети представляет собой минимизацию суммарных потерь:
(1.2)
Сеть РНС обучается с помощью специальной вариации алгоритма Bakpropagation для обучения
РНС, который называется Bakpropagation through time, который включает в себя следующие шаги:
• Разбиваем каждый пример данных на токены.
• Передаем токены по одному в нейронную сеть прямого распространения.
• Возвращаем выходной сигнал каждого из временных шагов на вход того же слоя вместе с входным
сигналом для следующего временного шага.
• Сравниваем выходной сигнал последнего временного шага с меткой.
• Производим обратное распространение ошибки через весь граф, аж до первого входного сигнала на
временном шаге 0.
Схематический пример работы данного алгоритма можно увидеть на рис. 1.5., иллюстрирующим
рассматриваемый алгоритм.
Между тем, РНС столкнулись с такими проблемами, как исчезновение или взрыв градиента, что
приводит к невозможности захвата соответствующих зависимостей в последовательностях.
Получается, что рекуррентная сеть — это как будто чрезвычайно многоуровневая обычная сеть,
в которой одни и те же веса заново используются на каждом уровне. Такие общие веса имеют свои
преимущества. Во-первых, для их хранения достаточно одной матрицы, все t «слоев» в данном случае
16
сугубо виртуальные, и веса нужно хранить только один раз. Во-вторых, общие веса позволяют
избегать некоторых проблем глубоких сетей: градиенты по весам не затухают до нуля сразу же.
Однако у рекуррентных сетей есть и свои проблемы. Во-первых, градиенты, конечно, сами по себе не
затухают, но зато они могут взорваться (exploding gradients): если матрица весов такова, что заметно
увеличивает норму вектора градиента при проходе через один «виртуальный слой» обратного
распространения, получится, что при проходе через t слоев эта норма возрастет экспоненциально от t,
веса ведь одни и те же.
Во-вторых, хотя градиенты не затухают совсем, влияние текущего входа или текущего состояния
сети, тем не менее, обычно не может распространяться слишком далеко. Влияние текущего входа
затухает экспоненциально по мере удаления. Это серьезная проблема, которая не позволяет
«обычным» рекуррентным сетям обучаться распознавать далекие зависимости в данных.
Механизм долговременной кратковременной памяти (Long short-term memory, LSTM) решил
проблемы, с которыми сталкивались другие РНС, путем предоставления возможности захвата
долгосрочных зависимостей в последовательностях.
Как видно на рис. 1.6., LSTM по сравнению с РНС имеет более сложную структуру ячеек. Так, в
стандартной РНС эти повторяющие модули будут иметь очень простую структуру, например, всего
один слой гиперболического тангенса (tanhtanh).
Как выглядит стандартная архитектура типичной LSTM-ячейки можно увидеть на рисунке 1.6.
В частности, структура LSTM включает в себя три вида узлов, которые называются вентилями, а
именно: входной (input gate), забывающий (forget gate) и выходной (output gate), а также собственно
рекуррентная ячейка со скрытым состоянием. Кроме того, в LSTM часто добавляют еще, так
называемые, замочные скважины (peepholes) — дополнительные соединения, которые увеличивают
связность модели.
Теперь пришла пора обновить старое состояние, σt-1 новым состоянием σt. Все решения
уже приняты на предыдущих шагах, поэтому мы умножаем старое состояние на ft, забывая все, что
нужно забыть. В случае с языковой моделью, это как раз то место, где мы теряем информацию
о роде старого подлежащего и добавляем новую информацию, как решили на предыдущих шагах.
18
В примере с языковой моделью, если она только что видела подлежащее, она могла бы подать
на выход информацию, относящуюся к глаголу (в случае, если следующее слово именно глагол). К
примеру, она, возможно, подаст на выход число подлежащего (единственное или множественное).
Таким образом, мы будем знать, какая форма глагола должна быть подставлена: планирует или
планируют.
Следующий вариант RNN— это GRU, или Gated Recurrent Units (управляемые рекуррентные
нейроны), названные так потому, что вход и предыдущее скрытое состояние проходят через серию
вентилей (рис. 1.9).
19
Это бывает излишним для многих задач классификации естественного языка: порядок слов
и структура предложения зачастую оказываются не слишком важны, так что классификатор на основе
мешка слов или мешка n-грамм дает результаты не хуже, чем РНС-приемщики, а то и лучше.
В этом разделе приведено два примера использования приемщиков в лингвистических
проблемах. Первый пример канонический: классификация по эмоциональной окраске. Решение на
основе РНС работает хорошо, но менее мощные подходы тоже вполне конкурентоспособны. Второй
пример несколько искусственный: в нем не решается никакой «полезной» задачи, но демонстрируется
мощь РНС и характер распознаваемых ими паттернов.
1.1. Классификация по эмоциональной окраске
Классификация по эмоциональной окраске на уровне предложения
В задаче классификации по эмоциональной окраске на уровне предложения дано предложение,
нередко в виде части отзыва, и требуется сопоставить ему одно из двух значений: положительное или
отрицательное (В более сложном варианте классификация трехзначная: положительное,
отрицательное и нейтральное).
Это несколько упрощенный подход к задаче определения эмоциональной окраски, но тем не
менее он часто используется на практике.
Вот два примера на английском языке положительного и отрицательного предложений,
естественно возникающих в отзывах на кинофильмы.
Положительное: It’s not life-affirming – it’s vulgar and mean, but I liked it (Он не
жизнеутверждающий – вульгарный и гнусный, но мне он нравится).
Отрицательное: It’s a disappointing that it only manages to be decent instead of dead brilliant (Меня
разочаровало, что ему всего лишь удалось стать достойным, а не самым лучшим).
Обратите внимание, что положительный пример содержит отрицательные фразы (not life
affirming, vulgar and mean), тогда как отрицательный содержит положительные фразы (dead brilliant).
Для правильного предсказания эмоциональной окраски нужно понимать не только отдельные фразы,
но и окружающий их контекст, лингвистические конструкции, в частности отрицание, и общую
структуру предложения. Классификация по эмоциональной окраске – трудная и амбициозная задача,
правильное решение которой включает учет таких вещей, как сарказм и метафоричность. Само
определение эмоциональной окраски далеко не очевидно. Но мы не будем обращать внимания на
тонкости определения, а будем рассматривать проблему как задачу бинарной классификации,
управляемую данными.
Эту задачу легко смоделировать с помощью РНС-приемщика: после лексемизации РНС читает
слова предложения по одному. Затем последнее состояние РНС подается на вход многослойны
перцептрон- МСП, за которым следует слой softmax с двумя выходами.
В качестве функции потери при обучении используется перекрестная энтропия, основанная на
золотых метках эмоциональной окраски. Для более точной классификации по шкале 1–5 или 1–10
(«оценка по числу звездочек») достаточно изменить МСП так, чтобы он выдавал 5 выходов вместо 2.
Таким образом, получаем следующую архитектуру:
(1)
Матрица погружений слов (word embedding matrix) E инициализируется с помощью погружений,
предварительно обученных на большом внешнем корпусе с применением алгоритма типа Word2Vec
или GloVe с относительно широким окном. Рассмотрим более подробно один из них - Word2vec.
Word2vec — метод, который принимает большой массив текста в качестве входных данных и
создает векторное пространство, обычно состоящее из нескольких сотен измерений, при этом каждому
уникальному слову в корпусе присваивается соответствующий вектор в пространстве. Векторы слов
расположены в векторном пространстве таким образом, что слова, имеющие общие контексты в
20
корпусе, расположены в непосредственной близости друг от друга в пространстве Его можно получить
двумя способами: Continuous Bag Of Words и Skip Gram.
Continuous Bag Of Words (далее – CBOW) принимает контекст каждого слова в качестве
входных данных и пытается предсказать слово, соответствующее контексту. Модель преобразует
входное предложение в форму (content_word, target_word). Архитектура моделей представляет собой
входной слой, скрытый слой и выходной слой. Все слои полностью соединены, что можно увидеть на
рис. 1.
Второй случай представляет собой контекст из нескольких слов. Здесь поток от скрытого слоя
к выходу такой же, как и в контексте с одним словом, изменение потока от ввода к скрытому слою.
Мы берем контекст как "машинное обучение", чтобы предсказать целевое слово "проект’. Вместо 1
однонаправленного вектора у нас есть несколько векторов, и модель принимает среднее значение этих
векторов.
CBOW имеет свои преимущества и недостатки, которые отображены в таблице 1.1.
Skip-gram — это один из методов обучения без учителя, используемый для поиска наиболее
родственных слов для данного слова. Skip-gram используется для прогнозирования контекстного
слова для данного целевого слова. Это обратная сторона алгоритма CBOW. Здесь вводится целевое
слово, а выводятся контекстные слова. Поскольку необходимо предсказать более одного контекстного
слова, что усложняет эту проблему.
Как мы можем видеть на рис. 2 w(t) — это целевое слово или заданный ввод. Существует один
скрытый слой, который выполняет декартово произведение между весовой матрицей и входным
вектором w(t). В скрытом слое функция активации не используется. Результат декартово произведения
на скрытом слое передается на выходной слой. Выходной слой вычисляет декартово произведение
между выходным вектором скрытого слоя и весовой матрицей выходного слоя. Затем мы применяем
функцию активации softmax для вычисления вероятности появления слов в контексте w(t) в заданном
местоположении контекста.
21
Рис. 2. Архитектура Word2Vec Skip-gram
Вернемся к рассмотрению моделей РНС. Часто бывает полезно обобщить модель (1), рассмотрев
две РНС, одна из которых читает предложение в его естественном порядке, а вторая – в обратном.
Конечные состояния обеих РНС конкатенируются и подаются на вход МСП для классификации:
(2)
Такие двунаправленные модели дают отличные результаты для рассматриваемой задачи. Для
более длинных предложений в работе признано полезным использовать иерархическую архитектуру,
в которой предложение разбивается на меньшие отрезки, исходя из знаков препинания. Затем каждый
отрезок подается на вход двунаправленной РНС (2). Последовательность получившихся векторов (по
одному для каждого отрезка) подается на вход РНС-приемщику типа (1). Формально пусть дано
22
предложение w1:n, разбитое на m отрезков, w1 1:𝓁1, …, wm1:𝓁m. Тогда архитектура описывается
уравнениями:
(3)
Каждый из m отрезков может быть эмоционально окрашен по-своему. Приемщик верхнего
уровня читает сводку z1:m, порожденную кодировщиками нижнего уровня, и принимает решение об
окраске всего предложения. Классификация по эмоциональной окраске используется также в роли
испытательного стенда для иерархических древовидных рекурсивных нейронных сетей.
Классификация по эмоциональной окраске на уровне документа Классификация документа
по эмоциональной окраске похожа на классификацию предложения, но входной текст гораздо
длиннее – он состоит из нескольких предложений, – а сигнал от учителя (метка эмоциональной
окраски) дается только в конце, а не для каждого предложения в отдельности. Эта задача труднее, чем
классификация на уровне предложения, поскольку отдельные предложения могут быть окрашены
иначе, чем документ в целом.
Учеными установлено, что для этой задачи имеет смысл использовать иерархическую
архитектуру, аналогичную описанной в уравнении (3): каждое предложение кодируется с помощью
вентильной РНС, порождающей вектор zi, после чего векторы z1:n подаются на вход второй вентильной
РНС, порождающей вектор h = RNN(z1:n), который и используется для предсказания: yˆ =
softmax(MLP(h)).
Существует также вариант, в котором все промежуточные векторы РНС уровня документа
сохраняются, и их среднее подается на вход
23
Модель обучалась как простой приемщик:
Отметим, что прямая РНС занимается улавливанием суффиксов, а обратная – префиксов и что
обе РНС можно сделать чувствительными к заглавным буквам, дефисам и даже длине слова.
ОКОНЧАТЕЛЬНАЯ МОДЕЛЬ Таким образом, модель разметки принимает вид:
24
(4)
В качестве функции потерь используется перекрестная энтропия. Прореживание слов для
погружений слов дает положительный эффект. Архитектура показана на рис. 3.
СВЕРТКА И ПУЛИНГ НА УРОВНЕ ЛИТЕР В описанной выше архитектуре слова
отображаются на векторы с помощью прямой и обратной РНС по литерам слов.
Альтернатива – представлять слова с помощью сверточно-пулинговых нейронных сетей на
уровне литер. Следует отметить, что применение одного сверточно-пулингового слоя с размером окна
k = 3 к литерам слова действительно эффективно в задачах частеречной разметки и распознавания
именованных сущностей.
СТРУКТУРНЫЕ МОДЕЛИ В модели выше предсказание метки i-го слова производится
независимо от других меток. Это может хорошо работать, но можно было бы обусловить i-ю метку
предыдущими предсказаниями модели. В качестве условия можно брать либо k предыдущих меток
(в согласии с марковским предположением), и тогда используются погружения меток E[t], что дает:
25
2.2. Классификация документов с применением РНС-СНС
В примерах классификации по эмоциональной окраске из раздела 1.1 мы подавали векторы
погружения на входы прямой и обратной РНС, за которыми располагался слой классификации
уравнения (2). В примере разметчика из раздела 2.1 мы видели, что погружения слов можно дополнить
(или заменить) моделями уровня литер, например литерными РНС или СНС, чтобы улучшить
покрытие модели и помочь ей справляться со словами, словоизменениями и опечатками, которых она
не видела на этапе обучения.
Такой же подход может оказаться эффективен для классификации документов, только вместо
подачи погружений слов на входы двух РНС мы подаем векторы, получившиеся применением
литерной РНС или сверточно-пулингового слоя к каждому слову.
Еще одна альтернатива – применить иерархическую сверточно-пулинговую сеть к литерам
с целью получить более короткую последовательность векторов, представляющих блоки, большие,
чем литеры, но необязательно слова (уловленная информация может относиться к образованию как
большему, так и меньшему одного слова), а затем подать эту последовательность двум РНС и слою
классификации.
В случае применения к нескольким задачам классификации документов, иерархическая
архитектура включает ряд сверточных и пулинговых слоев. В каждом слое к последовательности
входных векторов применялась свертка с окном размера k, а затем к каждым двум соседним
результирующим векторам применялся max-пулинг, что сокращало размер последовательности вдвое.
После нескольких таких слоев (с окнами размера от 5 до 3, зависящего от номера слоя, например 5, 5,
3) получившиеся векторы подавались на вход прямой и обратной РНС типа GRU, а их результаты – на
вход компонента классификации (полносвязный слой с функцией активации softmax). Кроме того,
между последним сверточным слоем и РНС, а также между РНС и компонентом классификации
применялось прореживание. Этот подход доказал свою эффективность в нескольких задачах
классификации документов.
26