Беспилотные автомобили, продвинутые голосовые ассистенты, рекомендательные системы – это только малая часть тех классных продуктов, которые создаются с помощью инженеров по машинному обучению и, думаю, не для кого не секрет, что за кулисами сего чуда стоит математика. Именно от её знания зависит понимание алгоритмов машинного и глубокого обучения.
Машинное обучение держится на трех основных столпах:
линейная алгебра и аналитическая геометрия;
математический анализ;
теория вероятностей и статистика.
Теперь может возникнуть несколько вопросов: можно ли все это выучить самостоятельно и если да, то сколько это займет времени, и насколько это будет больно?
Исходя из собственного опыта, могу сказать, что конечно же можно, однако будет больно, и чтобы понизить тот самый «градус боли» я решил написать эту статью в помощь таким же новичкам, как и я. Ну что....поехали!
Примечание: вся литература, приведенная ниже, содержит упражнения для самостоятельной работы.
Школьная математика (1 неделя и больше)
Если нет проблем со школьным курсом, то рекомендую Кратчайший курс школьной математики – все описано кратко и очень понятным языком.
Если есть пробелы и хочется углубиться, то есть хорошие плейлисты на канале Видеокурсы DA VINCI – там найдете не только объяснение школьной математики, но и линейной алгебры с математическим анализом.
В качестве задачника мне понравился «Сборник задач по математике для поступающих во втузы», Сканави М.И.
Линейная алгебра (1,5 месяца)
Начнем с плейлистов Linear algebra и Linear algebra (English) канала The bright sight of mathematics – лучшего объяснения линейной алгебры и численных методов к ней я не видел.
Для более глубокого ознакомления советую следующие книги:
-
«Introduction to Linear and Matrix Algebra», Nathaniel Johnston
-
«Advanced Linear and Matrix Algebra», Nathaniel Johnston
Хорошая серия книг, где читателя постепенно знакомят со всеми необходимыми разделами линейной алгебры, включая матричные факторизации и тензоры.
На русском языке понравились следующие книги:
«Линейная алгебра и аналитическая геометрия», Киркинский А.С.
-
«Вычислительная линейная алгебра», Вержбицкий В.М.
Первая книга - классический университетский курс линейной алгебры, а вторая - учебник по матричным факторизациям (LU, QR, SVD).
Математический анализ (3 месяца)
Здесь стоит начать с плейлистов канала N Eliseeva – объемный, но очень хороший курс с кучей примеров и понятным объяснением.
Из книг порекомендую следующие:
-
«Calculus for Scientists and Engineers», Martin Brokate, Pammy Manchanda, Abul Hasan Siddiqi
-
«Математический анализ», Киркинский А.С.
Хорошие книги плюс-минус об одном и том же, содержат все необходимые темы, включая преобразование Фурье.
Примечание: в качестве задачника я использовал учебное пособие БГТУ «Высшая математика в 2-х частях» (Марченко В.М.) – простой вузовский учебник, однако его плюс заключается в том, что после каждой главы имеются упражнения сразу же с ответами, что очень удобно.
Теория вероятностей и математическая статистика (3 месяца)
Начнем с раздела теория вероятностей на mathprofi и учебника все того же БГТУ «Теория вероятностей» (Блинова Е.И.), в котором кратко описана теория и содержится необходимый набор упражнений.
Переходя к статистике, советую раздел математическая статистика также на mathprofi и плейлист Statistics Fundamentals на канале StatQuest with Josh Starmer.
Книги для дополнительного изучения:
-
«Modern Mathematical Statistics with Applications», Jay L. Devore, Kenneth N. Berk, Matthew A. Carlton
Объемная книга, содержащая в себе и теорию вероятностей, и статистику с огромным множеством продвинутых тем
-
«Теория вероятностей и математическая статистика», Гмурман В.Е.
Также хорошая книга, но с меньшим количеством тем.
Дыхание машинного обучения (1 неделя)
Изучив все необходимые темы для уверенного старта в машинном обучении, было бы неплохо иметь представление о том, как в нем применяется математика и здесь я рекомендую ознакомиться с книгой «Data-Driven Science and Engineering», Steven L. Brunton, J. Nathan Kutz.
Отсюда вы узнаете о сжатии изображений с помощью сингулярного разложения матриц, как преобразование Фурье помогает избавляться от шума в аудиофайлах и изображениях, как найти коэффициенты регрессий через градиентный спуск и многое другое.
Дополнительные источники
Также не могу не упомянуть каналы:
Sergej Kuts (18+, присутствует мат). Автор по-пацански объясняет математику – весело и полезно.
dUdVstud – очень много полезной инфы касаемо математики и Data Science в целом.
MIT OpenCourseWare – море лекций от небезызвестного университета.
Что в итоге
Занимаясь по 10 часов практически каждый день, на изучение всего вышеперечисленного у меня ушло порядка 8 месяцев. Однако такой результат был получен, исходя из моего опыта и возможностей. Возможно, у вас будут другие цифры, главное – пробовать и все получится.
Надеюсь, данный план окажется для вас полезным, в будущем планирую написать планы обучения и по другим темам в машинном обучении.
Всем успехов!
Комментарии (22)
EGA_production Автор
31.12.2022 20:33+3Заметил, что появилось много вопросов по поводу того, что невозможно что-то изучать по 10 часов каждый день. Уважаемые читатели, у данной статьи было 2 цели: поделиться полезными источниками для изучения математики в контексте машинного обучения для тех, кому это нужно, и показать реальные сроки обучения, исходя из собственного опыта. Думаю, эта информация окажется полезной, особенно учитывая те цифры, которые заявляются на разного рода платных курсах. Делитесь также в комментариях своим опытом. Всех с наступающим!
Usurer
01.01.2023 18:22+1Было бы очень здорово, если бы вы дополнили статью информацией о том, для чего именно нужны те или иные знания. Например я сейчас смотрю курс Andrew Ng - понятно что он исключительно ознакомительный, но мне больше и не надо - а понять, что к чему там можно даже напрочь забыв школьную математику.
EGA_production Автор
01.01.2023 18:32+1В конце статьи упоминались примеры применения математики в ML, а для более подробного объяснения нужно выпускать отдельные статьи, что я и планирую сделать в ближайшем будущем). На мой взгляд, курсы Andrew NG - это лучшее, что можно найти по ML на сегодняшний день, зря вы их недооцениваете.
Usurer
01.01.2023 19:56+1Нет-нет, я их вовсе не недооцениваю, я их с удовольствием смотрю и радуюсь, что там - по крайней мере пока что - всё предельно понятно, а сам Эндрю такой "короч тут матан, но если вы не знаете, то не парьтесь, потому что в результате получается вот так вот"
EGA_production Автор
01.01.2023 23:23Аа, ну так эт норм: все равно на практике пользуются готовыми формулами, главное - их понимание и тут товарищ Эндрю бесподобен в объяснении.
NeoNN
02.01.2023 08:39Можно конечно заботать все за неделю, но сколько из этого останется без практики — большой вопрос. Аналогично — авральная подготовка к сессии. Через месяц в голове остаётся 20 процентов, через 15 лет — перекати-поле. Если же делать проекты, то шанс больше.
Nilmanifold
02.01.2023 14:40+1Автор по сути рекомендует подход обучения "с основ", но я бы советовал учится иначе, то есть "с конца". Сразу берите учебник по питону/датасаэнсу и в нем разбирайтесь. Если где-то хочется углубиться, то смотрите уже конкретную тему. Пример:
Читаешь в учебнике по ML главу про метод опорных векторов (support vector machines) и не понимаешь что это такое за отображение признаков. Смотришь в другом месте:
А, так это просто функция между двумя векторными пространствами. А что такое векторное пространство и какие вообще его элементы? Смотришь в энциклопедии:
Векторное пространство — множество элементов вместе с определенными операциями сложения и скалярного умножения, если выполняется ряд свойств. Элементы векторного пространства называются векторами. Ну, более-менее понятно. Читаешь дальше про метод опорных векторов.
Мне кажется такой стиль обучения просто лучше сегодня. Мы плаваем в бездонном океане информации и самый главный навык это уметь отыскивать по частям что реально нужно. Если изучать "всё с начала", то просто утонешь и никогда не дойдешь до главного.EGA_production Автор
02.01.2023 14:55-1Вы практикующий ml-специалист или просто взяли это с головы? Без обид, но описанный вами подход невероятно плох: лучше всё изучать по порядку, когда один раздел вытекает из другого т.к. в случае, если модель 'ляжет', то с таким пониманием математики, как предлагаете вы, у вас тупо не получится понять почему она работает не так как вам нужно. Должна быть крепкая база, которая позволит понимать математику, лежащую в основе алгоритмов машинного обучения. По-хорошему, вы должны уметь расписать от руки вычисления, по которым ищутся веса моделей и т.д.. К сожалению, просто прочитать статью с википедии и использовать fit/predict не прокатит.
Nilmanifold
02.01.2023 17:41Я скорее программист, а в прошлом физик. Если хотите мою узнать мою базу, то это обычные курсы высшей математику (ну это давно было), теория групп и теория информации в качества хобби.
Ну серьезно, что мне помешает понять модель, если я сначала посмотрю реализацию в коде, а затем пойду непонятые аспекты разбирать? Конечно, такой поиск часто будет приводить к переваривают целых глав из вашего же списка литературы. Но обратите внимание, моя цель это не прочитать 10 книг от корки до корки, а досконально разобраться в том, что реально нужно для этой понимания данной модели например.
Разве у вас не возникало желание сравнить описание модели по разным учебникам или погрузиться на несколько уровней глубже в математику чтобы понять какую-то штуку? Не существует же конкретного порядка в котором "нужно" изучать тему. Не нужно стесняться прыгать от источнику к источнику информации при необходимости. Поверьте, посмотреть набор статей, которые полезны именно вам именно сейчас, будет намного продуктивнее, чем весь матан повторять.
dev_l
Извините, но… а вы вообще человек?
sshikov
Если у вас нет работы по 8 часов в день — вполне можно себе позволить. Правда, вызывает вопросы, на что в это время жить. Если работа есть — вызывает вопросы уже другого сорта.
Но если честно, то да, я бы сломался сильно раньше — потому что чтобы учиться 10 часов в день, нужен в первую очередь очень хороший стимул — а его не видно. В смысле, автор свой не описал.
dev_l
Ух не знаю. Для меня потолок - часов 4-5 в день активной умственной деятельности. Именно активной. Безусловно, можно и по 18 часов в день поработать, но там полу-автомат. И то потом компенсируется просадкой в чём-он другом.
Не поверю, что 10 часов в день возможно что-то изучать СТАБИЛЬНО. И людей таких не знаю. Поэтому и спрашиваю автора: а вы вообще человек, из нашей реальности?
sshikov
Не, 4-5 в день это нормально. Я скорее о том, что работать какое-то время по 10 часов возможно. И потом, мы же не знаем, насколько хорошо автор на самом деле все эти темы освоил. Вероятно какое-то время из этих 10 часов — это просто чтение документации/книг. Каков эффект — вот это вопрос.
Rive
Если убрать стопорящие факторы и быть внутри потока, длинный рабочий день вполне возможен. Для коммерческой деятельности я не уверен что такое совпадение условий достижимо, но для хобби вполне можно выбрать себе такие условия.
EGA_production Автор
Человек проводит на работе 8 часов в день. В чем тогда проблема заниматься по 10 тем, что вам нужно и интересно, тем более если имеется такая возможность? К сожалению, в мои планы не входит доказывать вам что-либо. Если есть вопросы касаемо математики или машинного обучения - с радостью отвечу.
tupenbor
Может он на психоактивных веществах, это бы многое объяснило.
EGA_production Автор
Ем грибы на завтрак и ужин)
tupenbor
Какой-то преподаватель российского вуза, математик, тоже грибы употреблял, гомотопией и прочими преобразованиями страдал. На ютубе много его лекций, фамилию не помню.
0xd34df00d
Это всё сильно зависит от интенсивности работы, ИМХО.
Та же математика разная бывает. Заниматься чем-то прикладным (или чем-то, базовые понятия чего давно интернализировал) — совсем не то же самое по требовательности к ресурсам, чем изучать совсем новую или совсем абстрактную ветвь.
EGA_production Автор
Да, в данный момент у меня есть достаточно свободного времени и я могу себе такое позволить. Если вы хотите изучить математику и ищите ресурсы, то каким образом мои стимулы смогут вам в этом помочь? Вопрос задан некорректно, поэтому не вижу смысла на него отвечать)
sshikov
>Вопрос задан некорректно
Я ничего и не спрашивал. Я скорее констатировал, что для такого режима работы обычно нужен хороший стимул. И время. И скорее всего он у вас был. А уж какой конкретно — тут и правда не важно.
elyorweb
Ну тут кому как, но я занимался 10-12 часов в день когда начал изучать js. Но я очень был заинтересован