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

Материал из 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)

Полностью согласен с К.В.Воронцовым: математический курс не должен быть оторван от прикладного. На ВМК ННГУ мы разработали и начали чтение вводного курса по машинному обучению. Сделан упор на описание конкретных практических задач и алгоритмов. Даются основы теории Вапника–Червоненкиса. После такого курса, считаю, студенты готовы к тому, чтобы прослушать и усвоить более углубленный математический курс. — K-3 18:38, 4 августа 2008 (MSD)

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

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

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

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

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

  • В начале курса посвятить одну лекцию рассказу о разнообразных прикладных задачах «из жизни», от 3 до 10. (К.В.Воронцов 22:33, 10 июля 2008 (MSD))
  • В конце курса (например, на консультации перед экзаменом) нарисовать «карту курса», где показать взаимосвязи и сходство различных методов. (К.В.Воронцов 22:33, 10 июля 2008 (MSD))
  • Рассказав метод, в явном виде перечислить его достоинства и недостатки; затем рассказать о путях устранения недостатков. (К.В.Воронцов 22:33, 10 июля 2008 (MSD))
  • Спецкурс для небольшой аудитории (5–20 человек) хорошо проводить в режиме лекции со слайдами, время от времени вызывая к доске студента с просьбой доказать вспомогательное утверждение, рассмотреть пример или частный случай. Для ускорения процесса преподаватель может немного подсказывать студенту. Аудитория вынуждена внимательно следить и писать конспект, несмотря на доступность слайдов в Интернете.
  • Проведение конкурса на лучшее решение практической задачи машинного обучения по правилам обычным для такого вида конкурсов. См., например, Performance Prediction Challenge. В начале семестра становится доступной некоторая обучающая выборка. В конце семестра студентам предоставляется возможность проверить построенные ими классификаторы на проверочной выборке. Далее студенты загружают тестовые данные (без значений выходной переменной) и посылают организатором найденные значения выходной переменной. Предложено В.Ерухимовым и И.Чикаловым. Испытано в курсе машинного обучения в ННГУ. K-3 19:16, 4 августа 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)

Гибкий практикум

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

  • Программирование алгоритмов. Реализовать и протестировать какой-нибудь стандартный метод, плюс его модификацию, «заточенную» под какой-нибудь частный случай. Студент пишет отчёт, содержащий результаты сравнения качества работы стандартного и модифицированного методов на стандартных и нестандартных задачах. Работает ли модифицированный метод лучше в нужных частных случаях, как предполагалось?. Исходные данные могут быть как модельными, так и реальными, но «рафинированными».
  • «Технологическое» программирование. Разработать и реализовать среду для тестирования совокупности алгоритмов на совокупности задач (см. Полигон алгоритмов). Возможны ограничения на класс задач, например: классификация с большим числом классов, прогнозирование временных рядов, коллаборативная фильтрация. Можно предусмотреть веб-интерфейс и/или распределённые вычисления. В данном случае целесообразны коллективные проекты с распределением ролей.
  • Бизнес-аналитика (для тех, кто стремится быть «ближе к жизни»). Обработать реальные «нерафинированные» данные какой-нибудь практической задачи. Разрешается пользоваться любыми средствами, включая готовые реализации методов. Постановку задачи также сформулировать «от лица заказчика», то есть не задавать чёткого функционала качества. Студент должен самостоятельно разобраться в предметной области и сформулировать критерии качества, постановку задачи, обоснованно выбрать методы решения, воспользоваться стандартным инструментарием.
  • Для теоретиков и прочих не-любителей программировать и решать реальные задачи. Написать для MachineLearning.ru обзорную статью, либо несколько статей про конкретные методы, либо несколько рефератов в виде страниц публикаций. Критерии: объём, полнота раскрытия темы, число использованных источников, наличие иллюстративных примеров, и т.д.
  • Для троечников и прочих слабо мотивированных. Выполнить задание, близкое к теме дипломной работы, по согласованию с научным руководителем. Однако в таком случае оценка не может быть выше 4.

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

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

К.В.Воронцов 22:36, 16 июля 2008 (MSD)

Примение информационных технологий в учебном процессе

  • Путеводитель для преподавателей по миру современных информационных технологий. 18 июня 2008 г. (файл PDF,10Мб) — документ, подготовленный авторским коллективом Международного Консорциума «Электронный университет» и LBS Education при поддержке Microsoft. Представлен обзор возможностей информационных технологий для преподавателей вузов. Путеводитель состоит из двух основных разделов — «Использование современных технологий в учебном процессе» и «Научная работа и разработка УМК». В первом разделе рассматривается процесс преподавания в такой последовательности: подготовка к занятиям, проведение обучения, проведение контрольных мероприятий, а также планирование и организационный контроль. Второй раздел, представляет собой совокупность следующих блоков: организация научной работы, поиск и работа с источниками, работа с документацией НИР и организация НИР в распределенном университете.
  • Библиотека учебных курсов Microsoft, в том числе Методические пособия курсов повышения квалификации преподавательского состава в помощь преподавателям по обновлению курсов и внедрению новейших технологий в процесс обучения студентов.
  • www.e-teaching.ru — портал «Эффективная работа преподавателя» о программных продуктах и информационных технологиях, с примерами их практического применения.

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

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

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

  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 с.  (подробнее)

Курсы

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