×Закрыть

DOU Books: 5 книг по машинному обучению, которые советует Артем Чернодуб, Chief Scientist в Clikque Technology

От редакции: в рубрике DOU Books участники сообщества рассказывают о пяти любимых книгах — тех, которые меняют мировоззрение и могут быть полезны читателям-коллегам.

[Артем Чернодуб, Chief Scientist в Clikque Technology. Более 10 лет опыта работы с алгоритмами машинного обучения, распознавания изображений и нейронных сетей. Кандидат технических наук, преподаватель в Украинском католическом университете, член программного комитета нескольких научных конференций IEEE]

— Слушай, а ты, вообще, понимаешь, что делаешь?
— У меня очень точные данные по анатомии человека.
— Ну конечно. Это же помогает тебе эффективнее нас убивать, да?
— Именно так!

© к/ф «Терминатор 2», сцена с зашиванием Т-800 раны Сары Коннор


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

Ian Goodfellow, Yoshua Bengio, Aaron Courville «Deep Learning»

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

Эта книга хорошо подойдет для любого уровня подготовки. Пробовали ли вы запускать нейронные сети, читали научные статьи или блоги на эту тему и хотите углубить и систематизировать свои знания, или же у вас уже есть своя публикация на NIPS, у вас должна быть эта книга! Она хорошо структурирована, содержит приличное количество математики (хотя, конечно, чем более свежие подходы приводятся, тем меньше становится формул и больше текста) и ссылки на оригинальные статьи. Также книга хороша в роли справочника и источника для цитирования вместо книги С. Хайкина «Нейронные сети: полный курс» (2006), сейчас уже устаревшей. Это must-have книга для каждого, кто работает с нейронными сетями. Как минимум, чтобы класть ее на ночь под подушку, чтобы знания сами впитывались во время сна, поскольку последовательно прочитать более 1000 страниц, конечно, никаких сил и времени нет.

Christopher Bishop «Pattern Recognition and Machine Learning»

На мой взгляд, лучшая книга по машинному обучению всех времен и народов. Байес наше все! Дает фундаментальные объяснения принципов работы методов машинного обучения с точки зрения теории вероятностей. Несмотря на уже немаленький возраст, все еще более чем актуальна. Книга очень цельная и самосогласованная: различные области и методы «переварились» в голове Кристофера Бишопа и вылились в связную математическую теорию, объясняющую различные аспекты машинного обучения строго, в единой терминологии и компактно. Рекомендуется всем, кто устал от эвристик в машинном обучении и хочет понять всю красоту и мощь математики в этой области.

Более свежий конкурирующий аналог — Kevin P. Murphy «Machine Learning: A Probabilistic Perspective», 2012.

Луис Педро Коэльо, Вилли Ричард «Построение систем машинного обучения на языке Python»

Очень практическая книга, написанная специально для новичков. В отличие от двух предыдущих трактатов, математики она почти не содержит. Зато есть быстрое введение в популярные python-библиотеки для машинного обучения и визуализации (numpy/scikit-learn/matplotlib), дается базовая культура работы с данными и интересные задачки-примеры, сделанные на коленке from scratch. А ведь все знают, что нет лучше способа понять, как работает сложная система, чем собрать ее самому на коленке from scratch! Среди примеров для воспроизведения есть: рекомендательная система для онлайн магазина, анализ эмоциональной окраски твитов, классификация музыкальных жанров по аудио, классификация музыкальных изображений и даже есть пример с обсчетом больших данных на AWS. Хотя эта книга немного сыровата и содержит небольшие ошибки, достоинств у нее явно больше, чем недостатков. Рекомендована девелоперам, которые хотят заняться машинным обучением. Достойная альтернатива на ту же тему — Stephen Marsland «Machine Learning: An Algorithmic Perspective, Second Edition», 2014.

arXiv.org

Позволю себе читинг, приведя вместо книги сайт-библиотеку научных статей arXiv.org (произносится как «архив»). Здесь публикуются препринты научных статей с самыми свежими результатами, часто даже перед их публикацией на конференциях или в научных журналах. Я встречал девелоперов, интересующихся AI/ML, которые без проблем читают длинные мануалы на английском и разбирают сложный чужой код, но почему-то стесняются читать научные статьи в оригинале. Напрасно! Во-первых, читать научные статьи (или «пейперы», прилипло к ним такое словечко!) это просто: хорошие научные статьи написаны по принципу «мыльной оперы», когда сценарий изложения материала очень стандартный: обзор существующих решений, мотивация своего решения и его описание, эксперимент и анализ его результатов. Если потренироваться, то читать их на самом деле легче, чем статьи на Хабре или популярные блоги в силу лучшей структурированности. Во-вторых, сейчас к научным статьям в области машинного обучения принято прилагать код на GitHub, который можно попробовать у себя, на своих примерах и для своих задач. Пробуйте! Если вы хотите быть в курсе самых последних новостей в мире машинного обучения, лучше arXiv.org ничего не бывает.

Владимир Лобас «Желтые короли. Записки нью-йоркского таксиста»

Если машины все-таки победят, нам всем придется переквалифицироваться в таксисты. И тут нам на помощь придет очень интересный опыт советского диссидента и киевлянина Владимира Лобаса, который в семидесятых уехал из СССР по еврейской визе и вкусил трудный хлеб нью-йоркского кэбби. Просто классная проза, которая читается на одном дыхании. Рекомендую!

LinkedIn

19 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Вопрос по теме. Возникают задачи на поиск соответствий, например, фотография с распознанными лицами и распознанный список людей из подписи к фотографии. Паттерн достаточно примитивный. Чтобы автоматически соотносить одно с другим, показав пример на какой-то выборке, это в какую сторону копать?

Очень нечетко ты написал, что у тебя есть и что ты хочешь. Ибо в зависимости от этого существует туева хуча путей и подходов. Перепиши вопрос четче.

Есть типа такой картинки goo.gl/q25my2, лица уже распознаны, имена уже тоже распознаны (допустим они есть все, а не как на картинке). На мой профанский взгляд, я хочу создать учебный датасет, в котором укажу как правильно сопоставлять имена и лица, натренировать на нем сеть, а потом скормить весь датасет.

Ну с NN я не подскажу. Я их очень плохо знаю. По сути одно лицо у тебя это один выходной класс. А используешь ты циферку или буковки для названия класса — это пофиг.
Но боюсь, что тебе нужно две части алгоритма, один выделяет собственно лица, второй уже определяет в какой класс запихать конкретно. Но я не уверен. В любом случае NN тут не простая.
Если ты не дока в NN я бы начал с простого с GMM SVM и возможно с добавлением UBM подхода к нему.
Ну или тупо загнать в какой tensorflow и посмотреть, что получиться.

Просто в первом посте у тебе получалась другая задачка для которой можно и knn и другое подобное использовать.

А что у вас на выходе распознавателя лиц — не имена?

на выходе распознавателя лиц — лица, а в распознавателе имен — имена =\

Наверное, неправильно выразился. Не распознанные лица, а детектированные. Т.е. на выходе просто координаты прямоуголника )

Так это и близко еще не идентификация (распознавание).
У тебя тут два пути:
1. Выделять векторы признаков, затем по ним или NN или что попроще.
2. Применить что-то типа CNN и DNN сразу к изображению.
Тут путей море и какой у тебя получиться и сработает не скажешь. Обычно пробуешь разные и смотришь, что получается и после уже выбираешь один и доводишь его до нужного уровня.
И не забывай, что на выходе ты получишь принадлежность конкретного прямоугольника к некоторому классу. В твоем случае класс состоит из изображений лица конкретного человека.
Ну и еще аббревиатура, что тебе поможет k-fold.

В речи, для идентификации по голосу никто не юзает NN и HMM. Не нужно. Сейчас используют как параметры так называемые «собственные голоса» eigen voices и UBM-GMM подход. Внутри его SVM используется.
В простейшем случае для каждого произнесения строиться GMM модель, затем сравнивается с другими по KL мере. UBM-GMM сложнее, но устойчивее к изменению голоса и окружения.

можно с этого начать drive.google.com/...​qQp6QMMfOjNzE1M1I1bHdORGc
там есть какие-то данные, но я их толком не понимаю

Ничего там страшного нет. Но на всё это нужно время и большое желание.
А в это время нужно еще что-то кушать.

Да, хотел, но вот не получилось одновременно то и другое. Буду дальше железками заниматься, наверное.

Именно. Я настолько же не лезу в ембедед.

Спасибо. Еще хороша новая книга Hands-On Machine Learning with Scikit-Learn and TensorFlow от Aurélien Géron (много доступных примеров), ну а также Introduction to Information Retrieval Маннинга — это уже классика. Плюс на Курсере началась новая специализация по deep learning от Andrew Ng.

Рекомендована девелоперам, которые хотят заняться машинным обучением

помітив тенденцію — Поганий той девелопер який не хоче стати Дата Сайтістом.

Дата-саентологом.

Спасибо! Мне понравилась книга «Программируем коллективный разум» Сегарана, она довольно старая и базовая, но понятно и интересно написана — для начального уровня ок.

Я встречал девелоперов, интересующихся AI/ML, которые без проблем читают длинные мануалы на английском и разбирают сложный чужой код, но почему-то стесняются читать научные статьи в оригинале

Это может быть потому, что привычка читать мануалы и код есть, ментальные модели для них есть, а для научных статей и формул — нет. Или не было никогда, или учёба в университете слишком давно закончилась.

Мне для простейших формул понадобилось брать листочек, каждую букву отдельно записывать со своим определением, и тогда получалось понять, о чём речь. За годы программирования привык-то к переменным типа corpus_size, а не N, и намного привычнее и понятнее запись for doc in documents, а не d ∈ D.

Прикольный трабл. Не предполагал, что такой может быть.

А под статьями все давно понимают препринты. Сложность в их чтении, что там ссылка на ссылке на предыдущие работы и работы других. В итоге, чтобы понять статью тебе надо пробраться по всей цепочке ссылок часто. И дополнительная сложность, что многие статьи по ссылкам хер найдешь — за большинство из них бабки просят. В итоге или многие часы рыскания по инетам, или попытки понять ход мыслей писателя по препринту, или баксов 500-1000 на скачивание других статей и препринтов.

Я курил Artificial Intelligence: A Modern Approach, потребовалось заново выработать привыкание к нотации. Хорошая книжка, тяжёлая)

Подписаться на комментарии