2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 "Сократовские" системы обучения
Сообщение19.08.2006, 16:01 


22/06/05
164
Интересуют автоматизированные системы обучения (в основном, с математическим уклоном), построенные в виде цикла вопрос-ответ. Обязательно должны быть реализованы следующие возможности:
1) каждый следующий вопрос может зависеть от ответов на предыдущие;
2) ответ может зависеть от параметров и вычисляться автоматически.

Видимо, в таких системах каждая тема должна быть описана скриптом-сценарием в следующем духе (синтаксис взят от балды):
Код:
<тема 'Комбинаторика'>
<использовать модуль 'combin_functions'>

<сценарий>
<спрашивать '0' пока не будет '5' правильных ответов>
<спросить '1'>
</сценарий>

<вопрос '0'>
<переменная 'n' 'random(2,4)'>
<переменная 'abc' 'randomsubset("abcdefgh", %n%)'>
<переменная 'result' 'permutations(abc)'>
<текст 'Перечислить все перестановки из букв %abc%'>
<ввод многострочный>
<обработка ввода 'cmpsets(split(%input%), %result%)'>
<верно если '0'>
<ошибка 'введены лишние перестановки' если '1'>
<ошибка 'введены не все перестановки' если '-1'>
</вопрос>

<вопрос '1'>
<текст 'Число перестановок из n элементов равно'>
<ввод выбор варианты_случайно_переставлены>
<вариант 'n!'>
<вариант 'n^2'>
<вариант '2^n'>
</ввод>
<верно если '0'>
<ошибка 'почти угадали' если '1' или '2'>
</вопрос>

Известны ли системы подобного рода? Может ли быть польза от подобных систем? Какие возможности должны быть заложены в сценариях? Есть ли стандарты на подобные вещи? На каких языках удобно писать подобные сценарии? XML/XSL?

 Профиль  
                  
 
 Re: "Сократовские" системы обучения
Сообщение19.08.2006, 20:38 
Заслуженный участник
Аватара пользователя


23/07/05
17976
Москва
Егор писал(а):
Известны ли системы подобного рода? Может ли быть польза от подобных систем? Какие возможности должны быть заложены в сценариях? Есть ли стандарты на подобные вещи? На каких языках удобно писать подобные сценарии? XML/XSL?


В 1985 году я был в МГУ на ФПК. Там нам демонстрировали подобную систему обучения ФОРТРАНу. Ну, может быть, чуть попроще. Техника была примитивная, но работала по этому принципу. Обучаемому давали книжку и простенький пульт с кнопками и цифровым табло. На табло указывалось, какой пункт в книжке нужно прочитать, и оценивались ответы. Все пульты соединялись с одним компьютером, который, таким образом, обучал сразу много людей.

Но, вообще-то, здесь программистские проблемы невелики. Основное - содержание.

 Профиль  
                  
 
 
Сообщение20.08.2006, 19:41 


13/07/06
68
Видел такие в 80х, очень много. В более позднее время вроде бы не встречались.

 Профиль  
                  
 
 
Сообщение21.08.2006, 09:36 


09/06/06
367
Такие системы известны . Мне самому довелось внедрять и эксплуатировать в 80-х годах программный комплекс со свойствами , приведенными выше.
Система содержала более 150000 пар вопрос-ответ ,на вход подавалась отперфорированная входная информация , на выходе- полный комплект выверенной документации .Работала изумительно .
Настроить можно было на что угодно (главное преимущество ,на мой взгляд,таких систем).

 Профиль  
                  
 
 
Сообщение21.08.2006, 16:18 


22/06/05
164
Очень интересные сообщения. Не ожидал, что это было так распространено в 1980-х. Как же записывались в тех системах сценарии обучения?
Someone писал(а):
Но, вообще-то, здесь программистские проблемы невелики. Основное - содержание.

Проблема в том, как описывать содержание. Имеются в виду не только сами вопросы-задачи с ответами (причём допускаются параметры и различные способы обработки ответов), но и сценарии - какие вопросы предлагать в зависимости от предыдущих ответов.

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

Примитивный пример сценария (предполагается, что заранее описаны вопросы Q1-Q15):
Код:
создать множество S из вопросов Q1-Q10
метка L1: Задавать вопросы, выбранные случайно из множества S;
в случае правильного ответа исключать вопрос из S;
если набралось 3 правильных ответа, то перейти к метке L3;
если набралось 4 неправильных ответа, то перейти к метке L2
метка L2: задать вопросы Q11, Q12, Q13, Q14, перейти к L1.
метка L3: задать вопрос Q15 и завершить работу

Создаётся впечатление, будто для записи сценариев нужен почти полноценный язык программирования (с логическими конструкциями, подпрограммами, переменными и т. д.). С другой стороны, сценарий вряд ли можно считать готовой программой: пользовательский интерфейс принято реализовать в виде обработки событий.

 Профиль  
                  
 
 
Сообщение21.08.2006, 18:57 


25/01/06
102
А не думали использовать готовую оболчку экспертной системы (типа CLIPS) для Вашей задачи? Там вопросы-ответы и механизмы перехода и повтора вопросов вполне естественно укладываются во входной язык экспертной системы.

 Профиль  
                  
 
 
Сообщение21.08.2006, 22:28 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Егор писал(а):
Как же записывались в тех системах сценарии обучения?

На специализированных языках. Названия которых, слава Богу, не упомню.

Егор писал(а):
но и сценарии - какие вопросы предлагать в зависимости от предыдущих ответов.

О-о-о! Вот это и есть самое интересное. Основная задача преподавателя — понять, что именно не понимает студент. Понять, как он думает. А они, студенты, все разные, и думают по-разному (гады!). Понять же, что они думают, можно не по ответам, а по вопросам, причем часто подолгу пытаясь понять вопрос. В ранних системах обучения это осознано не было… потому и было убого. А ответить на незапрограмированный вопрос АСО не может.

~~~~~~

В целом эти системы больше раздражали, чем помогали. Частично, в связи с вышесказанным. Частично, потому, что нельзя было пропустить то, что уже понятно. Отчасти, потому, что нельзя было более подробно остановиться на чем-то важном, если ты (случайно) правильно ответил на вопрос (например, в случае четного числа ошибок :) ).

 Профиль  
                  
 
 
Сообщение24.08.2006, 20:40 


22/06/05
164
Igor Borovikov писал(а):
А не думали использовать готовую оболчку экспертной системы (типа CLIPS) для Вашей задачи? Там вопросы-ответы и механизмы перехода и повтора вопросов вполне естественно укладываются во входной язык экспертной системы.

К сожалению, совсем не имею представления об экспертных системах. Начал читать руководство.
незваный гость писал(а):
... Основная задача преподавателя — понять, что именно не понимает студент. ...
В целом эти системы больше раздражали, чем помогали. ...

:) Интересно.

А может, проще всего начинать писать обучающую систему на Питоне или другом скриптовом языке (лучше, видимо, на Лиспе, но его ещё нужно знать). Отдельная тема - модуль на Питоне. Вопросы - экземпляры класса Question (фактически, это структуры). Сценарий можно в общем виде задавать в виде функции:
GetIndexOfNextQuestion(all_questions, user_answers)

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

 Профиль  
                  
 
 
Сообщение24.08.2006, 21:14 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Можно, конечно. Не знаю, правда, чем Lisp лучше, но мне это не важно. Важно другое: как написать GetNextQuestion(). Второе, не менее серьезное, занятие, это как составить вопросы и ответы. В математике, все-таки, важны не факты, а логика их получения, логика доказательства. Более того, во многих случаях претенденты на ответ подсказывают решение. Реальное же обучение математике — это обучение культуре и методам рассуждений, обучение построению систем рассуждений и результатов. Выбирая ответы, этому не научишься. Зачастую студент предоставляет "дырявое" доказательство, которое зачитывать не следует, но АСО зачтет.

Наверное, все это остается сотрясениями воздуха. Вы правы, лучший способ — попробовать. Взять какую-нибудь более менее нетривиальную тему, и попробовать сделать курс, который будет и интересен, и устойчив (то есть, будет работать на студентов разного уровня). Хорошо бы попросить коллегу (не давая ему результатов компьютерного обучения) проэкзаминовать группу, а потом поросить третьего специалиста по статистике сравнить оценки компьютера и человека, не объясняя, что есть что и почему. В идеале, оценки должны совпасть. Вот реальность этого стоит подтвердить. Плюс посмотреть, сколько времени заняло обучение (больше или меньше, чем с преподователем — время студентов тоже надо ценить), отзывы студентов — восторженные или с отвращением и т.п.

 Профиль  
                  
 
 Как задавать связи между упражнениями?
Сообщение20.03.2008, 15:30 


22/06/05
164
Пусть речь идёт либо об автоматизированной системе обучения, либо просто о базе учебных упражнений. Упражнения простые и не предполагают проверку промежуточных этапов решения.

Вопрос: как задавать связи между упражнениями?

Кажется довольно естественным следующий способ: для каждого упражнения перечислять развиваемые умения и необходимые умения. Другими словами, для каждого упражнения указывать, какие умения оно даёт ученику, а какие умения использует. Обычно основное "развиваемое умение" есть просто название микротемы, к которой относится упражнение, а "необходимые умения" - названия микротем, на которые оно опирается.

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

Пример описания одного упражнения:
Код:
<exercise>
<gives>Решение квадратных уравнений с комплексными коэффициентами</gives>
<needs>Формула корней квадратного уравнения</needs>
<needs>Арифметические операции с комплексными числами</needs>
<needs>Извлечение квадратных корней из комплексного числа</needs>
<task>Решить квадратное уравнение: $z^2+(1-4i)z-5+i=0$.</task>
<answer type='set of complex'>1+i, -2+3i</answer>
</exercise>

 Профиль  
                  
 
 
Сообщение20.03.2008, 17:33 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Егор писал(а):
Кажется довольно естественным следующий способ: для каждого упражнения перечислять развиваемые умения и необходимые умения. Другими словами, для каждого упражнения указывать, какие умения оно даёт ученику, а какие умения использует.

Nothing is ever easy. «Бывали дни счастливые, гулял я молодец.» И была у меня преподаватель аналитической геометрии. Надо было мне, раздолбаю, зачёт сдавать, за честно прогулянный семестр. Она мне даёт задачу, я её решаю (правильно, замечу!). Она опять. На третий раз состоялся прямой и нелицеприятный разговор. Мне было сказано, что от меня требуется не решение задачи, а демонстрация владения стандартным методом решения задачи. После чего вопрос о зачёте был решён за час. Но! (важное для нас но), она признала: поставить задачу, требующую использования стандартных методов, она не может: её решение потребует знаний, выходящих за рамки первого семестра.

Так каким же образом АСО проверит владение «умениями»? По результату — не видно, рассуждения — не проверить, а достаточно неприятную задачу поставить можно не всегда.

 Профиль  
                  
 
 
Сообщение20.03.2008, 18:11 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Егор писал(а):
Кажется довольно естественным следующий способ: для каждого упражнения перечислять развиваемые умения и необходимые умения. Другими словами, для каждого упражнения указывать, какие умения оно даёт ученику, а какие умения использует.


Мне этот подход кажется разумным.

Мне кажется, что следует несколько различать задачу "контроля знаний" (при которой, возможно, испытуемый не против обмануть машину) и задачу "обучения" (при которой можно в некоторой степени рассчитывать на помощь обучаемого).

Я бы действительно составил бы список навыков, которые контролирует (или которым обучает) система. Для каждой пары "задача-навык" в некоторой шкале задается то, какая максимальная степень владения данным навыком подразумевается при решении данной задачи (в том числе и для того, чтобы на более поздних этапах обучения не предлагать простые задачи). Также возможно (не знаю пока, сильно ли потребуется) задавать в виде процентного соотношения то, как данные навыки между собой связаны при решении данной задачи. Это позволит распределять штраф за нерешенную задачу между различными навыками.

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

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

 Профиль  
                  
 
 
Сообщение20.03.2008, 23:06 


22/06/05
164
незваный гость писал(а):
... Мне было сказано, что от меня требуется не решение задачи, а демонстрация владения стандартным методом решения задачи. ...

Так каким же образом АСО проверит владение «умениями»? По результату — не видно, рассуждения — не проверить, а достаточно неприятную задачу поставить можно не всегда.

История о зачёте хороша! Хотелось бы пример задачи, чтобы удобнее обсуждать.

Я надеялся избежать таких сложных вопросов и ограничиться моделированием тривиальной ситуации (упражнения очень простые, ответ однозначный, промежуточные выкладки не проверяются). Кроме того, как написал PAV, контроль знаний — не то же самое, что обучение. Может быть, проблема контроля знаний заслуживает отдельной темы.

Попытаюсь ответить: проверку хода решения представляю себе как многошаговый процесс. На каждом шаге ученик называет объект, который будет вычислять, затем сообщает системе то значение объекта, которое у него получилось. В систему нужно как-то заложить все хорошие варианты решения. Например, система должна знать: 1) правильные значения всевозможных промежуточных объектов для данной задачи, 2) наилучшую последовательность вычисления объектов, 3) «правила вывода»: какие объекты можно получить из каких за один шаг (чтобы проверять другие варианты решения).

PAV, спасибо за идеи. Совершенно новые для меня: применять подобный подход (систему навыков) и для контроля знаний; попросить обучаемого самого указать, каких навыков не хватило для решения задачи.
PAV писал(а):
Для каждой пары "задача-навык" в некоторой шкале задается то, какая максимальная степень владения данным навыком подразумевается при решении данной задачи

Не хотелось бы указывать уровни навыков для каждой задачи. Может быть, сделать навыки очень точными (узкими). Скажем, по теме «Алгебраическая форма комплексного числа» естественно получается десятка два навыков: от сложения до решения квадратных уравнений. Для каждого скилла можно указывать, сколько задач на него нужно решить, чтобы считать его «прокачанным» (достаточно развитым). Каждое упражнение, предлагаемое ученику, должно опираться лишь на прокачанные скиллы и развивать какой-то непрокачанный скилл.

 Профиль  
                  
 
 
Сообщение20.03.2008, 23:50 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Егор писал(а):
Не хотелось бы указывать уровни навыков для каждой задачи. Может быть, сделать навыки очень точными (узкими). Скажем, по теме «Алгебраическая форма комплексного числа» естественно получается десятка два навыков: от сложения до решения квадратных уравнений. Для каждого скилла можно указывать, сколько задач на него нужно решить, чтобы считать его «прокачанным» (достаточно развитым). Каждое упражнение, предлагаемое ученику, должно опираться лишь на прокачанные скиллы и развивать какой-то непрокачанный скилл.


Звучит достаточно разумно, но нужно начать реальную реализацию, чтобы понять все подводные камни. Маловероятно, чтобы их не было. Точнее, обычно через какое-то время после того, как начнешь делать, понимаешь, что многое нужно поменять и вообще делать не так.

 Профиль  
                  
 
 
Сообщение21.03.2008, 07:45 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Егор писал(а):
Попытаюсь ответить: проверку хода решения представляю себе как многошаговый процесс. На каждом шаге ученик называет объект, который будет вычислять, затем сообщает системе то значение объекта, которое у него получилось. В систему нужно как-то заложить все хорошие варианты решения.

Я бы на стенку влез с такой системой!

Егор писал(а):
Не хотелось бы указывать уровни навыков для каждой задачи. Может быть, сделать навыки очень точными (узкими). Скажем, по теме «Алгебраическая форма комплексного числа» естественно получается десятка два навыков: от сложения до решения квадратных уравнений. Для каждого скилла можно указывать, сколько задач на него нужно решить, чтобы считать его «прокачанным» (достаточно развитым). Каждое упражнение, предлагаемое ученику, должно опираться лишь на прокачанные скиллы и развивать какой-то непрокачанный скилл.

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

Я немного потеоретизирую, с общего позволения. Лекция, вводная информация — это всегда пассивное знание. Решение задач — это метод активизации знания. Но одному для активизации достаточно одной задачи, другому нужно три, третьему — тридцать три. Поэтому навязывание количества задач не помогает.

Я готов поддержать PAV в том, что этот подход (АСО) предполагает кооперацию студента. Но в его продуктивность я не верю. Может, потому, что для меня главное, что я вынес из университета — это общение с преподавателями. Да и из школы я помню тех учителей, которые не очень держались за программу. Потому, что они могли поддерживать интерес всех учеников.

А интерес — штука хитрая. Интерес позволяет активизировать усвоение материала (если не просто сделать его возможным). Но когда вместо решения задачи я вынужден ввыбирать промежуточные объекты и вводить их значения, интерес теряется. Мне это уже не нужно, я задачу решил. А АСО — тем более. В некотором смысле, интерес — это способ эмоционального подъёма субъективной важности материала. А ни для кого не секрет, что мы помним то, что важно.

С другой стороны, что делать, когда задача решена — это 1/10 проблемы. А что делать, если студент не может решить? Послать перечитывать курс — работает далеко не всегда. В конце концов, задача зачастую содержит некоторую идею. Например, два пространства гомеоморфны, если существует непрерывное и непрерывно-обратимое взаимно однозначное отображение одного на другое. Вопрос: а нужна ли обратимость для гомеоморфности, или достаточно двух непрерывных взаимнооднозначных отображений? Ответ, конечно, известен. Но вариантов доказательства много. И учитель может понять, что именно вызвало затруднения у студента. Для этого он задаст вопрос. И не случайно обсуждение в «Помогите решить» начинается с вопросов «что вы сделали? что у вас не получилось».

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group