Преподавание машинного обучения

Материал из MachineLearning.

Перейти к: навигация, поиск

Содержание

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

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

Поскольку это семинар, на основной странице также можно высказывать личные мнения; желательно сопровождать их подписью участника.

Машинное обучение — математический или инженерный курс?

Согласно международным рекомендациям по преподаванию информатики в университетах ACM/IEEE Computing Curricula 2001 информатика (computer science) подразделяется на 14 областей, одна из которых — интеллектуальные системы (intelligent systems). Эта область, в свою очередь, имеет 10 разделов, один из них — машинное обучение и нейронные сети (machine learning and neural networks). Для непрофильных специальностей этот курс считается факультативным.

Типовые программы этого курса рассчитаны на расширение кругозора будущих IT-специалистов и, мягко говоря, поверхностны. Они ни в коей мере не рассчитаны на будущего научного работника или разработчика новых методов машинного обучения. Они лишь дают представление о том, какие задачи возникают на практике, какими методами их можно решать, в чём их основные принципы, какие существуют инструментальные средства, иногда — какие подводные камни ждут будущего BI-аналитика. Далеко не все методы освещаются. Теория вообще не рассматривается.

Вопрос: стоит ли ориентироваться на этот международный стандарт?

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

Математический курс нужен узкому кругу специалистов, которые предположительно будут заниматься разработкой новых методов и решением принципиально новых задач. Потребность в таких специалистах — около 5%. Инженерный курс нужен широкому кругу специалистов, которые предположительно будут заниматься применением стандартных методов для решения более-менее типичных задач. Он также нужен будущим IT-руководителям, которые обязаны не только знать о возможностях современных методов анализа данных, но и уметь доносить своё понимание до лиц, принимающих решения. Потребность в таких специалистах — около 95%. Кстати, без этих 95% инженеров, бизнес-аналитиков и IT-менеджеров (фильтрующих задачи на стандартные и нестандартные) те 5% математиков вообще не имеют шансов найти работу по специальности. (К.В.Воронцов 22:33, 10 июля 2008 (MSD))

Курсов машинного обучения «для инженеров» в мире очень много. Математических курсов сравнительно мало, и они очень разные; каждый несёт на себе отпечаток конкретной школы. Обычно это спецкурсы на кафедрах соотвествующего профиля. Попытки найти «золотую середину» предпринимаются в тех университетах, где даётся хорошее базовое математическое образование. Пример — курс Machine Learning в MIT, разработанный Tommi Jaakkola. (К.В.Воронцов 22:33, 10 июля 2008 (MSD))

Думаю, что каждая кафедра решает вопрос, поставленный выше, исходя из уровня подготовки собственных студентов. Если у студентов хорошая математическая подготовка, зачем нужно читать им инженерный курс, который покажется им слишком простым и доступным для самостоятельного изучения? (Strijov 16:38, 11 июля 2008 (MSD))

Вряд ли возможно сделать хороший математический курс, не пройдя предварительно или не «встроив внутрь» элементы инженерного курса. Иначе получится обсуждение интересных, но оторванных от жизни проблем. Отрицательный пример — курс математической статистики в лучших вузах страны — МФТИ и ВМиК МГУ, после прослушивания которых студент может доказать теорему Пирсона и вывести неравенство Рао-Крамера, но не понимает, какие статистические тесты и в каких задачах надо применять. Этому должен учить инженерный курс прикладной статистики (которого математикам вообще не читают). Об этом много сказано у проф. А. И. Орлова. Моё мнение — прикладной курс, как более простой, должен идти раньше, давая мощную мотивацию для изучения математического курса. В 2008-9 году, читая по сути инженерный курс ММРО на ВМиК, попробую параллельно вести математический спецкурс COLT, связав их параллельно «лекция-к-лекции». — К.В.Воронцов 11:12, 13 июля 2008 (MSD)

Методика преподавания

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

  • Насколько повышается эффективность преподавания при использовании слайдов?
  • Надо ли использовать наряду со слайдами раздаточные материалы? Когда материал запоминается лучше и дольше: когда студент пишет конспект лекции рукой или когда видит хорошо продуманные слайды с графикой и примерами, которые невозможно воспроизвести мелом на доске за разумное время?
  • Как организовать практикум, чтобы это была эффективная самостоятельную работу студентов? Делать упор на разработку или на применение методов? На каком средстве: Matlab или C++ или R или WEKA или RapidMiner? Делать проекты индивидуальные или парные?
  • Какие задачи и вопросы давать для контроля знаний?

Некоторые удачные методические приёмы

Предлагается пополнять коллекцию.

  • В начале курса посвятить одну лекцию описанию примеров (от 3 до 10) разнообразных прикладных задач «из жизни». (К.В.Воронцов 22:33, 10 июля 2008 (MSD))
  • В конце курса (например, на консультации перед экзаменом) нарисовать «карту курса», где показать взаимосвязи и сходство различных методов. (К.В.Воронцов 22:33, 10 июля 2008 (MSD))
  • Рассказав метод, в явном виде перечислить его достоинства и недостатки; затем рассказать о путях устранения недостатков. (К.В.Воронцов 22:33, 10 июля 2008 (MSD))

От проблемы к методу, а не наоборот

Статистическое мышление — статья сотрудников Центра Статистических Технологий (Санкт-Петербург).

Основные идеи:

  • Классический подход к обучению статистике по схеме «название метода → алгоритм расчета → интерпретация результатов → примеры» не годится. Получение знаний в области прикладной статистики должно проходить от проблемы к методу, а не наоборот. Осознав прикладную значимость, гораздо легче перейти к теории. Когда 20-летниему человеку говорят про дисперсионный анализ на абстрактных примерах, 99,9% полученных знаний уходят в пустоту.
  • Предлагаемый подход: «прикладная задача → постановки проблем → выбор метода(ов) → применение и интерпретация с использованием стандартного инструментария → формулы и алгоритмы».
  • Далеко не многие понимают, что в 80% случаев статистические методы используются как средство доказательства своих идей или проверки гипотез.

Практикум в рамках курса Прикладная регрессия и оптимизация

  • Студентам назначаются задания из расчета 32-36 часов самостоятельной работы в семестр.
  • Предполагается, что они программируют на С/++/# и им достаточно одной лекции (с иллюстрацией основных приемов), чтобы разобраться в программировании Matlab (SciLab, Octave). NB: Mathematica и Gap потребуют две лекции, одна из них -- введение в функциональное программирование и компьютерную алгебру.
  • Выставляются рекомендации по организации выполнения работы и проведения вычислительных экспериментов (в частности, пожелания пользоваться обозначениями, введенными в лекциях). NB: план лекций, вопросы на экзамене, задачи для самостоятельного решения доступны.
  • Доступны примеры программ и вычислительных экспериментов, это мотивирует к написанию красивого кода (сейчас идет подготовка к сезону 2008-осень, но все равно можно посмотреть, инструкции здесь).
  • Результаты самостоятельной работы и докумениация к ним складывается на ftp-сервер до начала экзаменов так, чтобы оставалась возможность написать рецензию и указать, что надо доработать. NB: вариант с flash memory stick очень утомляет, т.к. по опыту, 4 из 5 студентов несут вирусы, на убиение которых уходит время.

Есть три варианта выполнения студентами «инженерного курса».

  1. Он не делается вообще (к счастью, такого еще не случалось).
  2. Студенты работают первые 4 недели, потом не работают, потом работают последние две недели.
  3. Работа делается в последние две недели (при этом число фактически отработанных часов уменьшается).

Основная проблема, которая не решена:

  • как организовать работу, чтобы кроме лекций, несколько часов каждую неделю было посвящено практике (которая, по моему мнению, и есть «инженерный курс» )?

Strijov 16:38, 11 июля 2008 (MSD)

Терминология

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

Книги, которые можно выбрать за «скелет» курса

  1. Hastie, T., Tibshirani, R., Friedman, J. The Elements of Statistical Learning, 2nd edition. — Springer, 2009. — 533 p.  (подробнее)

Дополнительная литература

  1. Загоруйко Н. Г. Прикладные методы анализа данных и знаний. — Новосибирск: ИМ СО РАН, 1999. — 270 с. — ISBN 5-86134-060-9  (подробнее)
  2. Журавлёв, Ю. И., Рязанов, В. В., Сенько, О. В. «Распознавание». Математические методы. Программная система. Практические применения. — М.: ФАЗИС, 2006. — 176 с.  (подробнее)

Курсы

Личные инструменты