Как Нейросети Помогают Нам В Технической Поддержке

Несмотря на общий ажиотаж вокруг машинного обучения и нейронных сетей, нет сомнений, что сейчас на них действительно стоит обратить особое внимание.

Почему? Вот основные причины:

  1. Аппаратное обеспечение стало намного быстрее, и вы можете легко рассчитывать модели на графическом процессоре.

  2. Есть куча хороших бесплатных фреймворков для нейросетей.

  3. Опьяненные предыдущим ажиотажем, компании начали собирать большие данные — теперь им есть на чем тренироваться!
  4. Нейроны в некоторых областях приблизились к человеку, а в других уже превзошли его в решении ряда задач (где у нас лопаты продают, надо срочно рыть бункер)
Но управлять этим пока сложно: здесь много математики, высшей и беспощадной.

И либо ты с физфака, либо сидишь и решаешь 2-3 тысячи задач в течение двух-трех лет, чтобы понять о чем идет речь.

Разобраться по дороге на собеседование в поезде, просматривая книгу «Программирование на PHP/JavaScript за 3 дня», вы не сможете ни в коем случае, и списать ее вам никто не даст (даже за ящик водки).



Как нейросети помогают нам в технической поддержке

Нейросетевую модель не дадут «списать» даже за ящик водки.

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

И тут язык начинает сворачиваться и выпадать изо рта, зацепляясь за левый глаз.



Красота теории и практики

Даже в такой, казалось бы, интуитивной и прикладной до уровня АК-47 области, как реляционная обработка данных, крупная и очень известная компания IBM в свое время подверглась пыткам и, по сути, «отжала» старичка Кодда , знаменитого создателя «языка для базук», для прогулок во всех четырех направлениях.

Что случилось? Кодд утверждал, что SQL, распространяемый IBM, — это зло, он не является строгим и полным и не соответствует строгой и красивой теории :-) Однако мы все до сих пор используем SQL и… ничего, живого.

Примерно то же самое сейчас происходит с машинным обучением.

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

масса на github и в дистрибутивах нейронных фреймворков, которые понимают смысл вопроса на 5% лучше, чем предыдущие прототипы — но, по сути, продолжают вообще не понимаю сути .

В то же время сильнейшими групповое насилие против нейронной сети и сама идея обучение с подкреплением в пространствах огромной размерности - вдруг начинает бить Atari в двумерных играх и о победе нейросетей над чемпионами по Го , наверное, все уже давно знают. С другой стороны, бизнес начинает понимать, что область еще очень сырая, находится в фазе бурного роста и прикладных кейсов, эффективно решающих проблемы людей, пока очень мало – хотя они, безусловно, существуют и просто поражают. К сожалению, академических игрушек гораздо больше: нейроны старят лица, генерируют порно (не гуглите, потенцию потеряете на день) и создают глючный макет для дизайна веб-страницы .



Как нейросети помогают нам в технической поддержке

А может, пригласить на свидание эту созданную нейросетью девушку? Удивительный опыт, который запомнится на всю жизнь.

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

сверточные сети из сотен слоев — что могут себе позволить, пожалуй, только гиганты отрасли: Google, Microsoft… Аналогичная ситуация и с машинным переводом: нужны большие, очень большие объемы данных и большие вычислительные мощности.

Похожая ситуация и с рекуррентные нейронные сети .

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

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

И хотя дело сдвинулось с мертвой точки и уже можно найти вложения и не только для русского , эффективно использовать их как часть сложных языковых моделей в производстве, не таская при этом 1000 килограммов внутренностей Python и стадо хрюкающих слонов - непонятно как.



Как нейросети помогают нам в технической поддержке

Как вы думаете, легко ли развернуть Hadoop без помощи системных администраторов? Лучше пойди и похрюкай вместе с этим стадом :) Большой, действительно большой , появившиеся пару лет назад генеративно-состязательные сети вселяют надежду( ГАН ).

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

Поэтому не стоит рассчитывать, что вы будете заниматься глубоким обучением «на коленках» и из этого быстро выйдет что-то полезное (ударение на букву «о»).

Нужно много знать и работать «в поте лица».



Бизнес-кейсы алгоритмов ML – итоги

Отбросив громоздкую теорию и основательно протрезвев, можно увидеть, что осталась небольшая горстка теоретически полезных в электронной коммерции и CRM алгоритмов, с которыми можно и нужно начинать работать и решать текущие бизнес-задачи:
  1. Классификация чего-либо на несколько классов (спам/не спам, куплю/не куплю, уйду/не уйду)
  2. Персонализация: какой товар/услугу купит человек, уже купивший другие?
  3. Регрессия чего угодно в число: определяем цену квартиры по ее параметрам, цену автомобиля, потенциальный доход клиента по его характеристикам
  4. Объединение чего-либо в несколько групп
  5. Обогащение наборов бизнес-данных или предварительное обучение с использованием GAN
  6. Перевод одной последовательности в другую: «Следующее лучшее предложение», циклы лояльности клиентов и т. д.


Как нейросети помогают нам в технической поддержке

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

Если обрезать нить, ушки оторвутся и упадут на пол.

Бизнес-менеджерам, тем временем, ничего не остается, как с утра до вечера закидывать разработчиков учебниками по математике со словами: «ну найдите применение этим алгоритмам, для фана не предлагайте!» и нанимайте экспертов, которые разбираются в научных публикациях и умеют, по крайней мере, на Python, писать адекватный код.

Как мы используем нейронные сети в технической поддержке и почему?

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



Выбор алгоритма, зачем нейроны

Мы рассмотрели классические и известные алгоритмы, простите за тавтологию, классификации текста: Байесовский классификатор , логистическая регрессия , Машина опорных векторов , но мы выбрали нейронные сети и вот почему:
  1. Из-за факторизации слоев и нелинейности они способный аппроксимировать гораздо более сложные узоры с меньшим количеством слоев, чем плоские узоры
  2. Нейронные сети при достаточном количестве обучающих примеров лучше работают с новыми данными «задумано» ( обобщение лучше)
  3. Нейронные сети могут работать лучше классических моделей и даже лучше, чем модели , которые предварительно разбирают тексты и извлекают из них смысловые связи между словами и предложениями.

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

Как нейросети помогают нам в технической поддержке

Нейронная сеть обучается полтора часа (без графического процессора, но на нем гораздо быстрее) и использует для обучения набор данных размером ~100 тысяч, связывающий вопросы с категориями.

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

Напомню, на вход сети поступают запросы от граждан на множестве языков, которые могут содержать:

  1. PHP-код
  2. макет
  3. мат-ремат-сленг
  4. описание проблемы, задачи, идеи
  5. ссылки на файлы внутри продукта
Оказалось, что нейросеть работает лучше, если данные не подвергаются предварительной обработке и из них составляются char3-нграммы как есть.

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

Вот как это работает изнутри:

Как нейросети помогают нам в технической поддержке

Если нейросеть не уверена или допускает ошибку при классификации, человек страхуется и вызов переназначается вручную.

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



Как нейросети помогают нам в технической поддержке

У этого астродроида в голове не очень мощная нейросеть - но, тем не менее, иногда допуская ошибки, он приносит массу пользы на протяжении 6 частей (а уже 7) киносаги

Планы на будущее

В настоящее время мы экспериментируем с Keras с другими архитектурами классификаторов текста: - на основе рекуррентной сети - на основе сверточной сети - на основе мешка слов Лучше всего работает многослойный классификатор, вход в который представляет собой горячие векторы символов (из небольшого корпусного словаря символов), а затем проходит через несколько слоев.

1D свертка с глобальный максимальный/средний пул и на выходе получается обычный слой прямой связи с softmax. Такой классификатор не удалось обучить сквозным образом, и даже пакетная нормализация не помогло (надо было меньше смотреть на девочек и слушать преподавателя) - но мне удалось ее хорошо обучить, последовательно обучая слой за слоем.

Видимо, когда мы разберемся, как эффективно использовать тензоры в Keras/python/Tensorflow в продакшене вместо тензоров в Java, мы обязательно выкатим эту архитектуру в бой и еще больше порадуем наших менеджеров и клиентов.



Как нейросети помогают нам в технической поддержке

Вот как работает 1D-свертка, которая не всем понятна.

Можно сказать, что создаются ядра (сверточные ядра), определяющие 1-2-3-n цепочек символов, «аля» модель мульти-nrgams. В нашем случае лучше всего работает 1D-свертка с окном 9. В конце поста, дорогие друзья, желаю вам не чураться МО и нейронов, смело берите их и используйте, стройте и обучайте модели, и я уверен, вы сами увидите, как эффективно работает ИИ.

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

Всем удачи и хорошей, а главное быстрой конвергенции нейросетей! Целую нежно.

Теги: #нейронные сети #Машинное обучение #классификатор текста #1С-Битрикс #техническая поддержка #Машинное обучение

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.