Содержание статьи
Как качественно обучить ИИ и цифровых/диалоговых помощников? Почему чат-боты не понимают нас
Тренировка нейронной сети. Функции XOR
Но ее легко получить путем увеличения количества нейронов. Давайте попробуем реализовать обучение с тремя нейронами в скрытом слое и одним выходным (выход ведь у нас только один). Чтобы все получилось, создадим массив X и Y, имеющий обучающие данные и саму нейронную сеть:
Недавно я звонил в один известный банк, чтобы выяснить, можно ли открыть брокерский счет на несовершеннолетнего ребенка. В диалоге с роботом и попытках объяснить ему, что мне не нужен обычный счет или детская карта, было потеряно минут 10. В итоге машина сдалась и переключила меня на оператора.
Охват глобальных данных и небольших сообществ. В компании Dimagi, занимающейся разработкой мобильных приложений для сбора, хранения и обработки статической информации в здравоохранении, тоже заинтересовались Voice Engine. Там начали применять ее для интерактивной обратной связи с медработниками в удаленных уголках планеты. А еще для создания обучающих роликов (например, по грудному вскармливанию младенцев) на редких языках. Только в Кении насчитывается 68 диалектов, и каждая община говорит на своем. Яркий пример — шэн — смесь английского и суахили.
Только ленивый не слышал сегодня о существовании и разработке нейронных сетей и такой сфере, как машинное обучение. Для некоторых создание нейросети кажется чем-то очень запутанным, однако на самом деле они создаются не так уж и сложно. Как же их делают? Давайте попробуем самостоятельно создать нейросеть прямого распространения, которую еще называют многослойным перцептроном. В процессе работы будем использовать лишь циклы, массивы и условные операторы. Что означает этот набор данных? Только то, что нам подойдет любой язык программирования, поддерживающий вышеперечисленные возможности. Если же у языка есть библиотеки для векторных и матричных вычислений (вспоминаем NumPy в Python), то реализация с их помощью займет совсем немного времени. Но мы не ищем легких путей и воспользуемся C#, причем полученный код по своей сути будет почти аналогичным и для прочих языков программирования.
Получить четкий ответ от робота можно только на стандартный вопрос — например, узнать баланс счета и т.д. Если вопрос формулировка звучит иначе, например, «почему на моем балансе минус, если я вчера положил на счет 500 рублей», то с высокой вероятностью бот озвучит либо тот же самый ответ, либо предложит самостоятельно посмотреть баланс в личном кабинете.
Говоря проще, ИНС можно назвать неким «черным ящиком», превращающим входные данные в выходные данные. Если же посмотреть на это с точки зрения математики, то речь идет о том, чтобы отобразить пространство входных X-признаков в пространство выходных Y-признаков: X → Y. Таким образом, нам надо найти некую F-функцию, которая сможет выполнить данное преобразование. На первом этапе этой информации достаточно в качестве основы.
Дабы найти значение ошибки E, надо найти сумму квадратов разности векторных значений, которые были выданы нейронной сетью в виде ответа, а также вектора, который ожидается увидеть при обучении. Еще надо будет найти дельту каждого слоя и учесть, что для последнего слоя дельта будет равняться векторной разности фактического и ожидаемого результатов, покомпонентно умноженной на векторное значение производных последнего слоя:
Для уменьшения ошибки нейронной сети надо поменять весовые коэффициенты, причем послойно. Каким же образом это осуществить? Ничего сложного в этом нет: надо воспользоваться методом градиентного спуска. То есть нам надо рассчитать градиент по весам и сделать шаг от полученного градиента в отрицательную сторону. Давайте вспомним, что на этапе прямого распространения мы запоминали входные сигналы, а во время обратного распространения ошибки вычисляли дельты, причем послойно. Как раз ими и надо воспользоваться в целях нахождения градиента. Градиент по весам будет равняться не по компонентному перемножению дельт и входного вектора. Дабы обновить весовые коэффициенты, снизив таким образом ошибку нейросети, нужно просто вычесть из матрицы весов итог перемножения входных векторов и дельт, помноженный на скорость обучения. Все вышеперечисленное можно записать в следующем виде:
Пишем код
Под искусственной нейронной сетью (ИНС) понимают математическую модель (включая ее программное либо аппаратное воплощение), которая построена и работает по принципу функционирования биологических нейросетей — речь идет о нейронных сетях нервных клеток живых организмов.
Вся работа проводится на базе облачной платформы Beorg Smart Vision, собственной разработки компании Биорг. К платформе удаленно подключены тысячи операторов, имеющих навыки разметки и верификации данных и участвующих в проектах компании, в том числе федеральных, где сложность обработки данных превышает возможности нейросетей и требуется подключать человека для верификации сложных данных.
Для этих целей некоторые компании привлекают к решению задач собственных операторов (если есть свободные ресурсы) или передают работу на аутсорсинг профильным исполнителям. Чем больше проверок проходит датасет, тем точнее будет впоследствии работать искусственный интеллект, тем эффективнее чат-бот сможет обрабатывать запросы клиентов.
Думаю, многие помнят случай, когда другой известный банк обучил своего диалогового помощника на данных, собранных автоматически из открытых источников в сети. В какой-то момент чат-бот не нашел ответ на поставленный клиентом вопрос о биометрическом доступе и предложил ему… отрезать себе пальцы.
Последовательность нейрослоев часто применяют для более глубокого обучения нейронной сети и большей формализации имеющихся данных. Именно поэтому, чтобы получить итоговый выходной вектор, нужно проделать вышеописанную операцию пару раз подряд по направлению от одного слоя к другому. В результате для 1-го слоя входным вектором будет являться X, а для последующих входом будет выход предыдущего слоя. То есть нейронная сеть может выглядеть следующим образом:
Один нейрон может превратить в одну точку входной вектор, но по условию мы желаем получить несколько точек, т. к. выходное Y способно иметь произвольную размерность, которая определяется лишь ситуацией (один выход для XOR, десять выходов, чтобы определить принадлежность к одному из десяти классов, и так далее). Каким же образом получить n точек? На деле все просто: для получения n выходных значений, надо задействовать не один нейрон, а n. В результате для каждого элемента выходного Y будет использовано n разных взвешенных сумм от X. В итоге мы придем к следующему соотношению:
Обновление весовых коэффициентов
Когда мы узнаем дельту последнего слоя, мы сможем найти дельты и всех предыдущих слоев. Чтобы это сделать, нужно будет лишь перемножить для текущего слоя транспонированную матрицу с дельтой, а потом перемножить результат с вектором производных функции активации предыдущего слоя:
Давайте внимательно посмотрим на него. Вышенаписанная формула — это не что иное, как определение умножения матрицы на вектор. И в самом деле, если мы возьмем матрицу W размера n на m и выполним ее умножение на X размерности m, то мы получим другое векторное значение n-размерности, то есть как раз то, что надо.
Также Voice Engine пригодится тем, кто общается жестами. Существуют приложения с искусственным интеллектом, которые позволяют коммуницировать людям с ограниченными возможностями. Используя новую нейросеть, они могут выбирать из числа уникальных, нероботизированных голосов.
Например, в обучении маленьких детей, школьников и студентов. На образовательных интернет-платформах можно найти массу курсов, и если их будет читать не механический, а естественно звучащий голос, слушать такие лекции будет намного приятнее. А значит, усваивать материал будет проще. OpenAI уже заключила контракт с одной из таких компаний, которая раньше занималась программами для обучения детей чтению и математике. Теперь с помощью Voice Engine и GPT-4 они разработали и другие курсы — например, по химии и физике.
Ключевое преимущество комбинации искусственных и биологических нейросетей – это гарантия качества данных. Операторы верификации данных нивелируют ошибки нейросетей, параллельно дообучая их. При этом никакого внедрения на стороне заказчика не требуется — к платформе можно подключиться через облако и платить не за лицензии, а за полученный результат.
Кейс №1 Tesla Хорошим примером качественного обучения и эффективного использования искусственного интеллекта — опыт Tesla, которая работает над совершенствованием механизма автопилотирования своих автомобилей. Для обучения нейросети автопроизводитель использует миллиарды сцен, миллионы часов, тысячи терабайт информации, полученных с радаров машин. Это «слепки» конкретных ситуаций, происходящих на дороге. Анализируя полученные данные, система делает предсказания: куда повернуть руль, нажать газ или тормоз и т. д. Безусловно, процесс автоматизирован, но реальная разметка делается с участием человека. Когда человек садится за руль, его действия тщательно фиксируются. На основе полученной информации формируются датасеты, которые используются для обучения сети. Анализ поступающих с машин пользователей данных позволяет постоянно улучшать работу нейросети и совершенствовать автопилот. Кейс №2 Google-переводчик Первоначально Google обошёл ограничение, связанное с ручной разметкой датасетов: компания использовала официальные документы и их переводы от Европейского Парламента и Парламентской ассамблеи Организация Объединенных Наций. Из-за строгости перевода в этих учреждениях эти документы подошли для начального обучения. Но уже на втором этапе разработчики поняли, что для передачи слэнга, культурных особенностей речи и других смысловых нюансов без ручной разметки данных не обойтись. Для этого они через аутсорсинговые компании собрали исполнителей, которые работали над разметкой датасетов для постоянного улучшения переводов. Для дообучения понадобились миллионы размеченных документов, и процесс совершенствования системы — как с помощью технологий, так и с помощью людей – продолжается постоянно.
Кроме того, с помощью Voice Engine можно переводить текст. Нейросеть способна воспроизводить голос человека не только на его родном языке, но и на любых других, при этом сохраняя акцент. Например, если франкоговорящий захочет создать аудио на английском языке, ИИ сгенерирует запись с французским произношением. Так, в компании HeyGen, которая специализируется на создании маркетинговых образов и аватаров, Voice Engine используют для перевода видеороликов. Английскую речь там трансформируют в испанскую, китайскую, немецкую, французскую, японскую. И все это голосом одной женщины.
Диалоговые помощники — это софт на основе ИИ, который «понимает» естественный язык и синтезирует речь, чтобы общаться с людьми. Однако сам по себе ИИ не обладает волей, абстрактным мышлением или желанием говорить. Он всё это имитирует. Чтобы ответить на вопрос, нейросеть должна получить входящий сигнал, определить ключевые значения, проанализировать тысячи заложенных в неё сценариев, найти совпадения и выбрать правильный сценарий ответа. Всё это возможно только после качественного обучения. Здесь важны три аспекта: