Несмотря на общий ажиотаж вокруг машинного обучения и нейронных сетей, нет сомнений, что сейчас на них действительно стоит обратить особое внимание.
Почему? Вот основные причины:
- Аппаратное обеспечение стало намного быстрее, и вы можете легко рассчитывать модели на графическом процессоре.
- Есть куча хороших бесплатных фреймворков для нейросетей.
- Опьяненные предыдущим ажиотажем, компании начали собирать большие данные — теперь им есть на чем тренироваться!
- Нейроны в некоторых областях приблизились к человеку, а в других уже превзошли его в решении ряда задач (где у нас лопаты продают, надо срочно рыть бункер)
И либо ты с физфака, либо сидишь и решаешь 2-3 тысячи задач в течение двух-трех лет, чтобы понять о чем идет речь.
Разобраться по дороге на собеседование в поезде, просматривая книгу «Программирование на PHP/JavaScript за 3 дня», вы не сможете ни в коем случае, и списать ее вам никто не даст (даже за ящик водки).
Нейросетевую модель не дадут «списать» даже за ящик водки.
Зачастую именно на ваших данных общедоступная модель вдруг плохо работает и вам придется разбираться в тервере и матане Но, ничего себе, освоив основы, вы сможете строить разные прогнозирующие модели, реализующие интересные и мощные алгоритмы.
И тут язык начинает сворачиваться и выпадать изо рта, зацепляясь за левый глаз.
Красота теории и практики
Даже в такой, казалось бы, интуитивной и прикладной до уровня АК-47 области, как реляционная обработка данных, крупная и очень известная компания IBM в свое время подверглась пыткам и, по сути, «отжала» старичка Кодда , знаменитого создателя «языка для базук», для прогулок во всех четырех направлениях.Что случилось? Кодд утверждал, что SQL, распространяемый IBM, — это зло, он не является строгим и полным и не соответствует строгой и красивой теории :-) Однако мы все до сих пор используем SQL и… ничего, живого.
Примерно то же самое сейчас происходит с машинным обучением.
С одной стороны, еженедельно, а то и чаще выходят вдохновляющие научные публикации на тему внезапной победы ГироДраконов (имеющих гироскопы в физиологических шарах) над Гиперкашалотами в пространствах Тьюринга в созвездии Маленького Принца, появляются бесплатные прототипы.
масса на github и в дистрибутивах нейронных фреймворков, которые понимают смысл вопроса на 5% лучше, чем предыдущие прототипы — но, по сути, продолжают вообще не понимаю сути .
В то же время сильнейшими групповое насилие против нейронной сети и сама идея обучение с подкреплением в пространствах огромной размерности - вдруг начинает бить Atari в двумерных играх и о победе нейросетей над чемпионами по Го , наверное, все уже давно знают. С другой стороны, бизнес начинает понимать, что область еще очень сырая, находится в фазе бурного роста и прикладных кейсов, эффективно решающих проблемы людей, пока очень мало – хотя они, безусловно, существуют и просто поражают. К сожалению, академических игрушек гораздо больше: нейроны старят лица, генерируют порно (не гуглите, потенцию потеряете на день) и создают глючный макет для дизайна веб-страницы .
А может, пригласить на свидание эту созданную нейросетью девушку? Удивительный опыт, который запомнится на всю жизнь.
А настоящие, ошеломительные успехи в некоторых областях, таких как, например, распознавание образов, были достигнуты ценой огромного обучения.
сверточные сети из сотен слоев — что могут себе позволить, пожалуй, только гиганты отрасли: Google, Microsoft… Аналогичная ситуация и с машинным переводом: нужны большие, очень большие объемы данных и большие вычислительные мощности.
Похожая ситуация и с рекуррентные нейронные сети .
Несмотря на их «беспрецедентную мощь» и способность предсказывать цепочки событий, генерировать тексты, похожие на бред писателя под действием тяжелых наркотиков и прочие трюки, они учатся очень и очень медленно и от вас снова требуются несоразмерные вычислительные ресурсы.
Языковые нейронные модели сейчас интересны как никогда, но многие из них требуют значительных текстовых корпусов и, опять же, вычислительных ресурсов, что по-прежнему особенно сложно для русского языка.
И хотя дело сдвинулось с мертвой точки и уже можно найти вложения и не только для русского , эффективно использовать их как часть сложных языковых моделей в производстве, не таская при этом 1000 килограммов внутренностей Python и стадо хрюкающих слонов - непонятно как.
Как вы думаете, легко ли развернуть Hadoop без помощи системных администраторов? Лучше пойди и похрюкай вместе с этим стадом :)
Большой, действительно большой , появившиеся пару лет назад генеративно-состязательные сети вселяют надежду( ГАН ).
Несмотря на их удивительные возможности: восстанавливать утраченную часть изображения, увеличивать разрешение, изменять возраст лица, создавать интерьер, использовать в биоинформатике и вообще докапываться до сути данных и генерировать их по определенному условию( например: я хочу видеть много молодых девушек с красивой попкой ): это пока, скорее, удел серьёзных учёных-исследователей.
Поэтому не стоит рассчитывать, что вы будете заниматься глубоким обучением «на коленках» и из этого быстро выйдет что-то полезное (ударение на букву «о»).
Нужно много знать и работать «в поте лица».
Бизнес-кейсы алгоритмов ML – итоги
Отбросив громоздкую теорию и основательно протрезвев, можно увидеть, что осталась небольшая горстка теоретически полезных в электронной коммерции и CRM алгоритмов, с которыми можно и нужно начинать работать и решать текущие бизнес-задачи:- Классификация чего-либо на несколько классов (спам/не спам, куплю/не куплю, уйду/не уйду)
- Персонализация: какой товар/услугу купит человек, уже купивший другие?
- Регрессия чего угодно в число: определяем цену квартиры по ее параметрам, цену автомобиля, потенциальный доход клиента по его характеристикам
- Объединение чего-либо в несколько групп
- Обогащение наборов бизнес-данных или предварительное обучение с использованием GAN
- Перевод одной последовательности в другую: «Следующее лучшее предложение», циклы лояльности клиентов и т. д.
Говорят, что в голове «блондина» (это собирательный образ, девушки не обижаются, есть мужчины типа «блондинки») нет мозга, а два уха напрямую связаны тонкой нитью.
Если обрезать нить, ушки оторвутся и упадут на пол.
Бизнес-менеджерам, тем временем, ничего не остается, как с утра до вечера закидывать разработчиков учебниками по математике со словами: «ну найдите применение этим алгоритмам, для фана не предлагайте!» и нанимайте экспертов, которые разбираются в научных публикациях и умеют, по крайней мере, на Python, писать адекватный код.
Как мы используем нейронные сети в технической поддержке и почему?
Мы исходили из того, что, с одной стороны, у нас уже собраны «большие данные», достаточные для обучения нейросети (десятки тысяч примеров), а с другой стороны, есть бизнес-задача постоянно и ежедневно классифицировать поток входящих обращений клиентов с вопросами и предложениями, заранее определенный список тем (десятки) для последующей маршрутизации ответственным сотрудникам.
Выбор алгоритма, зачем нейроны
Мы рассмотрели классические и известные алгоритмы, простите за тавтологию, классификации текста: Байесовский классификатор , логистическая регрессия , Машина опорных векторов , но мы выбрали нейронные сети и вот почему:- Из-за факторизации слоев и нелинейности они способный аппроксимировать гораздо более сложные узоры с меньшим количеством слоев, чем плоские узоры
- Нейронные сети при достаточном количестве обучающих примеров лучше работают с новыми данными «задумано» ( обобщение лучше)
- Нейронные сети могут работать лучше классических моделей и даже лучше, чем модели , которые предварительно разбирают тексты и извлекают из них смысловые связи между словами и предложениями.
- Если мы воспользуемся регуляризацией, аналогичной действию алкоголя на мозг человека ( выбывать ), то нейронные сети сходятся адекватно и не сильно страдают от переобучения
Нейронная сеть обучается полтора часа (без графического процессора, но на нем гораздо быстрее) и использует для обучения набор данных размером ~100 тысяч, связывающий вопросы с категориями.
Категории распределены очень неравномерно, но эксперименты с присвоением весов обучающим примерам с плохо представленными категориями (десятки-сотни примеров на рубрику) особо не улучшили производительность нейросети.
Напомню, на вход сети поступают запросы от граждан на множестве языков, которые могут содержать:
- PHP-код
- макет
- мат-ремат-сленг
- описание проблемы, задачи, идеи
- ссылки на файлы внутри продукта
В этом случае прекрасно работает устойчивость к опечаткам, и вы можете ввести небольшой кусочек пути к файлу или фрагмент кода или одно-два слова текста на любом языке и категория будет определена вполне адекватно.
Вот как это работает изнутри:
Если нейросеть не уверена или допускает ошибку при классификации, человек страхуется и вызов переназначается вручную.
Точность классификации по-прежнему составляет 85% и, конечно, ее можно и нужно повысить – но даже нынешнее решение сократило немало человеко-часов, помогает повысить качество обслуживания клиентов и является примером того, что нейронные сети не игрушки для создания порно - но способны работать рядом с людьми и быть очень полезными.
У этого астродроида в голове не очень мощная нейросеть - но, тем не менее, иногда допуская ошибки, он приносит массу пользы на протяжении 6 частей (а уже 7) киносаги
Планы на будущее
В настоящее время мы экспериментируем с Keras с другими архитектурами классификаторов текста: - на основе рекуррентной сети - на основе сверточной сети - на основе мешка слов Лучше всего работает многослойный классификатор, вход в который представляет собой горячие векторы символов (из небольшого корпусного словаря символов), а затем проходит через несколько слоев.1D свертка с глобальный максимальный/средний пул и на выходе получается обычный слой прямой связи с softmax. Такой классификатор не удалось обучить сквозным образом, и даже пакетная нормализация не помогло (надо было меньше смотреть на девочек и слушать преподавателя) - но мне удалось ее хорошо обучить, последовательно обучая слой за слоем.
Видимо, когда мы разберемся, как эффективно использовать тензоры в Keras/python/Tensorflow в продакшене вместо тензоров в Java, мы обязательно выкатим эту архитектуру в бой и еще больше порадуем наших менеджеров и клиентов.
Вот как работает 1D-свертка, которая не всем понятна.
Можно сказать, что создаются ядра (сверточные ядра), определяющие 1-2-3-n цепочек символов, «аля» модель мульти-nrgams. В нашем случае лучше всего работает 1D-свертка с окном 9. В конце поста, дорогие друзья, желаю вам не чураться МО и нейронов, смело берите их и используйте, стройте и обучайте модели, и я уверен, вы сами увидите, как эффективно работает ИИ.
, как это помогает избавить людей от рутины и повысить качество ваших услуг.
Всем удачи и хорошей, а главное быстрой конвергенции нейросетей! Целую нежно.
Теги: #нейронные сети #Машинное обучение #классификатор текста #1С-Битрикс #техническая поддержка #Машинное обучение
-
Много Бипена И Тутена, Но Бутена Нет?
19 Oct, 24 -
У Тебя Есть Девушка[Жена] %Username%?
19 Oct, 24 -
Семь Правил Тестировщика
19 Oct, 24