Что вам нужно для глубокого обучения?

Как только вы поймете теорию глубокого обучения, следующий тривиальный шаг - применить на практике то, что вы узнали. В этой статье я пытаюсь собрать в шпаргалку ментальной карты все, что относится к глубокому обучению на практике. Это чрезвычайно полезно для новичков в области глубокого обучения, которые обычно либо не имеют представления об используемых инструментах или наборах данных, либо имеют поверхностные знания об одном или двух лидерах рынка, потому что они сталкиваются с ними почти во всей документации, связанной с глубоким обучением. . Если вы планируете заняться этим доменом, вам следует иметь более общее представление.

Центральным предметом ментальной карты является «Глубокое обучение на практике», из которого вытекают 5 основных ветвей, а именно (1) языки программирования, (2) фреймворки и библиотеки, (3) IDE, записные книжки и редакторы исходного кода, (4) ) наборы данных и (5) реализации. Каждый из них будет представлен ниже. Вот выдержки из различных разделов предлагаемой шпаргалки по ментальной карте. Ссылка на страницу загрузки доступна перед каждым из инструментов и наборов данных. Наиболее часто используемые инструменты выделены красным цветом.

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

Раздел 1. Языки программирования

Python - один из самых известных языков и, возможно, даже самый популярный. Приведенный ниже график зависимости интереса от времени является хорошим доказательством. Это показывает, что Python находится в тренде по сравнению со своими потенциальными кандидатами, R, Julia и Scala, согласно Google Trends во всем мире за последние 12 месяцев. Остальные языки, которые используются для глубокого обучения, вы найдете на ментальной карте, например java, javascript, Go,…

Ветвь 2: платформы и библиотеки

Некоторые из фреймворков и библиотек, которые я упомянул в ментальной карте, предназначены только для глубокого обучения, например M xNet и DeepLearning.Scala. Другие - это не просто глубокое обучение. Это более крупное машинное обучение с большим фокусом на глубокое обучение, например TensorFlow и PyTorch. Более того, фреймворки и библиотеки, которые я собрал, бывают разных типов: BigDL и PaddlePaddle для распределенного глубокого обучения, PaddleFL для федеративного обучения, PyTorch Mobile и TensorFlow Lite для глубокого обучения на мобильных устройствах и устройствах Интернета вещей,…

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

Ветвь 3: IDE, записные книжки и редакторы исходного кода

Я делю эту ветку на 3 основные части:

(1) IDE: IDE, аббревиатура от Integrated Development Environment, позволяет программистам объединять различные аспекты написания компьютерной программы. Это увеличивает продуктивность программиста за счет объединения общих действий по написанию программного обеспечения в одном приложении, таких как редактирование исходного кода, компиляция, создание исполняемых файлов и отладка. В следующей таблице я представляю некоторые из IDE, вызванных ментальной картой.

(2) Редакторы исходного кода: это облегченные версии IDE, поскольку они предлагают меньше инструментов. Они чувствительны к языку программирования, поэтому выделяют элементы синтаксиса ваших программ; и предоставляют множество функций, которые помогают в разработке вашей программы, такие как автозаполнение, компиляция, сборка и запуск.

(3) Блокноты: подходят для начинающих, поскольку они сочетают в себе функции IDE и эргономичный, интерактивный и простой в использовании образовательный инструмент. Они также сочетают в себе живой код, повествовательный текст, уравнения, визуализацию результатов, изображения и несколько других средств массовой информации. В таблице ниже я представляю 5 ноутбуков с открытым исходным кодом в соответствии с 6 выбранными мною функциями:

Поддерживаемые ядра: ядро ​​- это вычислительный механизм / бэкэнд, который выполняет код, содержащийся в записной книжке. Под поддерживаемыми ядрами я подразумеваю диапазон языков, поддерживаемых средой ноутбука.

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

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

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

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

Сообщество: если вы начинаете использовать конкретную записную книжку, вам нужно будет связаться с другими разработчиками и экспертами. Они могут ускорить ваш прогресс и помочь вам решить некоторые возникшие проблемы. Более того, документация должна быть доступна в большом количестве.

Ветвь 4: наборы данных

Ключ к созданию более совершенных моделей в глубоком обучении - это данные. Вот почему я выделяю ветку для наборов данных в предлагаемой ментальной карте. Все вызванные наборы данных открыты и в основном используются для многочисленных проектов глубокого обучения. Некоторые из них даже имеют свои специфические классы и функции, реализованные в рамках лидеров рынка; и очень часто используются для соревнований по всему миру, таких как Kaggle, Codalab и DataDriven. Наборы данных, которые я добавляю в свою ментальную карту, относятся к разным контекстам, а именно к обработке изображений (например, MNIST и ImageNet), обработке естественного языка (NLP) (например, Yelp и WordNet) и распознаванию речи (например, LibriSpeech и AudioSet).

Столкнувшись с пандемией COVID-19, вызванной новым коронавирусом, исследователи во всем мире пытаются найти другие диагностические альтернативы трудоемкой ОТ-ПЦР. Глубокое обучение применяется к изображениям рентгенографии грудной клетки, например Рентген грудной клетки (CXR) и компьютерная томография (CT) положительных случаев COVID-19 показали многообещающие перспективы для диагностики коронавируса. В этом контексте я заметил, что многие люди, особенно те, кто являются практиками глубокого обучения, но не разбираются в медицинской визуализации, спрашивают о доступных изображениях COVID-19 CXR и CT. Поэтому я перечисляю открытые наборы данных, которые в настоящее время используются в этом контексте, а также их ссылки на GitHub. Я также упоминаю существующие наборы данных изображений CXR и CT, например RSNA и ChestX-ray14, которые уже использовались для обнаружения и классификации заболеваний легких. Это поможет вам объединить их с новыми наборами данных о COVID-19, чтобы (1) отличить его от других типов пневмонии, (2) решить, кому следует отдавать приоритет при проведении ПЦР-тестирования для случаев COVID-19 и (3) выбрать лечение. поскольку инфекции COVID-19 и не-COVID-19 требуют разных планов лечения.

Здесь я должен упомянуть, что я не указываю количество изображений в базах данных COVID-19, поскольку они существенно различаются. Их расширяют научное сообщество и медицинские общества. Последние постоянно работают над расширением этих баз по мере появления новых данных. Более того, наборы данных о COVID-19 все еще находятся на начальной стадии, ограничены и незрелы. Вы можете прибегнуть к некоторым методам, таким как переносное обучение и увеличение данных, чтобы улучшить процесс обучения. Вы можете найти другие наборы данных, проблемы, проекты и документы, которые в основном представляют собой препринты, на веб-сайтах целевой группы AI Against COVID-19 Canada и Всемирной организации здравоохранения (ВОЗ). Надеюсь, все это уйдет!

Ветвь 5: реализации

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

Pie & AI: реальные приложения AI в медицине

Пример использования обработки естественного языка и машинного обучения

Автоматическое распознавание речи для реальных приложений

Хорошо! Это было!

Обратите внимание, что я не претендую на перечисление всех инструментов, наборов данных и вариантов использования, связанных с глубоким обучением. Я скорее попытался собрать в единую мысленную карту большую часть этих последних. Остается открытым для обсуждения. Я приветствую и ценю любые вопросы и комментарии, которые могут у вас возникнуть в этом контексте. Более того, цель этой статьи не в том, чтобы судить, какой из инструментов лучше других. Не знаю, заметили ли вы, что никакого личного мнения не формулируется. Это было просто объективное перечисление основных инструментов глубокого обучения вместе с их характеристиками.

Если вы пропустили мои предыдущие статьи: