August 2nd, 2016

2019

lytdybr

Обновил список системных мышлем в http://ailev.livejournal.com/1278600.html (по итогам обсуждений curriculum learning http://ailev.livejournal.com/1282190.html и с учётом предложений vvagr). До сих пор не могу определиться, как лучше: литературней, вроде, "мыслемы", но мне-то не мысль нужно, а мышление тренировать -- и язык всё время хочет говорить "мышлемы", элементы мышления.

В фейсбуке ввязался дискуссию про системную инженерию в СССР (и как сладко и державно в СССР было жить) по мотивам цитаты из моего учебника: https://www.facebook.com/mikhail.sofonov/posts/10210276152965443. Как всегда, набежали системотехники и начали рассказывать про великость системного подхода 1.0 и достижения отечественной системотехники.

В deep learning ложное затишье. Просто раньше было кап-кап-кап -- и каждая капелька была событием. А сейчас идёт бурный поток, и не понимаешь уже, что отслеживать -- героический период уже заканчивается, начинаются промышленные будни. Ну, типа полупроводниковой промышленности через пару лет после выхода Intel 4004. Дальше нужно придумать аналог закона Мура, типа "удвоения IQ вдвое за год" -- что бы там это IQ ни значил для слабого искусственного интеллекта. Помним, что этот IQ определяется как скорость решения множества мелких разнородных тупых задачек -- он на низкоуровневый процессинг. Вот тут трёхдневной давности список likely AI andvancements in the next 5 to 10 years от Yan LeCun, и по каждому направлению там кипит-бурлит: https://www.quora.com/What-are-the-likely-AI-advancements-in-the-next-5-to-10-years (и добавьте туда causal и counterfactual inference из https://www.quora.com/What-are-some-exciting-but-overlooked-developments-in-ML-research, а я ещё считаю, что уменьшение размерности плавающих в обучении, AutoML и аппаратный разгон ещё добавят жару). В любом случае, отслеживать происходящее уже очень сложно. Вон, почитайте ленту: https://vk.com/deeplearning.

Отрок осваивает синусы-косинусы, но шутки типа "в военное время синус до трёх доходил" понять пока не может. И вообще, вернулся из каких-то странствий Виталик, поэтому сегодня никакой геометрии и физики не было, был полный день Space Engineers, до состояния невменяемости. Завтра опять без геометрии и физики: тёща берёт его и жену за шкирку и отвозит на десять дней в Светлогорск (я опять вежливо выслушал традиционную тёщину лекцию про йод в воздухе из Балтийского моря, его безусловную пользу для подрастающих организмов, но сам останусь в Москве: у них троих уже сейчас коренные разногласия про времяпрепровождение в тамошних краях, я не буду им в этом мешать. Пусть тёща повоспитывает дочку и внучка эти десять дней без моего участия).

Вчера умер Сеймур Пейперт -- https://habrahabr.ru/company/edison/blog/277799/. Я в какой-то мере считаю себя прямым наследником каких-то его идей -- по лини Пейперт-Ершов-группа Аттик мехмата МГУ-я. Вот буквально пару дней назад поминал его в дискуссии, http://ailev.livejournal.com/1282836.html.
2019

ПиктоМир и КуМир как технология к какой дисциплине?

Ввязался в дискуссию про методы обучения алгоритмике, где сопоставлялись code.org+scratch, ПиктоМир+КуМир: https://www.facebook.com/shperk/posts/10157164864885153 и чуток продолжения в https://www.facebook.com/shperk/posts/10157173855260153

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

Вот без особого порядка и редактирования (помним, что это были ответы на чужие реплики) некоторые цитаты "из меня" в тех дискуссиях:

ПиктоМир -- это такая же ступенька для КуМира, как code. org для Scratch. Но инструмент этот заточен под совсем другие типы работы -- а именно, "сержатнский метод", то есть КуМир включает автоматизированную проверку выполнения заданий и много много заданий (порядка 300 для начальной алгоритмики). Мой сын, второклассник вполне по этой линии прошёл, так что нельзя сказать, что "не работает". Курс, который могут пройти второклассники (мой сын пробовал и справился, после разгона на ПиктоМире) -- http://server.179.ru/wiki/?page=DenisKirienko/Kumir, в части задачек для исполнителя Робот. Там именно что квадратики, всё очень наглядно. И не требуется плавающая точка, ибо квадратики целочисленны. Хотя в конце курса плавающая появляется ))) Ибо давать можно второклассникам, но проектировалось когда-то для семиклассников.

Но я бы тут не различия подчёркивал, а метод: второклашки ни на Скретч, ни на КуМир не вскакивают, ибо ступенька высока. Но если подложить в качестве ступеньки Code. org или ПиктоМир, то дальше всё будет ОК. У меня переход от ПиктоМира к КуМиру у моего второклашки занял часа четыре. Это много, конечно, но это вообще возможность второклашки вдруг работать с текстовым языком.

Ещё сильно продвинулась гомельская школа, они тоже сильно в возрасте опустились -- и закрывают всё до ВУЗа (впрочем, как я понимаю, и кусочки ВУЗа тоже, хотя у меня к этому своя критика): http://ailev.livejournal.com/1275421.html. У Гомельской школы то же самое: некоторый тренажёр для "дошкольной алгоритмики", и потом подсадка сразу на Паскаль. Это уже третий вариант со "ступенькой".

Насколько я понимаю, методически эти ходы, используемые в разных школах алгоритмики, их достоинства и недостатки (с точки зрения содержания образования -- то есть выучиваемых мыслительных операций какой-то дисциплины, трудозатрат ученика и учителя и надёжности научения, обобщаемости навыка дисциплины на другие технологии, т.е. другие инструментальные среды и языки программирования в данном случае) обсуждаю главным образом я. Это IMHO неправильно, ибо нет придумывания своих велосипедов от "лучшего достигнутого". Каждый тут выдумывает свои велосипеды с нуля. А я ведь даже не педагог алгоритмики! Я родитель! Хотя когда-то я, конечно, этим всем занимался профессионально, и даже слово КуМир (Комплект Учебных МИРов) придумал я -- я лет тридцать назад как раз работал с группой Аттик несколько лет, так что не совсем случайный родитель )))

Про важность инструментов -- да, они важны. Разные люди любят разные инструменты, но я бы отдельно обсуждал методы, и отдельно инструменты. "Любите ли вы кошек? Нет? Наверное, вы не умеете их готовить!"

КуМир это инструмент, но в курсах (а я дал ссылку именно на курс -- последовательность задач) для него реализована концепция (разрабатываемая группой Аттик). Эта же концепция отражается в ПиктоМире, а начинала работать эта группа с академиком Ершовым и тем самым Сеймуром Пейпертом, т.е. черепашка Лого тут ближайший родственник. У гомельской школы программирования инструмент совсем другой, Паскаль. Но фишка не в Паскале, а опять-таки, в последовательности задач, что они на этом паскале учат.

Опыт очень разный, особенно если учитывать 1) количество удельных часов преподавателя на того же второклашку и 2) дисциплину, которой учим. Например, в том же курсе на КуМире сознательно учат computer science, а не "кодированию". Скажем, в задачах проверяется по 6-12 разных вариантов данных, для которых алгоритм должен правильно работать (иначе же это не классический алгоритм, а так, развлекушка). У второклашки возникают очень интересные страдания по поводу того, что поправка, чтобы программа, прошедшая первый тест, проходила второй текст, разрушает прохождение первого текста. Он правит назад -- и вуаля, первый текст опять проходит, а второй опять не проходит. А там ещё третий и четвёртый тесты. И только через довольно много задач он начинает интересоваться и внимательно изучать варианты входных условий, чтобы уж сразу написать алгоритм для их всех. И ещё через много-много задач он и сам начинает соображать, какие там могут быть разные условия, и уже не так подробно изучает эти условия, сразу пишет алгоритм "для всех случаев". И дальше я могу демонстрировать тренинг ещё довольно большого количества мыслительных операций на том же КуМире (например, как второклашки рекурсию осваивают даже раньше цикла). То есть сравнивать нужно не инструменты, а что именно учится и каким способом, и какие трудозатраты ученика и учителя, и насколько надёжно выучено (например, воспроизводимо на других языках). Так, скачок с КуМира на тот же Скретч (я ж пробовал!) у второклашки прошёл мгновенно, никаких проблем. Другое дело, что чему его потом там в этом скретче учить? Ну, и отойти нельзя: ничего автоматом не проверяется.

Я выражаю это обычно так: "Практика = дисциплина + технология". Технология меняется раз в пять лет, дисциплина меняется раз в двадцать лет. Технология всегда поддерживает дисциплину. Если меняется технология, дисциплина может не меняться -- это совершенствование. Если меняется дисциплина, то технология тоже меняется -- и это развитие. Дисциплина даётся образованием, а для технологии обычно достаточно тренинга на рабочем месте. Дисциплина -- содержание образования, её нужно обсуждать явно. Я ровно это и пытаюсь сделать, вы верно подметили. А затем я беру любые инструменты, вытаскиваю из-под них неявно спрятанные в них дисциплины и задаю вопросы уже к дисциплинам. Например, не к инструментам code.org или курсу Кириенко для семиклассников на КуМире, а к содержанию тамошнего образования (например, связи этого содержания с разделами курса математики, поддерживают ли они развитие быдлокодерства и народной software engineering, или там поддерживается изучение computer science как дисциплины). Методические достижения же при этом отходят на второй план: если учат методически замечательно не тому, чему хотелось бы учить, то это выявляется при подобном подходе "через дисциплины/теорию/учебные предметы" практически сразу, а не потом.
* * *
Если кратко, то в голове должна быть сначала математика, чтобы понимать операции над числами (включая плавающие), затем должна быть физика, чтобы у чисел появились размерности и стало понятно, как их складывать-вычитать не случайным образом, а по каким-то законам окружающего физического мира, затем информатика -- чтобы суметь эту физику с математикой записать в виде, понятном компьютеру, затем системное мышление (про системы в физическом мире и их модели) и системная инженерия (требования, архитектура, изготовление, испытания) -- чтобы довести до прямого действия в физическом мире. Курс STEM ни разу не учитывает, что на каких ступеньках тут должно быть доступно. Поэтому все эти вопли про уроки технологии, робототехники бессмысленны, без пошагового анализа этой цепочки обратным ходом и выставлением требований к изменениям в физике-геометрии-математике-информатике + введения новых предметов типа системного мышления.

STEM в школе сейчас расшит на кучу абсолютно независимых друг от друга нескоординированных предметов, и поэтому там всё так убого: это не подогнанные друг под друга и другие задачи модули, а клочки животных переживаний старперов-предметников, живущих в методической автаркии. Там ведь много интересных ходов может быть, например (сорри, там я на профессиональном сленге, а не попсово) вот: http://ailev.livejournal.com/1265432.htm

Вот я три года назад возмущался тем, что математика отстаёт от физики, а физика от робототехники (в варианте программируемой простейшей тележки): http://ailev.livejournal.com/983196.html

Там ведь тоже в математике войны идут по необходимости изменения предмета, незаметные со стороны других предметников из STEM. Вот, например: http://ailev.livejournal.com/970638.html

Вот, кстати, пример попыток выяснить для робототехники-технологии связи с дисциплиной автоматического регулирования и математикой-физикой (третий класс, казалось бы самое оно для робототехники!), комментаторы точно так же плывут в обсуждении, как и педагоги: http://ailev.livejournal.com/971904.html
2011

Эвристика образовательных ступенек в формальном образовании

Эвристика образовательных ступенек:
-- если нужно что-то выучить сложное, то учить нейронную сетку последовательно через curriculum learning (островки обучения, ровно как островки автоматизации -- по одной мышлеме за раз), а потом эти островки выученного как-то объединять. Это будет быстрее, чем "гештальтом" путём "бросания в воду" сложных проектов. Модульность важна, ибо ошибка в одной мышлеме не будет приводить к сбою обучения соседним мышлемам. Это как лесенка, ступеньки в которой должны быть мелкими. Крупные ступеньки нужно разбивать на мелкие, каждая из которых преодолевается быстро. Крупные ступеньки только кажется, что можно преодолеть быстро. Дело даже не в запредельной cognitive load, а просто не будет времени для множества предъявлений ситуаций, чтобы набрать нужный объем данных для обучения и добиться беглости. Сериализация должна быть на мелкие кусочки. Small batch size и тут помогает (как и в deep learning, как и в операционном менеджменте при рулении потоком).
-- если для какого-то возраста трудно чему-то научиться, то это просто крутая ступенька. Нужно бить её на мелкие части, отдельные мышлемы -- и барьер будет взят. Типичный пример, это двухуровневое обучение алгоритмике (см. обсуждение в http://ailev.livejournal.com/1282836.html по code.org+Scratch, ПиктоМир+КуМир, логические тренажёры+Паскаль). Пример обучения информатики наиболее показательный: было непонятно, почему где-то до седьмого класса обучать алгоритмике не получалось, а потом получалось. Но когда догадались вместо одной ступеньки, требующей понимания формального синтаксиса, последовательности операторов, концепции вычисления и т.д. сделать две (прежде всего убрав синтаксис, текстовый язык из состава требуемых для выполнения заданий мышлем) и тренировать их последовательно на разных типах тренажёров, то дело пошло.

Мне абсолютно очевидно, что взрослые группы с производственным опытом много лучше воспринимают материал курса системного мышления, чем студенты (а про школы я даже думать боюсь пока). Если применить эвристику образовательных ступенек, то это означает, что первые же мышлемы, которым я учу (список системных мышлем: http://ailev.livejournal.com/1278600.html), слишком крупны. Требуется дополнительное обучение, дополнительный тренинг как пререквизит к тренингу системного мышления. А если никто этим пререквизитам не учит, то их нужно включать в тренинг системного мышления -- иначе будет крайне низкий КПД обучения.

Например, возьмём 4D экстенсионализм, дающий нам возможность более-менее строгого рассуждения о системах в физическом мире и изменениях этих систем. А.Г.Кушниренко, листая книжку Криса Партриджа про 4D экстенсионализм (http://borosolutions.net/sites/default/files/Business Objects - Re-Engineering for Re-Use %283rd Ed - early draft - 20140927%29.pdf) сказал, что любой студент 3 курса мехмата это знает-понимает, хотя и в другой терминологии. Я ему заметил, что это бы нужно знать всем, кто изучает информатику, чтобы она не сводилась только к алгоритмике. И если алгоритмику можно научить к третьему классу, то правильно ли ждать 10 лет до третьего курса, а также требовать обязательно поступать на мехмат для добавки понимания моделирования данных/онтологизирования к знаниям алгоритмики? Он отвечал, что в третьем классе, наверное, рановато будет это давать, а в ВУЗе уже поздно. Я считаю, что идеи 4D экстенсионализма просты для физиков-математиков-инженеров в магистратуре (тот самый "третий курс мехмата"). Но там есть обстоятельства, это может быть огромной скрытой ступенькой:
-- не факт, что просты даже для них (как-то сам Крис Партридж обмолвился, что хорошо тренированного объект-ориентированного программиста легче убить, чем переучить на онтологический тип рассуждений)
-- не факт, что даже при знакомстве с этими идеями, они не требуют отдельного тренинга беглости, чтобы они улеглись в основе системного мышления.
-- не факт, что мы хотим учить системному мышлению только физиков-математиков-инженеров магистров. Мы хотим учить и бакалавров, и даже школьников. А это значит, что 4D экстенсионализму и онтологизированию мы хотим учить и школьников тоже.
-- не факт, что мы должны настаивать именно на такой структуре мира. Онтологий много разных, и нужно уметь их распознавать и работать ещё и с ними, а в 4D экстенсионализм только мэппить, чтобы потом быстро с ними рассуждать.
-- не факт, что удастся много чего формализовать по этой линии 4D экстенсионализма, так что нужно заодно учить и выживанию в мире кривых онтологий (http://ailev.livejournal.com/633904.html).

Я проводил эту линию рассуждений ещё в 2011, предлагая сделать среду ОнтоМир и ряд последовательных языков для тренинга моделирования -- http://ailev.livejournal.com/955671.html. В книжке Chris Partridge проводит две главных мысли:
-- безатрибутные описания в оппозицию традиционным объект-ориентированным и
-- 4D экстенсионализм против 3D+time как способ представления изменяющихся объектов физического мира. Понятие изменяющегося в ходе жизненного цикла "воплощения системы", а также различение компонент-модулей и стейкхолдеров-исполнителей их ролей базируется именно на нём.

Не удивлюсь, если внутри понимания 4D экстенсионализма будут тоже найдены какие-то ступеньки -- ровно те, по которым А.Г.Кушниренко говорил "для третьего класса, наверное, ещё рано". И когда эти ступеньки можно будет найти и расщепить, то и третий класс в понимании станет доступным. Хотя понятно, что в сутках 24 часа, и понимание всего-всего, что возможно в третьем классе в этот третий класс не уложишь, нужна сериализация в освоении дисциплин и на макроуровне.

Если вернуться к декларированному мной принципу формального образования в эпоху перемен (http://ailev.livejournal.com/1263511.html -- тренировать нужно работу с "мета") и добавить туда идею, что высокие уровни абстракции помогают удерживать общую картину мира, связывать разные удалённые в семантическом пространстве аспекты между собой быстрее (см. про глубину aka скрытое измерение в языке -- http://ailev.livejournal.com/1274014.html).

Например, для работы с лингвистическими ключами по вытаскиванию онтики (скажем, для упражнения по определению позиции) нужны
-- языковая компетенция по беглому парсингу речи, плюс
-- онтологическая компетенция (подведение под тип какой-то выбранной онтики, рассуждение по схеме -- у СМД-методологов "надевание на голову ведра", равно как умение сознательно выйти за пределы схемы) плюс
-- умение бодро работать с позициями восприятия (как в НЛП -- первая "я", вторая -- "ты", третья -- "он", четвёртая -- "мы" вместе с умением выйти за пределы этой позиционности) удерживать внимание на этих позициях (психопрактика) и менять их,
-- понимание собственно онтики такой работы: про деятельностные позиции, стейкхолдеров и чем это отличается от других похожих вещей.
-- понимание содержания самой позиции (чем занимаются люди с искомой позицией, что они обычно говорят, какие там используются термины, в чём интересы этих людей).

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

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

Вот какой-то набор этих дисциплин (я пока не говорю про связанные с ними практики и разнообразные технологии, например, технологии конкретных языков программирования):
-- логическая компетентность (правильные рассуждения, в том числе в рамках матлогики, и на естественном языке)
-- онтология и моделирование данных
-- языковая компетентность (функциональная грамотность -- умение понимать нарратив и производить нарратив: можно получить её только при работе с несколькими языками, на одном русском её не получишь)
-- (кибер)психотехническая компетентность (openmeta)
-- системный подход (хотя бы в объеме http://ailev.livejournal.com/1278600.html)
-- алгоритмическая компетентность (та самая алгоритмика)
-- вычислимость как таковая (computer science), хотя бы в объеме SICP, https://wizardforcel.gitbooks.io/sicp-in-python/content/index.html
-- алгебраическая компетентность, включая линейную алгебру
-- геометрическая компетентность (наглядная геометрия, потом с выходом в работу 3D САПР)
-- физическая компетентность (связь математики с физическим миром прежде всего)
-- системная инженерия (требования, архитектура, испытания, жизненный цикл и управление конфигурацией, и т.д.)
-- какая-то работа с распределёнными представлениями и их связью с символьными представлениями (тут ещё мало кто понимает, но без этого уже в 21 веке нельзя).

Чему из этого учат в школе? В связном виде мало чему, беглость по этим умениям нужно как-то получать мимо школы. Если и делать какой-то проект по мотивам моего текста "Мимо школы" (http://ailev.livejournal.com/1280262.html), то я бы ориентировался на такой (конечно, неполный пока, абсолютно черновой, написанный впопыхах, только для примера) список.