Этот пост является частью 12-месячного проекта ускоренного обучения Month to Master. На май: Моя цель - построить программную часть беспилотного автомобиля.
Линейный метод обучения
Пытаясь разобраться в широкой области исследований (например, в информатике, лежащей в основе беспилотных автомобилей), часто бывает трудно понять, где находится правильная точка входа.
В результате большинство людей считает, что лучший путь вперед - это начать с основ, создать общий фундамент знаний, а затем перейти к более тонким уровням детализации.
Я называю это линейным методом обучения.
Использование линейного метода для изучения информатики самоуправляемых автомобилей будет выглядеть примерно так:
- Изучите многомерное исчисление
- Изучите линейную алгебру
- Изучите основы компьютерных наук
- Узнайте об общих концепциях машинного обучения
- Узнайте о концепциях компьютерного зрения
- Узнайте, как программировать на Python (язык кодирования, обычно используемый для машинного обучения)
- Узнайте, как использовать TensorFlow (специальная библиотека машинного обучения для Python)
- Узнайте, как компьютерное зрение применяется для создания программного обеспечения для беспилотных автомобилей.
- Узнайте, как писать код Python и TensorFlow для создания соответствующих программ.
- Так далее…
Хотя со временем этот метод может сработать, он неэффективен и, вероятно, неэффективен.
Во-первых, если я начну с изучения многомерного исчисления, как мне узнать, какие части многомерного исчисления относятся к беспилотным автомобилям, а какие - нет? Я не. Так что мне нужно все это выучить. То же самое для линейной алгебры, основ информатики и т. Д.
Другими словами, если я начну с самых общих знаний, у меня нет возможности расставить приоритеты в том, что я изучаю, и поэтому я в конечном итоге заставляю себя изучать все на всякий случай.
Кроме того, поскольку я сначала изучаю основополагающие концепции в общем, абстрактном смысле, мне гораздо труднее соотносить то, что я изучаю, с тем, что я уже знаю. Поскольку эффективное обучение - это, по сути, выяснение того, как осмысленно прикрепить новые фрагменты информации к существующим в настоящее время знаниям, линейный метод обучения также терпит неудачу в этом отношении.
Итак, хотя большинство людей подходят к обучению линейным образом, это довольно плохой метод, чтобы научиться чему-либо в разумные сроки.
V-метод обучения
Вместо этого я использую другой метод, который я называю V-методом обучения.
Вот как работает V-метод обучения:
- Я начинаю с конкретного, хорошо задокументированного примера моей конечной цели.
- Я пытаюсь понять, как работает этот пример
- Чтобы понять все, что я не понимаю в примере, я исследую основные концепции.
- Если я не понимаю лежащих в основе концепций, я исследую основные концепции лежащих в основе концепций, пока не почувствую, что исчерпал этот путь (либо достигнув понимания, либо достигнув точки убывающей отдачи)
- В конце концов, я раскладываю по плану достаточно разных путей, чтобы начать видеть закономерности в важных базовых концепциях.
- Я изучаю эти соответствующие основные концепции, медленно продвигаясь вверх по цепочке знаний, пока не вернусь на уровень детализации исходного примера.
- Наконец, я воспроизвожу пример, основанный на моих новых иерархических знаниях.
Я называю это «V-методом», потому что я начинаю с тончайшего уровня детализации, глубоко погружаюсь в непосредственно применимые фундаментальные концепции, а затем возвращаюсь обратно к тончайшему уровню детализации - концептуальному V.
V-метод намного более эффективен, чем линейный метод, потому что я могу: 1. Изучать в порядке соответствия моей конечной цели, 2. Изучать основополагающие концепции в контексте чего-то осязаемого, и 3. Создавать и организовывать мои знания иерархически взаимосвязаны.
В результате этот метод намного эффективнее, действеннее и увлекательнее.
Итак, вот как я планирую применить V-метод к задаче этого месяца:
- Поищите образец кода для самоуправляемой машины с открытым исходным кодом на Github (Github - популярный репозиторий кода, что в основном означает, что я могу найти там множество программных проектов других людей)
- Построчно прорабатываю код
- Для каждой строчки кода, которую я не понимаю на интуитивном уровне (а это будет большинство из них), начните свой спуск через слои базовых концепций.
- Выявить закономерности в том, что я постоянно ищу / исследую, и определять наиболее важные основополагающие концепции
- Изучите эти основополагающие концепции
- Работайте над слоями базовых концепций, пока я не смогу эффективно объяснить себе каждую строку кода из образца проекта Github.
Если это все еще звучит немного запутанно, надеюсь, это станет более понятным, когда я действительно начну.
Мой первый шаг - поискать на Github хороший образец проекта ...
Прочтите следующий пост. Прочтите предыдущий пост.