
Russian: 
Привет Мир! С вами Сираj
И может ли в действительности ИИ создать другой ИИ
Конечно может!
Нейронная эволюция - это техника
которая проводит оптимизацию нейронной сети
используя эволюционные алгоритмы
мы рассмотрим несколько примеров
как эволюционный алгоритм нейронной сети
обучается в искусственной среде
в этом видео
Совершенствование искусства глубокого обучения
требует сильной мотивации и
бесчисленных часов продуктивной работы
Но в тоже время
Необходимость в экспертах глубокого обучения
все больше продолжает расти
из-за этого появился пробел
в равновесии между спросом и предложением
который вряд ли пропадет в ближайшее время
Чтобы справиться с этим, компании выпускают системы
которые автоматизируют создание моделей ИИ
Одним из примером служит AutoML от Google
Это облачное решение которое позволяет разработчикам
включая тех кто не является экспертом МЛ

English: 
Hello World! It's Siraj, and can an AI really create another AI?
Of course it can! Neuroevolution is a technique that involves optimising neural networks using evolutionary algorithms
We'll cover some example demos involving neuroevolutionary algorithms learning in a simulated environment in this video.
Mastering the art of deep learning takes lots of motivation and countless hours of productive work,
but at the same time, the need for deep learning experts keeps increasing more and more.

Russian: 
построить собственную модель для распознавания изображений
Скорее всего функционал будет расширен чтобы включить остальные базовые
строительные блоки МЛ
такие как перевод речи
распознавание видео и естественного языка
Вся система начиная с импорта данных до их пометки
строительство моделей
и их тренировка
использует drug-and-drop интерфейс для управления
Они делают это используя модель сети Родитель-Ребенок
Родительская нейронная сеть
будет предлагать случайную архитектуру детской сети
которая затем тренируется а ее качество оценивается некоторыми задачами
эта оценка затем используется
чтобы сообщить Родителю как улучшить архитектуру следующей сгенерированной детской сети
этот процесс повторяется тысячи раз
каждый раз генерируя новые архитектуры
они тестируются а оценка передается Родителю для улучшения
обновление градиента используется в качестве фидбэка и в какой-то момент

Russian: 
Родитель начинает присваивать высокую вероятность
местам в архитектуре которые достигли наибольшей точности
для текущего набора данных
Еще один, более свежий, пример
от Uber о нейронной эволюции
Исследователи ИИ в Uber, выпустили набор из 5 статей
сфокусированных на этой технике
В исследовании говорится что
генетические алгоритмы являются эффективным методом
для обучения глубоких нейронных сетей
с проблемой обучения с подкреплением
И что они более эффективны чем традиционные
методы обучения с подкреплением
в некоторых областях
Эволюционные методы имеют длинную историю
Но расцвели они сейчас
Это продолжает тенденцию воскрешений идей прошлого десятилетия
и применений их к реальным проблемам
с использованием современного железа
для получения хороших результатов
Так было со Сверточным сетями
Рекуррентными сетями
и обучении с подкреплением в целом
На самом деле вся история глубокого обучения

Russian: 
полна переосмыслениями и воскрешениями
Например обратное распространение
было переосмыслено несколько раз
В машинном обучение самое главное это оптимизация
независимо от того стоит ли задача классификации
регрессии или обучения с подкреплением
Почти всегда главная задача состоит в том
чтобы найти функцию которая свяжет входные данные с выходными
Data scientist'ы будут стараться вывести параметры
и глобальные параметры модели
исходя из тренировочных данных
и удостовериться с помощью тестовых данных в том
что функция аппроксимации хорошо работает на новых данных
Главная проблема в том чтобы найти правильные глобальные параметры
которые приведут к наименьшей потери или наибольшей награде
Обычно для этого используют Градиентный спуск
Который в контексте нейронных сетей называется Обратным распространением
Припустим что в нашей сети есть 2 разных параметра
Это только для того чтобы мы могли визуализировать поверхность оптимизации

Russian: 
Обычно используют огромное количество параметром и тогда визуализация невозможна
График всех значений параметров и всех возможных значений ошибки
похож на очень суровую местность с холмами и долинами
Прям как восточный Техас
Мы хотим найти нижнюю точку отвесной долины
Это Минимум
Градиент, который мы считаем на каждой итерации, говорит нам в каком направление искать
чтобы найти этот Минимум
Думайте об этом как о шаре который катится по поверхности пока не найдёт Минимум
На данный момент это самый популярный способ оптимизировать сеть
Нейронная эволюция, генетические алгоритмы, эволюционные стратегии
Все эти техники, так или иначе, связаны с концептом генетической эволюции
Если в контексте глубоких нейронных сетей мы делаем генетическую оптимизацию
мы начинаем с исходной популяции моделей
Обычно модели инициализируются случайно
и несколько потомков получаются основываясь на первоначальную модель
В случае глубоких нейронных сетей

Russian: 
мы инициализируем модель добавлением маленьких случайных векторов
взятых с простого распределения Гаусса
Это приводит к появлению облака из моделей которые принадлежат поверхности оптимизации
Это важное отличие от Градиентного спуска
Мы начали и продолжаем работать с популяцией моделей вместо одной модели
Начиная с исходной популяции
начинается генетический цикл
Сначала происходит оценка пригодности
она происходит вместе с проверкой на принадлежность поверхности оптимизации
и определяет какая из моделей показывает лучший результат
Это означает что она лучше всего подходит по каким-то критериям
Некоторые из моделей покажут себя лучше остальных это зависит
от способа инициализации параметров
Дальше происходит отбор основанный на оценки пригодности
В эволюционной стратегии
потомство сводится к одной модели
взвешенной оценкой пригодности

Russian: 
Для глубоких нейронных сетей пригодность определяется как Потеря или Награда
В целом мы просто двигаемся по поверхности оптимизации
и используем отпрысков для указания направления
Это еще одно большое отличие от Градиентного спуска
Вместо вычисления градиента
мы расставляем множество усиков
и двигаемся в сторону которая кажется наилучшей
Это похоже на структурированный случайный поиск
В конечном результате этой фазы отбора мы получаем единственную модель
Следующий шаг - репродукция
Тот же процесс что и в инициализации, повторяется основываясь на новой главной модели
Так мы получаем новый набор отпрысков
Дальше процесс повторяется с этими отпрысками
Обычно в генетических оптимизациях проводят мутации
для того чтобы разнообразить отпрысков
Теперь давайте посмотрим как выглядит код
использующий нейронную эволюцию для создания оптимальной нейронной сети
способной выиграть в простой игре - Flappy Bird
Чтобы определить базовую архитектуру игры

Russian: 
мы используем 2 класса
Труба и Птица
Эти классы определяют поведение труб и птицы в игре
Этих классов вместе с функцией игры будет достаточно для запуска игры
Функция игры инициализирует оба класса и запускает один раунд игры
Аргументы для этих функций: геном и конфигурация
используются для запуска алгоритма нейронной эволюции
Имплементация хода игры в одной функции
позволяет вызывать ее в любой момент для удобства алгоритма N-E-A-T
NEAT.
Функция также рассчитывает пригодность каждого генома во время игровой сессии
Функция пригодности генома напрямую связана с работой NEAT алгоритма
и отвечает за оценку всех генов популяции в конкретном поколении
Она вызывает функцию игры для всех генов в популяции

Russian: 
и присваивает значение пригодности возвращенное игровой функцией
соответствующим геномам
Мы используем реализацию NEAT из пакета Python NEAT
которая требует конфигурационного файла
который содержит список параметров алгоритмов и их значений
Мы просто оставим стандартные значения для всех параметров
кроме числа вхождений и значения порога пригодности
их мы установим равными 600
как только игра пройдет обучение, мы увидим что
число поколений, взятых алгоритмом для соответствия порогу пригодности
изменяется линейно со сложностью игры
которая зависит от длины промежутка между трубами
Оптимальная нейронная сеть будет отличаться не только значениями весов
но ещё и архитектурой
Что нужно вынести из этого видео
Нейроэволюция это метод, который включает в себя оптимизацию нейронных сетей
с использованием эволюционных алгоритмов
По мере увеличения спроса на лучшие модели ИИ

Russian: 
будет расти и спрос на ИИ которые наиболее эффективно строят другие ИИ
И мы можем использовать нейроэволюцию в качестве метода оптимизации как альтернативу Градиентному спуску
Победитель вызова прошлой недели
DerWaldi
Во первых, он написал прекрасную документацию
она сильно поможет новичкам
Он удачно обменял лицами меня и актёра Кэл Пенн
И в дальнейшем он хочет применить эту технологию на музыкальных сигналах
Как для первого GitHub репозитория, ты отлично справился
Второе место занял Paramdeep Singh
Он приложил колоссальное усилие тестируя разные архитектуры для обмена лиц
Испытание этой недели
Используйте Нейроэволюцию чтобы помочь ИИ эффективнее двигаться в 2D и 3D пространстве
Оставляйте свои ссылки на GitHub в комментариях к этому видео
На следующей неделе я объявлю двоих победителей.
Йо! Вам понравилось видео?
Подписывайтесь если вам понравилось и тогда сбудутся все ваши мечты
А сейчас мне нужно эволюционировать.
Спасибо за просмотр
