[Запись] Путь роста инженера алгоритмов глубокого обучения (мышление, методы и планы)

глубокое обучение
[Запись] Путь роста инженера алгоритмов глубокого обучения (мышление, методы и планы)

утверждение:

1) Эта статья составлена ​​из самоотверженной работы Даниэля и экспертов по машинному обучению в Интернете. Пожалуйста, обратитесь к ссылкам на конкретные цитируемые материалы. 2) Эта статья предназначена только для академического обмена, а не для коммерческого использования. Поэтому конкретные справочные материалы для каждой части не соответствуют в деталях. Если какая-то часть случайно ущемляет всеобщие интересы, свяжитесь с Haihan и свяжитесь с блогером, чтобы удалить ее. 3) У блогеров мало таланта и знаний.Если в тексте есть что-то неуместное, просьба указывать и вместе дорабатывать.Спасибо. 4) Это относится к первой версии, если есть ошибки, то надо дальше исправлять и добавлять или удалять. Я также надеюсь, что вы дадите больше указателей. Каждый понемногу делится и вносит свой вклад в развитие научных исследований на Родине.

〇, напишите впереди

在这里插入图片描述
Честно говоря, я готовился вести этот блог с очень серьезным сердцем, но когда дело доходит до вопроса [поиска работы], я очень волнуюсь. . . . . . Видите это многоточие? Вот как я себя чувствую :|, особенно когда работа с каждым годом становится все тяжелее. Почему ты это сказал?

На самом деле 19-го осеннего алгоритма набора постов несколько "переизбыток", а заголовки даже размещенынаклейки с алгоритмом убеждения. И во многом это связано с тем, что ситуация с применением алгоритмов в последние несколько лет была настолько хороша, что на алгоритм перешло большое количество людей.Большой пузырь, вызванный этим, еще не переварился, так что это не значит, что алгоритм вдруг стал сложным найти работу сейчас, но это было слишком легко раньше. По сути, вы сказали, что в компании действительно не хватает инженеров-алгоритмистов? Конечно нет, в компании тоже нехватка инженеров-алгоритмистов, так почему же так происходит? В дополнение к убеждению некоторых студентов, которые вслепую вошли в отрасль, несколько HR, которых я слышал и встречал, сказали, что они получили сотни резюме, но ни одно из них не совпадало. Следовательно, верно то, что алгоритмами занимаются многие люди, но также верно и то, что люди, которым нужно делать алгоритмы, тоже истинны, и главное противоречие заключается вНесоответствие спроса и предложения.

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

1. Возможность программирования

Это действительно старомодный вопрос.Почему вы так говорите?Естественно потому, что я сотни раз слышал это [способность программирования], и у меня болит мозг, но никак.Основные навыки, насколько это необходимо?

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

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

ТакВ частности, каковы основные требования к умению программировать?

(1) Опытный пользователь Linux

在这里插入图片描述
Новички должны использоватьWindowsЯ начал, как и раньше, но в процессе обучения я обнаружил, чтоWindowsЕсли не могу понять, то обычно терплю сначала несколько раз, потом разворачиваюсь и иду учитьсяlinuxНу, это должен быть процесс. которые находятся вWindowsНе можете понять это правильно? Например: визуальный алгоритм с открытым исходным кодом, предложенный в последней статье, и т. д.

Но с точки зрения условий, многим может показаться, что это не очень подходит, например, лабораторные условия, компьютерные условия и т. д., но для нас,linuxВам не нужно знать слишком много. установитьubuntuСистема, часто используемые операции с файлами, компиляция программ и т. д. в порядке. Остальное полностью в процессе использования и обучения, и всегда держите книгу под рукой«Линукс-кухня Brother Bird», Божественная книга, вы можете Baidu или Google, чтобы узнать силу этой книги, естественно. В или сейчас сеть более мощная и есть много ресурсов.Лабораторный корпусЭто также хороший выбор, чтобы помочь вам соответствовать хорошей среде, и его можно использовать напрямую. Если вы все еще хотите сделать это самостоятельно, виртуальная машина также является хорошим выбором, она не повлияет на исходную конфигурацию среды вашего компьютера, но по-прежнему соответствует требованиям.

персональный план:

  • «Линукс-кухня Brother Bird»
  • Лабораторный корпус

(2) Умение пользоваться python

在这里插入图片描述
С такой развитой сетью сегодня, если вы скажете, что не можете найти ресурсы, я не поверю, но если вы скажете, что вы ослепли, у меня нет сомнений. Так как я был таким в то время, основная часть основана на Ляо Сюэфэне.учебник по питонуВсе в порядке, я кое-что читал, но настоящая статья — это книга «Программирование на Python: от начала к практике», которая очень проста, но очень дружелюбна к Xiaobai.

Некоторые студенты спросят, изучать ли python2 или python3? Скажем так, команда ядра python планирует прекратить поддержку python2 в 2020 году, а это значит, что python2 вот-вот попрощается, а вы все равно должны изучить python3, и вы сможете найти разницу, когда столкнетесь с предыдущим кодом python2. Python на самом деле очень прост в изучении, процесс чтения чужого кода и есть процесс обучения. Для незнакомого использования поищите официальные документы, такие какpython,numpy,pandas,matplot,scikit-learnи Т. Д.

Стоит поговорить о среде разработки Python.Поскольку вариантов слишком много, рекомендуется использовать блокнот pycharm и jupyter.Подробности см. в этом блоге.Подробные руководства по установке Anaconda и PyCharm под Windows 10 (с изображениями и текстом).

персональный план:

  • «Программирование на Python: от входа к практике»
  • «Безумные лекции по Python»

(3) свободное владение C++

在这里插入图片描述
Что касается C++, то более распространенный«Учебник по С++».или«Учебник C++ плюс»Такая большая книга, если это начальный уровень, все должно быть хорошо, но это не так хорошо, как"Королевская коллекция поиска работы программиста"Эти книги полезны. Преимущество большой книги в том, что она всеобъемлющая, но она также часто приводит к отсутствию внимания. Если вы хотите посмотреть видеокурсы, я рекомендую китайские МООК в Пекинском университете.«Программирование и алгоритмы», 1-й курс — программирование на языке C, 2-й курс — основы алгоритмов, 3-й курс — программирование на C++. Как правило, смотреть видеокурсы медленно, но если у вас нет основ или вы хотите хорошо изучить основы, настоятельно рекомендуется.

персональный план:

  • «Учебник по С++».
  • «Учебник C++ плюс»
  • Курс разработки программ и алгоритмов (1)
  • Курс разработки программ и алгоритмов (3)

(4) Хорошая основа алгоритма

在这里插入图片描述
На самом деле ни детекции, ни сегментации, ни чего-то еще не было сделано.Это нормально.Только быстро отслеживайте.Это нормальное состояние развития компании. Но если какая-то основа сетевой структуры, основная концепция изображения, основа сверточной нейронной сети——Сверточная нейронная сеть Big Talk CNN (полная галантерейных товаров)и т. д. Это может привести к большому количеству ошибок низкого уровня, и может возникнуть много проблем.

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

персональный план:

  • LeetCode
  • Niuke.com
  • «Предложение пальцев меча»

питон:

  • «Алгоритмическая схема»
  • «Решение проблем структуры данных и алгоритмов с помощью Python»
  • «Описание структур данных и алгоритмов языка Python»

С++:

  • «Ага! Алгоритмы»
  • Курс разработки программ и алгоритмов (2)
  • «Введение в алгоритмы на китайском языке, третье издание» (это божественная книга...)

(5) Хорошие привычки программирования

在这里插入图片描述
Упомянутые здесь привычки: использовать больше классов, использовать больше функций для инкапсуляции, писать структуру каталогов проекта, правильно называть переменные или функции, эффективно использовать функцию комментариев программы, а язык программирования Python должен следовать спецификации PEP8. (Разные разговоры — что делать, если код Python некрасивый? autopep8 вам в помощь)и т.д. Это может помочь вам лучше общаться с коллегами или сверстниками, а также это удобно смотреть.Даже если вы давно не смотрели программу, вы все равно можете добиться хорошей ретроспективной памяти.

2. Теория глубокого обучения

在这里插入图片描述
Компьютерное зрение, основанное на глубоком обучении, является одним из двух основных направлений компьютерного зрения.Другое — SLAM.Большинство алгоритмов машинного обучения, включая глубокое обучение, в основном используются для выполненияКлассификацияиз. В частности, в области компьютерного зрения, как правило,Классификация объектов,Обнаружение объекта,Семантическая сегментация изображенияПодождите, конечно, есть некоторые крутые и забавные вещи, такие какedges2cats,deepartи Т. Д.

В основном я делаю что-то, связанное с [восстановлением изображения] или [сверхразрешением]. На самом деле, обычно это означает взглянуть на статью, воспроизвести структуру сети или напрямую запустить чужой код, изменить структуру сети и настроить гиперпараметры. Создание наборов данных изображений на ранней стадии и предварительная обработка являются основными задачами. Почему глубокое обучение такое мощное? Лучше ли это, чем традиционные методы обработки изображений? Какую проблему он в основном решает?

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

По всему небу летают разные ресурсы для изучения этой части теории. Вот некоторые рекомендуемые:

персональный план:

  • «Понимание глубокого обучения за один день»
  • Курс CS231N
  • Курс глубокого обучения ИИ
  • «Цветочная книга глубокого обучения DeepLearning»
  • «Tensorflow + Актуальная платформа глубокого обучения Google»
  • «Графические нейронные сети и глубокое обучение»
  • «Глубокое обучение PyTorch на практике»
  • «Глубокое обучение Python (Керас)»
  • «Питорх глубокого обучения»
  • «Среда глубокого обучения PyTorch»
  • «Борьба PaddlePaddle и приложений для глубокого обучения»
  • «Глубокое обучение кинематике»
  • «Практическое компьютерное зрение PyTorch для глубокого обучения»
  • Классические документы по глубокому обучению

3. g++, CMake и Makefile

在这里插入图片描述
python— это язык сценариев, и в настоящее время на мобильных встраиваемых платформах развернуто большое количество алгоритмов ИИ, которые требуют использованияc / c++ / javaязык,g++, CMake и файлы MakefileточноLinuxскомпилировать подC-кодинструменты также необходимы. На самом деле, некоторые проекты с открытым исходным кодом Python и Matlab также должны быть предварительно скомпилированы, и многие из них будут естественным образом понимать, когда они находятся на рабочем месте.

персональный план:

  • g++
  • CMake
  • Makefile

4. Оболочка, vim и git

在这里插入图片描述
Квалифицированный инженер под Linux будет работать гораздо эффективнее, чем под Windows.Чтобы повысить эффективность написания кода, можно начать с многозадачного управления терминалом, умелого использования команд оболочки, умелого использования сред разработки, таких как vim, и умелого использования git-команд.

  • Команда оболочки является основой работы Linux, а также началом обучения использованию Linux.Ознакомление с расширенными командами оболочки значительно повысит эффективность будущей работы.
  • vim является наиболее часто используемым редактором под Linux.Его могут использовать как новички, так и эксперты, а его редактирование столбцов, поиск и замена, автодополнение и другие функции являются гарантией эффективности.Может быть, студенты, которые перешли с Visual Studio и других окружения только начинаются, будет немного некомфортно, но со временем вы будете все больше и больше понимать, насколько хорош vim.
  • Git обязателен для программистов.Потихоньку научитесь поддерживать несколько собственных кодовых баз, и вы поймете, когда возникнут проблемы в будущем.

персональный план:

  • shell
  • vim
  • git

Пять, гусеничный питон

在这里插入图片描述
Самое важное в разработке проекта глубокого обучения — этоданные! ! ! Это может быть шутка, но есть поговорка, что на данном этапе глубокое обучение можно рассматривать как игру с данными: ваши данные лучше, маркировка более совершенна, а ваши беговые результаты лучше. В частности, в самом проекте часто не хватает данных, и в это время вам нужно найти способ получить их самостоятельно. Как можно получить другие данные помимо общедоступного набора данных? Интернет - это большая сокровищница всех ресурсов. Если вы научитесь хорошо пользоваться краулерами, вы, вероятно, станете самым находчивым человеком эпохи. Я хочу назвать вас золотодобытчиком, и это, вероятно, будет началом эпохи. успех проекта.

персональный план:

  • Веб-краулер
  • «Разработка кейса проекта Python от входа до реального боя — краулеры, игры и машинное обучение»

6. Визуализация данных

在这里插入图片描述
Распространенным средством обработки данных является визуализация данных! В проектах глубокого обучения операции визуализации данных, которые часто требуются, включают визуализацию необработанных данных изображения, а также визуализацию потерь и точности. Помимо визуализации данных, также необходимо визуализировать модель для удобства отладки и восприятия.

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

персональный план:

  • Kaggle
  • Тяньчи

7. Математическая основа

在这里插入图片描述

  • исчисление: На самом деле, я лично считаю, что знание исчисления относительно простое. Интегралов мало, а дифференциал не особенно сложен. На его изучение достаточно потратить день.

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

  • Линейная алгебра: Само цифровое изображение представлено в виде матрицы, а выборка, состоящая из нескольких векторов, также является матрицей. Эта форма очень распространена. В большинстве алгоритмов машинного обучения каждый образец существует в виде вектора, а суперпозиция нескольких матриц имеет форму матрицы.Форма тензора существует в одном из буквальных значений библиотеки глубокого обучения Google TensorFlow.

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

На самом деле нет необходимости в систематическом изучении математических знаний, что малоэффективно и отнимает много времени, ведь у каждого есть база бакалавриата или аспирантуры, и этого достаточно. Наиболее используемой является матричная теория! ! ! Или изучите его, когда будете использовать, и резюмируйте его после того, как закончите. Затем следует использование поисковых онлайн-ресурсов, таких как CSDN, Zhihu и т. д.

персональный план:

Восемь, общественный номер

Времена изменились, и человек сто лет назад и представить себе не мог, что, когда он в замешательстве, он не переворачивает книгу и не спрашивает совета у других, а говорит стоящей рядом с ним машине. В наши дни, когда ученики начальной школы решают арифметические задачи или когда маленькие девочки приходят к своим тетям, им приходится спрашивать у компьютера: что происходит. Но какое это имеет отношение к обучению видению? - Ответ: Нет. Кажется, это зашло слишком далеко, давайте потянем немного дальше. Размышление о появлении чего-то нового и его связи со старым во временном измерении может дать вам свободу воображения. Такие вещи, как телеграммы, телефонные звонки, видеочаты и голографические звонки с помощью HoloLens, а также вагоны, автомобили, поезда, самолеты и ракеты, космические путешествия, паровые двигатели, электричество, Интернет и ИИ. Так что, безусловно, правильно использовать ресурсы и смотреть на большее, но нужно смотреть на это выборочно, нельзя смотреть на все подряд, энергия людей по-прежнему в приоритете.

Для начала поясним, что официальный аккаунт не рекламирует, а рекомендует несколько для самостоятельного просмотра (рейтинг не в порядке).

  • Лаборатория машинного обучения
  • Панчуан Ай
  • коллекция соревнований kaggle
  • Есть три ИИ
  • Я люблю компьютерное зрение
  • Datawhale
  • жизнь компьютерного зрения
  • CVer
  • небольшой экскаватор

9. Пасхальные яйца

Взгляните на каталог, и вы увидите, что это похоже на перочинный нож, не так ли? Я надеюсь, что мы с тобой сможем быть непобедимыми, куда бы ни был направлен меч! ! !

Порекомендуйте блог, написанный мной -Сверточная нейронная сеть Big Talk CNN (полная галантерейных товаров), Сажайте деревья с этого момента.

在这里插入图片描述

Если вам посчастливилось помочь вам, пожалуйста, дайте мне [Нравится] и [Подписаться]! Я был бы очень признателен, если бы вы могли поддержать меня на этом пути [комментарий].

Если вам нужны дополнительные ресурсы, подписывайтесь на @I am Guan Xiaoliang, текст обсессивно-компульсивного расстройства MAX~

Ответьте на [Welfare], чтобы получить подарки, которые я приготовил для вас, включая C++, четыре основных элемента программирования, НЛП, глубокое обучение и т. д.

Ответьте на [Структура данных], чтобы получить информацию об алгоритмах и структурах данных

Если вы хотите увидеть больше статей (абзацев), глав (подзаголовков), обратите внимание на публичный аккаунт WeChat «Программист Гуань Сяолян»~

Справочная статья