Гребешки: глубокое отслеживание знаний с помощью TensorFlow

искусственный интеллект TensorFlow глубокое обучение алгоритм

Автор: Чжан Ручен Чжан Чжибо, команда алгоритмов Scallop

задний план

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

 

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

Рис. 1. Прогноз доли правильных ответов в режиме реального времени.

Введение модели

Основываясь на большом количестве предыдущих записей онлайн-тестов по словарному запасу, наше общее количество последовательностей достигло уровня десятков миллионов, что обеспечивает прочную основу для использования моделей глубокого обучения. Что касается модели, мы выбрали модель Deep Knowledge Tracing (DKT) [1], опубликованную Piech Chris и др. из Стэнфордского университета на NIPS 2015, которая была проверена на данных Академии Хана и дает лучшие результаты, чем традиционная модель BKT. Из таблицы 1 видно, что по сравнению с данными Академии Хана количество вопросов и количество пользователей, участвующих в данных теста словарного запаса морского гребешка, больше, а длина последовательности больше.Эти различия также являются самыми большими проблемами, с которыми мы сталкиваемся в процесс настройки модели.

Таблица 1: Сравнение данных Khan Math и Shanbay Vocab

 

Структура базовой модели представляет собой однослойную LSTM, как показано на рисунке 2, входные данные xt представляют собой вложение текущего действия пользователя (отвеченное слово и правильное оно или нет), которое может использовать однократное кодирование или сжатое представления. Выходные данные yt представляют собой вероятность того, что модель предсказывает, что пользователь правильно ответит на каждое слово в словаре.

Рисунок 2: Структура модели DKT

Улучшения модели

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

предварительная обработка данных

Путем наблюдения обнаружено, что исходные данные имеют следующие проблемы:

  • Доля небольшого количества аномальных пользовательских данных слишком высока

  • Некоторые пользовательские тестовые последовательности слишком короткие и предоставляют недостаточную информацию.

  • Мало очень низкочастотных слов

После очистки данных точность модели повышается примерно на 1,3%.

Знакомство с внешними признаками

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

  • Время — время, которое потребовалось пользователю, чтобы ответить на первый раз, когда он встретил слово.

  • Количество попыток — сколько раз пользователь встретил слово.

  • Первое действие — первое действие пользователя — ответить прямо или попросить систему дать оперативную информацию.

  • Уровень слова — Предыдущий уровень слова

Есть много способов использовать эти функции, которые могут быть введены после кодирования с помощью автокодировщика, или введены в виде вектора признаков после сращивания с входными вложениями, или напрямую совмещены со скрытым состоянием, выводимым LSTM для прогнозирования. Использование этих функций дополнительно повышает точность модели примерно на 2,1%. Мы также провели сравнительные эксперименты по влиянию различных функций и обнаружили, что время и количество попыток являются двумя наиболее важными параметрами функции, в то время как другие функции имеют ограниченное влияние.

Рисунок 3: Модель DKT с внешними функциями

зависимость длинной последовательности

Традиционная модель LSTM использует функцию стробирования.Хотя проблема исчезновения градиента эффективно решается, она по-прежнему неизбежна перед лицом сверхдлинных последовательностей. Кроме того, проблема исчезновения градиентов между слоями все еще существует в многослойных LSTM из-за использования функции tanh. Поэтому большинство многослойных LSTM на данном этапе используют 2–3 слоя, максимум 4 слоя. Чтобы решить проблему долгосрочной зависимости сверхдлинных последовательностей в данных, мы выбрали Независимо рекуррентную нейронную сеть (IndRNN), опубликованную Шуай Ли и др. в CVPR 2018. модель [2]. IndRNN развязывает нейроны в слое, делая их независимыми друг от друга, и использует функцию активации ReLU для эффективного решения проблемы исчезновения и взрыва градиента внутри и между слоями, что значительно увеличивает количество слоев модели и длину последовательности. этому можно научиться. Как показано на рисунке 4, для задачи добавления (типичная проблема для оценки моделей RNN), когда длина последовательности достигает 1000, LSTM не может уменьшить среднеквадратичную ошибку, в то время как IndRNN все еще может быстро сходиться к очень маленькой ошибке.

Рисунок 4: Сравнение сходимости различных RNN для длинных последовательностей для задачи добавления.

Внедрение IndRNN эффективно решает проблему долгосрочной зависимости сверхдлинных последовательностей в данных и дополнительно повышает точность модели на 1,2%.

Настройка гиперпараметров

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

  • Типы структуры RNN - LSTM, GRU, IndRNN

  • Уровни и соединения RNN

  • Скорость обучения и шаги затухания

  • Входные данные и размеры RNN

  • Размер отсева

 

Среди алгоритмов автоматической настройки параметров более распространены поиск по сетке, случайный поиск и байесовская оптимизация [3]. Проблема с поиском по сетке заключается в том, что он подвержен проклятию размерности, в то время как случайный поиск не может использовать предварительные знания для лучшего выбора следующего набора гиперпараметров, только байесовская оптимизация «вероятно» лучше, чем способность инженеров-моделей корректировать алгоритм параметров. Потому что он может использовать предварительные знания для эффективной настройки гиперпараметров. Метод байесовской оптимизации очень эффективен, когда целевая функция неизвестна, а вычислительная сложность высока.Основная идея алгоритма заключается в использовании теоремы Байеса для оценки апостериорного распределения целевой функции на основе выборочных данных и затем выберите следующую выборку на основе комбинации распределения гиперпараметров.

Рисунок 5: Байесовский процесс оптимизации для одномерной функции черного ящика

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

После использования параметров байесовской оптимизации точность модели повышается еще на 1,7%.

Развертывание модели

Мы используем TensorFlow Serving в качестве решения для развертывания модели. Прежде чем выйти в онлайн, мы использовали некоторые методы сжатия модели, чтобы уменьшить размер модели, и нашли оптимальные параметры конфигурации пакетной обработки в соответствии с TensorFlow Serving Batching Guide [4].

сжатие модели

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

 

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

Пакетная настройка обслуживания TensorFlow

Согласно официальному руководству по настройке производительности, для системы онлайн-прогнозирования мы устанавливаем num_batch_threads на количество ядер ЦП, max_batch_size на большое значение и batch_timeout_micros на 0. Затем настраиваем batch_timeout_micros в диапазоне от 1 до 10 миллисекунд, чтобы найти оптимальное значение. конфигурация. После тестирования установлено, что на тех же вычислительных ресурсах, при использовании оптимизированной конфигурации Batching, параллелизм не используется при 2~2,5 раза.

Резюме и перспективы

В этой статье в качестве примера используется сценарий оценки уровня словарного запаса, чтобы представить применение TensorFlow в компьютерном обучении языку. Благодаря воспроизведению, улучшению и настройке результатов серии статей модель DKT была успешно запущена, предоставив более научное решение для проверки словарного запаса для десятков миллионов пользователей.

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

использованная литература

[1] Piech, C. и др. Глубокое отслеживание знаний в Достижениях в системах обработки нейронной информации 505–513 (2015).

[2] Li, S., Li, W., Cook, C., Zhu, C. & Gao, Y. Independently Recurrent Neural Network(IndRNN): Building A Longer and Deeper RNN. (2018).

[3] Шахриари Б., Сверски К., Ван З., Адамс Р. П. и Фрейтас Н. де. Выведение человека из цикла: обзор байесовской оптимизации, Труды IEEE 104, 148– 175 (2016).

[4] TensorFlow Serving Batching Guide. (2018). Available at:

https://github.com/tensorflow/serving/tree/master/tensorflow_serving/batching.

[5] Sak, H., Senior, A. & Beaufays, F. Long short-term memory recurrent neural network architectures for large scale acoustic modeling. in Fifteenth annual conference of the international speech communication association (2014).