Connect with us

Обучение

Как изучить Deep Learning за 6 месяцев

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

Анна Гуляева

Опубликовано

/

     
     

Требования

  • вы должны быть готовы уделять обучению от 10 до 20 часов в неделю следующие полгода;
  • у вас должны быть навыки программирования, потому то вам надо будет научиться работать с Python и облачными вычислениями (опыт самого Python и облачных вычислений не нужен);
  • базовое знание математики;
  • компьютер с доступом в интернет.

Шаг 1

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

Пройдите курс Practical Deep Learning for Coders. Он займет у вас 4–6 недель. В этом курсе надо будет запускать код в облаке. В Google Colaboratory есть бесплатный доступ к GPU. Другие варианты — Paperspace, AWS, GCP, Crestle и Floydhub. Все они достаточно хороши. И не нужно создавать собственный сервер.

Шаг 2

Пора узнать некоторые основы. Изучите математический анализ и линейную алгебру. Хороший обзор матанализа представляет из себя Big Picture of Calculus. Линейную алгебру можно изучить по курсу Гилберта Стренга на OpenCourseWare от MIT. Как только вы закончите с этими двумя курсами, прочитайте Matrix Calculus for Deep Learning.

Шаг 3

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

Шаг 4

Закончите финальный проект. Здесь вы должны выбрать библиотеку глубокого обучения (Tensorflow, PyTorch, MXNet) и создать решение любой проблемы с нуля. Первые три шага должны были дать вам понимание применения глубокого обучения и твердый фундамент для дальнейшей работы. Создание проекта с нуля позволяет лучше освоить инструменты.

Шаг 5

Пройдите вторую часть курса на fast.ai — Cutting Edge Deep Learning for Coders. Этот курс затрагивает более сложные темы, и вы сможете читать последние исследования в этой области.

Каждый из шагов должен занять от 4 до 6 недель. Примерно через 26 недель у вас будет солидный фундамент в глубоком обучении, если вы будете следовать этому плану.

Глубокое обучение: что дальше?

Пройдите Стэнфордские курсы CS231n и CS224d. Это отличные курсы для изучения компьютерного зрения и обработки естественного языка, соответственно. И прочитайте книгу, которая даст вам ещё большее понимание темы.

 

Комментарии
Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Advertisement
Click to comment

You must be logged in to post a comment Login

Leave a Reply

Обучение

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

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

Анна Гуляева

Опубликовано

/

2 октября 2017 я получила первую зарплату в качестве Rails-разработчика. Я получила работу в компании по веб-разработке, которая до этого использовала Rails всего полтора месяца. На собеседовании я была рада услышать об этом. Но с тех пор мое отношение изменилось и в этой статье я попытаюсь объяснить почему.

Взгляд назад

Я работала веб-разработчиком и ранее, но в начале прошлого года поняла, что недовольна своей карьерой. Я не могла понять, почему так происходит, пока не прочитала статью Three types of programmers, которая перевернула мой взгляд:

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

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

  • Если происходит сбой, его нужно исправить;
  • “Нам нужно начать промоакцию в понедельник”, поэтому работать нужно все выходные;
  • “Мы перенесли все на новый сервер, интеграция сработает, верно?” — “Дайте мне доступ, я проверю настройки.”

И если вы делаете все это на PHP, то начинаете нервничать и становитесь подозрительнее, а кроме того выполняете много монотонной работы. Поэтому я начала изучать Ruby.

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

Когда пришло время искать работу, это заняло у меня некоторое время. Мне пришлось забыть о предыдущих проектах и более высокой зарплате. Но была уверена, что найду работу своей мечты. Мое собеседование прошло в среду вечером, и уже в четверг утром меня ждали в офисе. Мне сказали, что моих знаний “недостает совсем немного до junior-позиции”, и пригласили в проект. И тогда мои идеи начали рушиться одна за другой.

Новая работа

Оказалось, что этот проект начался ещё в 2014. В проекте использовались Rails 4.1 и Ruby 2.2.3, а также было много технических проблем, которые не были исправлены уже год. Ничего не тестировалось уже долгое время: в папке было только несколько тестов, и они явно были написаны на ранних стадиях проекта.

Помимо технических проблем, сложности были и с менеджментом. Процесс разработки был разделен на несколько команд, а дедлайны и требования игнорировали реальные возможности программистов. У разработчиков было время только на написание кода. Фазы размышления о стратегии, тестирования и устранения багов были оставлены в стороне. Более того, старые части кода не рефакторились, потому что на это не было времени. Такие проблемы распространены, и многие иногда с ними встречаются. Что тогда стоит делать разработчикам? Или…

Как справиться со всем этим?

Существует два уровня проблем: проблемы на уровне компании или проекта и персональные проблемы с уровнем навыков и организацией работы.

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

Я обнаружила пять проблем, которые могут превратить меня в плохого программиста, и способы их решения, которые помогут мне и дальше развиваться и наслаждаться процессом.

1. Большой незнакомый проект

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

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

2. Нехватка времени на тестирование

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

3. Недостаточная спецификация задачи

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

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

4. Ревью кода в конце задачи

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

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

5. Я не вижу для себя возможности развития

Процесс работы больше напоминает мне выживание, а не развитие. Когда я решаю небольшие проблемы, я учусь создавать патчи и работать по аналогии, и у меня нет менторов.

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

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

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

Проблемы на уровне компании

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

Я считаю, что любая компания по разработке должна уделять внимание этим вещам:

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

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

Иногда компании пытаются создать кадровый резерв, нанимая студентов. С одной стороны, научить проще людей, которые не были испорчены работой. С другой, студенты не могут быть структурой, формирующей основу компании. Как только соотношение разработчиков и студентов становится 50/50, все становится странным. В компании достаточное количество сотрудников, но часть работы всегда приходится переделывать, и разработчики не укладываются в дедлайн.

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

 

Комментарии
Продолжить чтение

Обучение

Онлайн-курсы по криптовалютам и блокчейну

В этом списке собраны курсы по основным принципам работы блокчейна и криптовалют, размещенные на проверенных платформах онлайн-образования.

Анна Гуляева

Опубликовано

/

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

Введение в блокчейн-технологии на базе платформы Ethereum

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

Decentralized Applications on Ethereum platform

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

Bitcoin and Cryptocurrency Technologies

Курс от Принстонского университета, в котором более подробно рассказывается конкретно о биткоине и его будущем, но также рассматриваются и вопросы использования криптовалюты в качестве платформы, а также правовая регуляция вопроса. Начинается 19 февраля.

Digital Transformation in Financial Services

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

IBM Blockchain Foundation for Developers

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

 

Комментарии
Продолжить чтение

Дизайн и прототипирование

Дизайн-перемена: воркшопы дизайнеров Яндекса в 10 городах страны

Теперь не слушатели поедут к преподавателям, а преподаватели к слушателям. Этой весной ведущие дизайнеры Яндекса проведут бесплатные однодневные воркшопы в десяти городах страны.

Леонид Боголюбов

Опубликовано

/

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

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

В этом году компания решила попробовать новый формат — его назвали «Дизайн-перемена». Теперь не слушатели поедут к преподавателям, а преподаватели к слушателям. Этой весной ведущие дизайнеры Яндекса проведут бесплатные однодневные воркшопы в десяти городах страны: Воронеже, Екатеринбурге, Иркутске, Казани, Калининграде, Красноярске, Новосибирске, Ростове-на-Дону, Самаре и Ярославле. Воркшопы состоятся в субботние дни в апреле-мае; точное расписание можно посмотреть на сайте «Дизайн-перемены».

Воркшоп продлится весь день. На нём дизайнеры расскажут, как выстроена в Яндексе работа над веб-сервисами и мобильными приложениями. Затем слушатели разобьются на команды и под руководством преподавателей попробуют создать дизайн продукта. Это позволит на практике понять, как устроены основные этапы работы, от формирования гипотез до создания прототипа. В конце преподаватели дадут обратную связь по каждому проекту. У участников воркшопа будет шанс получить приглашение на стажировку.

Чтобы принять участие в воркшопе, нужно зарегистрироваться и выполнить тестовое задание. Для этого потребуется опыт работы в веб-дизайне, пусть даже небольшой. Задания можно присылать до 20 марта. Претенденты, которые успешно прошли отбор, получат приглашение на воркшоп по почте.

Комментарии
Продолжить чтение

Обучение

«Где можно получить серфитекат?»: как мы тренировали всех школьников страны

Все школьники кодят — каждый год во всех школах страны проходит акция «Час кода». В этом году тренажер, который прошли 10 миллионов детей, разработали в Кодвардс в сотрудничестве с традиционными партнерами акции в России ZeptoLab, «Лабораторией Касперского» и Microsoft. Ниже — история Redmadrobot о том, как заинтересовать ребенка программированием, сделать интерфейс, понятный детям от 6 до 17 лет, и сервер, который выдержит нагрузки и атаки продвинутых восьмиклассников.

Redmadrobot

Опубликовано

/

Автор:

Одна из задач «Часа кода» — заинтересовать школьников и показать, что программирование и IT — не про ботаников и снеговиков в Excel. Тренажер должен быть одновременно увлекательным и похожим на рабочее пространство разработчиков. Поэтому основой тренажера стала игра, где дети могут быстро освоить базовые команды и увидеть результаты своей работы.

«Час кода» рассказывает, что программирование — это доступный инструмент и он не ограничивается только компьютерами, а используется в промышленности, медицине, энергетике. Самый простой способ показать, как это работает — дать детям возможность самим запрограммировать персонажа, – Галина Денина, руководитель проекта.

Традиционный партнер акции ZeptoLab предоставила персонажей своей игры C.A.T.S., в оригинальном сюжете которой котики собирают и бесконечно улучшают боевых роботов для победы в сражениях. Сражения нам не подходили — сражаться детей могут научить и на других уроках (физкультуре или трудах, например), а Мультиплеер долго и сложно разрабатывать, да и на полноценную работу с ним одного урока явно недостаточно — тут каждый должен программировать, а не размазывать в FIFA Гошана из параллельного.

Поэтому мы придумали новый сюжет и назначили главной героиней кошечку Элси, которая решила победить в Олимпиаде роботов. Главным преимуществом Элси в борьбе стало как раз участие ребенка — по легенде живой пилот, управляющий роботом, помогает быстрее обучить искусственный интеллект. Команде предстояло собрать необходимое оборудование, установить его на заводе и протестировать на полигоне. Для тренажера мы продумали 3 локации и 14 челленджей разного уровня сложности.

Четко в натуре ваще пацаны, – Антон, 9 лет (Дагестан).

Главной сложностью при проектировании интерфейса было то, что пользоваться им должно быть легко и интересно и первоклашкам и ученикам старших классов, при том что уровень подготовки даже в одном классе может отличаться. К тому же, в каких-то школах детям мог подсказывать учитель информатики, а где-то весь процесс они осваивали сами. Изначально дизайн для акции делался на основе решений, разработанных для актуальной на тот момент версии платформы Кодвардса, но в процессе решили опробовать новую, которую только готовили к внедрению в основной продукт. Вот так смело бета-тест апдейта мы возложили на школьников со всей страны. Ключевым отличием был переезд главных “управляющих” кнопок на игровое поле. Нам важно было удержать внимание детей и вовремя переключать их фокус с панели, где пишется код, на игровое поле. И не забыть, что мониторы в классах информатики могут быть очень разными. Сам код, написанный детьми, напоминает тот, который они, возможно, будут писать в будущем. Мы посмотрели, как выглядит интерфейс для написания кода у наших разработчиков iOS и Android, какие цвета используются в среде разработки, и перенесли в тренажер, сделав их чуть более детскими. Черный фон для кода также выбран неслучайно — так меньше нагрузка на глаза.

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

Важно, что мы не ведем пользователя через уровень, показывая, что ему делать. Мы объясняем значение каждого действия, чтобы он освоился и в дальнейшем осознанно его использовал. Так, первое, что ребенок видит на уровне, это подсказка: «Выбери, кто будет выполнять действие». Он нажимает на соответствующую кнопку, следом появляется новая подсказка: «А теперь выбери, что робот будет делать», «теперь запусти программу». По мере появления новых команд для управления объектами появляются и новые подсказки, – Александр Седнави, руководитель разработки.

Язык, на котором программируют дети в «Часе кода», содержит только объекты, методы и ключевые слова. Команды в редакторе кода набираются построчно по формуле «объект (кто/что должен делать?) — метод (что именно делать?) — аргумент (как делать?)».

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

Сами мы писали бэкенд тренажера на Go и верстали фронт на JS, хотя изначально все работало на Python. Увидев, что серверу с трудом дается запланированное количество обращений в секунду, ребята за ночь переписали всё с Python на Go, и по итогам тестирования сервер держал в три раза больше запросов, чем было запланировано.

Вместе с партнерами из Microsoft и «Лаборатории Касперского» мы запустили систему, в которой входящая нагрузка распределялась между серверами равномерно, а в случае необходимости предусмотрели возможность подключения дополнительных мощностей.

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

За время акции через тренажер прошли 10 миллионов ребят со всей страны — и система отработала без сбоев.

Благодаря этому у человека возникает побольше ума, – Дарина (Тыва), 8 лет.

Перед запуском мы протестировали каждый из 14 уровней: сначала пользователи Кодвардса, а потом в ходе закрытого бета-тестирования тренажер до старта акции увидели несколько десятков детей в заданных возрастных категориях. После прохождения тренажера старшие школьники и родители младших заполнили анкету — и это также помогло нам устранить последние баги перед боем.

В итоге мы получили систему, которая отработала без сбоев весь период акции, и несколько сотен отзывов — некоторые из них есть в этом тексте. Конечно, научить разработке за час невозможно — и речь не только о детях. Но показать, что разработка — это интересно, в этом можно разобраться и подготовиться к будущему, в котором знание языков программирования важнее, чем английский.

Комментарии
Продолжить чтение

Постеры для разработчиков

Наша рассылка

Каждому подписавшемуся - "1 час на UI аудит": бесплатный ускоренный курс для разработчиков!

Нажимая на кнопку "Подписаться" вы даете согласие на обработку персональных данных.

Вакансии

Популярное

X
X

Спасибо!

Теперь редакторы в курсе.