Проект поведенческого клонирования

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

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

Поведенческое клонирование

Так что же такое поведенческое клонирование? Если вы посмотрите «Матрицу» (фильм), есть сцена, в которой Нео «загружают» данные о боевых искусствах, чтобы он мог изучить и овладеть навыками кунг-фу.

Совершенно аналогичный метод применяется в поведенческом клонировании для обучения модели анонимному вождению автомобиля. Тренер - в данном случае человек должен управлять автомобилем с записью его информации о вождении. Записанные данные, содержащие информацию о том, что компьютер видит на дороге (компьютерное зрение), и информацию об угле поворота рулевого колеса в зависимости от положения автомобиля. Например: когда автомобиль движется к краю дороги, человек, который водит машину, «естественно» поворачивает колесо в противоположном направлении, чтобы автомобиль оставался посередине. Когда автомобиль движется в сторону левого или правого поворота, рулевое колесо будет следовать за ним. Симулятор записывает все данные (изображения на дороге и положение колес) для использования в качестве обучающих данных.

Сетевая архитектура

Несколько сетевых архитектур, представленных на этом уроке Udacity: VGG, AlexNet, GoogLeNet и NVIDIA. Эти сетевая архитектура в основном разработана на базе LeNet. Я использовал LeNet в своей первой попытке обучить модель, но результат не был точным, поэтому я попытался протестировать с использованием сети NVIDIA. Результат был очень хорош.

Вот как я использую Keras для моделирования сетевой архитектуры.

Как видите, с помощью Keras определить сетевую архитектуру NVIDIA очень просто. Keras выполнит все необходимые задачи, включая свои возможности по максимальному использованию графического процессора для ускорения процесса обучения, чтобы мы могли сосредоточиться на логике нашего приложения / исследования.

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

Кроме того, вот видео, демонстрирующее опыт вождения изнутри автомобиля.

Хорошо, но не лучше

В каждом проекте Udacity всегда дает возможность создать лучший проект. Для поведенческого клонирования доступен второй трек, который сложнее первого. Моя модель все еще не подходит для этой задачи. На следующем видео вы можете увидеть, что трасса более сложная (горный район), моя модель все равно не смогла ехать автономно по этой трассе.

Вот пример видео, когда я езжу вручную на втором треке. Это довольно сложно.

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

В будущем я постараюсь найти способ улучшить модель.

Трансферное обучение

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

Пример использования в реальном мире

Тот факт, что статистика дорожно-транспортных происшествий здесь, в Катаре, довольно высока, может стать хорошей причиной для приобретения беспилотного автомобиля в будущем, чтобы снизить количество смертельных случаев на дороге из-за человеческой ошибки. Но беспилотный автомобиль - не единственное приложение для машинного обучения, которое может способствовать улучшению качества жизни людей. Например, Standford’s vision lab, их исследовательская лаборатория, специализирующаяся на двух тесно связанных областях исследования зрения: компьютерном зрении и человеческом зрении. В обеих областях их заинтриговали визуальные функции, которые дают начало семантически значимым интерпретациям визуального мира.

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

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

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

Я склонен согласиться с тем, что Джереми Ховард написал на своем сайте MOOC,

Делаем нейронные сети снова неохлаждаемыми.

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

Конечно, мы будем очень осторожны, чтобы мир, изображаемый Матрицей, не появился в будущем. Потому что, может быть, просто возможно ... однажды компьютер или машина станут умнее человека, и они захватят мир ...! (дум..дум ...., * включи здесь музыку ужасов).