Машинное обучение — с чего начинать программисту?
На первых порах нужно следующие: Умение работы с матрицами. Это их сложение и умножение. Понимание что такое диагональная, обратная и транспонированная матрица. Определители, базы и т.д. в начале не нужны. Мой совет - взять задачник по линейной алгебре и решить примеров 10 по этим темам.  Понимание что такое производная на уровне "тангенс угла наклона касательной в точке". Неплохо было бы понять что такое градиент, так как половина обучающих алгоритмов на нем основано.  Из теории вероятности полезны основные понятия, а также совместная и условные вероятности. Ну и знать что такое формула Байеса.   Ну и статистика. Это распределения (самое важное - это понять что такое распределение Гаусса), знание что такое математическое ожидание, дисперсия (или стандартное отклонение) ну и понимание что такое плотность распределения вероятности.  
По линейной алгебре и производным могу посоветовать "Вся высшая математика Том I   - Краснов М., Киселев А., Макаренко Г., Шакин Е., Заляпин В". Но там много лишнего для начинающего. 
По статистике и теории вероятности могу посоветовать "элементарный курс теории вероятностей и математической статистики - А. Бородин" до 100-й страницы будет достаточно.
Мой совет - это не зарываться в учебники в начале. Можно нарыть неплохое статьи по этим темам на хабреи там почитать. В идеале лучше всего паралелльно изучать теорию и практику.  
В некоторых книгах по ML все эти темы затрагиваются. Могу посоветовать Python Machine Learning (Sebastian Raschka). А если есть проблемы с английским языком - Построение систем машинноrо обучения на языке Python -	Луис Педро Коэльо, Вилли Ричарт.
Будет полезно следить за новостями и новыми разработками в сфере машинного обучения, ИИ и нейросетей. В группе https://vk.com/neural_nets и канале https://t.me/aichannel в телеграме каждый день публикуют новости и статьи, подборки учебников. Попробуйте посмотреть там.