Русский
Русский
English
Статистика
Реклама

Technology

Перевод Семь талантливых стажеров AIUnity 2020. Часть 2

09.12.2020 16:05:25 | Автор: admin

Будущих студентов курса "Unity Game Developer. Basic" приглашаем принять участие в открытом уроке на тему "2d-платформер головоломка".


А также делимся продолжением перевода интересного материала.


PSankalp Patro (ML-Agents): Отслеживание выходных данных модели

Обучение с подкреплением требует значительных вычислительных ресурсов, которые зачастую намного больше, чем среднестатистический пользователь может аккумулировать на своем ноутбуке или персональном компьютере. Чтобы упростить нашим пользователям обучение, команда ML-Agents в настоящее время разрабатывает ML-Agents Cloud экспериментальный обучающий облачный сервис для ML-Agents (заявленный в нашем блоге Release 1).

ML-Agents Cloud предлагает пользователям ряд преимуществ. Теперь разработчики могут проводить несколько исследований параллельно, а не быть ограниченными одним исследованием за раз на своем локальном компьютере. Благодаря передовым вычислительным мощностям время обучения сокращается, и сложные среды можно обучать за меньшее время. ML-Agents Cloud также позволяет избежать необходимости установки и настройки библиотек машинного обучения и контроля версий (таких как Tensorflow и PyTorch), необходимых для обучения ML-Agents.

Проблема: Отсутствие отслеживания и обслуживания моделей, созданных в ходе исследований

До этой стажировки ML-Agents Cloud не предоставляла пользователям возможности взаимодействовать с моделями, созданными в ходе их исследований. Поскольку исследования с обучением с подкреплением могут занимать часы, в дополнение к окончательному результату разумно создавать промежуточные контрольные точки модели. Модели контрольных точек можно использовать для построения графика прогресса обучения модели или для возобновления обучения с заданной точки. Поскольку обученные модели являются наиболее важным продуктом ML-Agents, мы хотели предоставить пользователям удобный способ просмотра и отслеживания своих моделей.

Решение: Создание бэкенда для отслеживания и обслуживания моделей

Чтобы решить эту проблему, я решил создать бэкенд для отслеживания и обслуживания файлов моделей, обученных в ML-Agents Cloud. Эта задача включала:

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

  • API и CLI: затем я создал интерфейс для взаимодействия пользователей со своими моделями, хранящимися в облаке, путем расширения API ML-Agents Cloud и CLI (интерфейса командной строки).

  • Прототипирование ML-Agents Cloud с помощью редактора Unity: используя компоненты, упомянутые ранее, я построил прототип для интеграции ML-Agents Cloud с редактором Unity. Цель этого компонента заключалась в том, чтобы представить потенциальную end-to-end интеграцию между ML-Agents Cloud и редактором Unity, чтобы сделать редактор универсальным средством RL обучения. Кроме того, это послужило доказательством концепции того, насколько плавным может стать обучение в облаке с помощью ML-Agents Cloud, устраняя почти все накладные расходы на настройку.

Aryan Mann (Game Simulation): Game Simulation и процедурная генерация

Одним из механизмов, используемых для создания сложного, захватывающего и разнообразного игрового процесса, является процедурная генерация контента. В основе системы процедурной генерации контента лежит генератор функция, которая использует случайное начальное число (зерно, сид или seed) для генерации набора выходных данных. Для некоторой конфигурации входных данных набор всех возможных миров, созданных из всех возможных зерен, является генеративным пространством данной конфигурации. Когда мы меняем конфигурацию, изменяя некоторый объем входных данных, создается другой набор миров и, следовательно, другое пространство генерации.

Проблема: Контроль качества процедурного контента сложная задача

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

Решение: Тестирование с использованием умных агентов, которые играют в вашу игру

Вместо этого мы хотим достичь полной взаимозависимости агентов. Для этого требуется агент, который может играть на любом уровне в репрезентативном диапазоне вашего процедурного генератора. С помощью этого агента можно оценить баланс или качество уровня. Такие измерения, как время завершения, сложность или непроходимость, становятся возможными благодаря агента, играющему в игру. Это изменяет балансировку игры с математического моделирования на запуск игры как функции черного ящика. Чтобы оценить эту функцию, мы можем заставить группы смоделированных игроков исследовать более крупные и более репрезентативные подмножества сгенерированного контента с помощью такого инструмента, как Unity Game Simulation. Чтобы доказать эту теорию, мы обучили простого бота игре в Obstacle Tower Environment от ML-Agents. Это процедурно сгенерированная башня с возрастающей сложностью, которая служила бенчмарком для глубокого обучения с подкреплением в челлендже, проведенном в прошлом году.

Башня препятствий: Тематическое исследование.

Главный вопрос, который нужно было изучить, заключался в том, можно ли точно определить типы и диапазоны входных параметров, которые результируют в тупиках во время обучения нашего агента, таким образом уравновешивая процедурно сгенерированную башню для нашего агента. Башня препятствий имеет пять различных тем, которые определяют стиль и тип объектов, составляющих уровень, таких как столбы, двери или пол. Используя Unity Game Simulation, мы запускали симуляции на общем наборе уровней (начальных значений) по пяти различным визуальным темам, а затем сравнивали сгенерированные метрики. Они включали максимальную производительность и горячие точки распределения позиций агента. У темы modern была худшая производительность и странная горячая точка перед дверью к уровню. Мы обнаружили тупик, в котором была неправильно перевернута стрелка на двери, что блокировало продвижение агента. Измерение содержания на основе синтетических данных задача непростая, но, по нашему мнению, она того стоит. Следите за новостями в блогах, чтобы узнать об образцах сред и методах оценки контента с помощью Game Simulation.

Christina Guan (Game Simulation): Простые боты для тестирования игры

Один из этапов использования Game Simulation создание бота, который сможет пройти игру или уровень, который вы хотите протестировать. Существует ряд инструментов для создания игрового искусственного интеллекта, который естественно распространяется и на создание ботов, которые могут проходить игру.

Проблема: Создание ботов

В рамках этой стажировки я хотела поэкспериментировать с инструментами Unity для создания простых ботов, которые разработчики могут использовать для тестирования своих игр в Game Simulation. Это обеспечит Unity собственным решением, которое без проблем будет работать с новой системой ввода Unity. Система ввода (Input System) разработана так, чтобы быть более расширяемой и настраиваемой, чем классическая система ввода. Она позволяет пользователям быстро и легко связывать определенные действия с несколькими типами контроллеров без необходимости вносить серьезные изменения в скрипт, что упрощает поддержку игр на различных платформах и устройствах. Она также имеет дополнительные преимущества, заключающиеся в том, что ее легко запускать из кода и обрабатывать событиями, которые можно отслеживать и, в свою очередь, обрабатывать, что дает разработчикам инструменты для создания простых, но в то же время полезных ботов для своих игр.

Решение: Боты системы ввода

В ходе стажировки я построила двух разных ботов, которые оба использовали пакет системы ввода: бот обезьяна (monkey) и бот повтор (replay). Эти боты были разработаны с оглядкой на контроль качества и тестирование багов. Робот-обезьяна может непрерывно тестировать большое количество комбинаций входных данных в случайном порядке, что полезно для тестирования граничных случаев входных данных. Бот повтор был бы наиболее полезен для записи и воспроизведения различных QA тестов, позволяя человеку-тестировщику сосредоточиться на других задачах, а не на одном и том же повторяющемся наборе тестов. Кроме того, оба бота спроектированы таким образом, чтобы не требовать определенных зависимостей игрового кода, и структурированы таким образом, что разработчики могут добавлять или изменять их части по мере необходимости.

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

Бот повтор позволяет разработчикам записывать и воспроизводить последовательности входных данных. Он перехватывает эвент трейсы от системы ввода при срабатывании ввода и сопоставляет эти события с вводами, которые влияют на игру. Затем бот создает список вводных данных и временных меток, которые хранятся в JSON объекте. JSON объекты можно изменять или воспроизводить как есть через бота. В настоящее время этот бот совместим только с устройством ввода с клавиатуры.

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


Узнать подробнее о курсе "Unity Game Developer. Basic".

Записаться на открытый урок по теме "2d-платформер головоломка".


Читать первую часть.


Подробнее..

Перевод Распознаем речь с помощью IBM Speech-to-Text API

17.02.2021 18:10:52 | Автор: admin

Привет, Хабр. В рамках курса "Machine Learning. Advanced" подготовили для вас перевод интересного материала.

Также всех желающих приглашаем посмотреть открытый урок на тему
Multi-armed bandits для оптимизации AB тестирования.


Извлекаем разговоры из аудиозаписи с легкостью, используя Python.

В этой статье вы узнаете, как использовать IBM Speech to Text API для распознавания речи из файла аудиозаписи. Мы будем использовать бесплатную версию API, которая имеет некоторые ограничения, такие как, например, длина звукового файла. Подробнее об API я расскажу в этой статье чуть позже. Позвольте мне начать с предоставления вам некоторой справочной информации о применении распознавания речи в нашей повседневной жизни.

Предпосылки

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

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

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

Содержание:

  • Облачные сервисы распознавания речи

  • Шаг 1 - Библиотека

  • Шаг 2 - Импорт аудиоклипа

  • Шаг 3 - Определение распознавателя

  • Шаг 4 - Распознаватель речи в действии

  • Заключительный шаг - Экспорт результата

Облачные сервисы распознавания речи

Многие гигантские технологические компании имеют собственные распознавательные модели. Я поделюсь некоторыми из них здесь, чтобы вы увидели общую картину. Эти API-интерфейсы работают через облако и могут быть доступны из любой точки мира, если есть подключение к интернету. Кроме того, большинство из них являются платными, но их можно протестировать бесплатно. Например, Microsoft предлагает годовой бесплатный доступ для облачной учетной записи Azure.

Вот некоторые из наиболее популярных облачных сервисов преобразования речи в текст:

Шаг 1 Библиотека

Для этого проекта нам понадобится всего одна библиотека. И это SpeechRecognition. SpeechRecognition распространяется бесплатно с открытым исходным кодом. Она поддерживает несколько механизмов распознавания речи и API. Такие как; Microsoft Azure Speech, Google Cloud Speech, API IBM Watson Speech to Text и другие. В этом проекте мы будем тестировать IBM Watson Speech to Text API. Не стесняйтесь изучить исходный код и документацию пакета SpeechRecognition здесь.

Начнем с установки пакета. Мы собираемся использовать pip, менеджер библиотек Python.

pip install SpeechRecognition

После завершения процесса установки мы можем открыть наш редактор кода. Вы также можете использовать Jupyter Notebook.

import speech_recognition as s_r

Шаг 2 - Импорт

Я записал голосовую заметку с помощью компьютера. Он был в формате m4a, но распознаватель не работает с форматом m4a. Вот почему мне пришлось преобразовать его в wav формат.

audio_file = s_r.AudioFile('my_clip.wav')

Шаг 3 - Определение распознавателя

На этом этапе все, что мы сделаем, это определим распознаватель речи. Ранее мы импортировали библиотеку. А теперь мы создадим новую переменную и присвоим ей атрибут распознавания.

rcgnzr = s_r.Recognizer()

Шаг 4 - Распознаватель речи в действии

Пришло время действия! Мы запустим IBM speech to text на нашем аудиофайле. Перед запуском распознавателя я запущу функции, называемые adjust_for_ambient_noise и record, которые подавят шум и улучшат звук. Таким образом, наш распознаватель сможет выдавать более точные результаты.

with audio_file as source:    rcgnzr.adjust_for_ambient_noise(source)    clean_audio = rcgnzr.record(source)

Отлично, теперь у нас есть достаточно чистая аудиозапись. А теперь давайте запустим распознаватель речи IBM. (Мне потребовалось несколько часов, чтобы понять, как IBM Speech-to-Text API интегрируется с библиотекой Python SpeechRecogniton). Вот лучший способ вызвать распознаватель через API:

recognized_speech_ibm = r.recognize_ibm(clean_audio, username="apkikey", password= "your API Key")

Примечание: API IBM не работает без API-ключа. Нам нужно будет получить его на странице IBM Watson. Мне пришлось создать учетную запись для тестирования этой Speech-to-Text модели. Что мне понравилось в модели IBM, так это, что я могу обрабатывать 500 минут записей в месяц, используя триальную учетную запись, что более чем достаточно для учебных целей.

Последний шаг - экспорт результата.

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

Чтобы проверить распознанную речь, выведем переменную с распознанным текстом:

print(recognized_speech_ibm)

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

Теперь я экспортирую распознанную речь в текстовый документ. Мы увидим сообщение ready! в нашем терминале по завершении экспорта.

with open('recognized_speech.txt',mode ='w') as file:       file.write("Recognized Speech:")    file.write("\n")    file.write(recognized)    print("ready!")

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

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


Узнать подробнее о курсе "Machine Learning. Advanced".

Посмотреть открытый урок на тему Multi-armed bandits для оптимизации AB тестирования.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru