Неполное руководство по глубокому обучению

1656549291 nepolnoe rukovodstvo po glubokomu obucheniyu

От самоуправляемых автомобилей до Alpha Go до языкового перевода сегодня глубокое обучение, кажется, повсеместно. Хотя дебаты о том, оправдан ажиотаж или нет, продолжаются, за последние годы до глубокой учебы наблюдается быстрый всплеск интереса в научных кругах и промышленности.

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

Однако побочным эффектом такого притока доступного материала является перегрузка выбором. Имея тысячи и тысячи ресурсов, какие из них достойны внимания?

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

Все ресурсы в этом руководстве бесплатны благодаря их авторам.

Целевая аудитория

  • Любой, кто хочет глубже погрузиться в тему, ищет карьеру в этой области или стремится получить теоретическое понимание глубокого обучения

Цели этой статьи

  • Дайте общее представление и почувствуйте направление в океане ресурсов
  • Дайте четкий и полезный путь к изучению теории и развитию глубокого обучения
  • Дайте несколько практических советов по поводу того, как максимизировать свой опыт обучения

Контур

Это руководство структурировано следующим образом:

  • Фаза 1: Предпосылки
  • Фаза 2: Основы глубокого обучения
  • Фаза 3: Создай что-то
  • Фаза 4: Погружайтесь глубже
  • Фаза X: Продолжайте учиться

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

Этап 1: предпосылки

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

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

Кодирование

В то время как Codecademy – это отличный способ начать кодирование с самого начала, 60001 лекции Массачусетского технологического института – это невероятное вступление в мир информатики. Так же, как и CS50, пресловутый вводный курс CS в Гарварде, но CS50 уделяет меньше внимания Python. Для людей, предпочитающих чтение, интерактивная онлайн-книга Как думать как компьютерщик это путь.

1*LiNKLtHxyV582I5qXc1A1g

Математика

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

Для таких намерений очень полезны основы вычисления, линейной алгебры и статистики. К счастью, в Интернете есть много отличных ресурсов по математике.

Вот важнейшие понятия, которые вы должны знать:

  1. Многовариантное исчисление
  • Дифференциация
  • Правило цепи
  • Частные производные

2. Линейная алгебра

  • Определение векторов и матриц
  • Матричные операции и преобразования: сложение, вычитание, умножение, транспонирование, обратное

3. Статистика и вероятность

  • Основные идеи, такие как среднее и стандартное отклонение
  • Распространение
  • Отбор проб
  • Теорема Байеса

Учитывая это, вы можете изучать эти понятия одновременно с Фазой 2, просматривая математику, когда вам это нужно.

Если вы хотите погрузиться непосредственно в матричное вычисление, которое используется в глубоком обучении, посмотрите Матрическое вычисление, которое вам нужно для глубокого обучения Теренса Парра и Джереми Говарда.

вычисление

Для вычисления я выбрал бы между лекциями MIT OCW, лекциями профессора Леонарда и Академией Хана.

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

Лекции профессора Леонарда идеально подходят для тех, кто не слишком знаком с математикой, поскольку он уделяет время объяснить все очень понятно.

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

Линейная алгебра

Что касается линейной алгебры, мне понравилась серия лекций профессора Странга и сопроводительная книга по линейной алгебре (MIT OCW). Если вы заинтересованы в том, чтобы больше времени уделять линейной алгебре, я порекомендовал бы лекции MIT, но если вы просто хотите быстро изучить основы или получить обновления, Академия Хана идеально подходит для этого.

Для более практичного подхода к кодированию просмотрите курс вычислительной линейной алгебры Рэйчел Томас (с fast.ai).

Наконец, этот обзор по курсу Стэнфорд CS229 предлагает хорошую справку, к которой всегда можно вернуться.

Как для вычисления, так и для линейной алгебры серии 3Blue1Brown «Суть вычисления» и «Линейная алгебра» являются прекрасными дополнительными материалами для более интуитивного и визуального понимания предмета.

Статистика и вероятность

В Гарварде есть все лекции по статистике 110, которые читает профессор Джо Блицштейн на YouTube. Он начинается с «Вероятность» и охватывает широкий спектр тем «Введение в статистику». Практические проблемы и содержание иногда могут быть сложными, но это один из самых интересных курсов.

Помимо курса Гарварда, Академия Хана и Брендон Фольц также имеют качественный материал на YouTube.

Подобно линейной алгебре, курс Стенфорда CS229 также предлагает хороший обзор теории вероятностей, который вы можете использовать как ориентир.

Этап 2: Основы глубокого обучения

0*qk29lzFi8rE10bdN
Источник изображения

С большим количеством бесплатных ресурсов глубокого обучения в Интернете парадокс выбора становится особенно очевидным. Какие из них мне выбрать, какие мне подходят, где я могу научиться больше всего?

MOOC

Так же важно, как и теория обучения, практиковать свои новые знания, поэтому моим излюбленным выбором МООК будет смесь Эндрю Нга. глубокое обучение. (более теоретически) и Джереми Говарда и Рэйчел Томас fast.ai (более практичный).

Эндрю Нг прекрасно объясняет основную теорию глубокого обучения, в то время как fast.ai гораздо больше сосредоточен на практической кодировке. Благодаря теоретическим основам deeplearning.ai код и объяснение Джереми Говарда становятся гораздо более интуитивными, тогда как часть кодирования fast.ai чрезвычайно полезна для того, чтобы закрепить ваши теоретические знания в практическом понимании.

Поскольку deeplearning.ai состоит из пяти курсов, а fast.ai состоит из двух частей, я бы структурировал свое обучение следующим образом:

  1. Просмотрите лекции курса Deep Learning.ai I, II, IV и V
  2. Возьмите Fast.ai Часть I
  3. Просмотрите курс Deeplearning.ai III
  4. Необязательно: выполните задание на deeplearning.ai
  5. Повторите шаги 1–4 или перейдите к фазе III

Причина, по которой я сначала пропустил задачу deeplearning.ai, заключается в том, что я считаю, что примеры кодирования и задачи в fast.ai гораздо практичнее, чем задачи deeplearning.ai.

Если вы хотите повторить материал курса deeplearning.ai (то есть, повторить для укрепления памяти), попробуйте выполнить задание. В отличие от fast.ai, который использует PyTorch и собственную fastai библиотеку, они в основном используют Keras. Итак, это хорошая возможность познакомиться с другой системой глубокого обучения.

Часть 2 Fast.ai посвящена достаточно продвинутым темам и требует хорошего понимания теории, а также аспектов кодирования глубокого обучения, поэтому я поместил бы это в фазу IV этого пособия.

Совет: Вы можете смотреть видео deeplearning.ai на Coursera, но для выполнения задач вам нужно приобрести специализацию. Если вы не можете позволить себе плату за специализацию курса, подайте заявку на стипендию!

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

Чтобы воспользоваться преимуществами fast.ai, вам понадобится графический процессор. Но нам повезло, что Google предлагает среду, подобную ноутбукам Jupyter под названием Google Colaboratory, которая имеет бесплатный доступ к графическому процессору. Кто уже создал учебник о том, как использовать Colab для Fast.ai. Итак, проверьте это здесь. Kaggle также начал предоставлять доступ на бесплатный графический процессор Nvidia K80 на их ядре.

1*uYfELO7WCrolbOPY36obgA
Google Colaboratory

AWS также предоставляет студентам кредиты на сумму до 100 долларов США (в зависимости от того, является ли ваш колледж частью их программы), которые вы можете использовать для их экземпляров GPU.

Дополнительный материал без Mooc

Не полагайтесь только на одно средство информации. Я рекомендую совмещать просмотр видео с кодировкой и чтением.

YouTube

Как и в его серии по вычислению и линейной алгебре, 3Blue1Brown дает одно из наиболее интуитивно понятных объяснений нейронным сетям. Компьютер Фил и Брэндон также предлагают отличные объяснения глубокого обучения, каждый из которых слегка отличается от точки зрения. Наконец, senddex может оказаться полезным, поскольку он мгновенно вкладывает концепции в код.

Блоги, дружественные для начинающих

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

Distill.pub – один из лучших блогов, которые я знаю в пространстве глубокого обучения и за его пределами. То, как его редакторы подходят к таким темам, как Feature Visualization или Momentum, просто понятны, динамичны и привлекательны.

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

Наконец, средние публикации, такие как FreeCodeCamp и Towards Data Science регулярно публикуют интересные публикации от обучения с подкреплением до выявления возражений.

Кодирование

Ознакомьтесь с кодом! Знание того, как составлять графики, работать с грязными данными и выполнять научные вычисления, решающее в глубоком обучении, поэтому такие библиотеки, как Numpy или Matplotlib, используются повсеместно. Итак, практика и использование этих инструментов, безусловно, помогут вам на этом пути.

Блокнот Jupyter

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

Numpy

панды

Scikit-учись

Matplotlib

И если вы когда-нибудь застрянете с концепцией или фрагментом кода, погуглите! Качество ответов будет очень разным, но такие сайты, как Quora, Stackoverflow или отличный форум PyTorch, безусловно, являются источниками, которые вы можете использовать. Reddit иногда может предложить хорошие объяснения в таких форматах, как ELI5 (Объясните мне, как мне пять), когда вы полностью озадачены новой темой.

Фаза 3: Создайте что-нибудь

0*OkIR1OXNOOSEG8wr
Источник изображения

Хотя вам обязательно следует поиграть с кодом и использовать его с внешними наборами данных/проблемами при прохождении курса fast.ai, я считаю, что важно также реализовать свой собственный проект. Курс deeplearning.ai III является отличным руководством по структурированию и выполнению проекта машинного обучения.

Мозговой штурм

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

Или используйте Kaggle

Иначе простой способ начать проект – это принять участие в конкурсе Kaggle (текущий или прошлый) или исследовать их множество открытых наборов данных.

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

Выберите каркас

Какую бы платформу глубокого обучения вам ни было комфортно, выберите ее! Я бы выбрал PyTorch или Keras, поскольку их обоих относительно легко подобрать и они имеют очень активное сообщество.

Отображать

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

Квинси Ларссон, основатель FreeCodeCamp, сделал действительно полезную презентацию о том, как написать технический пост в блоге.

Фаза 4: Погружайтесь глубже

1*5JBur4NMDjQE7EkXHt4C5w
Интересный факт: авторы оригинальной Inception Network использовали этот мем в своей официальной статье как источник вдохновения! | Источник изображения

Теперь, когда вы приобрели фундаментальные знания по глубокому обучению и прошли свой первый практический опыт, пора пойти глубже!

С этого момента вы можете сделать многое. Но первое, что я хотел бы сделать, это пройти Fast.ai, часть 2, передового глубокого обучения для кодеров. Как следует из названия, вы узнаете некоторые передовые вещи в глубоком обучении: от GAN до нейронного перевода до супер разрешения! Курс даст вам обзор некоторых из самых актуальных тем глубокого обучения прямо сейчас с сильным акцентом на компьютерном зрении и обработке природного языка (NLP). Я особенно ценю этот курс, поскольку Джереми Говард не только дает очень четкие пояснения, но действительно вникает в код, необходимый для реализации этих идей.

После fast.ai вы можете выполнить следующие действия.

  • Глубоко погружайтесь в одну тему, например компьютерное зрение, НЛП или обучение с подкреплением
  • Читайте статьи и/или реализуйте идеи из статьи
  • Делайте больше проектов и/или приобретайте опыт работы в глубоком обучении
  • Следите за блогами, слушайте подкасты и будьте в курсе

Глубокие погружения

Компьютерное зрение

Лучшее место, чтобы продолжить свой путь компьютерного зрения, безусловно, это курс CS231n в Стэнфорде, который также называется Сверточные нейронные сети для визуального распознавания. Они не только имеют все свои видео лекций онлайн, но и их веб-сайт также предлагает конспекты и задачи! Fast.ai Часть 2 и deeplearning.ai дадут вам хорошее основание для курса, поскольку CS231n пойдет гораздо дальше с точки зрения теории CNN и связанных с ними тем.

Хотя обе версии охватывают преимущественно одни и те же темы, что также означает выберите стиль преподавания любой версии, которая вам больше нравится, итоговые лекции несколько отличаются Например, в 2017 году будет лекция о генеративных моделях, а в 2016 — гостевая лекция Джеффа Дина о глубоком обучении в Google. Если вы хотите увидеть, каково было компьютерное зрение до начала глубокого обучения, в Университете Центральной Флориды (UCF) есть курс компьютерного зрения с 2012 года, обучающий таким понятиям, как функции SIFT.

Обработка природного языка

В Стэнфорде есть достаточно обширный курс под названием CS224n Обработка естественного языка с глубоким обучениемкоторый, как и CS231n, не только скачивает видео лекций, но также содержит удобный веб-сайт со слайдами лекций, задачами, решениями задач и даже классными проектами студентов!

Оксфорд также имеет очень хорошую серию лекций по НЛП в сотрудничестве с DeepMind. Хотя в нем есть полезное хранилище GitHub со слайдами и указателями для дальнейших чтений, в нем отсутствует часть присвоения Стэнфордского CS224. Курсы в какой-то степени перекрываются, но не настолько, чтобы не стоило смотреть на оба курса.

Общее глубокое обучение

Для людей, которые все еще не уверены в том, что в глубоком обучении увлекает их больше всего, Университет Карнеги-Меллона (CMU) имеет курс с Темы глубокого обучения, Который представляет широкий спектр тем от ограниченных машин Больцмана до глубокого обучения с подкреплением. В Оксфорде также курс глубокого обучения, который может дать вам более точное математическое понимание понятий, которые вы изучили на deeplearning.ai и fast.ai, то есть такие вещи, как регуляризация или оптимизация.

Книга, которая может помочь вам в любой сфере глубокого обучения Книга глубокого обучения за Ian Goodfellow et al., это самая полная книга по теории глубокого обучения, которую я знаю. Такие занятия как курс НЛП в Оксфорде также используют эту книгу как дополнительный материал.

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

Обучение с подкреплением

Поскольку обучение с подкреплением (RL) не охватывается ни deeplearning.ai, ни fast.ai, я бы сначала просмотрел Intro to RL Arxiv Insight и видео RL Джейкоба Шрума, являющихся чрезвычайно понятными объяснениями этой темы. Затем перейдите к публикации в блоге Андрея Карпате о глубоком обучении с подкреплением и прочтите разделы 1–2 докторской диссертации Эндрю Нга (как предложено на веб-сайте CS 294 Беркли), чтобы получить пример о процессах принятия решений Маркова. После этого курс Дэвида Сильвера (Deep Mind) по RL даст вам прочную основу для перехода к курсу CS294 Беркли по Deep RL.

Кроме того, существуют записанные сессии Deep RL Bootcamp в Беркли и летняя школа RL в Монреальском институте изучения алгоритмов с такими докладчиками, как Питер Аббил и Ричард Саттон. Последний также является соавтором вступительного учебника по RL, к которому сейчас можно ознакомиться во 2-м издании как черновик (разделы 3 и 4 являются предварительными чтениями для CS294).

Кроме того, Udacity имеет отличный репозиторий GitHub с учебниками, проектами и шпаргалкой от них оплачено Глубокий курс РЛ. Другой ресурс, недавно опубликованный, – это текущий курс Deep RL Томаса Симонини, который очень легко следовать и практичен в методологии кодирования.

Машинное обучение (это не обязательно глубокое обучение)

Безусловно, полезно знать разные идеи машинного обучения, которые были до глубокого обучения. Будь то логистическая регрессия или выявление аномалий, классический курс машинного обучения Эндрю Нга является отличной отправной точкой. Если вы хотите иметь более строгий математический курс, Caltech имеет отличный MOOC, который более теоретически обоснован. Профессор Нг также пишет книгу с лучшими практиками ML, для которой вы можете получить доступ к первым разделам его черновика.

Самоуправляемые автомобили

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

Если вас интересует часть автономного вождения, связанная с компьютерным видением, несколько исследователей из ETH Zurich и Института интеллектуальных систем Макса Планка написали обширный опрос на эту тему. Кроме того, ICCV загрузил слайды из серии учебных пособий из 8 частей, содержащих некоторую полезную информацию о соединении и локализации датчиков.

Что касается проектов, то я бы посмотрел на проекты от Udacity оплачено Самоуправляемый автомобиль Nanodegree, который вы можете свободно найти на GitHub. Udacity постоянно предлагает стипендии. К примеру, в прошлом году в сотрудничестве с Lyft для вступительного курса Self-Driving Cars. Следите и за этим!

Укрепите свое понимание фундаментальных понятий

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

Читайте документы

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

По этой причине Андрей Карпаты построил Archives Sanityинструмент, который позволяет фильтровать и отслеживать документы в соответствии с вашими предпочтениями.

Вот несколько выдающихся статей за последние годы, начиная с документов ImageNet (AlexNet, VGG, InceptionNet, ResNet), которые оказали огромное влияние на траекторию глубокого обучения.

1*ruSvzmeK1f2H9NiWp3Isrw
Оригинальная архитектура InceptionNet Источник изображения

Каналы YouTube

Archivs Insights, CodeEmperium и Янник Килчер являются наиболее недооцененными каналами YouTube относительно глубокого обучения с самыми ясными пояснениями об автокодерах и внимании.

Еще один канал YouTube, который следует упомянуть Лекс Фридман, ВОЗ является основным инструктором курса самостоятельного вождения MIT. Он также преподавал в Массачусетском технологическом институте курс по искусственному общему интеллекту, содержащему несколько увлекательных лекций по метаобучению, сознанию и интеллекту.

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

Подкасты

Подкасты – это очень хороший способ услышать отзывы разных людей на всевозможные темы. Два моих любимых подкаста, которые создают много содержимого, связанного с глубоким обучением Говорящие машины и На этой неделе в ML&AI (TWiML&AI). Например, послушайте последний подкаст Talking Machine на ICML 2018 или подкаст TWiML из Кристи Деннисон из OpenAI Five!

OpenAI Five из Кристи Деннисон — TWiML Talk #176
Сегодня к нам присоединилась Кристи Деннисон, инженер по машинному обучению OpenAI. После присоединения к OpenAI в начале этого года…twimlai.com

Блоги

Как упоминалось ранее, я большой поклонник Distill.pub, и один из его редакторов, Крис Олатакже имеет некоторые другие высококачественные посты в своем личном блоге.

Еще один действительно многообещающий блог Градиент, который дает хорошо написанный и четкий обзор последних результатов исследований, а также перспективы будущего отрасли. Себастьян Рудер является одним из авторов The Gradient, и, как и Крис Олах, его блог также имеет прекрасное содержание, в частности, относительно тем, связанных с НЛП. Последний блог не является блогом, а скорее центром для планов изучения конкретных работ, таких как AlphaGo Zero или InfoGans.

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

Запросы на исследование

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

Будьте в курсе

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

Некоторые из людей, за которыми следует следить в Twitter:

Этап X: Продолжайте учиться

Сфера быстро меняется, поэтому продолжайте обучаться и наслаждайтесь ездой.

GitHub Repo

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

Не стесняйтесь участвовать в руководстве и отправлять запросы на выписку!

Добавить комментарий

Ваш адрес email не будет опубликован.