Преподавание машинного обучения
Материал из MachineLearning.
(→Математический или инженерный курс (организация практикума)) |
|||
Строка 49: | Строка 49: | ||
Обычно это спецкурсы на кафедрах соотвествующего профиля. | Обычно это спецкурсы на кафедрах соотвествующего профиля. | ||
- | Попытки найти «золотую середину» предпринимаются в тех университетах, | + | Попытки найти «золотую середину» предпринимаются в тех университетах, где даётся хорошее базовое математическое образование. Пример — курс [http://courses.csail.mit.edu/6.867/lectures.html Machine Learning] в MIT, разработанный [http://people.csail.mit.edu/tommi Tommi Jaakkola]. (''[[Участник:Vokov|К.В.Воронцов]] 22:33, 10 июля 2008 (MSD)'') |
- | где даётся хорошее базовое математическое образование. | + | |
- | Пример — курс [http://courses.csail.mit.edu/6.867/lectures.html Machine Learning] | + | Думаю, что каждая [[Интеллектуальные системы (кафедра МФТИ)|кафедра]] решает вопрос, поставленный выше, исходя из уровня подготовки собственных студентов. Если у студентов хорошая математическая подготовка, зачем нужно читать им инженерный курс, который покажется им слишком простым и доступным для '''самостоятельного''' изучения? (''[[Участник:Strijov|Strijov]] 16:38, 11 июля 2008 (MSD)'') |
- | в MIT, разработанный [http://people.csail.mit.edu/tommi Tommi Jaakkola]. | + | |
== Методика преподавания == | == Методика преподавания == | ||
+ | Предлагается в этом разделе ставить вопросы, а ниже обсуждать удачный и неудачный опыт. | ||
- | |||
* Насколько повышается эффективность преподавания при использовании слайдов? | * Насколько повышается эффективность преподавания при использовании слайдов? | ||
- | * Надо ли использовать наряду со слайдами раздаточные материалы? Когда материал запоминается лучше и дольше: когда студент пишет конспект лекции или когда | + | * Надо ли использовать наряду со слайдами раздаточные материалы? Когда материал запоминается лучше и дольше: когда студент пишет конспект лекции рукой или когда видит хорошо продуманные слайды с графикой и примерами, которые невозможно воспроизвести мелом на доске за разумное время? |
- | * Как | + | * Как организовать практикум, чтобы это была эффективная самостоятельную работу студентов? Делать упор на разработку или на применение методов? На каком средстве: [[Matlab]] или [[C++]] или [[R]] или [[WEKA]] или [[RapidMiner]]? Делать проекты индивидуальные или парные? |
* Какие задачи и вопросы давать для контроля знаний? | * Какие задачи и вопросы давать для контроля знаний? | ||
Строка 69: | Строка 68: | ||
* Рассказав метод, в явном виде перечислить его достоинства и недостатки; затем рассказать о путях устранения недостатков. (''[[Участник:Vokov|К.В.Воронцов]] 22:33, 10 июля 2008 (MSD)'') | * Рассказав метод, в явном виде перечислить его достоинства и недостатки; затем рассказать о путях устранения недостатков. (''[[Участник:Vokov|К.В.Воронцов]] 22:33, 10 июля 2008 (MSD)'') | ||
- | == | + | == Организация практикума == |
- | + | ||
- | + | === Практикум в рамках курса [[Прикладная регрессия и оптимизация (курс лекций, B.В.Стрижов)|Прикладная регрессия и оптимизация]] === | |
* Студентам назначаются [http://strijov.com/teaching/index.php задания] из расчета 32-36 часов самостоятельной работы в семестр. | * Студентам назначаются [http://strijov.com/teaching/index.php задания] из расчета 32-36 часов самостоятельной работы в семестр. | ||
* Предполагается, что они программируют на С/++/# и им достаточно одной лекции ([[Matlab|с иллюстрацией основных приемов]]), чтобы разобраться в программировании Matlab ([http://strijov.ru/blog/2008-01-31-17 SciLab, Octave]). NB: Mathematica и Gap потребуют две лекции, одна из них -- введение в функциональное программирование и компьютерную алгебру. | * Предполагается, что они программируют на С/++/# и им достаточно одной лекции ([[Matlab|с иллюстрацией основных приемов]]), чтобы разобраться в программировании Matlab ([http://strijov.ru/blog/2008-01-31-17 SciLab, Octave]). NB: Mathematica и Gap потребуют две лекции, одна из них -- введение в функциональное программирование и компьютерную алгебру. | ||
Строка 79: | Строка 77: | ||
* Результаты самостоятельной работы и докумениация к ним [http://strijov.ru/blog/2008-07-11-51 складывается на ftp-сервер] до начала экзаменов так, чтобы оставалась возможность написать рецензию и указать, что надо доработать. NB: вариант с flash memory stick очень утомляет, т.к. по опыту, 4 из 5 студентов несут вирусы, на убиение которых уходит время. | * Результаты самостоятельной работы и докумениация к ним [http://strijov.ru/blog/2008-07-11-51 складывается на ftp-сервер] до начала экзаменов так, чтобы оставалась возможность написать рецензию и указать, что надо доработать. NB: вариант с flash memory stick очень утомляет, т.к. по опыту, 4 из 5 студентов несут вирусы, на убиение которых уходит время. | ||
- | Есть три варианта выполнения студентами | + | Есть три варианта выполнения студентами «инженерного курса». |
# Он не делается вообще (к счастью, такого еще не случалось). | # Он не делается вообще (к счастью, такого еще не случалось). | ||
# Студенты работают первые 4 недели, потом не работают, потом работают последние две недели. | # Студенты работают первые 4 недели, потом не работают, потом работают последние две недели. | ||
Строка 85: | Строка 83: | ||
Основная проблема, которая не решена: | Основная проблема, которая не решена: | ||
- | * как организовать работу, чтобы кроме лекций, несколько часов '''каждую''' неделю было посвящено практике (которая, по моему мнению, и есть | + | * как организовать работу, чтобы кроме лекций, несколько часов '''каждую''' неделю было посвящено практике (которая, по моему мнению, и есть «инженерный курс» )? |
- | + | — ''[[Участник:Strijov|Strijov]] 16:38, 11 июля 2008 (MSD)'' | |
== Терминология == | == Терминология == |
Версия 14:00, 11 июля 2008
|
Данный виртуальный семинар предназначен для обсуждения методических вопросов, связанных с преподаванием машинного обучения и смежных дисциплин в российских вузах.
На данную страницу выносятся основные положения, результаты дискуссии и прочая хорошо структурированная информация. Споры, как обычно, ведутся в обсуждении.
Поскольку это семинар, на основной странице также можно высказывать личные мнения; желательно сопровождать их подписью участника.
Машинное обучение — математический или инженерный курс?
Согласно международным рекомендациям по преподаванию информатики в университетах ACM/IEEE Computing Curricula 2001 информатика (computer science) подразделяется на 14 областей, одна из которых — интеллектуальные системы (intelligent systems). Эта область, в свою очередь, имеет 10 разделов, один из них — машинное обучение и нейронные сети (machine learning and neural networks). Для непрофильных специальностей этот курс считается факультативным.
Типовые программы этого курса рассчитаны на расширение кругозора будущих IT-специалистов и, мягко говоря, поверхностны. Они ни в коей мере не рассчитаны на будущего научного работника или разработчика новых методов машинного обучения. Они лишь дают представление о том, какие задачи возникают на практике, какими методами их можно решать, в чём их основные принципы, какие существуют инструментальные средства, иногда — какие подводные камни ждут будущего BI-аналитика. Далеко не все методы освещаются. Теория вообще не рассматривается.
Вопрос: стоит ли ориентироваться на этот международный стандарт?
Стандарт оставляет большую свободу творчества преподавателю. Формально оставаясь в рамках стандарта, можно сделать и полную профанацию, и удачный курс для инженеров, показывающий нетривиальные примеры реальных задач и процесс их решения с помощью доступного инструментария. Заодно можно зацепить действительно глубокие проблемы, с одной стороны возникающие из нужд практики, с другой требующие хорошей математики. Однако сделать такой курс на порядок сложнее, чем скомпилировать материал нескольких книжек.
Математический курс нужен узкому кругу специалистов, которые предположительно будут заниматься разработкой новых методов и решением принципиально новых задач. Потребность в таких специалистах — около 5%. (К.В.Воронцов 22:33, 10 июля 2008 (MSD))
Инженерный курс нужен широкому кругу специалистов, которые предположительно будут заниматься применением стандартных методов для решения более-менее типичных задач. Он также нужен будущим 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))
Методика преподавания
Предлагается в этом разделе ставить вопросы, а ниже обсуждать удачный и неудачный опыт.
- Насколько повышается эффективность преподавания при использовании слайдов?
- Надо ли использовать наряду со слайдами раздаточные материалы? Когда материал запоминается лучше и дольше: когда студент пишет конспект лекции рукой или когда видит хорошо продуманные слайды с графикой и примерами, которые невозможно воспроизвести мелом на доске за разумное время?
- Как организовать практикум, чтобы это была эффективная самостоятельную работу студентов? Делать упор на разработку или на применение методов? На каком средстве: Matlab или C++ или R или WEKA или RapidMiner? Делать проекты индивидуальные или парные?
- Какие задачи и вопросы давать для контроля знаний?
Некоторые удачные методические приёмы
Предлагается пополнять коллекцию.
- В начале курса посвятить одну лекцию описанию примеров (от 3 до 10) разнообразных прикладных задач «из жизни». (К.В.Воронцов 22:33, 10 июля 2008 (MSD))
- В конце курса (например, на консультации перед экзаменом) нарисовать «карту курса», где показать взаимосвязи и сходство различных методов. (К.В.Воронцов 22:33, 10 июля 2008 (MSD))
- Рассказав метод, в явном виде перечислить его достоинства и недостатки; затем рассказать о путях устранения недостатков. (К.В.Воронцов 22:33, 10 июля 2008 (MSD))
Организация практикума
Практикум в рамках курса Прикладная регрессия и оптимизация
- Студентам назначаются задания из расчета 32-36 часов самостоятельной работы в семестр.
- Предполагается, что они программируют на С/++/# и им достаточно одной лекции (с иллюстрацией основных приемов), чтобы разобраться в программировании Matlab (SciLab, Octave). NB: Mathematica и Gap потребуют две лекции, одна из них -- введение в функциональное программирование и компьютерную алгебру.
- Выставляются рекомендации по организации выполнения работы и проведения вычислительных экспериментов (в частности, пожелания пользоваться обозначениями, введенными в лекциях). NB: план лекций, вопросы на экзамене, задачи для самостоятельного решения доступны.
- Доступны примеры программ и вычислительных экспериментов, это мотивирует к написанию красивого кода (сейчас идет подготовка к сезону 2008-осень, но все равно можно посмотреть, инструкции здесь).
- Результаты самостоятельной работы и докумениация к ним складывается на ftp-сервер до начала экзаменов так, чтобы оставалась возможность написать рецензию и указать, что надо доработать. NB: вариант с flash memory stick очень утомляет, т.к. по опыту, 4 из 5 студентов несут вирусы, на убиение которых уходит время.
Есть три варианта выполнения студентами «инженерного курса».
- Он не делается вообще (к счастью, такого еще не случалось).
- Студенты работают первые 4 недели, потом не работают, потом работают последние две недели.
- Работа делается в последние две недели (при этом число фактически отработанных часов уменьшается).
Основная проблема, которая не решена:
- как организовать работу, чтобы кроме лекций, несколько часов каждую неделю было посвящено практике (которая, по моему мнению, и есть «инженерный курс» )?
— Strijov 16:38, 11 июля 2008 (MSD)
Терминология
Предлагается обсуждать список терминов, которые либо не понятно как переводить на русский, либо «де факто» они уже переведены разными авторами по-разному, и необходимо приходить к единству. Возможно, для этого обсуждения лучше завести отдельную страницу...
- Business-intelligence — интеллектуальные бизнес-системы или бизнес-интеллект?
- Data mining — интеллектуальный анализ данных
- Optimal brain damage — ?
- Optimal brain surgery — оптимальное прореживание нейронных сетей
- Shatter coeffiсient — коэффициент разнообразия
- Target function — целевая зависимость или восстанавливаемая зависимость? Целевая функция вызывает ненужные ассоциации с оптимизируемым функционалом.
Книги, которые можно выбрать за «скелет» курса
- Hastie, T., Tibshirani, R., Friedman, J. The Elements of Statistical Learning, 2nd edition. — Springer, 2009. — 533 p. (подробнее)
Дополнительная литература
- Загоруйко Н. Г. Прикладные методы анализа данных и знаний. — Новосибирск: ИМ СО РАН, 1999. — 270 с. — ISBN 5-86134-060-9 (подробнее)
- Журавлёв, Ю. И., Рязанов, В. В., Сенько, О. В. «Распознавание». Математические методы. Программная система. Практические применения. — М.: ФАЗИС, 2006. — 176 с. (подробнее)
Курсы
- Machine Learning (Fall 2007) Prof. Tommi Jaakkola, MIT.
- Machine Learning (Fall 2007) Prof. Lyle Ungar, University of Pennsylvania - School of Engineering & Applied Science.
- Машинное обучение (курс лекций, К.В.Воронцов)
- Машинное обучение (курс лекций, Н.Ю.Золотых)
- Прикладная регрессия и оптимизация (курс лекций, B.В.Стрижов)