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

Оглавление:

  1. Бизнес-проблема
  2. Потребность в науке о данных
  3. Источник данных
  4. Исследовательский анализ данных
  5. Решение для первого разреза с использованием GloVe
  6. Модели глубокого обучения с использованием современных технологий
  7. Сравнение моделей
  8. Развертывание с помощью Streamlit
  9. Вывод
  10. Будущая работа
  11. Профиль
  12. использованная литература

1. Бизнес-проблема

Бизнес-задача, которую мы рассматриваем, представляет собой текстовый запрос клиента банка в текстовом формате, который мы должны отнести к одному из классов намерений. Кроме того, нам нужно получить модель, которая дает высокую производительность в этой задаче и имеет небольшой вес.

2. Потребность в науке о данных

Зачем нам нужна наука о данных для решения этой проблемы?

  • Существующий подход для этого состоит в том, чтобы использовать человека для получения намерения, что и делает персонал колл-центра.
  • Но для простых запросов, где нам просто нужно дать выбранный ответ, могут быть полезны машины, которые скорее будут раздражать сотрудников колл-центра каждый раз, когда они могут отвечать на запросы высокого уровня.
  • Также машина может быть доступна 24 x 7.

Какую метрику использовать для проверки производительности нашей модели?

  • Банковские данные имеют 77 категорий намерений
  • Данные несбалансированы, потому что количество выборок для этих 77 классов отличается в данных поезда.

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

3. Источник данных

Скрипты данных были предоставлены компанией Poly-AI, они содержат текст столбцов и категорию, к которой принадлежит текст.

4. Исследовательский анализ данных

Этот график поможет нам определить, какой должна быть максимальная длина входного предложения, данного модели, в основном учитывая максимальную длину, на которую приходится 90–95% предложений.

Облака слов

я. Категория: card_payment_fee_charged

Вывод

  • Намерение card_payment_fee_charged обычно распознается по словам «комиссия», «взимается», «дополнительно».
  • Чаще всего это происходит при использовании кредитной или дебетовой карты.

II. Категория: потерянная_или_украденная_карта

Вывод

  • Намерение «потерянная_или_украденная_карта» обычно распознается по словам «карта», «потерял», «украл», «помощь».

III. Категория: неправильное_количество_наличных_получено

Вывод

  • Намерение «неверная_сумма_полученных_наличных» обычно возникает, когда банкомат не работает должным образом.
  • Распространенными словами являются «банкомат», «наличные», «деньги».

5. Решение для первого разреза

В качестве первого решения мы попытались использовать алгоритм GloVe.

GloVe — это алгоритм обучения без учителя для получения векторных представлений слов. Обучение выполняется на агрегированной глобальной статистике совпадения слов из корпуса, и полученные представления демонстрируют интересные линейные подструктуры векторного пространства слов.

Создание конвейера данных:

Архитектура модели:

Пробовали некоторые комбинации,

Наименьшее переоснащение было замечено в модели 4 Dropout 0,5 с терпением к ранней остановке 5 Train F1 с оценкой 0,8793 и Validation F1 с оценкой 0,8755

6. Модели глубокого обучения с использованием современных методов

  1. BERT (представление двунаправленного кодировщика от трансформаторов):

Обратитесь к этому сайту для получения дополнительной информации о BERT,



Мы использовали предварительно обученную модель Берта (bert_en_wwm_cased_L-24_H-1024_A-16), чтобы получить вложения:

Архитектура модели:

Окончательные результаты с моделью BERT, оценка f1 обучения 0,8452 и оценка f1 проверки 0,7802. Кажется, что модель BERT переопределяла данные, а размер модели был очень большим. Модель BERT не смогла работать лучше, чем GloVe.

2. Универсальный кодировщик предложений:

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

Архитектура модели:

Окончательные результаты с моделью ЕГЭ, оценка f1 обучения 0,9350 и оценка f1 проверки 0,9314. Это были наилучшие результаты по сравнению с моделями GloVe и BERT. У него было наименьшее переоснащение, а размер модели был меньше по сравнению с GloVe и BERT.

3. ConveRT (разговорные репрезентации трансформеров):

ConveRT — это кодировщик двойных предложений , он эффективен, доступен по цене и быстро обучаем, а размер модели ConveRT меньше по сравнению с моделью BERT. ConveRT, согласно компании PolyAI, разработавшей его, был обучен разговорным данным Reddit (контекст, ответ). Но, к сожалению, ConveRT не имеет реализации в Tensorflow. Поэтому я попытался создать ConveRT с нуля в TensorFlow и обучить его разговорным данным Reddit.

Архитектура модели;

я. Позиционное кодирование

Пожалуйста, обратитесь к этому блогу для подробного понимания позиционного кодирования,



II. Уровень кодировщика

III. Полный кодировщик со слоями кодировщика

IV. Окончательная модель ConveRT

Используемая реализация потерь:

я. Потери на бумаге ConveRT

S(xi,yi)= Сходство между контекстом и соответствующим ответом

S(xi,yj)= Сходство между контекстом и другими ответами

II. Тройная потеря

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

тройная потеря = максимум (положительное расстояние + отрицательное расстояние + запас, 0)

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

7. Сравнение моделей

8. Развертывание с помощью Streamlit

Окончательное развертывание модели, созданной с использованием библиотеки Stream-lit и развернутой в Stream-lit.

Streamlit – это библиотека Python с открытым исходным кодом, которая позволяет легко создавать красивые настраиваемые веб-приложения для машинного обучения и обработки данных и делиться ими.

Ссылка на веб-приложение:

https://share.streamlit.io/wins999/query_intent_detector/main/main_app.py

9. Заключение

Мы испробовали различные языковые модели, чтобы решить нашу проблему, связанную с обнаружением намерений банковских запросов. Мы обнаружили, что модели кодировщика двойных предложений, такие как Universal Sentence Encoder, лучше работают в таком сценарии по сравнению с современной моделью BERT. Также модель Universal Sentence Encoder легче по весу, чем модель BERT.

10. Будущая работа

Мы попытались решить нашу проблему с помощью таких моделей, как GloVe, BERT и USE. Мы также построили архитектуру модели ConvRT, прочитав ее исследовательскую работу, но во время обучения возникла проблема, связанная с тем, что потери не обновляются из-за нехватки времени. Я приостановил наше исследование в разделе ConveRT. Но я хочу возобновить его в ближайшее время.

Для кода просто разветвите мой проект по ссылке github, упомянутой ниже, для любых запросов или улучшений, которые вы хотите предложить мне, прокомментируйте или свяжитесь со мной в LinkedIn или по почте.

Почта: [email protected]

11 Профиль





12 ссылок