а м миронов машинное обучение
bashkirtsevich / reading.md
Для тех, кто хочет на русском языке почитать:
Джеймс Г., Уиттон Д., Хасти Т., Тибширани Р. Введение в статистическое обучение с примерами на языке R источник, Оглавление и отрывки из глав
Себастьян Рашка Python и машинное обучение источник
Хенрик Бринк, Джозеф Ричардс Машинное обучение источник
Хараламбос Марманис, Дмитрий Бабенко Алгоритмы интеллектуального Интернета. Передовые методики сбора, анализа и обработки данных источник
К. В. Воронцов. Математические методы обучения по прецедентам (теория обучения машин) источник
Мерков А.Б. Введение в методы статистического обучения источник
Аркадий Гелиг, Алексей Матвеев Введение в математическую теорию обучаемых распознающих систем и нейронных сетей. Учебное пособие источник
Мерков А.Б. Построение и обучение вероятностных моделей источник
Ричарт В., Коэльо П.Л. Построение систем машинного обучения на языке Python источник, Оглавление и отрывки из глав (тут больше практика по машинному обучению)
Вьюгин В. Математические основы машинного обучения и прогнозирования источник
Червоненкис А.Я. Теория обучения машин
Ричард С. Саттон, Эндрю Г. Барто Обучение с подкреплением источник
Андреас Мюллер, Сара Гвидо Введение в машинное обучение с помощью Python. Руководство для специалистов по работе с данными источник
Дэви Силен, Арно Мейсман Основы Data Science и Big Data. Python и наука о данных источник
Лепский А.Е., Броневич А.Г. Математические методы распознавания образов: Курс лекций источник
В. И. Донской Алгоритмические модели обучения классификации:обоснование, сравнение, выбор источник
Местецкий Л.М. Математические методы распознавания образов Курс лекций источник
Кристофер Д. Маннинг, Прабхакар Рагхаван Введение в информационный поиск источник
Юре Лесковец, Ананд Раджараман Анализ больших наборов данных источник, оглавление и отрывки из глав
Шлезингер М.И. Десять лекций по статистическому и структурному распознаванию образов источник
Для тех, кто хочет на русском языке посмотреть:
Высшая школа экономики «Введение в машинное обучение» источник Coursera
Специализация Машинное обучение и анализ данных включающая себя 6 курсов : источник Coursera
Видеолекции курса «Машинное обучение» от Школы анализа данных Яндекса источник на яндексе или источник на ютубе
Специализация Анализ Данных от Stepik (часть курсов из этой специализации отображена тут)
Курс от Stepik Нейронные сети источник
Видеолекциии (13шт.) Введение в анализ данных источник Mail.ru
Видеолекциии (1 семестр) Data Minig источник Mail.ru
Видеолекциии (2 семестр) Data Minig источник Mail.ru
Computer Science Center Машинное обучение, часть 1 (осень 2016) источник ютуб
Computer Science Center Машинное обучение, часть 2 (весна 2017) источник ютуб
Data Mining in Action 10 лекций по ML источник ютуб
Компьютерные науки Тренировки Machine Learning источник ютуб здесь люди делятся своим реальным опытом в ML
Высшая школа экономики, курс Линейная алгебра источник Coursera
Лекториум Линейная алгебра и аналитическая геометрия источник ютуб
МФТИ, курс Теория вероятностей для начинающих источник Coursera
МФТИ, курс Математика для всех источник Coursera
Курс от Stepik Основы статистики часть1,часть2, часть3
Курс от Stepik Математическая статистика источник
Курс от Stepik Введение в дискретную математику источник
Курс от Stepik Ликбез по дискретной математике источник
Курс от Stepik Введение в математический анализ источник
Курс от Stepik Математический анализ часть1, часть2
Курс от Stepik Анализ данных в R часть1, часть2
Computer Science Center Анализ данных на R в примерах и задачах (весна 2016) источник ютуб
Computer Science Center Анализ данных на R в примерах и задачах, часть 2 (весна 2017) источник ютуб
Канал на ютубе Основы анализа данных источник
KhanAcademyRussian Теор. вероятн-ей и комбинаторика источник ютуб
Прежде чем заниматься конкретно машинным обучением, рекомендую всё же ознакомится с книгами
С_тюарт Рассел, Питер Норвиг_ Искусственный интеллект. Современный подход источник
Джордж Ф. Люгер Искусственный интеллект. Стратегии и методы
решения сложных проблем источник
таким образом у вас сформируется более четкое понимание предметной области машинного обучения и сильно расширит ваш кругозор. Нейронные сети занимают важную позицию в машинном обучении, поэтому стоит ознакомится с книгой
Так же вы должны уметь производить предварительный анализ данных, что бы понять, какие методы машинного обучения можно применить к вашему набору данных или как его лучше подготовить, в этом вам помогут следующие книги:
Борис Миркин Введение в анализ данных. Учебник и практикум источник
Марина Архипова, Татьяна Дуброва Анализ данных. Учебник источник
Загоруйко Н.Г. Прикладные методы анализа данных и знаний источник
Мостеллер Ф., Тьюки Дж. Анализ данных и регрессия источник
Рубан А.И. Методы анализа данных
Уэс Маккинни Python и анализ данных источник (практика)
Роберт И. Кабаков R в действии. Анализ и визуализация данных на языке R источник (практика)
Вы должны знать хорошо математику (в особенности линейную алгебру), статистику, теорию вероятностей, дискретную математику. Я например неважно знаю математику и мне очень тяжело читать стандартные учебники, рассчитанные на то, что преподаватель сможет разжевать скупое описание формулы, поэтому для легкого порога вхождения рекомендую следующие книги (от основ и выше):
Стивен Х. Строгац Удовольствие от x. Увлекательная экскурсия в мир математики от одного из лучших преподавателей в мире источник
Юрий Шиханович Введение в современную математику. Начальные понятия источник
Рональд Л. Грэхем, Дональд Эрвин Кнут Конкретная математика. Математические основы информатики источник
Юрий Пухначев Математика без формул книга1, книга2
Риxард Курант, Герберт Роббинс Что такое математика? источник
Тарасов Л.В. Азбука математического анализа. Беседы об основных понятиях. Учебное пособие источник
Потом уже можно браться за стандартный учебник математического анализа
Статистика, теория вероятностей:
Гнеденко Б.В., Хинчин А.Я. Элементарное введение в теорию вероятностей источник
Сара Бослаф Статистика для всех источник
Чарльз Уилан Голая статистика. Самая интересная книга о самой скучной науке источник
Перечень будет дополнятся только если появится действительно стоящий курс или книга.
Миронов Андрей Михайлович
к.ф.-м.н., доцент
А.М.Миронов родился 4 августа 1966 года в г. Москве.
В 1981-1983 г. учился в физико-математической школе 18 при МГУ (в настоящее время – СУНЦ МГУ им. А.Н.Колмогорова).
А.М.Миронов учился на механико-математическом факультете МГУ им. М. В. Ломоносова. Дипломная работа была выполнена под руководством профессора Льва Анатольевича Скорнякова и посвящена построению универсальных линейных автоматов.
С 1989 года А.М.Миронов обучался в аспирантуре механико-математического факультета, которую закончил в 1992 году защитой кандидатской диссертации на тему «Морфизмы реакции для автоматов в категориях».
В 1986-1989 г. работал инженером-программистом в Главном вычислительном центре Госплана СССР.
С 1992 г. по 1994 г. работал в центре новых информационных технологий МГУ, в 1994-1997 г. преподавал на факультете вычислительной математики и кибернетики МГУ.
В 1996-1997 г. работал программистом в Московском Центре SPARC-технологий.
В 1997-2001 г. работал в должности research associate в Drexel University (Филадельфия, США) и в University of New Brunswick (Фредериктон, Канада).
А.М. Миронов преподаёт на мехмате МГУ, СУНЦ МГУ и в НИУ «Высшая Школа Экономики», читает курсы по теоретической информатике, верификации программ, криптографическим протоколам.
Область научных интересов. Теория автоматов, математическая теория программирования, математическая логика, информационная безопасность.
А.М.Миронов читает спецкурсы «Математическая теория программирования», «Вычислительная логика» и «Математические основы информационной безопасности», ведёт семинары по верификации программ. Имеет 45 публикаций.
Лекции Техносферы. Нейронные сети в машинном обучении
Представляем вашему вниманию очередную порцию лекций Техносферы. На курсе изучается использование нейросетевых алгоритмов в различных отраслях, а также отрабатываются все изученные методы на практических задачах. Вы познакомитесь как с классическими, так и с недавно предложенными, но уже зарекомендовавшими себя нейросетевыми алгоритмами. Так как курс ориентирован на практику, вы получите опыт реализации классификаторов изображений, системы переноса стиля и генерации изображений при помощи GAN. Вы научитесь реализовать нейронные сети как с нуля, так и на основе библиотеке PyTorch. Узнаете, как сделать своего чат-бота, как обучать нейросеть играть в компьютерную игру и генерировать человеческие лица. Вы также получите опыт чтения научных статей и самостоятельного проведения научного исследования.
Лекция 1. Основы нейронных сетей
Нейронные сети. Базовые блоки полносвязных нейронных сетей. Алгоритм обратного распространения ошибки.
Лекция 2. Подробности обучения нейронных сетей
Алгоритм обратного распространения ошибки для ветвящихся структур. Проблемы обучения нейронных сетей. Предобработка данных, аугментация, регуляризация. Стохастический градиентный спуск. Подготовка данных при помощи PyTorch.
Лекция 3. Библиотеки для глубинного обучения
Лекция 4. Свёрточные нейронные сети
Свертка. Пулинг. Светрочные нейронные сети. Примеры использования сверточных сетей. Интерпретация обученных моделей.
Лекция 5. Улучшение сходимости нейросетей
Инициализация весов: He, Xavier. Регуляризация: Dropout, DropConnect. Нормализация: batch normalization.
Лекция 6. Архитектуры глубинных сетей
Современные архитектуры сверточных сетей. Сети Inception и ResNet. Transfer learning. Применение нейронных сетей для задач сегментации и локализации.
Лекция 7. Методы оптимизации
Задача оптимизации. SGD, Momentum, NAG, Adagrad, Adadelta, Adam.
Лекция 8. Нейронные сети для снижения размерностей
Задача снижения размерности. MDS, Isomap. Метод главных компонент (PCA). Вывод главных компонент и доказательство метода множетелей Лагранжа. Автокодировщики. Denoising и разреженные автокодировщики.
Лекция 9. Рекуррентные сети
Рекуррентные сети. Обратное распространение ошибки сквозь время. LSTM-сети. GRU-сети. Многослойные рекуррентные архитектуры. Модификация dropout и батч-нормализации для рекуррентных сетей.
Лекция 10. Обработка естественного языка
Примеры задач. Обучение представлений: Word2Vec. Ускорение пары linear+softmax: hierarchical softmax, differentiated softmax. Генерация предложений. Модель Seq2Seq. Beam search для поиска лучшего ответа. Приемы для повышения разнообразности ответов.
Лекция 11. Соперничающие сети (GAN)
Генеративные и дискриминативные модели. Равновесие Нэша. Генеративные конкурирующие сети (GAN). Генеративные автокодировщики (AAE). Техника domain adaptation. Domain adaptation для перевода изображений между доменами. Wasserstein GAN.
Лекция 12. Вариационные кодировщики и Artistic Style
Модель вариационного автокодировщика (VAE). Интерпретация обученных моделей: Deep Dream. Перенос стиля: Artistic style. Ускорение стилизации.
Лекция 13. Обучение с подкреплением 1
Основные понятия обучения с подкреплением: агент, среда, стратегия, награда. Value function и Q-function. Уравнения Беллмана. Алгоритм Policy iteration.
Лекция 14. Обучение с подкреплением 2
Алгоритм Q-learning. Модельные подходы. Алгоритм DQN. Alpha Go.
Плейлист всех лекций находится по ссылке. Напомним, что актуальные лекции и мастер-классы о программировании от наших IT-специалистов в проектах Технопарк, Техносфера и Технотрек по-прежнему публикуются на канале Технострим.
Другие курсы Техносферы на Хабре:
Информацию обо всех наших образовательных проектах вы можете найти в недавней статье.
Что такое машинное обучение и как оно работает
Что такое машинное обучение?
Единого определения для machine learning (машинного обучения) пока нет. Но большинство исследователей формулируют его примерно так:
Машинное обучение — это наука о том, как заставить ИИ учиться и действовать как человек, а также сделать так, чтобы он сам постоянно улучшал свое обучение и способности на основе предоставленных нами данных о реальном мире.
Вот как определяют машинное обучение представители ведущих ИТ-компаний и исследовательских центров:
Nvidia: «Это практика использования алгоритмов для анализа данных, изучения их и последующего определения или предсказания чего-либо».
Университет Стэнфорда: «Это наука о том, как заставить компьютеры работать без явного программирования».
McKinsey & Co: «Машинное обучение основано на алгоритмах, которые могут учиться на данных, не полагаясь на программирование на основе базовых правил».
Вашингтонский университет: «Алгоритмы машинного обучения могут сами понять, как выполнять важные задачи, обобщая примеры, которые у них есть».
Университет Карнеги Меллон: «Сфера машинного обучения пытается ответить на вопрос: «Как мы можем создавать компьютерные системы, которые автоматически улучшаются по мере накопления опыта и каковы фундаментальные законы, которые управляют всеми процессами обучения?»
История машинного обучения
Дмитрий Ветров, профессор-исследователь, заведующий Центром глубинного обучения и байесовских методов Факультета компьютерных наук ВШЭ, отмечает: изначально компьютеры использовались для задач, алгоритм решения которых был известен человеку. И только в последние годы пришло понимание, что они могут находить способ решать задачи, для которых алгоритма решения нет или он не известен человеку. Так появился искусственный интеллект в широком смысле и технологии машинного обучения в частности.
Как связаны машинное и глубокое обучение, ИИ и нейросети
Нейросети — один из видов машинного обучения.
Глубокое обучение — это один из видов архитектуры нейросетей.
Глубокое обучение также включает в себя исследование и разработку алгоритмов для машинного обучения. В частности — обучения правильному представлению данных на нескольких уровнях абстракции. Системы глубокого обучения за последние десять лет добились особенных успехов в таких областях как обнаружение и распознавание объектов, преобразование текста в речь, поиск информации.
Какие задачи решает машинное обучение?
С помощью машинного обучения ИИ может анализировать данные, запоминать информацию, строить прогнозы, воспроизводить готовые модели и выбирать наиболее подходящий вариант из предложенных.
Особенно полезны такие системы там, где необходимо выполнять огромные объемы вычислений: например, банковский скоринг (расчет кредитного рейтинга), аналитика в области маркетинговых и статистических исследований, бизнес-планирование, демографические исследования, инвестиции, поиск фейковых новостей и мошеннических сайтов.
В Леруа Мерлен используют Big Data и Machine Learning, чтобы находить остатки товара на складах.
В маркетинге и электронной коммерции машинное обучение помогает настроить сервисы и приложения так, чтобы они выдавали персональные рекомендации.
Стриминговый сервис Spotify с помощью машинного обучения составляет для каждого пользователя персональные подборки треков на основе того, какую музыку он слушает.
Сегодня ключевые исследования сфокусированы на разработке машинного обучения с эффективным использованием данных — то есть систем глубокого обучения, которые могут обучаться более эффективно, с той же производительностью, за меньшее время и с меньшими объемами данных. Такие системы востребованы в персонализированном здравоохранении, обучении роботов с подкреплением, анализе эмоций.
Китайский производитель «умных» пылесосов Ecovacs Robotics обучил свои пылесосы распознавать носки, провода и другие посторонние предметы на полу с помощью множества фотографий и машинного обучения.
«Умная» камера на базе микрокомпьютера Raspberry Pi 3B+ с помощью фреймворка TensorFlow Light научилась распознавать улыбку и делать снимок ровно в этот момент, а также — выполнять голосовые команды.
В сфере инвестиций алгоритмы на базе машинного обучения анализируют рынок, отслеживают новости и подбирают активы, которые выгоднее всего покупать именно сейчас. При этом с помощью предикативной аналитики система может предсказать, как будет меняться стоимость тех или иных акций за конкретный период и корректирует свои данные после каждого важного события в отрасли.
Согласно исследованию BarclayHedge, более 50% хедж-фондов используют ИИ и машинное обучение для принятия инвестиционных решений, а две трети — для генерации торговых идей и оптимизации портфелей.
Наконец, машинное обучение способствует настоящим прорывам в науке.
Нейросеть AlphaFold от DeepMind в 2020 году смогла расшифровать механизм сворачивания белка. Над этой задачей ученые-биологи бились больше 50 лет.
Как устроено машинное обучение
По словам Дмитрия Ветрова, процесс машинного обучения выглядит следующим образом.
Есть большое число однотипных задач, в которых известны условие и правильный ответ или один из возможных ответов. Например, машинный перевод, где условие — фраза на одном языке, а правильный ответ — ее перевод на другой язык.
Модель машинного обучения, например, глубинная нейронная сеть, работает по принципу «черного ящика», который принимает на вход условие задачи, а на выходе выдает произвольный ответ. Например, какой-либо текст на втором языке.
У «черного ящика» есть дополнительные параметры, которые влияют на то, как будет обрабатываться входной сигнал. Процесс обучения нейросети заключается в поиске таких значений параметров, при которых она будет выдавать ответ, максимально близкий к правильному. Когда мы настроим параметры нужным образом, нейросеть сможет правильно (или максимально близко к этому) решать и другие задачи того же типа — даже если никогда не знала ответов к ним.
Основные виды машинного обучения
1. Классическое обучение
Это простейшие алгоритмы, которые являются прямыми наследниками вычислительных машин 1950-х годов. Они изначально решали формальные задачи — такие, как поиск закономерностей в расчетах и вычисление траектории объектов. Сегодня алгоритмы на базе классического обучения — самые распространенные. Именно они формируют блок рекомендаций на многих платформах.
Но классическое обучение тоже бывает разным:
Обучение с учителем — когда у машины есть некий учитель, который знает, какой ответ правильный. Это значит, что исходные данные уже размечены (отсортированы) нужным образом, и машине остается лишь определить объект с нужным признаком или вычислить результат.
Такие модели используют в спам-фильтрах, распознавании языков и рукописного текста, выявлении мошеннических операций, расчете финансовых показателей, скоринге при выдаче кредита. В медицинской диагностике классификация помогает выявлять аномалии — то есть возможные признаки заболеваний на снимках пациентов.
Обучение без учителя — когда машина сама должна найти среди хаотичных данных верное решение и отсортировать объекты по неизвестным признакам. Например, определить, где на фото собака.
Эта модель возникла в 1990-х годах и на практике используется гораздо реже. Ее применяют для данных, которые просто невозможно разметить из-за их колоссального объема. Такие алгоритмы применяют для риск-менеджмента, сжатия изображений, объединения близких точек на карте, сегментации рынка, прогноза акций и распродаж в ретейле, мерчендайзинга. По такому принципу работает алгоритм iPhoto, который находит на фотографиях лица (не зная, чьи они) и объединяет их в альбомы.
2. Обучение с подкреплением
Это более сложный вид обучения, где ИИ нужно не просто анализировать данные, а действовать самостоятельно в реальной среде — будь то улица, дом или видеоигра. Задача робота — свести ошибки к минимуму, за что он получает возможность продолжать работу без препятствий и сбоев.
Обучение с подкреплением инженеры используют для беспилотников, роботов-пылесосов, торговли на фондовом рынке, управления ресурсами компании. Именно так алгоритму AlphaGo удалось обыграть чемпиона по игре Го: просчитать все возможные комбинации, как в шахматах, здесь было невозможно.
3. Ансамбли
Это группы алгоритмов, которые используют сразу несколько методов машинного обучения и исправляют ошибки друг друга. Их получают тремя способами:
Ансамбли работают в поисковых системах, компьютерном зрении, распознавании лиц и других объектов.
4. Нейросети и глубокое обучение
Самый сложный уровень обучения ИИ. Нейросети моделируют работу человеческого мозга, который состоит из нейронов, постоянно формирующих между собой новые связи. Очень условно можно определить их как сеть со множеством входов и одним выходом. Нейроны образуют слои, через которые последовательно проходит сигнал. Все это соединено нейронными связями — каналами, по которым передаются данные. У каждого канала свой «вес» — параметр, который влияет на данные, которые он передает.
ИИ собирает данные со всех входов, оценивая их вес по заданным параметрами, затем выполняет нужное действие и выдает результат. Сначала он получается случайным, но затем через множество циклов становится все более точным. Хорошо обученная нейросеть работает, как обычный алгоритм или точнее.
Настоящим прорывом в этой области стало глубокое обучение, которое обучает нейросети на нескольких уровнях абстракций.
Здесь используют две главных архитектуры:
Нейросети с глубоким обучением требуют огромных массивов данных и технических ресурсов. Именно они лежат в основе машинного перевода, чат-ботов и голосовых помощников, создают музыку и дипфейки, обрабатывают фото и видео.
Проблемы машинного обучения
Перспективы машинного обучения: не начнет ли ИИ думать за нас?
Вопрос о том, не сделает ли машинное обучение ИИ умнее человека, изначально не совсем корректный. Дело в том, что в природе нет универсальной иерархии в плане интеллекта. Мы по умолчанию считаем себя умнее остальных существ, но, к примеру, белка способна запоминать местонахождения тысячи тайников с запасами, что не под силу даже очень умному человеку. А у осьминогов каждое щупальце способно мыслить и действовать самостоятельно.
Так же и с ИИ: он уже превосходит нас во всем, что касается сложных вычислений, но по-прежнему не способен сам ставить себе новые задачи и решать их, подбирая нужные данные и условия. Это ограничение в последние годы пытаются преодолеть в рамках сильного ИИ, но пока безуспешно. Надежду на решение этой проблемы внушают квантовые компьютеры, которые выходят за пределы обычных вычислений.
Зато мы в ближайшем будущем сможем заметно расширить свои возможности с помощью ИИ, передавая ему рутинные и затратные операции, общаясь и управляя техникой при помощи нейроинтерфейсов.