Хочу изучать искусственный интеллект!

Человек, научившийся создавать искусственный разум и искусственную жизнь, не остановится перед коренной переделкой самого себя. Не роботы вместо людей, а новый человек вместо старого!
Норберт Винер. Кибернетика
I still will teach this boy.
The Saga Begins
- «Хочу заниматься ИИ, с чего начать? Что там вообще знать надо?»
- «Там же очень сложная математика нужна, да? Жизни не хватит всё это выучить».
- «У меня нет крутого диплома технического вуза, мне ИИ не светит».
- «Да ладно, я слышал, там просто библиотеки можно импортировать, да и всё, самому писать код не надо».
Слышали такие фразы, а может, и сами их говорили? По моим наблюдениям, это самые частые высказывания людей, которые хотели бы заниматься ИИ, но не знают, как к нему подступиться. Так что сегодня – AI Developer Roadmap, или Путь ИИшника (ИИшницы?)! Действительно, встречаются две крайности: одни считают, что забытый или невыученный матан – это непреодолимый барьер для освоения ИИ, другие думают, что достаточно использовать готовые методы «из коробки» («какая разница, что там происходит, главное – результат, оставим подробности учёным»). Оба эти подхода контрпродуктивны и помешают вам достичь цели – освоить современные технологии ИИ хотя бы на уровне осведомленного любителя. Конечно, можно найти в Интернете туториал и воспроизвести его на своей машине, ваша сеть обучится, и вы получите результат. Но, не разобравшись, как работает алгоритм, вы не сможете потом творчески использовать его для своих задач. С другой стороны, если вы думаете, что без нескольких лет подробного изучения вузовской математики вы в ИИ ничего не поймете, это тоже заблуждение. В любой сфере профессиональной деятельности есть свои prerequisites – фундамент, необходимые знания, на которых строится дальнейшая работа, ИИ здесь не исключение. Автор этой статьи тоже методом проб и ошибок начинал этот путь с самого подножия горы (и всё ещё учится), в порыве максимализма пытаясь «объять необъятное», а теперь постарается сделать вашу дорогу короче и легче. Итак, без чего никак нельзя обойтись:
- Математика. Основы линейной алгебры, теории вероятностей, математической статистики. Очень хорошо, если удастся ознакомиться с теорией графов, так как сейчас стали появляться высокоэффективные интегрированные подходы, объединяющие граф и нейросеть. Вам также понадобится разобрать некоторые задачи оптимизации, например градиентный спуск – центральное понятие обучения нейросети. Из матана кое-где понадобится дифференциальное исчисление, но больше для понимания происходящего. Не знаете, не помните, нет времени? Ваши «три кита» — это матстат, линалг и теорвер. Знаете основы – для начала этого вполне достаточно.
- Программирование. Если раньше в этом вопросе была неопределенность, то сейчас главный язык программирования для задач ИИ – это Python (да, другие тоже используются). Порог вхождения в сферу ИИ для питонистов самый низкий, большое интернациональное сообщество единомышленников, много библиотек и фреймворков под разные задачи, – эти факторы влияют на выбор данного языка программирования. Вам нужно будет освоить основы Python и структуры данных. Потом можно будет переходить к практическому освоению библиотек машинного обучения.
- Английский язык. Неожиданно? Это действительно большое подспорье, потому что вам не придётся ждать, пока новейшие статьи по ИИ переведут на русский язык, а кроме того, на английском выходит огромное количество замечательных руководств для начинающих. Do you speak English — дую, но слабо? Ничего, основные учебные пособия переведены на русский, а ещё у нас есть прекрасные учебники по математике, которые уже стали классикой, и онлайн-курсы на русском языке.
А теперь подробнее о технологиях для задач ИИ. Сначала расскажу, какие библиотеки применяются для самых распространённых задач ИИ. Итак…
Если вы занимаетесь компьютерным зрением или обработкой изображений, то, скорее всего, будете использовать OpenCV. У этой библиотеки есть интерфейсы не только на Python, но и на Java, C++ и Matlab, и в ней прописано более 2 500 алгоритмов.
Если вы предпочитаете обработку естественного языка, то ваш выбор — NLTK. Это очень удобная библиотека, в которой есть всё, что нужно для обработки текстов, и не только. Это также ваш выбор, если вы изучаете компьютерную лингвистику или близкие предметы, такие как когнитивистика, информационный поиск и машинное обучение. Также может понадобиться Gensim — библиотека обработки естественного языка, предназначенная для тематического моделирования, то есть определения основных тем, которым посвящён текст. С её помощью также можно обрабатывать тексты, работать с векторными моделями слов (такими как Word2Vec, FastText и т. д.) и создавать тематические модели текстов.
Если вы осваиваете анализ данных, то вам понадобится целый ряд инструментов:
- NumPy – библиотека для научных вычислений, добавляющая поддержку больших многомерных массивов и матриц, вместе с большой библиотекой математических функций для действий с ними.
- SciPy – библиотека, предназначенная для решения научных и математических проблем. Она построена на базе NumPy и позволяет управлять данными, а также визуализировать их с помощью разных высокоуровневых команд. Если вы импортируете SciPy, то NumPy отдельно импортировать не нужно.
- Pandas – эта библиотека создана специально для работы с данными, она упрощает и ускоряет работу аналитика во много раз.
- Matplotlib, Seaborn – библиотеки для визуализации данных, получаются качественные рисунки, которые можно использовать в научных публикациях.
Если вы планируете заниматься машинным обучением (без которого уже трудно себе представить современный анализ данных), то вам будут нужны:
- Фреймворк TensorFlow от Google, который умеет так много, что вы сможете себя почувствовать настоящим творцом ИИ.
- Его конкурент PyTorch, в последнее время всё чаще вижу его в научных публикациях, похоже, что он уже потеснил TensorFlow.
- Keras — библиотека для Python, которая позволяет в несколько строк кода создавать глубокие нейронные сети. В качестве бэкенда может выступать TensorFlow, Microsoft Cognitive Toolkit, Theano и MXNet.
Все вышеперечисленные инструменты снабжены подробной документацией, и в их освоении нет ничего непреодолимого.
Теперь назову несколько имен инфлюэнсеров ИИ, которых нужно знать каждому специалисту и отслеживать их публикации, чтобы быть в курсе происходящего в сфере ИИ:
1. Эндрю Ын (Andrew Ng): профессор Стэнфордского университета, эксперт с мировым именем в области искусственного интеллекта и машинного обучения (МО) и один из основателей образовательной платформы Coursera. Сейчас он ведущий исследователь ИИ в Baidu. Эндрю Ын является автором знаменитого курса по машинному обучению, который вы прямо сейчас можете пройти на упомянутой платформе, как это уже сделали 4 миллиона энтузиастов ИИ:
https://www.coursera.org/learn/machine-learning
Единственное возможное неудобство этого курса – профессор Ын предлагает изучать машинное обучение на OCTAVE aka MATLAB, но можно без труда найти адаптацию курса для Python (Python implementation). Профессор Ын подробно разбирает все основные алгоритмы, уровень сложности – для начинающих, курс на английском. Это может быть отличным стартом вашей карьеры в ИИ. Эндрю Ын также выпустил специализацию по глубокому обучению на той же Coursera, которая, помимо серьёзной теоретической части, содержит разбор самых интересных и обсуждаемых нейросетей:
https://www.coursera.org/specializations/deep-learning

2. Ян Гудфеллоу (Ian J. Goodfellow), исследователь МО, ранее работал в составе команды Google Brain, а сейчас отвечает за проекты машинного обучения в Apple Inc. В соавторстве с Йошуа Бенджио (Yoshua Bengio) написал книгу «Глубокое обучение» (“Deep Learning Book”), которая обязательна к прочтению, если вы всерьез интересуетесь ИИ. В принципе, если даже вы прочитаете только её, то будете вполне осведомлены.
3. Йошуа Бенджио (Yoshua Bengio), канадский учёный, лауреат премии Тьюринга 2018 года. Выдающийся исследователь в области нейросетей и глубокого обучения. Он был одним из создателей генеративно-состязательной нейросети – generative adversarial network (GAN), которая очень необычно и интересно устроена. Он также много работал над задачами обработки естественного языка. Бенжио возглавляет MILA (Монреальский институт алгоритмов обучения), является профессором Монреальского университета и (вместе с Яном Лекуном) содиректором программы «Learning in Machines & Brains» Канадского института перспективных исследований. Вы можете найти его интересные выступления на YouTube.
4. Ян Лекун (Yann LeCun) – французский учёный, специалист по анализу данных, нейросетям и машинному обучению, также получивший премию Тьюринга в 2018 году. Достаточно упомянуть, что он был одним из создателей сверточных нейросетей (convolutional neural networks), которые являются сейчас краеугольным камнем компьютерного зрения. Также Лекун известен прорывными исследованиями в области распознания изображений. В настоящее время отвечает за ИИ в Facebook.
5. Джеффри Хинтон (Geoffrey Hinton) – также лауреат премии Тьюринга 2018 года. Как и Йошуа Бенжио и Яна Лекуна, его называют «крестным отцом» искусственного интеллекта. Британец Джеффри Хинтон был одним из авторов знаменитой публикации 1986 года, в которой они предложили применять для тренировки многослойной нейронной сети метод обратного распространения ошибки. Он также был одним из создателей машины Больцмана. Сейчас Хинтон — один из вице-президентов компании Google и профессор-эмерит Торонтского университета.

6. Илон Маск, не нуждающийся в представлении генеральный директор компаний SpaceX и Tesla, сооснователь PayPal, а также человек, которого Рунет постоянно пытается чем-то удивить.
7. Фэйфэй Ли (Fei Fei Li), директор Стэнфордской лаборатории искусственного интеллекта и главный специалист Google по ИИ и машинному обучению. Ей принадлежит высказывание: «Искусственный интеллект станет движущей силой четвёртой промышленной революции». Сейчас Фэйфэй Ли руководит командой ИИ в Twitter.

8. Мартин Форд (Martin Ford) – футурист и визионер, автор книг «Роботы наступают. Развитие технологий и будущее без работы», «Технологии, которые изменят мир», «Архитекторы интеллекта: вся правда об искусственном интеллекте от его создателей». Названия говорят сами за себя, спойлерить не буду, книги достойны внимания.

После прочитанного, полагаю, вы полностью понимаете смысл этого известного мема про специалистов по глубокому обучению:

В заключение бонус: небольшой список ресурсов, которые могут помочь вам сориентироваться в море информации по ИИ:
1. Цикл из 22 лекций курса «Машинное обучение» К. В. Воронцова, прочитанных в 2019 году в Школе анализа данных («Яндекс»):
- https://ya-r.ru/2020/05/07/vorontsov-kurs-mashinnoe-obuchenie-2019-shkola-analiza-dannyh/
2. Курсы по нейронным сетям и матстату, которые мне показались полезными:
- https://stepik.org/course/401/promo
- https://stepik.org/course/76/syllabus
3. Известные курсы по теории вероятностей и теории графов профессора Райгородского, а также специализация по машинному обучению и анализу данных от МФТИ:
- https://www.coursera.org/learn/probability-theory-basics
- https://ru.coursera.org/learn/teoriya-grafov
- https://ru.coursera.org/specializations/machine-learning-data-analysis
4. Сайт Kaggle, который знает каждый аналитик данных. Там вы найдёте микрокурсы, челленджи, большую коллекцию датасетов и многое другое: https://www.kaggle.com/learn/overview
5. Книга, которая была нашим учебником по ИИ в университете на Тайване: Рассел Норвиг: «Искусственный интеллект. Современный подход».
6. Отличная книга по прогнозной аналитике и МО: «Python и машинное обучение», Себастьян Рашка.
7. Великий и ужасный классический учебник по pattern recognition: «Распознавание образов и машинное обучение», Бишоп К. М.
8. Хорошее практическое пособие O’Reilly, где просто написано, что и как нужно делать: «Прикладное машинное обучение с помощью Scikit-Learn, Keras и TensorFlow: концепции, инструменты и техники для создания интеллектуальных систем», Жерон О.
9. И напоследок моя любимая книга: написана предельно понятно, с самых основ, но на английском языке: Data Science from Scratch, 2nd Edition, Joel Grus.
Как видите, сейчас много доступной и прекрасно изложенной информации по ИИ. Конечно, списки неполные и составлены по моим личным предпочтениям – возможно, скоро у вас будет своя собственная коллекция любимых книг и сайтов.