Недавно закончился курс CS230 (Глубокое обучение) под руководством Нг Энды и Киана Катанфороша, и материалы курса были выпущены. Этот курс демонстрирует глубокое обучение с использованием комбинации внеклассных и курсовых занятий на Coursera.Основные концепции и полная структура машины, сердце машины кратко знакомит с курсом и основным содержанием.
Адрес курса:Web.Stanford.quota/class/230 на данный момент…
Введение в курс: Глубокое обучение — один из самых востребованных навыков в области ИИ. Этот курс поможет вам хорошо изучить глубокое обучение. Вы изучите основы глубокого обучения, поймете, как создавать нейронные сети, и научитесь руководить успешными проектами машинного обучения. Вы узнаете о сверточных нейронных сетях (CNN), рекуррентных нейронных сетях (RNN), сетях с долговременной кратковременной памятью (LSTM), оптимизаторе Adam, методе Dropout, методе BatchNorm, методе инициализации Xavier/He и т. д. Вы будете проводить тематические исследования в таких областях, как здравоохранение, автономное вождение, распознавание языка жестов, создание музыки и обработка естественного языка. Вы не только сможете освоить теорию, но и увидите, как глубокое обучение можно применять в промышленности. Нам нужно будет реализовать все проекты с использованием Python и TensorFlow, которые будут преподаваться в курсе. После завершения этого курса вы сможете применять глубокое обучение в своей работе инновационными способами. Курс преподается в формате перевернутого класса. Вы будете смотреть видеоролики Coursera, выполнять задания по программированию и проходить онлайн-викторины дома, прежде чем прийти в класс для дальнейших обсуждений и проектов. Курс завершится окончательным проектом с открытым концом, при этом команда преподавателей будет помогать.
CS230 представляет собой комбинацию внутрикурсовых и онлайн-курсов Coursera, где каждый модуль курса требует просмотра видео, прохождения тестов и выполнения заданий по программированию на Coursera. Для однонедельного курса требуется примерно два онлайн-модуля плюс 80 минут занятий в классе на Couera.
Этот курс требует, чтобы студенты имели некоторые базовые знания.Во-первых, студенты должны понимать основные принципы и навыки информатики, а также уметь писать разумные и краткие компьютерные программы. Во-вторых, студенты должны быть знакомы с базовыми математическими знаниями, такими как теория вероятностей и линейная алгебра.
В настоящее время выпущен окончательный отчет о проекте CS230 и постерная презентация, охватывающие различные темы, такие как создание музыки, обнаружение эмоций, классификация эмоций в фильмах, обнаружение рака и т. д. Объявлены отчет о курсе и три лучших постера:
Отчет 1-е место: Преобразование изображения в изображение с помощью Conditional-GAN (Вейни Ю, Джейсон Ху, Юджо Чжоучанван Ю)
В этом отчете изучается перевод изображений аэрофотоснимков с использованием условных генеративно-состязательных сетей (C-GAN). Участники сначала воспроизвели модель C-GAN, предложенную Isola et al., а затем исследовали различные сетевые архитектуры, функции потерь и стратегии обучения. Были проведены качественные и количественные оценки различных моделей, и был сделан вывод, что модель, основанная на остатках, дает изображения очень высокого качества, используя всего 1000 обучающих выборок.
Второе место в отчете: Отслеживание глубоких знаний и взаимодействие с МООК (Клинт Канопка, Критфонг Монгхонванит, Дэвид Лэнг)
Используя сеть отслеживания глубоких знаний и ковариаты взаимодействия курса MOOC для расчета вовлеченности студентов в курс, в отчете было обнаружено, что метод смог предсказать ответы студентов на следующий вопрос с точностью более 88%. Эти прогнозы можно использовать для целенаправленного воздействия на учащихся, а также для целенаправленного улучшения учебной программы.
Третье место в отчете: Глубокое обучение для повышения точности мощности мониторов сердечного ритма (Альберт Гураль)
В этом отчете используются методы глубокого обучения для определения частоты сердечных сокращений с помощью PPG с низкой частотой дискретизации и определения сигналов акселерометра в артефактах движения.
Плакат 1-е место: Нестандартная живопись: перерисовка изображения с помощью GAN (Марк Сабини, Гили Русак)
Плакат, 2-е место: LeafNet: решение для глубокого обучения для идентификации видов деревьев (Кришна Рао, Елена Эрреро, Габриэль Пакалин)
Этот постер использует остаточную сеть для классификации 185 видов деревьев в Северной Америке на основе изображений.
Плакат 3-е место: Система предупреждения о землетрясениях: Обнаружение предвестников землетрясений с использованием глубоких нейронных сетей (Мустафа Аль Ибрагим, Джихун Парк, Ноа Афины)
Этот постер оценивает эффективность прогнозирования землетрясений 1D CNN, 2D CNN, RNN.
Основное содержание курса
CS230 разделен на 5 частей, как и спецкурс Эндрю Нг по глубокому обучению на Coursera, а именно: нейронные сети и глубокое обучение, улучшение глубоких нейронных сетей, стратегии для проектов машинного обучения, сверточные нейронные сети и модели последовательностей.
На первом уроке были представлены основы нейронных сетей и глубокого обучения. В основном он знакомит с интуитивными концепциями глубокого обучения в классе и изучает с нуля, что такое нейронная сеть, с помощью двух модулей.
Первый модуль первого урока, C1M1, в основном представляет нейронные сети из линейной регрессии и прогнозирования цен на жилье, а также фокусируется на основных концепциях контролируемого глубокого обучения. Следующий C1M1 показывает категории базовых нейронных сетей:
Среди них стандартная нейронная сеть — это наша обычная полносвязная сеть, которая является наиболее простым и важным методом иерархического представления в стиле «нейронной сети». Стандартная нейронная сеть просто означает, что один нейрон в последнем слое получает взвешенную сумму значений активации всех нейронов в предыдущем слое и определяет, нужно ли активировать нейрон. Самая большая разница между сверточной сетью и полностью связанной сетью заключается в том, что нейроны в последнем слое лишь частично связаны с нейронами в предыдущем слое, и между нейронами есть распределение веса.Такая нейронная сеть уменьшает избыточные параметры и полезно для моделирования данных с локальной структурой, такой как изображения. Конечная рекуррентная сеть отличается от первых двух сетей прямого распространения. Она использует одну и ту же функцию нейронной сети на разных временных шагах, и каждый временной шаг использует необходимую информацию предыдущего временного шага. Такая сеть может эффективно обрабатывать естественный язык и т. д. проблема последовательности.
Позже в C1M2 курс начинается с подробного введения в нейронные сети. Конечно, понимание нейронных сетей по-прежнему нужно начинать с алгоритмов логистической регрессии и персептрона, а также необходимо знать самый простой градиентный спуск и вычислять производные.
Основной процесс логистической регрессии показан выше.Сначала мы основываемся на инициализированном
Второй урок знакомит с внутренней математической структурой моделей глубокого обучения, постепенным переходом от неглубоких сетей к глубоким сетям и пониманием значения «глубины». Освоив эти концепции, вы сможете получить базовое представление о том, как построить сеть глубокого обучения с нуля. Затем существуют методы оптимизации или настройки параметров для глубоких моделей, такие как инициализация, регуляризация, разделение набора данных, отсев, нормализация, проверка градиента и т. д., а также различные классические методы снижения скорости обучения, такие как импульсный алгоритм, Адам и т. д.
В C1M3 Ву Энда в основном описал методы представления персептронов и нейронных сетей, и здесь еще нужно вывести большое количество выражений. Но пока понятен метод выражения многослойного персептрона, понимание глубокой полносвязной сети и других глубоких нейронных сетей станет намного проще. Ниже приводится выражение для векторизации персептрона, в котором взвешенная сумма z значений активации предыдущего слоя в основном выражается как матричная операция.
Если вы понимаете процесс вычислений и выражения перцептрона или неглубокой сети, то процесс логического вывода в глубокой сети с прямой связью можно легко понять. Но для сетей с глубокой прямой связью другим очень важным процессом является обратное распространение. Поскольку параметры модели требуют обновления градиентов, необходимо передавать градиенты, рассчитанные по функции потерь, обратно на каждый уровень. Таким образом, C1M4 в основном вводит этот вид обратного распространения:
Как показано выше, когда мы вычисляем градиент последнего слоя в соответствии с функцией потерь L(y hat, y), нам нужно передать градиент обратно на предыдущий слой в соответствии с цепным правилом вывода. Кроме того, в этой части C2M1 и C2M2 представлены методы глубокого обучения и основные методы оптимизации соответственно. Хотя метод оптимизации начинается с пакетного градиентного спуска и мини-пакетного градиентного спуска до метода оптимизации Адама, вводится базовый процесс обучения. Далее следует ручной мини-пакетный градиентный спуск, но мы чаще называем его стохастическим градиентным спуском.
Отличие мини-пакета от пакета в том, что выборок для расчета градиентов меньше, обычно 32, 64 и т. д. Таким образом, объем вычислений, необходимых для каждой итерации, значительно сокращается, а надежность результатов сходимости может быть повышена за счет введения шума.
Урок 3 знакомит с проектами структурированного машинного обучения. Базовая часть включает настройку гиперпараметров, методы пакетной нормализации и т. д., а также применение фреймворков глубокого обучения (таких как TensorFlow, PyTorch). Затем идут стратегии машинного обучения, в том числе настройка параметров по вертикали, настройка индикатора оценки, разделение набора данных и т. д. Этот урок познакомит вас с тем, как применять глубокое обучение в практических случаях, а Пранав Раджпуркар научит вас создавать приложения глубокого обучения в области медицины, проект Chest X-Rays, разработанный командой Эндрю Нг.
В этом проекте вы будете использовать DenseNet в качестве архитектуры магистральной сети для реализации классификации рентгеновских изображений легких (при наличии пневмонии). Он включает в себя создание набора данных, обучение модели и оценку модели и т. д., и вы можете испытать весь процесс индустриализации глубокого обучения.
В нескольких модулях этого урока как C3M1, так и C3M2 представлены стратегии машинного обучения. машинное обучение
Стратегии в основном сосредоточены на том, как обучать модель, например, когда корректировать количество выборок, как вычислять переобучение и методы измерения. Наиболее классической здесь является проблема смещения и дисперсии, Нам часто нужно определить, что происходит в нашей модели на основе смещения и дисперсии, таких как переоснащение и недообучение.где высокое отклонение означает, что набор функций, подогнанных к набору данных, не содержит реального, т.е. немного далек от правильного ответа. А высокая дисперсия означает, что набор функций, соответствующих набору данных, действительно содержит реальную функцию, но набор функций настолько велик, что каждый поиск неточен. Четвертый урок знакомит со сверточными нейронными сетями.Сверточные нейронные сети в основном используются для обработки пространственных данных, таких как изображения, видео и т. д., поэтому они широко используются в компьютерном зрении. В этой части курса есть промежуточный тест, который поможет вам вернуться к тому, что вы узнали ранее.
Базовая часть CNN включает в себя операции свертки, шаг, объединение и т. д., а затем вводит несколько классических архитектур CNN, таких как LeNet-5, AlexNet, VGG, ResNet, Inception и т. д. После этого дается несколько предложений по процессу разработки CNN, включая трансферное обучение, улучшение данных и т. д. Наконец, вводится текущий статус исследований в области CNN.
Эта часть посвящена применению обнаружения целей, подробно описывает весь рабочий процесс обнаружения целей и, наконец, в качестве примера интегрирует алгоритм YOLO. После этого также представлены некоторые специальные приложения, такие как распознавание лиц, передача нейронного стиля (перенос стиля рисования) и т. Д. Среди них перенос нейронного стиля имеет более подробное введение в рабочий процесс.
В C4M1 Ву Энда сосредоточился на CNN и различных модулях, включая слой свертки, слой объединения, шаг свертки и заполнение. Сверточный слой пытается более глубоко проанализировать каждый небольшой блок в нейронной сети, чтобы получить признаки с более высокой степенью абстракции. Вообще говоря, матрица нейронных узлов на сверточном слое станет более глубокой, то есть увеличится организация нейронов в третьем измерении.
Выше показана классическая архитектура LeNet-5.Как сказал Лекун в оригинальной статье LeNet-5, сверточная сеть сочетает в себе три ключевые идеи, чтобы гарантировать, что модель имеет определенную степень инвариантности к переводу, масштабированию и искажению изображения.Эти три ключевых идеями являются локальное рецептивное поле, распределение веса и пространственно-временная субдискретизация. Локальное восприимчивое поле указывает, что ядро свертки обращает внимание только на локальные особенности изображения, а распределение веса указывает, что ядро свертки использует одинаковые веса для всего изображения. быть уточнены извлеченные функции.
Урок 5 знакомит с моделью последовательности. Модели последовательности в основном используются для обработки данных последовательности, таких как музыка, речь, текст и т. д. Модель последовательности в основном представлена циклической нейронной сетью.Этот урок познакомит вас с базовой структурой, типами, процессом вычислений и т. д. RNN, а также проанализирует моделирование языка как типичный случай. Затем следуют некоторые известные варианты RNN, такие как GRU, LSTM, двунаправленная RNN, глубокая RNN и т. д.
Эта часть начинается с краткого обзора глубокого обучения с подкреплением, а затем начинается с обработки естественного языка и встраивания слов в качестве тем, а затем объясняется расширенное применение RNN. Встраивание слов является основой многих моделей обработки естественного языка.Эта часть фокусируется на встраивании слов, подчеркивая эффект переноса обучения технологии встраивания слов, а затем представляет несколько классических моделей встраивания слов, таких как Word2Vec, векторы GloVeword и т. д., и, наконец, использует классификацию настроений в качестве примера применения. В C5M1 Эндрю Нг сосредоточился на объяснении рекуррентных нейронных сетей, класса нейронных сетей, используемых для решения проблем с последовательностями, которые могут быть расширены до более длинных последовательностей. По сравнению с классической полносвязной сетью рекуррентная сеть имеет значительные улучшения, такие как совместное использование параметров и построение долгосрочных зависимостей. Для моделирования последовательности предложений полносвязная сеть назначает каждому входному признаку отдельный параметр, поэтому ей необходимо изучать все лингвистические правила для каждой позиции предложения отдельно. RNN, с другой стороны, имеют одни и те же параметры на нескольких временных шагах, поэтому нет необходимости изучать все лингвистические правила для каждой позиции предложения. Кроме того, рекуррентная сеть будет иметь механизм памяти, который предоставляет информацию о предыдущих временных шагах для прогнозирования на текущем временном шаге.
Базовая структура рекуррентной сети показана выше.Он использует только информацию о скрытых единицах предыдущего временного шага и входную информацию текущего временного шага, а также использует ту же функцию для вычисления значения следующей скрытой единицы.
После прохождения этих уроков вы можете приступить к подготовке своего окончательного проекта.