Эта статья является продолжением предыдущей статьи, посвященной решениям Deep Learning и NLP для идентификации субъекта соответствия: https://medium.com/@sridhar.palle/deep-learning-nlp-solution-for-compliance-subject -identification-30d6992aaf90

Работа, описанная в предыдущей статье, а также в настоящей, касается наших автоматизированных решений для задачи идентификации субъекта комплаенс и является результатом нашего недавнего сотрудничества с партнером-клиентом в отрасли управления комплаенс. Как описано в предыдущей статье, мы обучили и создали простые в развертывании модели глубокого обучения и NLP, которые могут автоматически идентифицировать предметы из неструктурированного нормативного текста. Наши модели работали довольно хорошо (как описано в предыдущей статье) с общей точностью ~87%. В настоящей статье я опишу различные стратегии оптимизации для дальнейшего повышения производительности моделей при идентификации субъекта соответствия.

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

C1 — Подлежащие соответствия стоят непосредственно перед модальными глаголами

"Услуги утилизации DLA выставят счет, а FCA оплатит все расходы за предоставленные услуги"

“C18.2.1.3. После назначения RO, менеджеры терминалов (TM) и администраторы собственности должны пройти компьютерное обучение RO, пройти курс RO/TM в течение 90 дней и проходить компьютерное переподготовку каждые 2 дня. лет”

"FSO компании должен быть допущенным гражданином США, как указано в ссылке (j)"

C2 — Несоответствие требованиям

"Если отправитель запросил и оплатил Уведомление о возврате, отправитель должен быть уведомлен об изъятии посредством соответствующей отметки в Уведомлении о возврате или на дубликате, если принимается оригинал квитанции"

«Порученный RTF будет назначен GCC, ответственному за порт, в который пострадавшее судно направляется сообщить»

C3 — темы соответствия, предшествующие нескольким токенам или стоящие после модальных глаголов

"Проверка должна проводиться организацией, не относящейся к непосредственному офису, создавшему СП"

"Если подготовительная деятельность или DCA отказываются от квалификационных требований, они должны отправить письмо в свой DepSO с копией в DSPO с описанием этой чрезвычайной ситуации"

В то время как общая точность прогнозирования субъектов соответствия на основе наших предварительных моделей была хорошей (~ 87%), заявления категории C3 не были хорошо предсказаны (с точностью всего 54%) моделью, обученной на наборе данных DS3: 5151 заявление о соответствии ( C1: 4418, C2: 171, C3: 562) — Пожалуйста, смотрите предыдущую статью для получения информации о нашей предварительной модели и характеристиках.

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

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

Повышение размера и качества обучающих данных (мы описали это в предыдущей статье, дальнейшее улучшение аннотированных обучающих данных было нецелесообразным и невыполнимым)

Выбор алгоритмов и фреймворков (Flair, Spacy, BERT и т. д.)

Предварительная подготовка

Оптимизация гиперпараметров

Выбор вложений

Мы экспериментировали с некоторыми из этих подходов, как описано в следующих разделах.

Выбор фреймворка НЛП?

Потребность в многогранных решениях

В предыдущей статье мы описали нашу методологию решения с использованием архитектуры Flair NLP и Flair Embeddings. Flair превзошел несколько эталонных исследований NER, включая BERT, на эталонном наборе данных ConNLL-03. Тем не менее, размеры моделей Flair по-прежнему были тяжелыми: ~800 МБ (со стандартными вложениями Flair и ~18 ГБ с объединенными вложениями Flair). Время работы составило около 7 часов на ЦП и около 2 часов на графическом процессоре NVDIA RTX 2070. Что мы хотели увидеть было, если мы можем разработать более легкие модели, которые можно построить быстрее и легче развернуть в производстве, даже если нам придется пожертвовать некоторой точностью.Это стремление к более гибким и легким моделям привело нас к экспериментам со Spacy для нашей задачи идентификации субъекта соответствия. Мы не экспериментировали с архитектурой трансформатора BERT, так как она требовательна к вычислительным ресурсам (может быть, мы изучим это в будущем). Исследования NER на наборе данных ConLL-03.Несмотря на то, что мы экспериментировали в основном с архитектурой Flair & Spacy NLP, мы использовали другие вложения слов SOTA, включая BERT и ELMo, как описано в следующих нескольких разделах.

Spacy — альтернативная облегченная модель НЛП?

Spacy — это очень популярный фреймворк NLP, в котором представлены модели для различных задач, начиная от токенизации, пометки постов, анализа зависимостей, распознавания сущностей и связывания. Преимущество Spacy в том, что он является одним из самых быстрых фреймворков для различных задач НЛП. Пространственная нейронная архитектура основана на слоях свертки с остаточными соединениями, а не на BiLSTM и RNN, используемых некоторыми другими фреймворками НЛП. Основная сила Spacy заключается в том, что он имеет самое быстрое время работы с облегченными моделями и очень хорошо работает в продакшене. Однако Spacy немного отстает в производительности тестов, в первую очередь из-за приоритета более быстрого времени работы и легких моделей. Традиционные модели нейронного языка, такие как реализация BERT, не будут работать напрямую с архитектурой Spacy. Однако Spacy в своих последних выпусках (Spacy v2.0 и v2.1) решил некоторые из этих проблем с помощью архитектур на основе нейронной сети свертки (CNN) и языкового моделирования с приблизительными выходами (LMAO). Spacy также использует классические вложения слов «перчатка» в своих начальных моделях. Для обучения моделей с помощью Spacy нам пришлось сначала преобразовать наши данные в формате BIO в формат json. Используя настройки параметров по умолчанию, мы обучили Spacy нашему набору данных DS3 (описанному в предыдущей статье). Интересно, что время выполнения было чрезвычайно быстрым: Spacy занимал около ~ 15 минут для 100 эпох (Flair потребовалось около 7 часов для запуска на процессоре).

Сравнение результатов моделей для Flair & Spacy

В таблице ниже показано сравнение результатов моделей, обученных с использованием архитектур Spacy и Flair.

Можно видеть, что Spacy уступает Flair по точности для каждой категории утверждений, а также по общей точности примерно на ~ 10%. Однако мы подозревали это, поскольку Spacy отставал в точности даже в контрольных исследованиях (предыдущая статья). Однако наша цель в экспериментах со Spacy заключалась в том, чтобы увидеть, сможем ли мы получить разумную производительность при более быстром времени выполнения и меньших размерах моделей. Время выполнения от 10 до 15 минут — одно из самых быстрых, а окончательный размер обученной модели составил около 4 МБ по сравнению с размером модели Flair в 800 МБ. Однако вопрос в том, можем ли мы еще больше повысить точность производительности с помощью Spacy и при этом сохранить облегченные модели. До сих пор для Flair и Spacy мы не проводили предварительную подготовку моделей в нашем корпусе данных о соответствии требованиям. Предварительная подготовка обычно требует больших вычислительных ресурсов и требует мощного графического процессора. Однако в последнем выпуске Spacy добавлены функции предварительной подготовки с использованием цели языкового моделирования, аналогичной Flair и BERT, но с меньшими размерами архитектуры, которые могут работать даже на ЦП (из-за требований клиента и ограничений по стоимости нам пришлось изначально придерживаться ЦП). Подробная информация о предварительном обучении с помощью Spacy представлена ​​в следующем разделе.

Предварительная подготовка

Для предварительной подготовки языковой модели мы использовали весь наш корпус данных о соответствии, содержащий около 74 тыс. абзацев о соответствии и 1,4 миллиона слов. Для предварительной подготовки мы преобразовали необработанный текст корпуса в формат jsonl и использовали Spacy для предварительной подготовки на этих необработанных операторах. Мы использовали векторы английской многозадачной стартовой модели (en_vectors_web_lg), обученные на английском тексте (блоги, новости, комментарии), в качестве входных данных (инициализации) для предварительного обучения на нашем наборе данных корпуса соответствия. Мы предварительно обучились с настройками параметров по умолчанию, предоставленными Spacy. Предварительная подготовка на ЦП (6-ядерный компьютер с 16 ГБ оперативной памяти) заняла около 7 дней в течение примерно 500 эпох. Затем предварительно обученные модели используются в качестве входных данных для точной настройки нашего набора данных DS3.

Мы также предварительно обучили вложения Flair в нашем корпусе соответствия (~ 74 тыс. операторов и 1,4 миллиона слов), инициализировав Flair стандартными вложениями Flair. На предварительную подготовку встраивания Flair в наш корпус на графическом процессоре NVDIA RTX 2080 ушло около 2 дней. Сравнение результатов моделирования, полученных с предварительным обучением в нашем корпусе соответствия для Spacy и Flair, показано в таблице ниже.

Как видно из приведенной выше таблицы, предварительное обучение на корпусе соответствия, безусловно, помогло и увеличило общую точность на ~ 6,7% для моделей Spacy. Время выполнения для обучения составляло около 20 минут для 30 эпох. Размер обученной модели составлял около 4 МБ. Хотя производительность модели Spacy (DS3-Spacy-PT) увеличилась с предварительным обучением, улучшения было недостаточно, чтобы превзойти модель Flair (DS3-FM), которая не была предварительно обучена на нашем корпусе. Если единственным критерием была точность, то Flair — явный победитель. Даже без какой-либо предварительной подготовки на нашем корпусе Flair явно превосходит Spacy и имеет самые современные характеристики. Однако, если облегченная модель является приоритетом, Spacy может быть жизнеспособной альтернативой, которая имеет разумную точность ~ 83,9%.

Влияние предварительного обучения на соответствие корпусу Flair (DS3-FM-PT) также показано в приведенной выше таблице. Интересно, что предварительное обучение, по-видимому, не помогло существенно повысить общую точность модели с помощью Flair. Для категории «C3» было хорошее улучшение точности (на ~ 24%), но производительность была немного снижена для категории «C2» (~ 0,67%). Это может быть связано с тем, что вложения Flair уже были глубоко контекстуальными еще до предварительной подготовки на корпусе соответствия. Кроме того, наш корпус соответствия был относительно очень небольшим (~ 74 тыс. утверждений и 1,4 миллиона слов). Как правило, фреймворки НЛП предварительно обучаются на корпусах, которые намного больше (более ~ миллиарда слов). Предварительное обучение на гораздо большем корпусе данных соответствия может еще больше помочь моделям Flair, но на момент написания этой статьи это было для нас невозможным.

Выбор встраивания

Модели, обученные с помощью Flair NLP, явно превосходят модели Spacy с точки зрения точности, в первую очередь из-за контекстно-зависимого характера Flair Embeddings, а также частично из-за архитектуры нейронной сети Flair. В моделях Flair, обсуждавшихся до сих пор, мы использовали стандартные вложения Flair для представления векторов конечных слов. В то время как Flair Embeddings сами по себе работали довольно хорошо, было бы полезно объединить их с другими видами встраивания слов для лучшего захвата скрытых синтаксических и семантических сходств и контекстуальности мирового уровня. Однако комбинирование различных видов встраивания слов не является простым делом и обычно требует переработки архитектуры модели. Мы смогли достичь этого очень плавным образом, используя архитектуру Flair, которая абстрагирует определенные инженерные проблемы, которые могут возникнуть при смешивании различных вариантов встраивания. API Flair обеспечивает доступ к другим вложениям SOTA (Glove, Bert, Elmo, FastText) и простой в использовании интерфейс для объединения нескольких комбинаций вложений. Результаты моделей, обученных нескольким из этих вариантов встраивания, описаны в таблице ниже.

Как видно из приведенной выше таблицы, модель, обученная только с классическими вложениями слов, такими как «Перчатка», уступает всем другим моделям. Когда вложения используются изолированно, модели, обученные с помощью вложений ELMo (DS3-E) и BERT (DS3-B), превосходят автономную модель Flair (DS-FM) с точки зрения общей точности. Модель DS3-E с вложениями ELMo также показала лучшие результаты в категории утверждений «C2». Но важное улучшение было в отношении модели DS3-B с вложениями BERT. Он не только превзошел с точки зрения общей точности, но и значительно улучшил точность модели (точность ~ 75%) для утверждений «C3». Стекированные комбинации встраивания Flair с другими не сильно изменили производительность. Однако модель DS3-BE с вложениями BERT и ELMo имела общее преимущество по точности ~90,33%. В то время как предел производительности не был значительным между автономными и сложенными комбинациями контекстных вложений, вложения BERT оказались очень ценными в прогнозировании более сложных операторов типа «C3» с точностью около 78%. Это значительное улучшение по сравнению с отдельными Flair Embeddings. Однако вложения BERT незначительно уступали в предсказании операторов «C2». Мы попробовали несколько других комбинаций встраивания (не показаны в приведенной выше таблице), но в целом комбинации BERT и ELMO показали лучшие результаты с точки зрения точности модели.

Оптимизация гиперпараметров

Наконец, любое машинное обучение или модель глубокого обучения не будет полным без оптимизации гиперпараметров. Оптимизация гиперпараметров — это больше искусство, чем наука, и она может потребовать значительных вычислительных ресурсов и времени. Тем не менее, мы перебрали различные варианты гиперпараметров, используя библиотеку Hyperopt Python и архитектуру Flair NLP:

Количество скрытых слоев LSTM: [1,2]

Количество скрытых юнитов на слой: [32, 64, 128, 256]

Отсев: от [0 до 0,5], скорость обучения: [0,05, 0,1, 0,15, 0,2]

Минимальный размер партии: [8, 16, 32]

Вложения: [Glove, Flair, BERT, ELMo]

Просмотр нескольких из этих вариантов гиперпараметров незначительно изменил результаты модели на уровне отдельной категории операторов. Однако общие результаты модели не сильно улучшились по сравнению с моделью DS3-BE, описанной в предыдущем разделе, которая имела наилучшую общую точность (~ 90,33%) со следующими гиперпараметрами:

Количество скрытых слоев LSTM: 1, количество скрытых модулей на слой: 256, скорость обучения: 0,1, минимальный размер пакета: 32, встраивание: BERT + ELMo

Выводы

В этой статье мы разработали и оптимизировали решения на основе глубокого обучения и НЛП для проблемы автоматического извлечения субъекта из заявлений о соответствии. Для этой цели мы использовали новейшие фреймворки DL и библиотеки NLP. Благодаря систематическому процессу обнаружения данных, понимания предметной области, аннотации, предварительной обработки данных, представления и умной интеграции библиотек NLP мы смогли обучить и разработать модели DL/NLP, которые очень хорошо показали себя в прогнозировании субъектов соответствия в различных типах и категориях. заявлений о соответствии. Благодаря революционным разработкам в мире НЛП с помощью BERT, Flair и других достижений мы смогли разработать довольно хорошие решения, которые были не только надежными, легкими, точными, но и масштабируемыми. Эта работа подтверждает силу трансферного обучения и использования контекстных вложений слов для обеспечения превосходной производительности при выполнении задач НЛП. Предварительное обучение может быть особенно полезным в сценариях, где очень мало аннотированных обучающих данных, как описано в этой работе. Кроме того, стекированные вложения также могут быть довольно мощными для получения дальнейшего преимущества в производительности модели. Настоящий подход не зависит от отрасли и может хорошо работать для задач извлечения сущностей с ограниченными аннотированными обучающими данными, как в текущей работе, или даже в ситуациях, когда аннотированные данные абсолютно отсутствуют (недавно мы разработали такое решение для другого клиента в сфере здравоохранения. Я буду обсудите эти детали в следующей статье.