Языковой перевод на мобильном устройстве

Запускать модели машинного обучения на Jupyter Notebook - это нормально, но задумывались ли вы когда-нибудь о том, как эти модели могут работать на вашем мобильном устройстве с ограниченным пространством и вычислительной мощностью? Если мы будем использовать модели непосредственно в нашем мобильном приложении, это слишком увеличит размер мобильного приложения - так как же нам управлять этим на мобильном устройстве? Я собираюсь ответить на эти вопросы в этой статье.

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

TensorFlow Lite - это платформа глубокого обучения с открытым исходным кодом для вывода данных на мобильных устройствах. По сути, это набор инструментов, которые помогут нам запускать модели TensorFlow на мобильных, встроенных устройствах и устройствах Интернета вещей. TensorFlow Lite обеспечивает логический вывод машинного обучения на устройстве с малой задержкой и небольшим двоичным размером.

TensorFlow Lite состоит из двух основных компонентов:

  • Интерпретатор TensorFlow Lite: интерпретатор запускает оптимизированные модели Lite на многих различных типах оборудования, включая мобильные телефоны и встроенные устройства.
  • Конвертер TensorFlow Lite: конвертер преобразует модель TensorFlow в эффективную форму, которая будет использоваться интерпретатором. Этот подход может вводить оптимизацию для улучшения размера двоичного файла, а также производительности.

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

Данные

Мы будем использовать набор данных для перевода с английского на хинди, который содержит около 3500 разговоров, которые мы используем в нашей повседневной жизни. Данные можно получить из любого ресурса с открытым исходным кодом. Вы также можете получить его на моем GitHub. Данные разделяются символом \ n. Нам нужно преобразовать данные в списки вопросов и ответов, где вопросы будут нашим родным языком, а ответы - нашим языком перевода.

Наши данные в текстовом формате. Мы можем использовать код Python для разделения наших данных по строкам, а затем мы можем создать список для наших вопросов и ответов.

Установка размера вектора и форматирования данных

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

Обработка наших данных

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

  1. Удаление всех стоп-слов.
  2. Изменить регистр слов.
  3. Удаление всех числовых данных.

Определение встраивания слов

Чтобы преобразовать наши текстовые данные в числовую форму, мы будем использовать технику встраивания слов. Здесь мы будем использовать модель GloVe. Модель GloVe сочетает в себе преимущества модели пропуска word2vec в задачах аналогии со словом. Эту модель перчатки можно найти в Google. Он имеет текстовый формат, который мы можем импортировать, используя приведенный ниже код. В модели GloVe «100d» обозначает размер вектора слова в качестве вывода. Встраивание GloVe известно своим маленьким размером встраивания, и этого достаточно для наших повседневных чатов.

Токенизация данных

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

Подготовка данных для моделирования

Нам нужно использовать наши определенные шаги обработки данных для очистки наших данных и использовать tokenized_data.py для их преобразования в токены. Здесь мы возьмем в качестве входных данных вопрос (на родном языке) и ответ (на целевой язык). Мы применим шаги по очистке текста и, наконец, передадим их нашей предварительно обученной модели word2vec, чтобы присвоить каждому слову вектор. А затем мы возьмем среднее значение векторов слов, чтобы составить вектор предложения.

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

Модельное обучение

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

Подготовка модели для мобильных устройств

На данный момент у нас есть модель TensorFlow, готовая к запуску в терминале или Jupyter Notebook, но нам нужно подготовить ее для мобильных устройств. И для этого TensorFlow предоставляет нам некоторые функции, которые могут преобразовать нашу модель TensorFlow в TFlite.

Сохранение модели TFLite

Наконец, мы можем сохранить нашу модель TFlite, чтобы использовать ее на мобильных устройствах с помощью Google Firebase или локально в вашем приложении для Android или iOS. Наша модель TFlite имеет размер около 13 МБ, но мы можем использовать ее локально, потому что она может ускорить вывод и, будучи моделью небольшого размера, не сильно увеличит размер приложения.

Этот процесс основан на ваших требованиях. Если вы не хотите увеличивать размер своего приложения и готовы использовать модель, для которой требуется дополнительное время для вывода, вы можете развернуть приложение в Firebase и использовать его, используя вызовы API из вашего приложения для Android. . С другой стороны, если вам хорошо подходит дополнительный размер вашего Android-приложения и вам нужен более быстрый вывод, тогда используйте модель локально.

Демо чат-бота

Вот последняя демонстрация нашего чат-бота, который работает на мобильном устройстве. Мы также можем интегрировать его в веб-сайт. Он работает как Google Translate, и главное, вы можете использовать его бесплатно, используя вызовы API: вам не нужно платить третьей стороне за использование их моделей. Я использовал язык хинди для обучения модели. Вы можете играть с этим на своем родном языке.

А пока продолжайте изучать науку о данных!

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

Являясь независимой редакцией, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и группам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим участникам и не продаем рекламу.

Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить лучшие модели машинного обучения.