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

Машинное обучение держится на трех основных столпах:

  • линейная алгебра и аналитическая геометрия;

  • математический анализ;

  • теория вероятностей и статистика.

Теперь может возникнуть несколько вопросов: можно ли все это выучить самостоятельно и если да, то сколько это займет времени, и насколько это будет больно?

Исходя из собственного опыта, могу сказать, что конечно же можно, однако будет больно, и чтобы понизить тот самый «градус боли» я решил написать эту статью в помощь таким же новичкам, как и я. Ну что....поехали!

Примечание: вся литература, приведенная ниже, содержит упражнения для самостоятельной работы.

Школьная математика (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)


  1. dev_l
    31.12.2022 11:15
    +6

    Занимаясь по 10 часов практически каждый день, на изучение всего вышеперечисленного у меня ушло порядка 8 месяцев

    Извините, но… а вы вообще человек?


    1. sshikov
      31.12.2022 11:49
      +2

      Если у вас нет работы по 8 часов в день — вполне можно себе позволить. Правда, вызывает вопросы, на что в это время жить. Если работа есть — вызывает вопросы уже другого сорта.

      Но если честно, то да, я бы сломался сильно раньше — потому что чтобы учиться 10 часов в день, нужен в первую очередь очень хороший стимул — а его не видно. В смысле, автор свой не описал.


      1. dev_l
        31.12.2022 12:11
        +3

        Ух не знаю. Для меня потолок - часов 4-5 в день активной умственной деятельности. Именно активной. Безусловно, можно и по 18 часов в день поработать, но там полу-автомат. И то потом компенсируется просадкой в чём-он другом.

        Не поверю, что 10 часов в день возможно что-то изучать СТАБИЛЬНО. И людей таких не знаю. Поэтому и спрашиваю автора: а вы вообще человек, из нашей реальности?


        1. sshikov
          31.12.2022 12:34

          Не, 4-5 в день это нормально. Я скорее о том, что работать какое-то время по 10 часов возможно. И потом, мы же не знаем, насколько хорошо автор на самом деле все эти темы освоил. Вероятно какое-то время из этих 10 часов — это просто чтение документации/книг. Каков эффект — вот это вопрос.


        1. Rive
          31.12.2022 12:56

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


        1. EGA_production Автор
          31.12.2022 20:23

          Человек проводит на работе 8 часов в день. В чем тогда проблема заниматься по 10 тем, что вам нужно и интересно, тем более если имеется такая возможность? К сожалению, в мои планы не входит доказывать вам что-либо. Если есть вопросы касаемо математики или машинного обучения - с радостью отвечу.


        1. tupenbor
          31.12.2022 20:25
          +1

          Может он на психоактивных веществах, это бы многое объяснило.


          1. EGA_production Автор
            31.12.2022 20:25

            Ем грибы на завтрак и ужин)


            1. tupenbor
              31.12.2022 22:53

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


        1. 0xd34df00d
          03.01.2023 02:01

          Это всё сильно зависит от интенсивности работы, ИМХО.


          Та же математика разная бывает. Заниматься чем-то прикладным (или чем-то, базовые понятия чего давно интернализировал) — совсем не то же самое по требовательности к ресурсам, чем изучать совсем новую или совсем абстрактную ветвь.


      1. EGA_production Автор
        31.12.2022 20:07
        +1

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


        1. sshikov
          31.12.2022 20:19

          >Вопрос задан некорректно
          Я ничего и не спрашивал. Я скорее констатировал, что для такого режима работы обычно нужен хороший стимул. И время. И скорее всего он у вас был. А уж какой конкретно — тут и правда не важно.


      1. elyorweb
        31.12.2022 20:24

        Ну тут кому как, но я занимался 10-12 часов в день когда начал изучать js. Но я очень был заинтересован


  1. EGA_production Автор
    31.12.2022 20:33
    +3

    Заметил, что появилось много вопросов по поводу того, что невозможно что-то изучать по 10 часов каждый день. Уважаемые читатели, у данной статьи было 2 цели: поделиться полезными источниками для изучения математики в контексте машинного обучения для тех, кому это нужно, и показать реальные сроки обучения, исходя из собственного опыта. Думаю, эта информация окажется полезной, особенно учитывая те цифры, которые заявляются на разного рода платных курсах. Делитесь также в комментариях своим опытом. Всех с наступающим!


    1. Usurer
      01.01.2023 18:22
      +1

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


      1. EGA_production Автор
        01.01.2023 18:32
        +1

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


        1. Usurer
          01.01.2023 19:56
          +1

          Нет-нет, я их вовсе не недооцениваю, я их с удовольствием смотрю и радуюсь, что там - по крайней мере пока что - всё предельно понятно, а сам Эндрю такой "короч тут матан, но если вы не знаете, то не парьтесь, потому что в результате получается вот так вот"


          1. EGA_production Автор
            01.01.2023 23:23

            Аа, ну так эт норм: все равно на практике пользуются готовыми формулами, главное - их понимание и тут товарищ Эндрю бесподобен в объяснении.


  1. NeoNN
    02.01.2023 08:39

    Можно конечно заботать все за неделю, но сколько из этого останется без практики — большой вопрос. Аналогично — авральная подготовка к сессии. Через месяц в голове остаётся 20 процентов, через 15 лет — перекати-поле. Если же делать проекты, то шанс больше.


  1. Nilmanifold
    02.01.2023 14:40
    +1

    Автор по сути рекомендует подход обучения "с основ", но я бы советовал учится иначе, то есть "с конца". Сразу берите учебник по питону/датасаэнсу и в нем разбирайтесь. Если где-то хочется углубиться, то смотрите уже конкретную тему. Пример:

    Читаешь в учебнике по ML главу про метод опорных векторов (support vector machines) и не понимаешь что это такое за отображение признаков. Смотришь в другом месте:

    А, так это просто функция между двумя векторными пространствами. А что такое векторное пространство и какие вообще его элементы? Смотришь в энциклопедии:

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

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


    1. EGA_production Автор
      02.01.2023 14:55
      -1

      Вы практикующий ml-специалист или просто взяли это с головы? Без обид, но описанный вами подход невероятно плох: лучше всё изучать по порядку, когда один раздел вытекает из другого т.к. в случае, если модель 'ляжет', то с таким пониманием математики, как предлагаете вы, у вас тупо не получится понять почему она работает не так как вам нужно. Должна быть крепкая база, которая позволит понимать математику, лежащую в основе алгоритмов машинного обучения. По-хорошему, вы должны уметь расписать от руки вычисления, по которым ищутся веса моделей и т.д.. К сожалению, просто прочитать статью с википедии и использовать fit/predict не прокатит.


      1. Nilmanifold
        02.01.2023 17:41

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

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

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