Всем привет! Это было какое-то время. :)
Я только что закончил специализацию TensorFlow — Advanced Techniques, и я хочу поделиться обзором того, что я узнал, включая лучшие и худшие моменты специализации. Это может быть полезно для вас, если вы думаете о выборе той же специализации.
Введение в специализацию
Специализация на Coursera — это серия связанных курсов, которые призваны помочь освоить конкретную тему.
Эта конкретная специализация направлена на расширение базы знаний учащегося о TensorFlow, достаточной для выполнения сложных задач, включая исследования машинного обучения, пользовательские модели, обнаружение объектов, сегментацию изображений, общие состязательные сети и т. д.
Мой мотив для прохождения этого курса
Я проходил Специализацию глубокого обучения (на данный момент на 4-м курсе, CNN), чтобы понять, что происходит под капотом, когда я использую API-интерфейсы TensorFlow при создании моделей, а затем и приложений ML. Я чувствую, что любой порядочный исследователь машинного обучения должен их знать.
Несмотря на то, что курсы глубокого обучения довольно интересны, а профессор Эндрю Нг — отличный преподаватель, в какой-то момент мне надоело изучать теории, и я решил попробовать специализацию Advanced TensorFlow Techniques. Поскольку он использовал TensorFlow в качестве строительных блоков большинства теорий и концепций, преподаваемых в специализации глубокого обучения, включая кодирование современных исследовательских работ, казалось хорошей идеей опробовать серию.
Необходимые знания
Ожидается, что студент будет иметь;
- Удобное понимание основных математических вычислений, алгебры, статистики и основных концепций глубокого обучения.
- Опыт работы с фреймворками глубокого обучения. TensorFlow, если быть точным. В связи с этим рекомендуется Профессиональный сертификат TensorFlow на практике.
4 курса
Эта конкретная специализация содержит 4 курса:
Первый курс специализации включает в себя создание пользовательских архитектур моделей, слоев и функций потерь с использованием функционального API и подклассов моделей.
Последовательный API в основном бесполезен, когда необходимо построить сложную архитектуру, включающую модели ветвления, модели с несколькими классами, динамические и рекурсивные сети и т. д. И здесь на помощь приходит использование более продвинутых API.
Этот курс включает в себя различные модули, которые углубляются в аспекты нижнего уровня TensorFlow. Я никогда не осознавал, насколько мощным является TensorFlow, пока не испытал все эти низкоуровневые возможности.
В курсе описаны математические функции, для которых можно использовать серверную часть TensorFlow, и они сильно напоминают функции Numpy. Существует также функция Gradient Tape для пользовательских тренировочных циклов, которая будет использоваться с большим эффектом в остальной части специализации. Курс также объясняет различия между выполнением кода на основе Eager и на основе Graph и где вы можете использовать друг друга. Наконец, он углубляется в распределенное обучение с использованием различных стратегий, включая TPUStrategy, GPUMirroredStrategy и т. д.
Этот курс углубляется в продвинутую терминологию компьютерного зрения, включая локализацию изображений, обнаружение возражений, сегментацию экземпляров и семантики и т. д., а также более глубоко изучает другие основные элементы компьютерного зрения, такие как CNN, трансферное обучение и т. д.
Были проанализированы архитектуры SOAT для обнаружения объектов, включая R-CNN и Fast R-CNN. Также были подробно объяснены архитектуры сегментации изображений, включая U-Net, FCNN и Mask-RCNN. Были реализованы пользовательские функции потерь для обнаружения объектов (оценка IoU и Dice).
Наконец, был модуль «Интерпретируемость модели», в котором рассказывается, как можно увидеть, как модель принимает решение и интерпретирует поступающие в нее данные. Были эксперименты с различными способами интерпретации моделей, включая карты значимости, карты активации классов и GradCAM.
В заключительном курсе рассматриваются различные способы генерации данных с помощью методологий глубокого обучения, включая передачу стилей, автоэнкодеры, вариационные автоэнкодеры (автоэнкодеры с шумом) и генеративно-состязательные сети.
Часть, которая мне понравилась больше всего
Я не мог выбрать лучший курс между курсом Advanced CV и курсом Custom Models, Layers, and Losses. Курс Advanced Computer Vision очень понравился мне, и очень приятно расширить свои границы знаний в области компьютерного зрения и увидеть множество способов, которыми я мог бы использовать эти знания. Вы можете проверить Нигерийский детектор языка жестов, который я создаю на основе того, что я узнал! Я думаю, что все еще впереди :)
Курс «Пользовательские модели, слои и функции потерь» тоже был довольно хорошим. Очень здорово вникнуть в строительные блоки того, как строятся различные современные архитектуры, и воспроизвести процесс самостоятельно. Я был так взволнован созданием таких архитектур, как VGG19, ResNet50, Inception и т. д. — это модели, которые я использую с 2019 года, и было довольно весело и познавательно разбирать их и создавать самостоятельно.
Часть, которая мне понравилась меньше всего
Это определенно курс генеративного глубокого обучения для меня — и не из-за самого курса. Это только потому, что в данный момент меня не интересует генеративное глубокое обучение (по крайней мере, на данный момент).
Наконец-то я смог сосредоточить свое внимание (нелегкий подвиг!) на «создании продуктов машинного обучения, т. е. производстве машинного обучения, включая CV и NLP, и проведении исследований машинного обучения в CV (в акцент) и НЛП», и забота о GAN и лайках не входит в мои планы прямо сейчас, если только мне это не нужно.
Но было приятно пройти курс и узнать о различиях между различными методами генеративного глубокого обучения.
Удивительные особенности серии
- Для меня выдающейся особенностью является рабочее пространство Slack для студентов. Помимо того, что это платформа для общения с другими студентами, обмена идеями по преподаваемым концепциям, а также здорово получать помощь и руководство как от наставников, так и от студентов, когда они застревают в процессе поиска оптимальных решений. Секции и каналы также были тщательно и элегантно организованы.
- Лоуренс Морони - потрясающий инструктор. Его объяснения были превосходны, кратки и прямолинейны. Сомневаюсь, что мне было бы так легко понять все заявленные исследовательские работы без его элегантных объяснений.
- Лабораторные задания были довольно сложными, но не слишком сложными (у нас было рабочее пространство Slack, чтобы получить помощь в случае застревания). Я слышал, что профессиональный сертификат TensorFlow на практике не впечатлил в этом отношении. Кроме того, наставники также постоянно обновляют лабораторные работы и довольно быстро отвечают на запросы.
Не очень хорошие особенности серии
- Выделенное время на выполнение лабораторных работ, серьезно! На лабораторную работу по использованию Functional API для создания модели VGG было отведено 3 часа, и мне понадобился час, чтобы ее выполнить. Лаборатория обнаружения объектов для обнаружения зомби была выделена на 1 час, и у меня ушло целых 5 часов, чтобы сделать это. Это мягко говоря раздражало :(
- Неклассифицированные лаборатории просто «запускали ячейки». Я чувствую, что это было слишком легко для студентов. Я исправил это сам, создав новые блокноты и попытавшись впоследствии написать код самостоятельно.
Общая оценка специализации
Я действительно не закончил многие курсы. Несмотря на то, что я пробовал себя на множестве курсов (на Coursera и вне его), я никогда не чувствую себя обязанным пройти их. Как только я получаю то, что мне нужно, или материалы не захватывают, или курс/специализация становится все более и более неактуальной или плохо структурированной (напоминает мне специализацию IBM AI Engineering), я прощаюсь с курсом/специализацией.
Тот факт, что эта конкретная специализация держала меня в плену до самого конца, является свидетельством ее удивительности. Мне очень легко поставить оценку 4,5 из 5.
Что дальше для меня?
Предполагается, что специализация по глубокому обучению вооружит меня всеми теориями, необходимыми для начала работы с исследованиями машинного обучения. Я бы вернулся, чтобы закончить 2 оставшихся курса, которые я еще не закончил.
Я уже начал читать научные статьи, крайне неудобные они. Я надеюсь стать лучше в чтении статей до того момента, когда это станет интуитивно понятным, и я начну писать свои собственные статьи.
Я также планирую работать над несколькими приложениями ML. Курс Advanced Computer Vision посеял во мне семена нескольких замечательных идей для проектов компьютерного зрения, и я намерен поработать над парой из них. В настоящее время я работаю над созданием детектора нигерийского языка жестов с использованием обнаружения объектов, а также передаю результаты через синтез речи для создания человеческого голоса слов, передаваемых через язык жестов.
Ну наконец то…
Я надеюсь, что вы найдете это чтение полезным, если вы планируете получить специализацию или если вы думаете о расширении и углублении своих знаний о глубоком обучении и / или TensorFlow. Спасибо, что дочитали до этого момента.