Как стать компьютерным ученым
Довольно часто меня спрашивают, как стать компьютерным ученым. Вот почему я решил описать свой собственный путь. Конечно, в сети уже есть много других руководств, поэтому здесь я буду только собирать их и объединять в один. Кроме того, поскольку у всех разный уровень знаний, вы можете пропустить некоторые разделы.
В основном обучение можно разделить на четыре основные темы: дополнительные источники, математика, программирование и собственно машинное обучение.
Дополнительные источники
Некоторые ресурсы являются необязательными и не требуются для понимания поля. Но если вы их охватите, выучить все остальное будет намного проще.
- Изучение того, как учиться (Coursera). Он объяснит вам, как работает наш мозг и как использовать эти знания для более быстрого и качественного обучения. Я настоятельно рекомендую пройти этот курс, прежде чем начинать какое-либо обучение - это действительно полезно.
- Введение в математическое мышление (Coursera). Этот курс дает вам понимание того, как не использовать математику, а думать математически. Математическое мышление - это не то же самое, что заниматься математикой - по крайней мере, не так, как математика обычно преподается в нашей школьной системе. Это будет применимо, если вы планируете глубже погрузиться в математическую часть науки о данных.
Математика
Для целей информатики вы должны знать как минимум линейную алгебру и теорию вероятностей и информации. На данный момент у меня нет выбранных ресурсов по этим темам, но введение хорошо освещена в Книге глубокого обучения, часть I.
Если вам кажется, что Deep Learning Book - это сложно - попробуйте пройти линейную алгебру и курсы статистики и вероятностей от Khan Academy.
Программирование
В качестве языка программирования я бы выбрал Python3, потому что его легко выучить и использовать. Советую пройтись по таким книгам, чтобы с ним соприкоснуться:
- Think Python - книга с введением в мир Python, алгоритмы и программирование в целом.
- Погрузитесь в Python - более глубокое использование Python. На собственном примере он научит вас пользоваться языком.
- Python CookBook - готовые примеры Python с обсуждением.
- Свободный Python - стать настоящим мастером Python.
- Python для анализа данных - описывает, как использовать библиотеки Python, такие как numpy, pandas, matplotlib и другие, для анализа данных.
- Scipy Lecture Notes - совершенно бесплатные заметки, в которых вы можете узнать, как использовать основные пакеты Python, в том числе для науки.
Еще темы, которые могут быть вам полезны:
- системы linux / unix и bash. Взгляните на это руководство.
- системы контроля версий, такие как GIT. Вот классный онлайн-туториал, на который можно пропустить около 30 минут.
Машинное обучение
Изучив основы математики и часть кода, вы можете приступить к изучению самого машинного обучения:
- Прочтите Цикл статей в блоге Адама Гейтгея. По крайней мере, некоторые из них. Они расскажут вам, что такое машинное обучение и почему оно такое крутое и интересное.
- Пройдите вводный курс от AndreNg - доступен на Coursera и Stanford Site. В нем будут описаны основные принципы и приложения машинного обучения. В образовательных целях в этом курсе в качестве основного языка используется Octave, но его довольно легко понять и использовать. Также в курсе есть вступление к Octave.
- С полученными знаниями попробуйте пройти несколько вступительных конкурсов от Kaggle, например Титаник: Машинное обучение от катастрофы или Digit Recognizer. Сам Kaggle был основан как платформа для соревнований по прогнозному моделированию и аналитике, на которых компании и исследователи публикуют свои данные, а статистики и майнеры данных со всего мира соревнуются за создание лучших моделей (wiki). Для решения вводных задач я бы посоветовал вам изучить один из фреймворков Python для машинного обучения: scikit-learn (проще) или tensorflow (сложнее). По тензорному потоку есть неплохой курс на смекалку.
- Пройти Стэнфордский курс CS231n: сверточные нейронные сети для визуального распознавания. Он научит вас применять машинное обучение к изображениям.
- Улучшение результатов обучающих программ. Начните использовать машинное обучение в своих проектах. Поэкспериментируйте с архитектурами алгоритмов / нейронных сетей.
- Не стесняйтесь пробовать любые другие фреймворки, такие как Theano, Caffe, Pytorch и другие.
- Прочтите Книгу глубокого обучения от начала до конца.
- Прочтите несколько статей. Попробуйте реализовать некоторые модели самостоятельно.
- Обновите некоторые модели. Публикуйте свои собственные статьи.
Заключение
Надеюсь, такой путь будет вам полезен. В будущем постараюсь обновить его на соответствующих ресурсах. Так что не стесняйтесь указывать на некоторые интересные вещи в комментариях. Спасибо за прочтение!