Когда глубокое обучение встречается с динамическим программированием

NLP

Алгоритмы в традиционном понимании всегда были элегантными.

Задача распознавания именованных объектов

Hong Kong is part of China.

Если вы хотите, чтобы машина поняла «настроение» приведенного выше предложения, она на самом деле обрабатывает предложение в целом и классифицирует его; если вы хотите, чтобы машина подробно понимала отношения между каждым компонентом в предложении, вам нужно to first Способность находить части предложения, например, машина должна уметь распознавать, что «Гонконг» — это сущность, а не два отдельных слова. Что делает машинаКлассифицировать каждое слово в предложении. Результат классификации может быть следующим:

Это популярное понимание распознавания именованных объектов (далее NER). NER необходимо разделить элементы в тексте на заранее определенные категории, которые представляют собой примерно 3 категории (категория объекта, категория времени, категория числа) и 7 подкатегорий (имя человека, название места, название организации, название учреждения, время, дата, валюта). , процент) или более детализированная категория.

Последовательность именованных сущностей, обрабатываемая NER, может обеспечить удобство для более поздних задач, таких как граф знаний, понимание текста и анализ общественного мнения.

В отличие от задач классификации настроений, задачи NER такжеделикатный случай, Хорошо известно, что если слово начинается с прописной буквы, то это слово, скорее всего, будет именем человека, географическим названием и т. д., поэтому многие модели разрабатываются с учетом извлечения признаков на уровне символов. Есть [1] с LSTM и [2] с CNN.

DNN/Дизайн алгоритмов

Я нашел подробный код для аннотации последовательности на официальном сайте PyTorch: ДОПОЛНИТЕЛЬНО: ПРИНЯТИЕ ДИНАМИЧЕСКИХ РЕШЕНИЙ И BI-LSTM CRF[3], код этого руководства очень лаконичен, и в статье [1] есть много сходств.

Модель LSTM-CRF

LSTM

LSTM был замечен много раз, и его функция состоит в том, чтобы извлекать контекстную информацию из векторной последовательности входных слов, и извлеченная информация отправляется в задачу классификации ниже по течению. Последующей задачей может быть прямое предсказание с использованием полносвязного уровня или за ним может следовать классификация CRF.

В статье [1] автор сравнил влияние множества различных структурных моделей и, наконец, пришел к выводу, что комбинированная производительность LSTM + CRF является лучшей.

CRF

Основная идея CRF заключается в следующем: при классификации слова учитывайте свойства слов рядом со словом.

Например, «подлежащее-сказуемое-объект» является грамматическим и представляет собой классификационную последовательность с высокой вероятностью, в то время как последовательность «подлежащее-относительное-объект» имеет высокую вероятность появления в середине предложения, но «Отдел-Ящик». "Пейринг странный.

Заимствуя представление из статьи [1]:

  1. Предсказанная последовательность входной моделиX=(x_1,x_2,\dots,x_n);
  2. Вывод «извлекателя признаков восходящего потока», такого как LSTM, представляет собой матрицуP_{n \times k},p_{i,j}означает первыйiслова - это ярлыкиjОценка, то есть, учитывая преобразование «слов-этикетки»;
  3. Задача прогнозирования в нисходящем направлении использует другую матрицуA_{(k+2) \times (k+2)},a_{i,j}Указывает на этикеткеiи этикеткиjВозможность соседства, то есть с учетом конверсии "тэг-тэг"; причина в том,k+2матрица заказов, учитывающаяstartиendЭтикетка;
  4. Последовательность прогнозирования выходных данных модели\textbf{y}=(y_1,y_2,\dots,y_n), где длина последовательностиn, количество прогнозируемых классов равноk;

Чтобы определить качество помеченной последовательности, критерии оценки определяются следующим образом:

s(X,\textbf{y}) = \sum_{i=0}^{n}{A_{y_i,y_{i+1}}} + \sum_{i=1}^{n}{P_{i,y_i}}

пользовательская функция потерь

Вышеs(X,\textbf{y})Просто оценка, вам нужно снова использовать Softmax, чтобы сопоставить оценку с вероятностью:

p(\textbf{y}|X) = \frac{\exp{s(X,\textbf{y})}}{\sum_{\tilde{y} \in Y_X}{\exp{s(X,\tilde{\textbf{y}})}}}

Y_Xвсе возможные последовательности. Процесс обучения заключается в максимизации вероятности целевой последовательности.Автор логарифмирует приведенную выше формулу, что является эквивалентным подходом:

\begin{aligned}   \log(p(\textbf{y}|X)) &= s(X,\textbf{y}) - \log(\sum_{\tilde{y} \in Y_X}{\exp{s(X,\tilde{\textbf{y}})}}) \\   &= s(X,\textbf{y}) - logadd_{\tilde{y} \in Y_X}\exp{s(X,\tilde{\textbf{y}})} \end{aligned}

Это функция потерь модели, и процесс обучения модели заключается в использованииградиентное восхождениемаксимизировать\log(p(\textbf{y}|X)), или используйте __градиентный спуск__, чтобы свести к минимуму-\log(p(\textbf{y}|X)).

Здесь есть еще одна проблема: если предложение очень длинное и нужно пометить много тегов, перечисление всех возможных путей приведет к резкому увеличению временной сложности.

В реализации кода [1] авторBiLSTM_CRF._forward_algФункция реализует...

расшифровка

Метод декодирования модели LSTM-CRF использует динамическое программирование — алгоритм Витерби, что соответствует кодовой реализации в [1].BiLSTM_CRF._viterbi_decode. Потому что проблема «декодирования фиксированного числа меток из вывода сети» может быть фактически абстрагирована как проблема теории графов, то есть оптимальный путь от исходной точки до конечной точки.

Отличие от поиска луча

Витерби — это алгоритм динамического программирования, а поиск Beam, который имеет аналогичные шаги алгоритма, стал жадным алгоритмом.

Личное понимание, на самом деле, существенная разница между ними заключается не в самом алгоритме, а в сценарии применения. Алгоритм Витерби широко используется в классификации, а поиск Beam обычно используется в переводе.Различие в масштабе данных предсказания для этих двух типов задач создает существенное различие в типе алгоритма. Выходным значением задачи классификации является метка, а размер пространства меток обычно не очень велик, поэтому каждое состояние может быть пронумеровано, что позволяет легко найти глобальное оптимальное решение, а выходом задачи трансляции является Одним словом, размер тезауруса не позволяет алгоритму точно перечислять. В каждом случае лучше всего записать локальный оптимум, поэтому он вырождается в жадный алгоритм.

Модель LSTM-стека

Те, кто изучил принцип компиляции, должны помнить алгоритм SR. Помимо использования LSTM в работе [1] заимствована идея алгоритма SR,

Ссылаться на

  1. Neural Architectures for Named Entity Recognition
  2. End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF
  3. ADVANCED: MAKING DYNAMIC DECISIONS AND THE BI-LSTM CRF