Category: it

Category was added automatically. Read all entries about "it".

2019

Кругозорные витамины для жизненного опыта (common sense knowledge graphs для large language models)

Второе пришествие здравого смысла/common sense/кругозора в AI
Кругозором мы называем то, что в AI издавна называют common sense и плохо переводят как "здравый смысл". Нет, речь идёт о наборе фактов, которые уже есть у интеллекта и которые используются при мышлении. Классический пример -- это "любой человек знает, что из перевёрнутого стакана вода выливается", и таких знаний у людей огромное количество. У компьютера таких знаний нет, поэтому чисто логический вывод в конкретных ситуациях не работает: информация о ситуации у компьютера обычно неполная, но люди недостающую информацию легко достают из своего необъятного кругозора (а дети имеют кругозор поменьше, и поэтому они не так умны). И тут начинаются проблемы:
-- кругозор необъятен, и его непонятно как получить вручную. Компания CYC просадила огромное количество денег на создание своей базы данных. И продаёт теперь лицензии на логический/дискретный/символьный кругозор, собранный вручную по $1млн.
-- кругозор необъятен, и поэтому логический вывод на нём вычислительно труден
-- кругозор состоит из бесчисленного количества исключений. Так, тот самый стакан с водой, если в центрифуге с вертикальной плоскостью вращения, то скорей стекло лопнет, чем вода выплеснется из него в тот момент, когда он оказывается "перевёрнутым". Или если вода в нём замёрзла, то она не выльется. Или если на стакане крышка. И всё это нужно учитывать в выводе, это defeasible reasoning (опровержимые рассуждения, https://plato.stanford.edu/entries/reasoning-defeasible/), и для работы с такими рассуждениями нужны не просто логики, а немонтонные логики, https://plato.stanford.edu/entries/logic-nonmonotonic/, позволяющие опровержение/retraction вывода. Вот эта "опровержимость" хорошо иллюстрируется моими замечаниями к решению тренажёрных задач (есть раздел учебника на эту тему), где инженеры вместо обсуждения наиболее вероятной ситуации обсуждают ситуацию с минимальной вероятностью, но формально опровергающую задуманный ответ. С естественным языком обычно всегда можно найти какие-нибудь маловероятные исключения и проблемы, редко встречающиеся, но делающие предположение формально не истинным (если хотя бы иногда не истинно, то в формальном исчислении ведь это просто "не истинно" -- доказательство от противного всегда сработает, достаточно предъявить один пример невыполнения правила!). И весь этот кругозор в конечном итоге привязан к контрфактическим рассуждениям, причинному выводу.
-- по факту речь идёт о формальной системе в theory theory, "онтологии". Знание о какой-то ситуации скорее всего будет в другой формальной системе, и общего вывода на этих системах не сделаешь.

Идея с кругозором поэтому осталась маргинальна, CYC с его дико дорогим и неуклюжим проектом уехал на обочину прогресса, и финансирование подобных проектов было прекращено, научное сообщество посчитало это полным тупиком, заниматься common sense стало неприлично, как до 2012 года заниматься нейронными сетями.

Но нейронные сети с 2012 года уже были, а с 2017 года в них на первый план вышли нейросетевые языковые модели (начиная с модели BERT архитектуры Transformer), в которых:
-- есть модель собственно языка, поэтому вход-выход этой модели не в виде ужасных формул (на входе тексты, на выходе тексты. И ещё можно говорить о "визуальных языках", рассматривать и картинки и целые ситуации). Тут решаются проблемы перевода, в том числе проблемы перехода от дискретных "словесных" (из символов/слов) к непрерывным репрезентациям (я писал про representational learning в 2015 -- https://ailev.livejournal.com/1045081.html). Понятия живут в непрерывных представлениях, а слова их представляют неточно, для перевода в слова делается discrete sampling -- иногда одно слово берём, иногда три для выражения понятия, иногда целую историю рассказываем. Но совмещать онтологии в таком пространстве можно, все построения Хофштадтера про "аналогии" работают! И даже есть что-то похожее на способность рассуждать, хотя с этим совсем непонятно: достаточно большие нейросетки типа GPT-3 со 175млрд. параметров или вновь появившаяся Switch Transformeк с 1.6 триллионами параметров (https://arxiv.org/abs/2101.03961) явно могут что-то выводить, но не очень понятно пока что и как.
-- есть знания о мире, а поскольку обучение идёт по какому-то гигантскому корпусу текстов (или текстов с картинками, или даже просто картинками), описывающих что-то в мире. Можно считать, что решена проблема кругозора (вот я обсуждал их связь с кругозором в 2018, https://ailev.livejournal.com/1449229.html).
Но не тут-то было. Нейросетевые языковые модели оказались тупы, причём очень похожим способом на тупость людей, у которых нет "машинки типов" (писал про неё https://ailev.livejournal.com/1532144.html -- машинка типов вскрывает нелепости в тексте). В кругозоре языковых моделей чего-то не хватает крайне важного, они генерируют легко как красивые художественные тексты, так и полную ахинею. Вот Евгений Пескин привёл пример диалога, типичный для людей и нейросеток, у которых нет этого контроля типов, нет учёта контекста социального взаимодействия/social-interaction с намерениями и какой-то связной онтологией для ситуации:
- Девушка, дайте мне таблетку.
- Вам какую?
- Белую.
- Послушайте, это аптека. У нас много белых таблеток.
- Одну дайте.
Этим вопросом опровержимого вывода и кругозора/common sense занялась Yejin Choi (https://homes.cs.washington.edu/~yejin/, https://arxiv.org/search/?query=Yejin+Choi&searchtype=all&source=header), у которой научная судьба похожа на судьбу выбравших нейронные сети "когда это ещё было не модно": ей все говорили, что у неё не будет денег и научных результатов с этим провальным "здравым смыслом", а она таки занялась проблемой, ибо:
-- вычислительные мощности выросли
-- появились непрерывные представления понятийных пространств (в том числе такие, как большие языковые модели, large language models типа BERT)
-- можно использовать не убогое формальное представление ситуаций, а полноценное языковое (ибо нейросетка хорошо работает с языком)

Команда Yejin Choi получила отличные результаты, которые можно посмотреть в ролике https://www.youtube.com/watch?v=h2wzQKRAdA8 и работах https://arxiv.org/abs/2101.00297, https://arxiv.org/abs/2012.08012, https://arxiv.org/abs/2010.12884, и особенно https://arxiv.org/abs/2010.05953.

Для вывода в AI вместо формально-логических триплов нужно использовать полноценный естественный язык
Первый вывод в том, что нужно использовать естественный язык для представления информации о common sense, ибо пространство понятий непрерывно, и никакие символы-термы не передают понятия точно (categories/concepts vastly outnumbered words and require free form open text description). Вывод в таком непрерывном бесконечном пространстве становится с этого момента generative as opposed to categorization/discriminative task -- ибо пространство вывода/inference/reasoning бесконечно, мы не выбираем результат рассуждения из ограниченного их набора, а порождаем результат мышления. Порождение идёт через абдукцию (поиск минимального объяснения к частичному наблюдению, и обычно требует дополнительной внешней информации, занимался этой абдукцией Charles Sanders Peirce, https://plato.stanford.edu/entries/abduction/peirce.html, и тут John Sowa и Yejin Choi удивительно единодушны). Тут можно обсуждать о том, как вообще делается вывод в нейросетях. Choi в своих работах обсуждает алгоритмы neural backpropagation (алгоритм DeLorean), search with logical constraints (алгоритм NeuroLogic), distributional neural imagination (reflective decoding). И таких работ по выводу в бесконечных пространствах понятий, которые можно выразить в языке, довольно много. Но всё одно там работает "машинка типов": logical constraints, правила, формулируются через and и or, это ж всё равно логический язык! Хотя речь в defeasible reasoning идёт не о строгих доказательствах (вывод не доказательный, non-demonstrative), а просто об "усиленном рассуждении" (ampliative reasoning).

Естественный язык недоспецифицирован, и это важно (замечу, что из онтологов практически то же самое говорит John Sowa, и он же говорит о необходимости выражения знаний на естественных языках, но далее он же спокойно говорит о формально-логических построениях в языке логики первого порядка/common logic, а вот Yejin Choi сразу говорит, что этих логических представлений и не нужно, естественный язык лучше). И дальше в тех местах, где люди обычно говорят "факты" или "отношения" или "триплы", Choi сотоварищи говорит сразу о правилах/rules и об элементарных выводах/inferences, которые могут быть использованы или опровергнуты/retract в ходе опровержимых рассуждений/defeasible reasoning.

Кругозорные графы знаний (common sense knowledge graphs) на естественном языке: без них большие языковые модели глупы
Второй вывод -- это то, что важных для вывода "отношений", "элементарных выводов" кругозорного уровня нет в исходных текстах, они оттуда не вытаскиваемы! Какие это отношения? Указывающие прежде всего на прагматику (чего обычно хотят люди, на что направлена коммуникация), на события (например, возможные препятствия к реализации намерений) и физический мир (использование объектов). А остальное? А про остальное есть надежда, что может быть вытащено из корпуса текстов (хотя опять же, исследования тут только-только начинаются).

Choi предлагает: давайте а) триплы просто представим как входной текст для обучения нейросетевой языковой модели, просто вот так вытянем их всех в линейку и скормим так же, как основной огромный корпус текстов. В модели кругозорного графа знаний/common sence knowledge graph/CSKG Atomic-2020 1.33млн. трипловых высказывания по 23 типам отношений, в виде текста это очень немного (явно завышенная оценка -- 100Мбайт) по сравнению с, например, 750GB текстов в Colossal Clean Crawled Corpus, на котором обучалась языковая модель Switch Transformer Гугля. Так сказать, "не еда, а витаминчики -- нужно их мало, но без них цинга и смерть". И вот тут оказывается, что "знаниевые витаминчики" бывают разными, эти CSKG отличаются друг от друга по типам представленных отношений существенно. Витаминчики для персональных ситуаций могут существенно отличаться от витаминчиков для обсуждения производства. Вот картинка из https://arxiv.org/abs/2010.05953, показывающая разнообразие CSKG по относительному составу входящих в них отношений:


А вот пример этих типов "триплов":


И вот когда вы набираете "витаминчиков" в том числе по социальным взаимодействиям, то можете дальше учитывать и моральные и этические соображения. Так что по этой линии выходят ещё и приложения к рассуждениям на темы морали и этики https://arxiv.org/abs/2011.00620, https://arxiv.org/abs/2008.09094. Машинки строгих выводов на строгих правилах не работают, ибо правила обычно сильно противоречат друг другу в реальных ситуациях, оказываются недоспецифицированными. Когда их начинаешь конкретизировать, то там сплошные противоречия и нюансы, но нужно как-то рассуждать на этом материале. Вот добавка этического и морального кругозора (descriptive ethics, https://en.wikipedia.org/wiki/Descriptive_ethics в отличие от normative через кем-то определённые правила ethics) позволяет тут сдвинуться с места и что-то думать про этику и мораль. Вывод в сложных моральных ситуациях (в "витаминчиках морального кругозора" 300тыс. "правил") оказывается вычислительно трудным. Но если работать не в дискретной строгой логике, а "аппроксимировать", "порождать решение" в непрерывном пространстве, а не выбирать единственно верный ответ, то всё вполне работает.

Очень далёкая аналогия тут -- это в части трудности точных вычислений нестабильности планетных орбит. Но если взять нейронную сеть (свежий пример: https://arxiv.org/abs/2101.04117), то можно получить приближённое решение задачи, которое оказывается со всех сторон (точность, трудоёмкость вычислений) на порядки лучше, чем попытки вычислить точно. Если "слишком много всего учитывать" и этот учёт запутанный, то приблизительные решения в непрерывных представлениях оказываются легче достижимыми, чем в дискретном аналитическом представлении.

Это всё делает Allen Institute, поэтому "кругозорные витаминчики" доступны в open source: https://mosaickg.apps.allenai.org/ (хотя для атласа кругозорных отношений/atlas of commonsense relations Atomic-2020 ничего пока не было опубликовано, для более ранних работ наборы данных все опубликованы уже, так что ждём публикации окончательных работ, а не препринта в arxive, и дальше публикации датасета).

Так что CSKG/common sense knowledge graphs рекомендуют использовать как витаминчики, которые исследования/self-supervising learning по корпусу текстов сами выделить не могут, и поэтому предлагается их просто добавлять в концентрированном виде, "без воды" (как большой такой текст, полученный конкатенацией высказываний о триплах отношений). Где берём? Краудсорсинг, "механический турок", толока. Дорого?! Но тут идёт замечание, что это копейки по сравнению с обучением основной языковой модели на гигантских корпусах текстов, а результат получается ошеломительный: neural knowledge model Comet-Atomic2020 successfully transfers declarative knowledge to beat GPT-3, the largest pre-trained language model, in spite of using 400x fewer parameters.

Понятно, что эти "кругозорные витаминчики" совершенно не мешают, а только помогают потом настроить предобученную по корпусу текстов и кругозорному графу знаний языковую модель. А потом её ещё можно донастроить по какому-нибудь zettelkasten -- и если это личный экзокортекс, то получить личного помощника, а если это проектный экзокортекс (у нас ведь проектная команда вполне себе мыслит/вычисляет), то получить коллективного помощника. Этот помощник как минимум сможет содержательно отвечать на какие-то вопросы с учётом содержания zettelkasten, генерировать какие-то осмысленные тексты и предположения там, где "просто преобученная языковая модель плюс подстройка под предметную область" не справляется.

Я писал в "Предобучи, потом подстрой/pretrain then finetune" о том, что прикладное обучение будет делаться после обучения трансдисциплинам для появления какого-то кругозора, https://ailev.livejournal.com/1485511.html. Обучение людей и нейронных сеток вполне можно обсуждать как в чём-то похожие, и способы обучения брать из AI назад в педагогику/хьютагогику (https://ru.wikipedia.org/wiki/Эвтагогика )/андрагогику. Работы Choi указывают на развитие этой идеи: она считает, что нейросетки нужно учить не только давая доступ к богатому на объекты и действия миру, но ещё и так же, как и людей -- через чтение учебников (а не художественной или случайной литературы), проведение тьюториалов (а не путём "проблемного обучения", когда дают решить задачу, решение которой давно известно), то есть давая знания в декларативной/"объявительной" форме. Весь вопрос, какие именно это знания! Добавлять нужно те знания, которые трудно вытащить самому из окружающей среды. Например, знания о машинке типов (что можно вот так проверять тексты, вот так относиться к словам).

S1 и S2 это про осознанность, а не про распределённое против символического или про формальное против неформального
Третий вывод -- это то, что "автоматическое мышление" S1 нужно рассматривать по Канеману вместе с восприятием (object recognition, image segmentation), ибо нарезка мира на объекты идёт из восприятия. Этой нарезке на объекты нужно учить. И это знание об объектах тоже нужно давать декларативно/обучением, а не только надеяться на то, что правильные объекты будут выделены вниманием в ходе исследований. Нет, предыдущие усилия в исследованиях нужно брать -- и скармливать ученикам (тут мне уже без разницы, кремнивые эти ученики или мясные) "без воды" как материал для опровержимого и контрфактуального вывода. Но не в виде логических утверждений, а в сформулированном на естественном языке виде. Хотя да, люди учебник прочтут, но этот же материал в виде "естественноязыковых триплов" (то есть триплов не в RDF) не прочтут. И людям ещё потребуется немного поработать с этим материалом, чтобы его усвоить. Но речь идёт о целенаправленном процессе обучения, без надежды, что "поживёт, наберётся опыта". "Из опыта" объекты для S1 не берутся.

А дальше Choi с Kahneman хором (Канеман это делал несколько раз, последний вот тут, на AI Debates 2 в декабре 2020: https://www.youtube.com/watch?v=2zNd69ZGZ8o) уточняют про S2:
-- неверное понимание, что S1 это про распределённое представление, а S2 про символьное/язык. S1 тоже знает про язык, интуитивные мысли -- они вполне в языке! S1 делает львиную долю работы по выводу! Байесовский вычислитель в S1, и он отлично работает с понятиями! Другое дело, что понятия там в непрерывном пространстве и выражаются естественным языком. Вот это "понятийное мышление в бесконечном пространстве значений" естественного языка -- это ключ, оно необходимо. Язык есть, но он используется как язык в целом, а не отдельные слова или словосочетания или даже графы ситуаций типа фреймового представления знаний Марвина Минского (Choi подчёркивает вот этот факт: число выражаемых языком понятий бесконечно больше числа используемых в языке слов и устойчивых словосочетаний). И в S1 ни один вывод не верен абсолютно, выводы на этом понятийном киселе причинны и вероятностны по природе, а при добавлении контекста ("новых привходящих") все результаты вывода вполне могут быть объявлены враньём (в формальных онтологиях тут возникает проблема ontology revision -- менять/согласовывать придётся все знания, а не только текущий вывод. Даже использование микротеорий тут помогает мало). S1 держит представление мира, и оно каким-то образом имитационно моделирует мир (simulation of the world). Но оно отслеживает невязки (что укладывается в "нормальное", и что расходится с "нормальным", удивляет -- расхождение симуляции и реальности). Контрфактуальное мышление, причины и следствия, а ещё оценка эмоций и намерений, вплетение прагматизма, нацеленности на какой-то результат в деятельности -- это S1 мышление.
-- S2 это про "намеренное выполнение каких-то вычислений", это про надзор за вниманием (сознание, kahneman использует слово explicit в противовес implicit в S1). Нет, ключевое различие для Канемана -- это something that happens to you (S1) and something that you do (S2), и это всё внеязыковое или языковое тут уже неважно. Важно тут: для чего это мы напрягаемся какие-то вычисления/мышление делать, а не довольствуемся тем, что просто "случилось"? Для социальности, для коммуникации (включая коммуникацию с собой): только когда сталкиваемся с другими (или хоть и собой, но осознанно) мы занимаемся аргументацией, контрфактуальностью, удерживанием длинных цепочек причинных связей (то есть объяснениями), учётом этики, морали и вообще социальных взаимодействий.

По первому пункту ("S1 про богатое концептуальное представление, в том числе и естественный язык") я всегда говорил, что понятия могут быть представлены и ощущениями, и выражены синестезийно (это мы регулярно обсуждали в рамках разговоров о телесном мышлении, TAE и всём подобном, а также при обсуждении материала книжки "Визуальное мышление", https://ridero.ru/books/vizualnoe_myshlenie/).

Но вот эти уточнения про S2 удивительно похожи (вот прямо все слова совпадают) про дискуссию о сознании и внимании, и именно на это обратил в какой-то момент внимание Виктор Агроскин (https://vvagr.livejournal.com/2379034.html и видео семинара по трёхчастной модели сознания Graziano https://www.youtube.com/watch?v=lyOQhPlSxgI):
-- тоже упоминание о коммуникационном характере (при этом коммуникация может быть и с собой! но языковый "интерфейс" есть и в модели Graziano), значимости аргументации "для других", для себя же достаточно "ощущения правоты" от S1, незачем обращаться к трудному S2
-- удержание внимания при захождении в тупики, backtracking в рассуждениях, модель самого мышления (работа с контрфактуальностью и опровержимостью).
-- использование extended cognition для удержания внимания, а также подхват в мышление внешних вычислителей (коммуникация с другими)

Так что S1 выходит как "неосознанное/автоматическое/основное мышление" (и сопричастное ему восприятие, которое у Канемана рассматривается рядом!), а S2 -- мышление в рамках осознанности. А схема формальности оказывается про другое, про уход от естественного языка, про representation sampling -- переход от непрерывного пространства понятий к дискретной выборке из его точек. Но мышление про эти выборки из точек обсуждается отдельно в части S1 и S2 -- как неявное/implicit или явное/explicit, это совсем другая шкала. Поэтому про "спектр формальности мышления" нужно материал уточнить.

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

Цифровой -- это новый информационный, цифровая нить -- это новая интеграция данных

Цифровая трансформация, инженерия, модель, тень, нить и так далее
В языке медленно, но верно слово цифровой/digital заменяет слово информационный/information. Где лет десять назвали бы "информационный", сегодня называют "цифровой". Означает ли это хоть что-нибудь? Нет, ничего особенного, кроме как вы будете попадать в правильные строчки бюджетов, если будете следовать моде. Под "организационные изменения" и даже "организационную трансформацию", равно как и под "автоматизацию/компьютеризацию" деньги не дадут, а вот под "цифровую трансформацию" -- пожалуйста. Ещё объяснят, что это ж вы будете думать и о людях, и о компьютерах, и о бизнес-моделях, как будто это в голову не придёт при использовании более старых терминов для того же (подробней я писал об этом год назад в "Об цифровую трансформацию: то же оргразвитие, и даже не в профиль", https://ailev.livejournal.com/1497402.html, там был и слоган про "больше buzzwords богу buzzwords"). Но новых "цифровых" терминов в коропоративной цифре (раньше бы сказали "айти", но поддамся тренду) к началу 2021 года резко набежало, давайте с ними разберёмся.

Речь пойдет о digital transformation, digital engineering, digital engineer, digital twins, digital model, digital shadow, digital thread, SDM (simulation data management), model-based engineering, model-based systems engineering, digital mission engineering, и тут давайте пока остановимся (игнорируя всякие маркетинговые терминологические затеи одной фирмы, типа specification data management, который формулируется как "высокоуровневый PLM", https://specright.com/blog/specright/whats-the-difference-between-product-lifecycle-management-and-specification-data-management/).

Сразу оговорка: о значении этих терминов в мире так и не договорились. Поскольку нет ни одного законодательного органа одной страны, ни одного комитета по стандартизации, ни одного факультета в каком-то университете, где приватизировали бы язык, есть множество документов, в которых даются самые разные толкования этим терминам. А ещё язык живёт независимо от всех этих официальных документов и словарей, и люди в самых разных фирмах используют эти слова уж как бог на душу положит. И помним, что словарные значения -- это значения вне контекста какого-то проекта, а в конкретных высказываниях у всех этих слов появляется ещё и уточнённый контекстом смысл. Но не всё так плохо: несмотря на дикий разнобой в значениях можно понять, о чём идёт речь. Уж точно не о сыроварении и не о бирюзовых организациях! Нельзя сказать, что "эти термины вообще ни о чём".

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

Если мы провалимся на системный уровень выше, то получим сеть цифровых двойников/digital twins network. Если провалимся на уровень ниже, то получим целый ряд моделей как по разным viewpoints на стадии эксплуатации, так и по жизненному циклу (все эти механические, электрические, тепловые и прочие модели).

Цифровая инженерия: делаем цифрового двойника и связываем его цифровой нитью
Цифровая нить/digital thread -- это технология (инструменты и практика федерирования-объединения-интеграции данных, обычно на основе так называемых семантических моделей данных/semantic data models, тысячи их), связывающая между собой все эти отдельные модели, а также цифровые двойники окружения и физического двойника. Инженер старой закалки скажет "интеграция данных жизненного цикла" и помянет множество PLM (а если это не машиностроение, то помянет "корпоративную шину данных"), менеджер новой закалки скажет "цифровая нить" и помянет PLM, ERP, EAM и даже CRM (и вообще всё остальное). И, поскольку "цифровой -- это новый информационный", то заметят, что для какого-нибудь здания или моста кроме BIM/building information model цифровая нить добавит к цифровому двойнику данные дронов, сенсоры интернета вещей и какой-нибудь искусственный интеллект обнаружения аномалий для ремонта по состоянию. А разве это не предусматривалось концепцией BIM? Предусматривалось, но тогда и деньги были бы прежние. А цифровая нить -- это новый бюджет, новые слова для новых денег! Скажем, вы просите денег на интеграцию данных жизненного цикла, какие слова будете говорить? А тут говорят так: Digital thread -- golden thread of information that runs right throuht the life cycle of a project, the thread that grows and gathers more strands until it develops the heft and weight of a digital twin (https://www.raconteur.net/technology/digital-engineering-what-is-it-and-why-you-need-to-know-about-it/). Инженеры старой закалки продолжают говорить "управление информацией" или "управление данными", их эта менеджерская поэзия не увлекает. Так, если нужно сшить между собой мультифизическую модель (модели нескольких физик -- механическую модель, электрическую модель, тепловую модель, акустическую модель и т.д.), то инженеры будут говорить управление данными имитационного моделирования/SMD/simulation data management, а менеджеры старой закалки предпочтут говорить управление информацией (имитационного/мультифизичного) моделирования/simulation information management (но говорят так довольно редко, менеджеры до этих тонкостей уже не доходят, они больше про "нить").

Цифровая инженерия/digital engineering -- это создание цифрового двойника путём сплетения цифровой нитью различных его моделей, экземпляра его физического двойника и цифровых двойников окружения. Цифровой инженерией занимается цифровой инженер/digital engineer, и сразу признаётся, что знания цифрового инженера должны быть настолько широки (вся просто инженерия и всё просто айти), что его роль выполняется обычно большими командами.

Если цифровая нить не привязывает экземпляр цифровой модели цифрового двойника к физическому двойнику (экземпляру киберфизической системы, чей двойник), то это просто цифровая модель/digital model, данные к ней и из неё попадают "вручную", асинхронно. Если цифровая нить привязывает физического двойника к модели, и модель обновляется автомагически, то это будет цифровая тень/digital shadow. И только если цифровая нить привязывает не только физического двойника как источника калибровочной информации для модели, но и модель как источник калибровочной информации для физического двойника -- вот тогда это полноценный цифровой двойник/digital twin. И помним, что формально для ответов на вопросы "а что если..." можно породить несколько digital siblings (ибо они не будут соответствовать полностью физическому двойнику, их не любят называть цифровыми двойниками, но признают кровное родство).

Вот в этой картинке (из https://www.cadmatic.com/en/resources/blog/digital-model,-digital-shadow,-or-digital-twin-%E2%80%93-what-is-at-the-core-of-data-driven-shipbuilding/) пунктирная нить означает ту самую цифровую нить:

Вот типичное софтовое предложение для организации цифровой нити, найдите хоть одно отличие от предложений по организации PLM и интеграции данных жизненного цикла: https://prostep.us/cpmn/apidt/digital-thread-and-digital-twin-solutions/ (и да, это предложение от фирмы, которая традиционно занималась тематикой PLM, а дальше просто переписала свои тексты с использованием модной лексики).

Вот картинка новой V-диаграммы от Boeing, в которой поминается ещё один синоним для цифровой инженерии: моделеориентированная инженерия/model-base engineering/MBE, и теперь это не V, а MBE-ромб/diamond, с 2018 (https://www.incose.org/docs/default-source/midwest-gateway/events/incose-mg_2018-11-13_scheurer_presentation.pdf):

В этой диаграмме к традиционной V-диаграмме физической системы/двойника добавлена симметричная Λ-диаграмма цифрового двойника, а серединка отдана цифровой нити (вместо показа традиционных для этой диаграммы проверок и приёмок).

MBE любят в NIST и туда включают модели требований, архитектуры мультифизику и всё остальное, в отличие от INCOSE, которая любит MBSE/model-based systems engineering/моделеориентированную системную инженерию с акцентом на модели требований и архитектуры и меньшим акцентом на мультифизику -- но в INCOSE тоже переобуваются на ходу, и ветер там дует с военной стороны (см., например, как определяют digital engineering в SEBoK, https://www.sebokwiki.org/wiki/Digital_Engineering -- прямо ссылаются на DoD и в тексте, и в литературе).

Цифровая трансформация/digital transformation -- это прежде всего постановка практики цифровой инженерии, переход к тому, чтобы физические двойники (предприятие в ходе его работы, пациенты в ходе операции, здания в ходе эксплуатации, самолёты в полёте) управлялись со стороны своих цифровых двойников. Если этого нет, а просто вы ставите какую-то ещё одну базу данных и ещё одну систему аналитики, вроде как можете говорить о big data всём таком прочем модном, можете добавлять что-нибудь про цифровую тень но слово "цифровой" для такой трансформации говорить должно быть неудобно. Но с этим, конечно, никто не считается.

Военная цифровая инженерия
Как всегда, волну новой терминологии оседлали военные, прежде всего США. Они сходу объявили, что у них теперь цифровая инженерия, а в ней цифровая инженерия (военных) миссий/digital mission engineering -- удостоверение того, что вся инженерная работа как-то повлияет на результативность военных миссий. Если вы начнёте искать в сети всю эту цифровую терминологию, то найдёте много военного (они хорошо разрабатывают регламенты, стандарты и прочее подобное, что в нормальном бизнесе аккуратно срезается lean-подходом) -- так что аккуратней с источниками. Вот вам ссылки на тексты военных, прелесть ведь как всё структурировано, но не факт, что именно в этом виде оно будет хорошо работать в коммерческом секторе (факт, что не будет):
-- "What Is Digital Engineering and How Is It Related to DevSecOps?", ноябрь 2020, https://insights.sei.cmu.edu/sei_blog/2020/11/what-is-digital-engineering-and-how-is-it-related-to-devsecops.html (помним, что DevSecOps -- это те же DevOps, только с добавкой безопасности. Это ж военные!). При этом чётко говорится, что это всё для спасения жизней в том числе разработчиков и испытателей (во время испытаний F100 в 50-е погибли 324 пилота и потеряно 889 самолётов, https://en.wikipedia.org/wiki/North_American_F-100_Super_Sabre, а "цифровые испытания" позволяют сократить потери в подобных проектах).
-- "Digital Engineering Metrics. Supporting Technical Report SERC-2020-SR-003", июнь 2020, https://sercuarc.org/wp-content/uploads/2020/06/SERC-SR-2020-003-DE-Metrics-Summary-Report-6-2020.pdf (в этом отчёте старинное MBSE/model based systems engineering из INCOSE используется как синоним с Digital engineering, хотя MBSE это только часть digital engineering, ибо в MBSE обычно поддержка работы с требованиями, архитектурой и планами испытаний, а в digital engineering ещё и non-architectural part of design как минимум, плюс ремонт и обслуживание на стадии эксплуатации, во время работы digital twin. И это ж военные и государственные: если вы хотите попросить приличных денег за цифровую инженерию, то вам сюда: десятки метрик для оценки этой самой цифровой инженерии! KPI получите в количестве, никаких денег не хватит, чтобы их выполнять и по ним отчитываться! И упор тут именно на digital transformation: как определить, идёт трансформация, или таки не очень. Но если вам вдруг выпало заняться информатизацией, тьфу, цифровизацией, тьфу, цифровой трансформацией в части постановки цифровой инженерии, то это хорошие чеклисты: о чём нужно подумать -- но ни в коем случае не делать всё сразу, ибо тогда точно не сделаете, но зато освоите много денег, по круглой сумме за каждую метрику. Вот прямо берёте метрику и заключаете какой-нибудь договор на её реализацию с кем-нибудь, будет не хуже, чем в армии США).
-- digital mission engineering, https://www.agi.com/digital-mission-engineering (больше всего тут материалов от AGI, an ANSYS company -- поставщик софта для системной инженерии в военных применениях, вот и смотрите материалы на этой странице). Можно ли это применить гражданским? Ну, считайте, что речь идёт о нацеленности всей инженерии на эксплуатацию в условиях разнородного окружения целевой системы.

Смотреть новости по всему этому богатству цифровой инженерии можно на порталах https://www.plmportal.org, https://www.digitalengineering247.com, на немецком https://www.digital-engineering-magazin.de/. А что со старинными названиями? Например, "автоматизация"? Тоже всё найдёте, https://www.automation.com/ -- ресурс международного общества автоматизации. Ну, вы поняли: где раньше занимались PLM, автоматизацией, САПРами, инженерным моделированием, там и продолжают заниматься. Но слов стало больше, и ресурсов стало больше. Ну, и старые слова тоже вполне живут, люди-то никуда не делись. По последней ссылке вы найдёте и smart manufacturing (Industry 4.0), и integrated manufacturing business operations, и IIoT/Industrial Internet of Things.

Для не-заводов всё тоже цифровое, но единства в терминологии ещё меньше
У банка, страховой компании, вуза, логистической компании и многих других нет PLM, но цифровая трансформация есть. У нас для них советы:
-- иметь таки для их целевых систем цифровых двойников, а для этого целевую систему придётся таки найти в физическом мире как физического двойника.
-- считать, что прохождение кейсов по проектированию, как бы "изготовлению" и как бы "эксплуатации" (как это у них называется? у всех ведь по разному) -- это цифровой банкинг, цифровое образование, цифровое страхование и т.д.. Тем более что все эти слова есть (и означают в том числе уход в онлайн плюс ту же автоматизацию и биг дату с data-driven enterprise, тьфу, это ж теперь цифровая трансформация!).
-- смело пересказывать тексты и идеи промышленников, заменяя слова, там ведь всё то же самое. Не забывайте только вставлять слова про privacy, safety и security, хотя и у промышленников compliance через слово. С другой стороны, там везде и своих слов хватает. Но если вам приходится работать и с промышленными предприятиями, и банками, то лучше бы как-то экономить мышление и научиться думать о самой разной цифровой трансформации одинаково.

Обычно непромышленные организации идут впереди промышленных, у них что сейчас происходит с цифровизацией? Ну, hyperautomation/AI-Transformation/Digital Process Automation/Intelligent process automation (и ряд других терминов от разных лавок, пока совсем-совсем не договорились, вот обзор терминологии: https://research.aimultiple.com/hyperautomation/ (там полный винегрет изо всех идей, абсолютно разноуровневый). Отличается всё это от цифровой инженерии только тем, что явно и специально поминается через слово искусственный интеллект и машинное обучение, но не говорится о том, куда этот интеллект употребляется (а тут как с людьми и употреблением естественного интеллекта: нельзя ничего сказать, использовать-то можно везде!). В инженерии проще: объявляем эти "искусственные интеллекты" просто какими-то отдельными моделями/вычислителями и вплетаем их цифровой нитью в состав цифрового двойника. А что тогда RPA? Ну, это инструментарий цифровой нити, который может связать и текущий корпоративный софт, и вплести в него а хоть и людей. Интерфейсы к живым людям в PRA тоже есть, Текущий RPA состоит из набора коннекторов к софту, набора коннекторов к человеку (все эти распознавания речи), плюс BPM-движка (можно думать, насколько там близко к case management -- они ж себя процессниками считают, и языки там типа CMMN есть, хотя пока выглядит как "голимый недоBPMN". Но это ж ровно то же самое, что PLM, только данные берём не сапровские, и не только через API, но и через формы, и непосредственно от живых людей!

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

UPDATE: обсуждение в фейсбуке -- https://www.facebook.com/ailevenchuk/posts/10220193584883882, обсуждение в чате блога -- с https://t.me/ailev_blog_discussion/5866
2019

Уровни Марра и первые принципы: это всё системное мышление

Sutton напомнил в дебатах по AI 2020 (пока наиболее подробное изложение в https://www.zdnet.com/article/ai-debate4-2-night-of-a-thousand-ai-scholars/, выступление Sutton в https://www.youtube.com/watch?v=hcJNFdZit-Q) про необходимость вести обсуждение чего бы то ни было в рамках концептуальных подходов (https://en.wikipedia.org/wiki/Conceptual_framework, иногда ссылаются на просто подход/framework, в том числе системный подход именно таков -- набор концептов для рассмотрения сложных ситуаций), а не как попало. Подходы обращают внимание на важное, позволяют структурировать обсуждение.

Для обсуждения искусственного интеллекта Sutton предложил использовать "уровни анализа" Марра для вычислительной системы (первая версия Marr and Poggio 1976 с четырьмя уровнями, https://www.researchgate.net/publication/37596647_From_Understanding_Computation_to_Understanding_Neural_Circuitry, вторая с тремя уже классическими -- 1982 год, https://web.stanford.edu/class/psych209a/ReadingsByDate/01_07/Marr82Philosophy.pdf, в Сети анализов этой работы более чем достаточно). Даю по работе Levels of Analysis for Machine Learning от коллег Sutton в DeepMind, https://arxiv.org/abs/2004.05107):
-- Computational level.What is the goal of a system, what are its inputs and outputs, and what mathematical language can be used to express that goal?
-- Algorithmic or representational level. What representations and algorithms are used to achieve the computational-level goal?
-- Implementation level. How is the system implemented, either physically or in software?

А вот как это изложил Sutton в своём слайде в дебатах:

Эти "уровни анализа вычислительных систем" всем показались очень удачными, и им пошли давать разные толкования, и продолжают давать толкования до сих пор. Но раньше этих попыток было ещё больше, см., например, https://www.albany.edu/~ron/papers/marrlevl.html, 1991, где сразу указывается: In recent work in the theoretical foundations of cognitive science, it has become commonplace to separate three distinct levels of analysis of information-processing systems. David Marr (1982) has dubbed the three levels the computational, the algorithmic, and the implementational; Zenon Pylyshyn (1984) calls them the semantic, the syntactic, and the physical; and textbooks in cognitive psychology sometimes call them the levels of content, form, and medium (e.g. Glass, Holyoak, and Santa 1979).

Важно тут указать, что предполагается рекурсивное применение этого фреймворка, то есть не только для вычислительной системы, но и для её подсистем (это, например, явно обсуждается с примером в https://arxiv.org/abs/2004.05107).

Я предлагаю считать, что удачность выделения этих уровней -- это просто использование системного подхода в вычислительном мышлении, и не более того (системный подход в вычислительном мышлении я обсуждал в https://ailev.livejournal.com/1544639.html):
-- вычислительный уровень -- это предложение обсудить функциональность вычислителя, формализм обсуждения потребностей и требований (и это требует разговора на языке надсистемы)
-- алгоритмический или репрезентационный уровень -- это уровень обсуждения функциональности вычислителя (в смысле из "Программирования для математиков" Кушниренко и Лебедева, первые два раздела первой главы -- https://yadi.sk/i/virGAvARqqtMhQ, хотя для случая неимперативного программирования и тем более вычислений в распределённых представлениях нельзя применить тамошние идеи "в лоб", но если речь идёт о полнотьюринговых вычислениях, а все они таковы, что обсуждается у того же Дэвида Дойча, то различение "исполнитель-выполнитель" может оказаться очень полезным. Аналогичные различения пытался ввести Алан Кей как chain of meanings. А для самого Марра обсуждают, что он вводит computational pipelines).
-- уровень реализации -- это уровень обсуждения конструкции вычислителя, что там в физике будет эффективно реализовывать вычисление (в терминах Кушниренко-Лебедева это обсуждение выполнителя для данного исполнителя).

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

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

Осталось понять, что же говорил Sutton, зачем ему был нужны эти уровни анализа? Sutton обратил внимание на отсутствие высокоуровневых обсуждений (универсальных алгоритмов уровня когнитивных фреймворков, вычислительная надсистема над традиционно понимаемом "компьютере простых алгоритмов") и отсутствии формализации разговора об этих вычислениях. Его волнует отсутствие обсуждения обучения с подкреплением (именно reinforcement learning он считает хорошим кандидатом на универсальный алгоритм "computational level" для AI, другие для него менее хороши -- predictive coding, bayesian inference), формализации постановки задачи на эту универсальность. А то, что там где-то внутри для обучения с подкреплением используются алгоритмы градиентного спуска и распределённые представления в нейросетях -- это уровнем ниже, хотя на эту тему очень много выдающихся работ. Я бы переформулировал, что Sutton говорит: "если ты не знаешь, какой вычислитель ты делаешь -- никакая алгоритмика внутри этого вычислителя тебе не поможет". Да, если целевая система не выявлена, мы не можем предложить её архитектуру. Это стандартное рассуждение системного мышления.

И такого много: самые разные удачные "приёмы мышления" оказываются просто частями системного мышления. Прошлый раз этот феномен мы видели на примере "первых принципов" (цитирую свой сентябрьский текст 2020, https://ailev.livejournal.com/1536680.html):
Разборка с "мышлением из первых принципов" показала, что ничего там особо интересного, увы, нет. Это всё придумал Аристотель, выразившись крайне невнятно про разбиение на части в духе ранних версий системного подхода (неважно какие части, главное до дна, где вы полностью уверены в утверждениях -- это и будут первые принципы). Дальше, как и в системном подходе, всё зависит от того, что вы считаете частями. Версия Элона Маска оказывается одной из самых продуктивных -- но в переводе с аристотелевских иносказаний на современный означает выход в физический мир (он прямо указывает на физику как основание для мышления) и попытка альтернативного модульного синтеза при сохранении функции в надсистеме. Попытки использования типовых архитектур он называет мышлением по аналогии, а предложение новой конструкции на низких системных уровнях для реализации высокоуровневых функций -- это и есть мышление из первых принципов. Тот же ТРИЗ занимается тем же самым, только называет это по-другому. Системные архитекторы всего мира (которые разрабатывают новые архитектуры, а не переиспользуют старые -- то есть мыслят не по аналогии, как об этом говорит Элон Маск) тоже занимаются этим. Вот парочка ссылок, там всё понятно: https://fs.blog/2018/04/first-principles/, https://jamesclear.com/first-principles. Линия с выходом на принятие формул всерьёз (это я продолжаю упоминать Дэвида Дойча) и впрямь связана с теми самыми широко понимаемыми первыми принципами как опору на утверждения, которые нам известны и в которые мы верим, но нам вполне хватит понятий системного мышления, чтобы поддерживать этот разговор о "делении на части, о которых уже хорошо известно". Мы хотя бы знаем, как делить на части: функционально, конструктивно, по местам, разными другими хитрыми способами, а также на много уровней вниз и ещё и со сборкой вверх всеми этими способами. Аминь, тема с инженерией из первых принципов оказалась закрыта -- это просто термин для обозначения предложения first in a kind архитектур, новых способов организации/структурирования вещества для выполнения какой-то функции. Это как раз про получение той самой архитектурной идеи, которая переведёт мечту в проект, или предложит такой проект, который не стыдно назвать мечтой.
Человеческое знание не просто может быть, а прямо таки должно быть компактифицировано. Вместо сотен и сотен "удачных идей" мы получим небольшой набор трансдисциплин, который заменит их все. Системное мышление как раз такая компактифицирующая дисциплина. Овладейте системным мышлением, и вам не нужно будет специально изучать "мышление из первых принципов" и "марровские уровни анализа вычислительных систем". А заодно поймёте разницу между потребностями и требованиями (а кто не обратил внимание, обратите: на вычислительном уровне подхода Марра я говорю о потребностях и требованиях, а не просто о требованиях. Почему? Ответ в курсе системного мышления -- https://system-school.ru/systems-thinking, чат поддержки книги/курса https://t.me/systemsthinking_course.
2019

SuperGLUE таки был взят в 2020

Тест SuperGLUE уже был пройден нейросетками T5 от Google и DeBERTa от Майкрософт лучше, чем людьми (https://super.gluebenchmark.com/leaderboard):



Это, кстати, произошло ещё в прошлом году (за 12 часов до нового года): https://twitter.com/sleepinyourhat/status/1344382025986437122.

Опять придётся делать новый набор тестов на понимание языка, старые "трудные для машины" тесты оказались трудней для людей, чем для машин. Вот небольшой обзор состояния понимания естественного языка (NLP/NLU) в 2020 -- https://medium.com/towards-artificial-intelligence/mini-nlp-cypher-mini-year-review-7917e12fb2e5

И никто уже такому не удивляется. Подумаешь, десяток трудных тестов на понимание естественного языка компьютер проходит лучше, чем человек! Кого этим сегодня удивишь?!

SuperGLUE создали в начале 2019, потому что тест GLUE перестал казаться трудным. Ожидали, что он продержится лет пять-шесть. Хватило двух лет.


UPDATE: пост майкрософт, https://www.microsoft.com/en-us/research/blog/microsoft-deberta-surpasses-human-performance-on-the-superglue-benchmark/, общие комментарии -- https://venturebeat.com/2021/01/06/ai-models-from-microsoft-and-google-already-surpass-human-performance-on-the-superglue-language-benchmark/
UPDATE: обсуждение в фейсбук -- https://www.facebook.com/ailevenchuk/posts/10220137563443381
2019

Цифровые двойники: физика ведёт математику, математика ведёт компьютерную науку

Понятие цифрового двойника
Цифровые двойники/digital twin -- информационные/цифровые модели aka виртуальные системы для киберфизических систем, существующие на всём протяжении жизненного цикла, особенно включая эксплуатацию. Их идея появилась в рамках концепции систем PLM (product lifecycle management systems), хотя и без названия "цифровой двойник". А началось это всё с именно "двойником", а не PLM с физического "двойника" космического корабля в NASA (когда один корабль летел -- эксплуатировался, а на все действия штаба отрабатывались на его находящейся на земле физической копии). Так что "цифровой двойник" -- это примерно то же, что "PLM с акцентом на эксплуатацию".

PLM системы, как оказалось на практике, а не в академических работах про "как должно быть", не использовались даже на стадиях изготовления и проверки, и уж тем более на стадии эксплуатации. На этих стадиях работали совсем другие системы: для изготовления/строительства это были обычно разные системы операционного менеджмента (чаще всего проектного управления) с использованием 3D моделей, например, Synchro или Navisworks, а на стадии эксплуатации это были AMS (asset management system), например, Maximo. Произносились хорошие слова типа "сначала нужно построить виртуальную атомную станцию в компьютере, а уже после успеха в этом -- настоящую физическую станцию". Но это было про "построить", а до эксплуатации дело не доходило, в системной инженерии очень медленно мышление с опорой на системное моделирование выходило на полный жизненный цикл системы "от замысла до вывода из эксплуатации", а не короткий жизненный цикл проекта разработки/проектирования, иногда даже без включения стадии изготовления (это же мог быть уже другой проект, зачем о нём беспокоиться?!). Первым инженерным стандартом с требованием учёта полного жизненного цикла стал ISO 15288:2003, и даже к V-диаграмме хвостик эксплуатации (так, что она стала похожа на √¯¯-диаграмму) пририсовали относительно недавно.

Системные инженеры всегда удивлялись, что когда они приходили к owners/operators (эксплуатационщикам) с системными моделями целевой системы в использованной на стадии проектирования PLM (даже с поправками as built, сделанными в модели), то на эксплуатации их никто не ждал с распростёртыми объятиями. Ибо у эксплуатационщиков были совсем другие нерешённые задачи, и модель системы в PLM плохо подходила для решения этих задач -- проблема была не в нахождении расчётных параметров, а в понимании реально измеренных параметров системы. Но потихоньку ситуация изменилась, и появился термин цифрового двойника, указывающий на специфику моделирования именно на стадии эксплуатации. А через некоторое время появились и специализированные системы, уже отличающиеся от чистого asset management, и нацеленные на системное моделирование на стадии эксплуатации (типа https://venturebeat.com/2020/12/08/microsoft-launches-azure-digital-twins-in-general-availability/).

Концепт цифрового двойника как используемой на стадии эксплуатации виртуальной мультимодели стремительно приживается в инженерии, образовании, медицине, градостроении, и далее везде. Но мы пройдём уже знакомым путём системной инженерии, просто продолжая линию рассуждений о PLM-системах в их развитии до охвата и стадии эксплуатации тоже. "Знакомый путь" -- это тот же путь, который мы проходили, беря понятия системного мышления не из менеджмента или биологии, а из системной инженерии. Опыт показывает, что тщательно проработанный системными инженерами набор понятий учитывает и системное мышление, а ещё опирается на физическую реальность и естественные/экспериментальные науки (везде, где это можно), и избегает художественных описаний выдуманного мира, каковые описания нередко случаются у не-инженеров. Так, в PLM-системах речь идёт не просто о какой-то мультимодели (какой-то набор множества связанных моделей, и мы даже не знаем, каких), но о системной модели (моделирование ведётся обязательно на нескольких системных уровнях, обязательно включает и функциональное моделирование "мультифизики", и конструктивное с выходом на BOM/bill of materials, и компоновку/размещение с выходом на 3D модели -- иначе это не системное моделирование, и его недостаточно для инженерной работы). И да, это модели инженерии-в-большом (то есть поддержка коллективных проектов, подробней см. текст 2010 https://ailev.livejournal.com/851977.html и выход на онтологическую инженерию-в-большом в тексте 2018 https://ailev.livejournal.com/1447922.html).

Эти инженерные цифровые двойники, наследующие все наработки по линии развития PLM-систем, представляются как кибер-части киберфизической двойни/cyber-physical twins (физический двойник и цифровой двойник неразрывно связаны в "двойню"), где обязательно присутствуют:
-- физическая сущность (cyber-physical system/physical entity) в её окружении. Двигатель или целый самолёт, станок или целый завод -- эти чаще всего. Это product в product life cycle management systems.
-- цифровая сущность (digital entity), работающая имитационная модель физической сущности и её окружения. Это программа в физическом вычислителе, а не просто описание модели, код модели. Помним, что модель исполнима -- только иногда её исполняет/интерпретирует компьютер, а иногда смотрящий на описание модели человек.
-- цифровые siblings/братья/сёстры как модели для сценариев what if (то есть они не отражают актуальную физическую сущность!), что входит в их состав нужно обсуждать отдельно. Тут без обсуждения причинного вывода и контрфактуальности не обойдёшься (https://ailev.livejournal.com/1435703.html).
-- база данных с объединённой информацией от датчиков физической сущности и выходов имитационной модели, "исторические данные". Выделена отдельно, чтобы подчеркнуть пассивную природу "данных модели" (данные одни, алгоритмы обработки разные)
-- различные сервисы, работающие над базой данных и всем остальным (аналитика, презентации, включая VR для рассматривания цифрового двойника в его мире). Это и есть алгоритмы, работающие над данными, причём упор не на алгоритмы, делающие вычисления цифровой сущности.
-- соединения (работают в обе стороны) между всеми сущностями. В том числе "интеграция данных жизненного цикла" сюда (в том числе алгоритмическое обеспечение соединений, типа поддержания соответствия между моделью и физической системой путём коррекции как параметров и структуры модели, так и состояния физической системы).

Вот картинка из https://booksc.org/book/70499816/7da9d3 для любящих объяснения "на пальцах" (хотя в картинке и нет siblings):


Физическое моделирование как главное в цифровых двойниках
Центральная дисциплина в digital twin -- физическое моделирование динамической (меняющейся во времени) системы, это хорошо видно в самых разных обзорах (вот тут их несколько, https://yadi.sk/d/yzpBuICd0YJevA). Зачем вообще моделировать физического двойника (в оригинальных работах используют слово twinning -- "задваивать")? Для его оптимизации: максимизации достижения предпочтений в concerns качества (ilities, список из работы https://yadi.sk/i/SDK1wRcUg7aDjA -- хоть и не совсем ортогональный, все эти dependability и availability, существенно пересекающиеся в их описаниях):


Традиционно в PLM выделяли следующие виды моделей, и все они остаются актуальными для цифровых двойников:
-- 3D-модель (формы, shapes), к которой привязываются все остальные модели
-- физическая модель (обычно трёхмерные расчёты: прочности прежде всего, деформации, теплопроводности и теплостойкости и т.д.)
-- функциональное моделирование ("одномерные": мощность мотора или генератора, производительность станка и т.д.)
-- логические модели (правила, ограничения и т.д. -- прежде всего тут находятся правила как выходы одних моделей маршрутизировать ко входам других моделей, чтобы получилась мегамодель, отвечающая на вопросы. Интеграция данных жизненного цикла, онтологии, системность и многомасштабность -- тут).

Дальше вся дискуссия про digital twins оказывается дискуссией по основным проблемам инженерного моделирования: 3D моделирования (и инструментарий тут -- CAD), 3D физика (и инструментарий тут какой-нибудь ANSYS), и "одномерные модели".

Плюс вопросы обеспечения соответствия изменений физической системы и её модели в реальном времени -- это добавляется по сравнению с "просто системным моделированием, как в PLM". Но для обсуждения этих вопросов, специфичных именно для digital twins есть огромные заделы (типа data assimilation -- подстройка моделей погоды под актуальные данные для получения прогноза, https://en.wikipedia.org/wiki/Data_assimilation. Методы оказались там вполне подходящие для подстройки необязательно моделей погоды, но и более-менее произвольных моделей. И таких подходов к ассимиляции/assimilation есть множество, типичная работа тут "Continuous calibration of a digital twin: comparison of particle filter and Bayesian calibration approaches", https://arxiv.org/abs/2011.09810. Assimilation of continuously streamed monitored data is an essential component of a digital twin; the assimilated data are used to ensure the digital twin is a true representation of the monitored system. One way this is achieved is by calibration of simulation models, whether data-derived or physics-based, or a combination of both. Traditional manual calibration is not possible in this context hence new methods are required for continuous calibration.

Но обратимся хотя бы к классике инженерного моделирования, даже не выходящего в специфику ассимиляции как согласования модели и её актуального состояния. Какие там были продвижения? Инженеры же давно делали на стадии проектирования какие-то модели системы и её окружения, задолго до того, как эти модели начали использовать во время эксплуатации и они были обозваны "цифровыми двойниками".

Прежде всего инженеры в ходе проектирования обсчитывали принципиальные и технологические схемы, иногда называя это одноразмерным/1D моделированием, чтобы противопоставить трёхмерному прочностному и тепловому моделированию -- речь-то идёт о функциональных описаниях, и тут у математиков, системных инженеров, программистов и всех остальных терминология существенно различается. Это как раз наша задача ввести какой-то общий язык описания этого моделирования и этих вычислений, для чего и копаем digital twins в порядке обсуждения вычислительного мышления ("Вычислительное мышление, декабрь 2020: думаем о современных digital twins", декабрь 2020 -- https://ailev.livejournal.com/1546514.html).

Computer science в поддержку моделирования: хитрая физика ведёт к хитрой математике, которая ведёт к хитрым языкам, которые ведут к хитрым компиляторам
Традиционно инженеры пользовались MatLab (более удобен для вычислительных задач, чем Фортран) и SimuLink для создания имитационных моделей, программные среды для вычислений с ODE (odinary differential equations in state space form -- дифференциальные уравнения для пространства состояний входов и выходов). Это стало мейнстримом, но оказалось, что сопровождать модели в такой форме невозможно: для типовых случаев нельзя сделать библиотеки отдельных функциональных элементов, которые присутствуют в системе, и приходится каждый раз понимать, куда и как вписать очередное уточнение модели, или куда и как вписать очередное изменение модели.

Потому моделированию в ODE было противопоставлено акаузальное моделирование/acausal modeling с использованием DAE (differential algebraic equations) с алгебраическими переменными, которым a priori не могло быть придано никакого входного или выходного статуса -- порядок вычислений не мог быть предсказан, ибо непонятно заранее, где у какого-то резистора вход, а где выход в составе модели.

Но как же проходит такой трюк с переходом от ODE к DAE? А вот так: разные уравнения собираются в большую систему из сотен, или даже тысяч (а в последнее время речь идёт и о миллионах) дифференциальных уравнений, и дальше решением этой огромной системы уравнений занимается компьютер (или даже суперкомпьютер, если система реально большая). Вот сравните удобство для инженеров моделирования электрического мотора с учётом инерции его вращения при представлении модели в DAE и ODE формах (https://www.researchgate.net/publication/336846217_Multi-Mode_DAE_Models_-_Challenges_Theory_and_Implementation):

This should not come as a surprise, as the first principles of physics naturally lead to considering acausal models such as the one in Fig. 1-left. Consider, for example, the case of electric circuits. So-called circuit laws such as Kirchhoff laws, are naturally expressed as balance equations: the algebraic sum of currents in a network of conductors meeting at a point is zero; or, the sum of all the voltages around a loop is equal to zero. Similarly, some components (such as, e.g., resistors or capacitors) come with no input/output prespecified orientation. A same circuit can be assigned different input/output status for its variables, depending on which ones are declared as sources. The same situation arises in mechanics or in thermodynamics. И кроме того, Adding one more physical component is straightforward in the schematic, whereas it may need a complete redesign in the block diagram.

И в итоге были предложены специальные акаузальные (не требующие учёта порядка влияния друг на друга элементов через входы и выходы) языки программирования и вычислительные среды для них. Компания MathWorks к SimuLink с его ODE добавила SimScape с DAE, компания Siemens предлагает Amesim, но де-факто стандартом и экспериментальной средой для отработки новых идей стал язык акаузального имитационного моделирования мультифизики Modelica (https://modelica.org/), для которого было разработано полдюжины компиляторов самыми разными фирмами и университетами.

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

А поскольку разнородных средств физического/имитационного моделирования оказалось очень много, для объединения самых разных моделей на уровне обмена данных между их входами и выходами был предложен стандарт FMI (functional mock-up interface, https://fmi-standard.org/ -- поддерживается более чем 150 программными инструментами для моделирования).

Но и DAE/acausal моделирование оказалось с проблемами. Главная проблема тут -- невозможность использования Multi-Mode DAE Models (mDAE). "Multi-mode" -- это моделирование режимов, связанных с разными структурами одной и той же системы. Если у вас летит ракета с тремя ступенями, потом с двумя, потом с одной ступенью -- моделировать это нужно по-разному, это же будут лететь совсем разные ракеты, у которых только название общее, а физика совсем разная! Если у вас моделируется атомный реактор в ходе его нормальной работы, то там одна физическая модель. А если он уже начал плавиться -- то моделировать его плавление нужно по-другому, прошлая модель реактора не будет работать. Это явление носит разные имена, Multi-mode DAE models только одно из них, в математике и физике используют и другие, например, VSS (variable structure system, https://en.wikipedia.org/wiki/Variable_structure_system -- и они тоже имеют много разных подвариантов, "частных случаев"). Есть и другие имена, разные группы исследователей приходят к этой проблеме учёта изменения структуры модели вслед за структурой моделируемой физической системы в разных исследовательских ситуациях и подчёркивают в имени разные аспекты проблемы. Математика mDAE хитра, и языки акаузального физического моделирования и их компиляторы должны учитывать эту хитрость математики, иначе результаты моделирования будут кривые. Вот одна из работ 2020 года, проясняющая трудности: The Mathematical Foundations of Physical Systems Modeling Languages, https://arxiv.org/abs/2008.05166. Трудности там демонстрируются на вот таком простом примере, с которым не справляются нынешние компиляторы Modelica, и дело там не только в computer science (плохом языке моделирования и плохом его компиляторе), но и в математической-физической стороне вопроса:


После того, как разобрались с физикой и описывающей её математикой, подключается computer science, ибо нужно теперь создать язык с нужной для этой математики операционной семантикой и (оптимизирующий!) компилятор для него. Это оказывается в случае mDAE не так легко, ибо уже не хватает уровня продвинутости человечества в computer science. Исследования (computer science) и разработки (software engineering) для акаузального мультифизического моделирования идут по вот этим основным линиям:
-- реализация mDAE DSL для хорошего языка вычислительной математики, а именно Modelica в Julia (я предположил такое развитие событий в 2015 и дал языку имя Mojulica, http://ailev.livejournal.com/1168256.html, но уже в 2017 году актуальная реализация появилась и по тому же принципу получила более короткое имя Modia, я написал тогда небольшой обзор https://ailev.livejournal.com/1366789.html -- важно было, что для этого пришлось чуть-чуть доработать и сам язык Julia, и способ моделирования при помощи DSL в этом языке -- появился макрос @model). Эта линия продолжается, и наиболее актуальное описание происходящего -- работа https://www.researchgate.net/publication/336846217_Multi-Mode_DAE_Models_-_Challenges_Theory_and_Implementation.
-- реализация расширенного до уровня mDAE компилятора Modelica прямо на Julia (просто чтобы сохранить legacy: сохранить стандарт на язык, в котором уже наработано некоторое количество физических моделей), это вот тут: https://www.researchgate.net/publication/345243619_Towards_an_Open-Source_Modelica_Compiler_in_Julia. Пишем на Modelica, но внутри работает Julia (и если что не так, или нужно подкрутить солверы дифференциальных уравнений -- придётся работать на двух языках).
-- множество независимых инструментов для самых разных языков акаузального mDAE-моделирования, в том числе примером тут служит написанный на OCaml софт IsamDAE (https://team.inria.fr/modeliscale/isamdae-an-implicit-structural-analysis-tool-for-multimode-dae-systems/), именно его разрабатывали авторы анализа The Mathematical Foundations of Physical Systems Modeling Languages, https://arxiv.org/abs/2008.05166.

В какой-то мере этот тренд с использованием "языка" mDAE вместо ODE для физического моделирования похож на создание разных языков программирования для решения expression problem в самой computer science (https://en.wikipedia.org/wiki/Expression_problem, https://eli.thegreenplace.net/2016/the-expression-problem-and-its-solutions, объяснение "на пальцах" https://arstechnica.com/science/2020/10/the-unreasonable-effectiveness-of-the-julia-programming-language/). Суть этой expression problem ровно в том же: разработка библиотек универсальных вычислительных элементов требует от языков программирования и реализующих их компиляторы возможности добавлять новые объекты для старых операций и новые операции для старых объектов, чтобы не нужно было переписывать весь код программы. В mDAE против ODE так же, только мы протягиваем обсуждение программных объектов и операций до моделируемых физических сущностей: или ты делаешь язык, на котором разные функциональные объекты описываются разными наборами уравнений, и просто добавляешь эти модели друг ко другу, или в языке у тебя такой возможности нет. Если не решил эту "model expression problem", то тебе нельзя сделать стандартные библиотеки, оформляющие стандартные поведения функциональных объектов. Знания моделей становятся плохо переносимыми между моделями, модели плохо модифицируемыми -- каждый раз при внесении изменений нужно переписывать и перекомпилировать всю модель.

Основные проблемы физического моделирования дифференциальными уравнениями:
-- композиция моделей (прежде всего разнофизичность моделирования, и expression problem и mDAE про это, но есть ещё и многомасштабность моделирования: объединение моделей разных системных уровней, разных масштабов времени, тут тоже свои математические и выразительные трудности в языках программирования, https://en.wikipedia.org/wiki/Multiscale_modeling -- и там тоже проблемы с ODE против DAE, плюс много чего собственного, и для этого тоже может потребоваться учёт в языках программирования/моделирования. Увы, языки программирования/моделирования не системны/многомасштабны "из коробки")
-- невязка характеристик физического и цифрового двойников, и методы, подобные data assimilation тут только часть проблемы. Так, в вычислениях тут важно real time, и поэтому возникает вопрос в том числе и о месте вычислений: edge computing, data centers и широкополосные протоколы связи типа 5G или наоборот, узкополосные с небольшим потреблением энергии из IoT. Ресуры можно экономить, заменяя "честный симулятор-на-дифурах" нейронной моделью, которая хорошо аппроксимирует этот симулятор, но требует на пару порядков меньше вычислительных ресурсов для своей работы. Типичная из подобных работ по нейросимуляции, выучиваемой по результатам классической алгоритмической симуляции -- https://arxiv.org/abs/2010.03409, Learning Mesh-Based Simulation with Graph Networks. Our results show it can accurately predict the dynamics of a wide range of physical systems, including aerodynamics, structural mechanics, and cloth. The model's adaptivity supports learning resolution-independent dynamics and can scale to more complex state spaces at test time. Our method is also highly efficient, running 1-2 orders of magnitude faster than the simulation on which it is trained).
-- недостаток вычислительных ресурсов в моделировании, при этом речь даже не идёт специфически об асиммиляции и непрерывной калибровке, а просто об уменьшении стоимости вычислений. No free lunch theorem гласит, что нет универсально быстрых алгоритмов: алгоритм, хороший для одной задачи будет плох для другой, и наоборот. Обсуждение качественного имитационного моделирования обычно связывают с суперкомпьютерами. И для удешевления и ускорения моделирования нужно делать прорывы в алгоритмике, менять физику компьютера (например, переходить к оптическим или квантовым вычислениям).

Основная мысль тут для широкой публики (то есть мысль, которую нужно знать всем культурным людям) -- это наличие цепочки:
-- описание хитрого поведения системы, то есть физическое описание динамики системы требует хитрой математики. Тут можно вспомнить ломоносовское "Математика царица всех наук, но служанка физики", и я напомню уже очень древний текст http://imperium.lenin.ru/~verbit/MATH/programma.html, раздел "почему эта программа такая, а не другая", а также огромнейшие дискуссии у меня в ЖЖ в 2009 году по поводу инженерного статуса математики -- http://ailev.livejournal.com/668305.html и https://ailev.livejournal.com/669463.html. В этих дискуссиях в ЖЖ я задаюсь методологическими вопросами о целях математики: "призываю математиков почувствовать себя не столько "исследователями", сколько инженерами (с учетом того, что в работах настоящих инженеров исследований и изысканий хоть отбавляй)", то есть не просто "искать", но "целенаправленно искать в интересных для деятельности направлениях". Из более свежего по этому направлению связи математического описания и физики -- обсуждение статуса математики David Deutsch. Он считает физику наукой о поведении объектов реального мира, а математику как науку о поведении объектов мира абстракций, computer science оказывается при этом экспериментальной наукой о доказательствах. Математика базируется на доказательствах/выводах/inference/вычислениях, которые делаются физическими вычислителями, и правильность теорий о том, какие могут быть эти доказательства на этих физических вычислителях, чтобы мы могли им доверять, определяется экспериментально. Напомню ссылку на книгу Дойча об этом: https://yadi.sk/i/SjpWiPqM4PQQSg
-- хитрая математика и алгоритмы солверов для этой хитрой математики для хитрой физики требуют хитрых языков моделирования, а для хитрых языков моделирования требуются хитрые компиляторы для разных типов физических вычислителей, это совпадает с традиционным пониманием computer science как связывающей математику с эффективным (пор ресурсам и времени) физическим вычислением.

Когда директор стадиона обсуждает цифрового двойника для своего стадиона, хорошо бы, чтобы он понимал SoTA в области моделирования. А то ему теоретики-математики без понимания сути computer science намоделируют так, что мало никому не покажется -- моделирование тут похоже на безопасность, про него ведь можно легко сказать "моделирования много не бывает", и тогда оно может съесть все деньги и ничего не дать взамен, как и излишняя безопасность. Лекарство легко может стать болезнью.

Алгоритмика мышления как исследований и вывода: моделировать может вычислитель
Но есть и альтернативное моделирование "от данных", когда физика неизвестна и люди не могут написать нужные системы дифференциальных уравнений. Тогда данные экспериментов исследуются алгоритмом (а не людьми) на предмет отражения ими какой-то неизвестной физики, а соответствующее знание физики и особенности поведения киберфизической системы отражается в распределённом представлении (machine learning, representation learning, deep learning -- https://ailev.livejournal.com/1045081.html). Берём универсальный аппроксиматор (глубокую нейронную сеть, например), и реализуем модель физической системы как неизвестную функцию, восстанавливаемую по имеющимся историческим данным.

Но и тут возможны варианты. Так, один из вариантов исследования физики компьютером -- это differentiable programming/дифференцируемое программирование. Киберфизическая система требует оптимизации, для этого мы оптимизируем для начала её описание/модель, эта модель требует дифференцируемости для возможности применить алгоритмы оптимизации, а дифференцируемость диктует то, как должен быть устроен язык и его компилятор -- и это уже вопросы к computer science. Получается, что computer science обслуживает инженерное моделирование и по этой линии обеспечения дифференцируемости. Затем в инженерии идёт переход к идее "дифференцируемое всё" как ещё один вариант моделирования как предварительного шага к последующей оптимизации, производимой на модели (обзор был в "Дифференцируемое всё: от чёрно-белой картины мира к рябенькой", 2019 год, https://ailev.livejournal.com/1464563.html, и там говорится в том числе и о differentiable architecture, сама архитектура оказывается моделируемой не дискретными "инженерными решениями", а непрерывными представлениями, на которых можно вычислять архитектурный оптимум).

Дифференцируемость кода произвольных функций задаёт весьма специфические требования к языку программирования, и тут в лидерах сегодня Swift и Julia (и обсуждается даже дифференцируемое квантовое программирование на Julia -- https://julialang.org/blog/2019/12/yao-differentiable-quantum-programming/, или классические алгоритмы машинного обучения типа XGBoost, которые делаются дифференцируемыми -- https://juliacomputing.com/blog/2020/02/ad-xgboost/).

Подход, когда моделирование выполняется не человеком, а универсальным алгоритмом (использование AI в инженерном/физическом моделировании) относительно прост, вычислительно эффективен, и при этом ещё и экономит человеческие усилия по моделированию. Против этого подхода главное возражение в отсутствии моделирования-как-объяснения. Дифференциальные уравнения позволяют как-то объяснять поведение системы (хотя тут тоже возникает много вопросов), а вот нейросетка -- это чисто предсказательная модель, применение которой весьма ограничено. Подробному рассмотрению того, чем же отличаются предсказательные модели от объяснительных (связывающих причины и следствия какой-то логикой) посвящено довольно много литературы:
-- критика со стороны авторов причинного вывода, прежде всего Judea Pearl, в том числе в The Book of Why https://yadi.sk/i/oKRCcoJVeH_q_g, но и не только. Вот последнее выступление Pearl, где он вводит понятие deep_understanding/глубокое_понимание и описывает происходящее с причинным выводом как "одомашнивание": дикие нерешаемые раньше проблемы объяснений становятся сегодня домашними и не страшными -- http://causality.cs.ucla.edu/blog/index.php/2020/12/28/edited-script-of-j-pearl-talk-at-montreal-ai-debate-2/.
-- критика со стороны эволюционной эпистемологии, и тут Дойч с его "Началом бесконечности", https://yadi.sk/i/SjpWiPqM4PQQSg, где он прямо указывает на computer science как науку о доказательствах, и необходимость доказательств для хороших объяснений.
-- тут генерация физических гипотез из экспериментальных данных (идёт поток статей про "обычную науку без учёных" -- дистилляция нейронных сетей в алгебру, переоткрытие "из данных" законов ньютоновской механики, гамильтониана и т.д., подробней в https://ailev.livejournal.com/1526085.html, где даётся ссылка на работу https://arxiv.org/abs/2006.11287 (разбор статьи вот тут: https://www.youtube.com/watch?v=LMb5tvW-UoQ).

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

Disclaimer: что не сказано, то просто не сказано, в коротком тексте всего не упомянешь
И, конечно, всё тут написанное ни в коей мере не исчерпывает ни тему математического моделирования физических систем (я даже governing equations тут не помянул ни разу!), ни тему связи модели и системы (эпистемология: как мы знаем, что эта модель и впрямь что-то важное отражает в системе), ни тему siblings как подтемы digital twins (в том числе обсуждение для этих siblings "лестницы каузальности", предложенной Judea Pearl и развиваемой дальше в работах типа "On Pearl’s Hierarchy and the Foundations of Causal Inference", https://causalai.net/r60.pdf), ни тему интеграции данных разных моделей, в том числе разных моделей по ходу жизненного цикла (онтологическая интеграция данных, софт типа Simantics как "онтологический интегратор симуляторов", https://www.semantum.fi/solutions/seas/ в digital twins такое указывается напрямую: https://www.semantum.fi/solutions/SemantumDigitalTwin/, и такого софта ведь много!), ни многих других проблем, традиционно обсуждаемых в проблематике digital twins.

Как всегда, "что не сказано, то просто не сказано, это не значит, что "не учли, не подумали"" -- помним о библиотечке обзоров digital twins https://yadi.sk/d/yzpBuICd0YJevA и при желании идём разбираться туда, там тысячи страниц свежих текстов. Просто в одном коротком тексте можно поднять только несколько проблем. В текущем тексте поднята только узкая тема связи физики, математики и computer science: физического моделирования -- его математики (линия моделирования физики дифурами людьми, линия поиска дифуров компьютером) -- его computer science и software engineering как создания языка программирования и его компилятора для физического же вычислителя (в конечном итоге одна физическая система-вычислитель/виртуальная модель моделирует другую целевую киберфизическую физическую систему -- всё физично и реально, абстрактные объекты математики там спрятаны где-то посредине).

UPDATE: обсуждение -- https://www.facebook.com/ailevenchuk/posts/10220129377358734
2019

Обзор обзоров по универсальным алгоритмам (AI) и универсальной интеграции моделей (digital twins)

В вычислениях мы условно выделили два направления: "чистое мышление" и "прикладное мышление/". Чистое мышление выполняется интеллектом, а прикладное -- прикладным вычислителем/приложением. Это чуть подробней разобрали с акцентом на мышление в https://ailev.livejournal.com/1547260.html "Мышление/learning и трансдисциплины, мыследействование/inference (привет СМД-методологам)". Терминологию тут, конечно, нужно ещё править, тем не менее различение про learning - inference, intelligence - application, thinking -- computation/inference представляется важным (при полном понимании, что в информатике всегда алгоритмы вытягиваются в chains of meanings, одни алгоритмы работают с другими -- вызывают их, трансформируют их, порождают их, макроподставляют их в себя и т.д.).

Вот как я разворачиваю это различение в более традиционный разговор про кремниевые/оптические/квантовые вычислители (хотя это не исключает и разговора про нейроморфные мокрые вычислители, типа мозга -- но в тамошние механизмы уровня алгоритмов мы не лезем, а прикладной уровень мышления мы разобрали в тексте по предыдущей ссылке):
-- алгоритмика прикладных вычислений как прикладного_мышления/мыследействования/inference, и тут работает главным образом "алгоритмика Кнута", используемая для оптимизаций. Уникальные алгоритмы выполнения разных хитрых операций вывода (императивного, функционального, логического, реляционных запросов и т.д.). Представление тут -- простые структуры данных для разных физических вычислителей, поддерживаемые аппаратно: целые, плавающие, удобные операции для организации из них очередей/магазинов, списков, матриц и прочей классики, кубиты сюда тоже относим как тип данных, лежащий в основе структур данных, над которым идут машинные операции квантовых компьютеров, а также "синапсовые связи" в нейроморфных вычислителях. Запись этих алгоритмов идёт на символьных языках программирования/моделирования/представления_знаний. Программы на этих языках составляются либо людьми, либо алгоритмами AI и затем компилируются в машинное представление (даже прикладные алгоритмы нейронных сеток компилируются!), царём горы является эффективность. Это классическая computer science, без AI.
-- алгоритмика AI, "алгоритмика Домингоса" как методологическая/чистого_мышления/обучения/learning, на выходе которого будет прикладной алгоритм для inference. Тут основное внимание уделяется поиску универсального алгоритма-аппроксиматора (The Master algorithm), который при его обучении порождает прикладной алгоритм. Речь идёт об интеллекте, и царём горы становится универсальность -- на первое место выходят универсальные структуры представления знаний как в локальных/символистских, так и распределённых/коннективистских представлениях, известных как knowledge representations. Часто поэтому тут говорят не просто о learning, а именно о representation learning (вот мой текст ещё 2012 года -- я тогда это счёл самым важным в deep learning как новом подходе к AI, а оно и сейчас рулит, https://ailev.livejournal.com/1045081.html). Proper definition of AI concerns knowledge representation and reasoning, autonomous multi-agent systems (вот тут всплывает коммуникация агентов по поводу их действий в мире и моделей -- в схеме-трёхслойке ведь кроме прикладных вычислений/мыследействования есть ещё и мысли-коммуникация, "авторская орфография сохранена"), planning and argumentation (а почему они вместе?!), as well as learning (интеллект, а не вывод).

Вот несколько обзоров, по которым можно работать с SoTA по линии универсального алгоритма для representation learning (хотя так это уже давно никто не называет):
-- https://arxiv.org/abs/2011.15091, Inductive Biases for Deep Learning of Higher-Level Cognition -- про небольшой набор принципов (inductive biases), которому должен удовлетворять The Master Algorithm. Текущий список этих inductive biases включает distributed representations, convolution, deep architecture, graph neural networks, recurrent nets, soft attention, и обзор пытается предположить, что там есть ещё и куда смотреть дальше.
-- https://arxiv.org/abs/2012.05876 про третью волну neurosymbolic AI, где говорится о необходимости иметь и локалистские и коннективистские представления. Neurosymbolic AI is well placed to address concerns of computational efficiency, modularity, KR + ML and even causal inference. И тут же через пять дней после появления этого обзора выходит работа DeepMind, где показывается, что коннективистское представление нейронной сети бьёт в visual domain нейросимволическое: "Object-based attention for spatio-temporal reasoning: Outperforming neuro-symbolic models with flexible distributed architectures", https://arxiv.org/abs/2012.08508, так что вся эта история далеко не закончена. И, конечно, "самый универсальный алгоритм" MuZero, который играет на сверхчеловеческом уровне в игры, правил которых он не знает: https://www.nature.com/articles/s41586-020-03051-4 (это не обзор, а "просто работа", но очень крутая -- вышла 23 декабря 2020, хотя MuZero был предварительно анонсирован ещё в прошлом году. Вот блог-пост от DeepMind про MuZero: https://deepmind.com/blog/article/muzero-mastering-go-chess-shogi-and-atari-without-rules. MuZero’s ability to both learn a model of its environment and use it to successfully plan demonstrates a significant advance in reinforcement learning and the pursuit of general purpose algorithms).
-- https://arxiv.org/abs/1906.08870, "2019 Evolutionary Algorithms Review". In this review, we explore a new taxonomy manage the control of the environment with limiters, the ability to explain and repeat the search process, the ability to understand input and output causality within a solution, the ability to manage algorithm bias due to data or user design, and lastly, the ability to add corrective measures. И ещё обзор литературы по генетическим алгоритмам: "Qualities, challenges and future of genetic algorithms: a literature review", https://arxiv.org/abs/2011.05277, This review intends to summarise the key qualities, current challenges and future perspectives faced by the GA technique. Their implicit parallelism and evolutionary operators allow an optimal balance between exploration and exploitation. They thrive in identifying good solutions in large, rugged search spaces. They have desirable convergence properties, offer high flexibility, and impose very few assumptions on the nature of the solutions being evolved. They allow a realistic modelling of evolutionary systems and innovation dynamics. Often criticised for their computational complexity, Gas' computational efficiency is a first challenge to address to handle dynamic or more complex problems, likely with further use of parallelism and GPU computing.
-- внимание и сознание: стандартная модель сознания Graziano et al, https://booksc.xyz/book/77159558/f47955, обзор Understanding Attention: In Minds and Machines, https://arxiv.org/abs/2012.02659.
-- попытки реализации универсальной архитектуры в нейроморфном оптическом процессоре: https://arxiv.org/abs/2011.00111, Photonics for artificial intelligence and neuromorphic computing, обзор многочисленных работ в этом направлении. И обзор Variational Quantum Algorithms в качестве универсального обучаемого квантового алгоритма, https://arxiv.org/abs/2012.09265.

Другая линия -- это алгоритмика зависимости моделей от времени. Тут два направления:
-- Lifelong learning, где обсуждается непрерывная коррекция прикладных алгоритмов в ходе их выучивания, и коррекция эта идёт по самым разным причинам. Пример для обработки естественного языка: https://arxiv.org/abs/2012.09823, Continual Lifelong Learning in Natural Language Processing: A Survey. Continual learning (CL) aims to enable information systems to learn from a continuous data stream across time. However, it is difficult for existing deep learning architectures to learn a new task without largely forgetting previously acquired knowledge. Furthermore, CL is particularly challenging for language learning, as natural language is ambiguous: it is discrete, compositional, and its meaning is context-dependent. In this work, we look at the problem of CL through the lens of various NLP tasks.
-- digital twins, где обсуждается универсальная интеграция виртуальных/информационных моделей какой-то системы, которая успевает поменяться по ходу моделирования. Поэтому итоговую мегамодель нужно всё время обновлять, а ещё нужно заглядывать в многовариантное будущее (моделирование "а что, если...") с учётом текущего дрейфа параметров воплощения системы. Там совсем другие темы: многомасштабное (т.е. системное, на многих системных уровнях) моделирование, численные алгоритмы, временные ряды и их аппроксимация, интеграция данных за пределами жизненного цикла design and construction time. Обзорных работ там множество, я положил некоторое количество обзоров (главным образом из arxiv) в https://yadi.sk/d/yzpBuICd0YJevA (это одна ссылка, но там почти два десятка небезынтересных работ -- и почти каждая из них включает reference architecture для digital twins и обсуждение алгоритмики моделирования). Подробней мотивировку о месте digital twins как прикладном уровне в платформенном стеке вычислительного мышления (уровень интеграции данных жизненного цикла, уровень интеграции прикладных алгоритмов) я дал в "Вычислительное мышление, декабрь 2020: думаем о современных digital twins", https://ailev.livejournal.com/1546514.html. Есть такое ощущение, что физическое моделирование и его поддержка (традиционный предмет computational science в её отличии от computer science) идёт сюда, оставляя в computer science главным образом дискретную алгоритмику localist representations.
2019

Мышление/learning и трансдисциплины, мыследействование/inference (привет СМД-методологам)

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

Мы говорим об интеллекте как вычислителе, который способен находить решение разнообразных проблем. Вычисления этого интеллекта -- это и есть мышление. Больше разнообразие этих проблем -- выше уровень интеллекта, мощнее мышление, используем модель Chollet -- https://ailev.livejournal.com/1498481.html.

Затруднения возникают, когда мы говорим о системном интеллекте, системном мышлении. Если мы определяем, что трансдисциплины определяют важные объекты, которые выделяет своим вниманием интеллект этой трансдисциплины, то возникает вопрос: если дан набор понятий из учебника кулинарии, можем ли мы считать это "кулинарным мышлением"? Чем отличаются учебники кулинарии (в любом учебнике обычно дают какой-то набор понятий для настройки внимания интеллекта, полученного путём изучения учебника) от учебника кулинарного мышления? Учебники инженерии от учебника инженерного мышления? Учебники системного подхода от учебников системного мышления? Да, принято говорить, что мышление с использованием понятий системного подхода — это и есть системное мышление. Или использование понятий, связанных с вычислениями — это вычислительное мышление. Но использование понятий "кулинарного подхода" или "понятий кулинарии" -- это "кулинарное мышление"?

Есть ещё примеры, как люди определяют виды мышления. Мне наиболее запомнился Дейкстра, который вводил виды мышления (его интересовало программистское мышление, близкое к нужному нам в вычислительном мышлении) на примерах: "Хотя во времена, к которым относится наша история, человечество не знало ЭВМ, неизвестный, нашедший это решение, был первым в мире компетентным программистом. Я рассказывал эту историю разным людям. Программистам, как правило, она нравилась, а их начальники обычно сердились все больше и больше по мере ее развития. Hастоящие математики, однако, не могли понять, в чем соль." — это знаменитая история о туалетах, http://hosting.vspu.ac.ru/~chul/dijkstra/pritcha/pritcha.htm.

Помним, что "программирование" — это для Дейкстры "структурное программирование", то есть алгоритмика на императивном языке с простыми структурами данных. Но вот это "чем мышление программиста отличается от мышления математика" — это важно, Дейкстра различал виды мышления. "Хвост коровы Маргариты это часть стада" для системного мыслителя неправильное высказывание, а для математика -- правильное. Системный интеллект и математический интеллект мыслят по-разному!

Тут произошёл незаметный, но важный сдвиг: мы говорим уже не о мышлении как таковом, а о видах мышления, его специализациях. Не об интеллекте в целом, а о видах интеллекта, специализациях. Или частях общего мышления? В онтологии это вопрос удобства выбора отношения: виды/специализации это мышления и интеллекта, классы/классификации или части.

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

В AI эта "одновременность" обсуждается как life long learning: все акты inference далее обрабатываются на то, насколько они оказались успешными, и эти результаты идут в learn. При этом времени на learn не хватает в живой природе, и по итогам inference обучение идёт ещё и во сне (мозг пересматривает записи того, что там происходило в ходе inference и перестраивает вычислитель).

Творчество и импровизация — это всё то же самое, но режиме generative алгоритмов, то есть в inference работаем с шумом как входными данными для inference и на выходе получаем выходные приемлемые результаты. А чтобы улучшить порождение/генерацию, нужно всё равно делать шаг learn. Можно ещё пообсуждать функцию награды в рамках reinforcement learning, исследовательскую деятельность в рамках self-supervised learning, самонаграждение в рамках исследований и т.д.. Но это пока лишнее (но на втором такте рассуждений придётся затрагивать, конечно).

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

Если у нас в мозгу решение прикладных задач по уже известным объектам внимания, то есть вывод/inference (не меняем синаптические связи мокрой нейронной сетки, то есть не занимаемся работой с понятиями, работаем в режиме GPT-3 на нейроморфном вычислителе), то это мыследействование в рамках мыследеятельности (неразрывно связанных мышления и деятельности). Если занимаемся образованием новых объектов (скажем, выделяем системный уровень тогда, когда он очевидно не выделяется "по правилам", то есть нет прямого алгоритма его получения — не описано в каком-то учебнике), то это чистое мышление/learning. Когда генерируем/строим /кладём гипотезы о том, какие это могли бы быть понятия, каким объектам в жизни они могли бы соответствовать, чтобы была удобна деятельность — вот тогда чистое мышление/learning. Если нейронная сетка (хоть мокрая, хоть кремниевая, хоть оптическая) не меняется сама, а только используется — тогда чистый вывод/inference/мыследействование. Понятно, что любая принадлежность к классам (в том числе классам вычислений inference и learning) определяется статистически.

Learning в жизни ещё известен как программирование, онтологизирование, моделирование. А вот всякие "вычисления программы", "интерпретация модели", "использование онтологии" — это inference/мыследействование. Если плохо вывелось, в мыследействовании затык — идём в мышление, продолжаем мыследеятельность в мышлении.

Трансдисциплины как раз обслуживают learning, это алгоритмы (описания вычислителя-интеллекта), дающие inductive biases для определения целевых понятий в ходе learning/мышления. Для inference потом просто тренируешь мозг обезьянки, и далее S1 хватает. А для понятийных размышлений в S2 нужно построить понятия, в терминах которых дальше будет автоматический (с небольшой утерей качества, но быстрый и лёгкий) S1. В природе они круто перемешаны, конечно, выделяются нашим вниманием, но имеют слегка разные конструктивы и чуток таки разведены во времени. Мы предпочитаем эти "слегка" и "чуток" доводить до экстремума в наших схематизациях мышления и мыследействования в рамках общей мыследеятельности.

В СМД-методологии в ходе деятельности люди занимаются не столько мышлением, сколько мыследействованием, перемежаемым мыслекоммуникации -- и у них есть для этого схема мыследеятельности aka "трёхслойка" (вот публикация с её рассмотрением 1987 года, https://gtmarket.ru/laboratory/basis/3961/3974). Переведём часть той схемы на современный язык, то есть скажем чуть другими словами то, что я уже сказал чуть выше: для мыследействования речь идёт не о мышлении как функции интеллекта по способности найти/выучить/learn алгоритм решения какого-то класса проблем, а о применении этого выученного ранее алгоритма к решению прикладной проблемы данного класса, проведению вычисления/inference по этому алгоритму. Нет вычисления мышления/learn, есть вычисление мыследействования/inference. "Выход в мышление" — это когда вывод/inference на имеющихся понятиях как объектах внимания в деятельности с заземлением/grounding их на имеющиеся объекты в физическом мире невозможны, и требуется ввести новые объекты внимания (или подкорректировать старые), то есть выполнить обучение или дообучение/learning. Работа интеллекта — чистое мышление, разборка с новым типом задач, для этого используем в качестве объектов внимания понятия из трансдисциплин. А когда идёт inference по шаблону - не мышление, а мыследействование, использование выученных в ходе мышления понятий прикладных дисциплин. Про коммуникацию из схемы пока будем молчать, в полной схеме мыследеятельности есть и она.

Дальше СМД-методологи любят прибавить, что чистое мышление так же часто встречается в мире, как танцы лошадей. То есть этих вычислений у человечества по объёму не так много: вычисления системного мышления, вычислительного мышления, эпистемологического мышления и т.д. редки, как танцы лошадей. Хотя и бывают. А основной объём "думания" на планете -- это мыследействование/inference, использование плодов интеллекта: создаваемых интеллектом прикладных алгоритмов решения каких-то классов задач, для которых понятна понятийная структура. Нет затыков в (мысле)деятельности -- мозг работает в режиме автомата, лёгкий режим с использованием S1 (как GPT-3 -- работает "интуиция", новые теории при этом не порождаются). Есть затыки -- это значит, что наше описание мира/модель неверна, нужно выдвигать новую модель, описывать мир получше. Это делается дообучением/learning, и проверки/доказательства для полученных решений -- это понятийная работа, логические рассужения "по правилам", использование S2.

Примат мыследействования/inference активно обсуждается: по объёму в датацентрах вывода (распознавания голоса, например), в разы и разы больше в части задействования ресурсов. Но чтобы выучить/learn/вычислить_интеллектом этот распознаватель, ресурсов тоже немало нужно. Но всё одно меньше, чем ресурсов для задействования итогового распознавателя голоса.

У мыслителей, которые главным образом вырабатывают новые понятия (наука, да и существенная часть инженерии) мышления/learning много. А вот у каких-нибудь клерков среднего звена — понятийной работы ноль, сплошной вывод (вот их, замечу, и списывают за ненадобностью, заменяют компьютерами, это легко. Плохо понятно, как выучить компьютер пока, требуются разработчики софта со всем их искусством нахождения мыследействования и пересадки его в компьютер, но хорошо понятно, как заставить софт делать могучий вывод, когда его выучили/learn мозгом, а потом записали в машинночитаемой форме ("разработали"). А уж если не просто "автоматизируют", пересаживая мыследействование в компьютер, а задействуют чистое мышление разработчиков (получают новые объекты внимания и уже их воплощают в софте), то тогда вообще могут говорить о "цифровой трансформации" (ага, это я даю ретроспективное придание смысла бессмысленным словосочетаниям, навеянным современной атишной музыкой).

Тут в комменты обязательно придут СМД-методологи сказать, что я схему мыследеятельности в СМД-методологии не понимаю. Привет! (тот самый -- из заголовка поста). Я им отвечу, что они сами её не понимают, а я довольно много этой схемой занимался -- впервые я увидел её зимой 1988 года на ОДИ. И любил спрашивать: на каком холсте нарисована эта схема, то есть что там за foundational ontology, upper ontology для этой схемы? Молчание мне обычно было ответом. Ну вот, считайте, что я этим постом двинул СМД-методологию, связал хоть как-то с современностью. Цели СМД-методологов хорошие, я их вполне разделяю -- вот об этом мой текст 2011 года, https://ailev.livejournal.com/718446.html. Но вот средства существенно устарели, там ведь десятки лет уже ничего не происходит. И хотя пожилые уже СМД-методологи могут сказать, что "всё это они говорили прямо в момент появления схемы мыследеятельности, ничего нового не сказано и мир только ещё через десяток лет поймёт всю глубину трёхслойки", я отвечу, что идеи людям на планете приходят в голову давно уже очень похожие, терминология только разная -- и различение learning и inference из современного AI имеет больше шансов стать рабочим языком человечества, нежели различение "мышления" и "мыследействования" по схеме-трёхслойке.

В мире сегодня есть и обсуждение интеллекта по Chollet (хотя и это только одна из школ), и обсуждение трансдисциплинарности (https://en.wikipedia.org/wiki/Transdisciplinarity), и обсуждения вычислительного мышления. Этот пост просто показывает, что всё это разные части одного и того же набора идей -- в посте проделана примерно та же работа, которую я делал, выдёргивая разные фрагменты системного мышления из инженерных стандартов в один связный текст учебника. Или работа, которую делал Дэвид Дойч, рассказывая связно о четырёх сюжетных линиях объяснений структуры вселенной: квантовая физика, эпистемология, теория эволюции и вычисления, которые невозможно понять без учёта их тесной связи.

UPDATE: обсуждение в фейсбуке -- https://www.facebook.com/ailevenchuk/posts/10220035178483821
2019

Видео доклада "Вычислительное мышление 2020"

Опубликовано видео моего доклада по вычислительному мышлению:
-- само видео тут: https://www.youtube.com/watch?v=Z0Da9BJ9SiA,
-- слайды доклада https://yadi.sk/d/eOIuff7xdOTEDw,
-- библиотечка с литературой https://yadi.sk/d/ga11Jt16N-pTXA.
-- видео семинара по сознанию и вниманию (трёхчастная модель Грациано), который я поминаю в докладе -- https://www.youtube.com/watch?v=lyOQhPlSxgI, тезисы по сознанию и вниманию (а в комментах там и конспект обсуждавшихся на семинаре идей) в https://vvagr.livejournal.com/2379034.html

Основная мысль, которую я сейчас думаю (уже после доклада) -- это про computing-in-the-large как работа на более высоких системных уровнях. Я многократно раньше писал про это "программирование-в-большом", но это не связывалось с идеей системных уровней.

Получается, что у нас на каждом системном уровне (железо, софт кнута "в малом", софт кровавого энтерпрайза "в большом", софт домингоса "непонятно в каком") разворачивается своя информатика: свой набор важных объектов внимания, свои типы алгоритмов, свои специалисты, свои нынешние проблемы и приёмы их решения. Дальше вопрос о том, что там общего. Директора стадиона точно будут интересовать вопросы верхнего (прикладного) уровня кровавого энтерпрайза, а вот вопросы архитектуры "в большом" уже непонятно где становятся вопросами для software architect (а перед этим есть же ещё и enterprise architect), и уж точно вопросы "в малом" идут к спецам, а железо и подавно к спецам. Пойнт в том, чтобы выделить общее мышление, которое позволяет всем этим добрым спецами общаться между собой и ещё с ними общаться директору стадиона. Что общего в обсуждении набора операций квантового компьютера и обсуждением data driven enterprise, digital transformation, digital twin и прочих вроде как buzzwords, за которыми скрываются абсолютно конкретные проекты создания корпоративных вычислителей?

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

Если делать вычислительное мышление как пререквизит для курса "программной инженерии" (как специализации системной инженерии), то задача сразу становится проще. Но уже понятно, что нас интересует разворот в сторону трансдисциплины. Ибо какой системный менеджмент без понимания роли компьютеров в проекте? Какая системная (а не программная) инженерия?

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

Второй вопрос -- это обилие примеров текущего вычислительного мира. Но это быстроскисающий материал! Вычислители (как железные, так и описываемые непрерывно улучшающимися и всё более разнообразными алгоритмами) непрерывно меняются. Как и чему учить, когда материал меняется не за десяток лет, а за буквально пару лет? Курс системного мышления как-то отстаивался восемь лет. Восемь лет назад (2012) нейронные сети только-только стали заметными, квантовый компьютер был в будущем, о вычислениях объяснений (causal inference) знали только спецы. Если бы курс разрабатывали тогда, то он сегодня был бы полностью неадекватен. А если разрабатывать сегодня, то неадекватность будет уже через полгода: все примеры применения SoTA мышления катастрофически устареют! Ну, или нужно таки вытащить нескисающую часть (какую? алгоритмическое мышление, в которое добавить мышление в части квантовых алгоритмов? и на каком уровне -- мы ж не рассчитываем, что люди начнут писать программы после курса мышления, мы ж не программистов готовим!).

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

Алгоритмика-2020

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

Мой тезис в том, что алгоритмы многоуровневы, алгоритмика системна "из коробки" (мой заход 2016 года на системную информатику в https://ailev.livejournal.com/1272169.html, а самое свежее рассуждение недельной давности про нахождение в интеллект-стеке выше системного мышления -- https://ailev.livejournal.com/1544639.html, обсуждения курса вычислительного мышления идёт в чате https://t.me/comp_thinking).

Алгоритм -- функциональное (время работы) описание вычислителя. Система определяется по её функции. Вычислитель определяется по его алгоритму работы. Код или инф.модель харда -- это описание вычислителя (включая его поведение: вычисления), его можно документировать. Вычислитель -- воплощение системы, описанной алгоритмом. Вычислитель физичен! Так что алгоритм -- это описание какой-то физической машины-вычислителя (или описание логической машины, которая описывает работу какой-то другой логической машины, и так по цепочке, пока не доходим до машинного кода физического вычислителя).

Исторически развитие compute science рассматривалось как развитие алгоритмики: всё более и более кучерявые вычислители над сравнительно простыми данными. Потом жизнь резко изменилась:
-- в компьютерах медленно, но верно победила концепция RISC (споры на эту тему по факту утихли), и это даже не самый нижний уровень, ибо ниже идёт физика вычислений (а RISC это уже "программирование физики" в предположении, что она у нас классическая "кремниевая").
-- на среднем уровне победили простые алгоритмы обработки десятков тысяч плотно связанных таблиц в корпоративных базах данных (кучерявые реляционные и далее графовые модели данных)
-- на уровне, когда появляется слово "интеллект" (общий вычислитель, который можно настроить для разных типов задач) всерьёз рассматривается "горький урок Sutton" ровно про то же самое: все прорывы связаны с простыми алгоритмами, работающими над всё более сложными и объёмными структурами данных, просто этим алгоритмам в самом низу алгоритмического стека дают достаточную вычислительную мощь.

Развитие многоуровнево: на каком уровне сейчас развивается алгоритмика? Ответ: на всех.

1. Физика вычислителя.
-- Уже заговорили о "квантовом пузыре" (имеется ввиду инвестиционный пузырь), в прошлом году не очень уверенно, а сегодня уже уверенно: https://www.pcmag.com/news/quantum-computing-a-bubble-ready-to-burst. Квантовое превосходство (и тут политика: слово "превосходство"/supremacy некоторым намекает расовое превосходство белых над чёрными -- и хотят это слово заменить!) уже подтверждено, вот вчерашнее сообщение о "квантовом преимуществе" (таки заменили слово!): https://science.sciencemag.org/content/early/2020/12/02/science.abe8770, там преимущество в скорости квантового вычисления -- 10**14 (за 200 секунд работы квантового вычислителя было выполнено вычисление, которое требует 2.5млрд лет работы суперкомпьютера Fugaku). Алгоритмика никогда уже не будет прежней. И деньги в квантовый софт уже пошли, вот Zapata raises $38 million for quantum machine learning, https://venturebeat.com/2020/11/19/zapata-raises-38-million-for-quantum-machine-learning/
-- оптика тоже рулит, вот свежий декабрьский 2020 обзор по оптике в AI, https://www.nature.com/articles/s41586-020-2973-6 (увы, там paywall), но там просто вал новых работ. Скажем, кремниевый оптический передатчик на 100Gbps https://phys.org/news/2020-11-world-all-silicon-optical-transmitter-100gbps.html -- кремний вроде тот же (совместимый техпроцесс с CMOS), но физика другая.
-- и даже питание имеет свои новации, "анти-лазеры" уже доказано, что возможны: https://www.livescience.com/anti-laser-wireless-charging.html. The new anti-laser demonstrated in this experiment accounts for all that, and it receives scattered energy beamed around a space in an unpredictable pattern — still receiving 99.996% of the sent power. The formal term for the method they used is "coherent perfect absorption" (CPA). CPA uses one machine to send power across the room, and another (the "anti-laser") to suck it back up.

2. На уровне "железа" классических машин (это просто "реализация алгоритмов в железе"):
-- побеждает классическая архитектура с RISC, засилье wintel потихоньку заканчивается (например, https://www.zdnet.com/article/risc-v-the-linux-of-the-chip-world-is-starting-to-produce-technological-breakthroughs/ -- As just one example, a recent microprocessor design using RISC-V has a clock speed of 5 gigahertz, well above a recent, top-of-the-line Intel Xeon server chip, E7, running at 3.2 gigahertz. Yet the novel RISC-V chip burns just 1 watt of power at 1.1 volts, less than one percent of the power burned by the Intel Xeon. ... "It's kind of amazing," said David Patterson, a professor at the University of California at Berkeley who helped create RISC-V. "I think IBM mainframes have a 5-gigahertz product that's liquid-cooled, and takes 100 watts" to run).
-- GPU это "новый CPU", тут просто гонка (попытки угадать алгоритмы следующего поколения в AI, и подстроиться именно под них. Хотя NVIDIA делает ставку на то, что не только нейросетями будет живо человечество). Обсуждение железа для задач AI на русском ведётся в чате "железячников" в телеграме, https://t.me/hw_ml. Всякие заметки типа "Амазон сделал кастом чип для обучения нейросетей для своего облака" (декабрь 2020, https://venturebeat.com/2020/12/01/amazon-debuts-trainium-a-custom-chip-for-machine-learning-training-workloads/), скорее всего, будут там.
-- средства выражения алгоритмов (языки программирования): там после десятилетия застоя в нулевых годах наметилась тихая революция: Rust, Go, Julia. Тренд: высокий уровень абстракции при высокой скорости исполнения этих абстракций (в Julia это описывается как "проблема двух языков": чтобы писать быстро и высокоуровнево, как на Python, а исполнять на железе быстро, как на C". Интересно, что лет тридцать назад тренд был "поддержать язык железом" (типа LISP-машины и PROLOG-машины). А сейчас LLVM в компиляторах идёт как отдельный абстрагирующий слой от железа! То есть "железный вычислитель", далее LLVM-вычислитель, далее уже язык как вычислитель.
-- с базами данных идёт сдвиг к GPU ускорителям, "типовые алгоритмы должны уходить в железо": The global GPU Database market size is expected to gain market growth in the forecast period of 2020 to 2025, with a CAGR of 16.0% in the forecast period of 2020 to 2025 and will expected to reach USD 279 million by 2025, from USD 153.8 million in 2019. Это из https://www.orbisresearch.com/reports/index/global-gpu-database-market-2020-by-company-regions-type-and-application-forecast-to-2025, эти алгоритмы уходят в железо, что очень похоже на "мейнфреймы, команды которых микропрограммируются" (тоже несколько уровней вычислителей)
-- Intel не прекратила баловаться с нейроморфными архитектурами, вот https://venturebeat.com/2020/12/03/intel-showcases-neuromorphic-computing-innovations-at-labs-day/, Loihi solutions required 75 times less power than conventional mobile graphics cards without perceivable losses in performance. In fact, in a study accepted to the 2020 Conference on Robot Learning, the Rutgers team concluded that Loihi could learn tasks with 140 times lower energy consumption compared with a mobile graphics chip. Основная проблема как раз с алгоритмикой для этой архитектуры, и софтом с этой алгоритмикой. Но тут трудно говорить о "другой физике". Архитектура другая, но вот физика (пока в нейроморфной архитектуре не задействуют мемристоры) та же, что и у классики -- и там тоже два уровня, используется микропрограммирование (https://en.wikichip.org/wiki/intel/loihi).

3. На уровне "обычных алгоритмов" -- это предыдущая алгоритмика. Думать тут нужно о томах Кнута: алгоритмы сортировок последовательностей, генерации случайных чисел, обхода графов, удаления невидимых линий в трёхмерной графике и т.д.. Тут полно результатов, только они сегодня не так интересны. Например, Гугль сказал, что его квантовый компьютер решает за 200 секунд задачу, которую суперкомпьютер IBM решает за 10тыс. лет. IBM предложила новый алгоритм, и он решает на суперкомпьютере эту задачу за 2.5 дня (https://www.ibm.com/blogs/research/2019/10/on-quantum-supremacy/). Но эти алгоритмы мало кого волнуют сегодня, это стало уделом узких спецов -- знание алгоритмики сегодня идёт в плюс программистам, но по большому счёту оно уже не считается фронтирным, рок-н-ролл ушёл в другие места. Да, кого-то ещё может взволновать крошечное (после 44 лет исследований!) улучшение алгоритма нахождения кратчайшего пути коммивояжёра -- https://www.quantamagazine.org/computer-scientists-break-traveling-salesperson-record-20201008/, но по большому счёту такие достижения вдруг перестали считаться интересными.

4. А вот "универсальные алгоритмы" (варианты The Master Algorithm, как он описан у Pedro Domingos в книжке https://yadi.sk/i/TxIe5tc1SWekdQ) как раз очень бурно развиваются. Именно про них был горький урок Sutton, именно им нужно добавлять вычислительную мощь. Вот только некоторые из результатов этой "новейшей алгоритмики":
-- по факту замена алгоритмов свёрточных нейронных сетей алгритмами архитектруры работы с вниманием -- трансформерами, впрямую использовали эту архитектуру для работы с изображениями и получили SoTA: https://ai.googleblog.com/2020/12/transformers-for-image-recognition-at.html. Теперь и CNN, и RNN заменены на трансформеры, появившиеся в 2017 (и появилось много вариантов, типа Reformer, эффективный вариант от января 2020 -- https://ai.googleblog.com/2020/01/reformer-efficient-transformer.html)/
-- алгоритмический прорыв в алгоритмах сворачивания белков, AlphaFold, 50 лет стояла эта задача в биологии, и оказалась решена (существенно раньше, чем в любых прогнозах. Так же, как задача победы человека в игре Го), https://deepmind.com/blog/article/alphafold-a-solution-to-a-50-year-old-grand-challenge-in-biology
-- алгоритмический прорыв в решении уравнения Шрёдингера, https://syncedreview.com/2019/09/18/quantum-chemistry-breakthrough-deepmind-uses-neural-networks-to-tackle-schrodinger-equation/
-- алгоритм NVIDIA, сокращающий требуемый для видеоконференций трафик вдесятеро, https://syncedreview.com/2020/12/02/nvidia-neural-talking-head-synthesis-makes-video-conferencing-10x-more-bandwidth-efficient/
-- ... и этот поток нескончаем. Универсальные алгоритмы -- это универсальные аппроксиматоры. Если их научиться обучать, то можно решить множество самых разных задач (в том числе, конечно, инженерные расчёты, химические расчёты, физические расчёты и т.д.). Вот, например, обзор расчётов турбулентности методами машинного обучения: https://www.tu-ilmenau.de/fileadmin/media/tsm/papers/Schumacher2020_3.pdf. Но рассчитывать этими методами можно очень много чего, практически всё! Можно ли из этих расчётов потом вынуть математическую модель, "физическую модель"? Да, таких алгоритмов тоже полно, этим не занимаются только ленивые. Вот пример: https://arxiv.org/abs/2009.11500, Discovery of Governing Equations with Recursive Deep Neural Networks или https://arxiv.org/abs/2012.00428 по попыткам подбирать уравнения покомпактнее -- таких работ множество, "перевести данные в какие-то короткие формулы" скоро будет уделом стандартных библиотек. Я бы выделил вот эту работу: https://arxiv.org/abs/2011.11981, там уравнения в частных производных открываются генетическим алгоритмом из редких и зашумленных данных. Законы Кеплера легко открываются из данных, не нужно ждать сотни лет. Неполноприводное движение тоже обеспечивается сегодня выучиванием алгоритмов этого движения, а не программированием.

Мой пойнт в том, что алгоритмика многоуровнева и стремительно развивается. И пока непонятно, чему учить в алгоритмике
-- "простых людей" (алгоритмика в составе трансдисциплины вычислительного мышления -- мой интерес. Думаем об абстрактном "директоре стадиона", который должен уметь поддержать разговор со своими айтишниками на уровне более детальном, чем "сделайте мне красиво", тьфу, "вычислите мне что-нибудь, и подешевле"),
-- прикладных специалистов (инженеров, которым нужно делать инженерные расчёты. Или учёным, которым нужно "открывать законы природы"),
-- программистов (которых разных сортов уже столько, что не факт, что их нужно учить одной и той же алгоритмике -- скажем, спецов по квантовым компьютерам какой алгоритмике учить? А спецов в data science? А спецов в AI? Или они все уже не "программисты"?

И спросить не у кого. Такой момент в истории, когда никто ничего про алгоритмику в целом не знает. Как в притче о слоне и семи мудрецах, один видит в алгоритмике продолжение дела Кнута, другой дифференцируемое программирование (differentiable programming, https://ailev.livejournal.com/1464563.html), третий рассуждения про применимость теоретических работ Тьюринга к нейроморфным компьютерам на мемристорах и квантовым компьютерам (computer science -- естественная наука), и алгоритмика как-то теряется как цельная дисциплина. И даже непонятно, нужно ли стремиться компактифицировать знание об алгоритмике, сделать его более универсальным, или плюнуть и считать алгоритмику разъехавшейся по каким-то частным дисциплинам?

И это даже не всё вычислительное мышление. Кроме алгоритмики в вычислительном мышлении что-то должно быть сказано и про моделирование данных. Ибо без данных алгоритмы не бывают. А там тоже всё чудесато. Ибо алгоритмы и данные -- это две стороны одной медали, и не только в классической информатике. Графы знаний и коннективистские модели данных (скажем, language models как те же нейросети), моделирование данных в ходе DDD (domain-driven development) -- и вот уже и моделирование данных оказывается весьма бурно развивающимся. Хотя результаты этого моделирования, скорее всего, мы узнаем как "вот открыли ещё один тип алгоритма, который эффективно работает с вот этим видом данных" -- и новизна вида данных потухнет перед новизной алгоритма. Эту ситуацию с недооценкой моделирования данных в информатике тоже нужно исправлять. Есть чат "Типы в языках программирования, моделирования, представления знаний", https://t.me/typeslife, там 439 интересующихся. И поддержать какой-то осмысленный разговор на тему связи структур данных (Arrays, Linked Lists, Stacks, Queues, Maps & Hash Tables, Graphs, Trees самых разных видов, Disjoint Set Union и т.д.), типов данных (целое, строка, плавающее и т.д. -- активно развиваются сейчас плавающие для ускорения вычислений универсальных алгоритмов AI, тех же нейронных сетей), типов (они ж необязательно "данных"), баз данных (где "модель данных" уже звучит вполне знакомо), баз знаний/онтологий/графов знаний и т.д. -- там это не получается почему-то. Разговор сразу рассыпается, увы. Но будем проблемы решать по очереди. Пока решим, что делать с алгоритмикой.

UPDATE: обсуждение в чате блога с https://t.me/ailev_blog_discussion/5058, в чате по типам -- https://t.me/typeslife/7958
2019

Вычислительное мышление в интеллект-стеке уровнем выше, чем системное

Что выше по интеллект-стеку -- вычислительное мышление, или системное мышление? Разлепить эти две трансдисциплины в жизни практически невозможно, они весьма тесно переплетены. Но нам разлепить таки нужно: надо как-то выстроить обучение.

1. Вариант "вычислительное мышление с онтологикой ниже системного мышления, сначала нужно освоить вычислительное мышление".
По факту, это продолжение линии Дэвида Дойча про его сцепленные намертво четыре теории, вместе составляющие классическую "теорию всего", рациональное мировоззрение (https://yadi.sk/i/Rv9Tob18A6mxyA, стр.398):
"по отдельности все четыре теории [квантовая физика в интерпретации Эверетта, вычисления в докрученной Дойчем до разных физик вычислителя интерпретации Тьюринга, эпистемология в интерпретации Поппера с добавкой самого Дойча и теория эволюции с репликаторами в докрученной Дойчем интерпретации Докинза] содержат объяснительные пробелы из-за которых они могут показаться узкими, бесчеловечными и пессимистичными. Но я считаю, что как только их будут рассматривать совместно, как единое объяснение структуры реальности, это неудачное свойство изменится на прямо противоположное. Далекое от отрицания свободной воли, далекое от помещения человеческих цен­ностей в контекст, где они становятся тривиальными и неважными, далекое от пессимизма, это фундаментально оптимистичное мировоз­зрение помещает человеческий разум в центр физической вселенной, а объяснение и понимание — в центр стремлений людей".

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

В системном мышлении мы явно говорим о воплощении системы (физический мир) и об описаниях системы/veiws, методах описания системы/viewpoints -- и вычислительное мышление в этом клубке "теории всего" нам нужно для того, чтобы вести тут внятный разговор в рамках системного мышления.

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

Качеством моделей/описаний (в нашем случае требований, но это просто пример общего паттерна мышления) занимается эпистемология. Она отвечает на вопрос "как вы узнали"? SoTA эпистемология говорит, что хороша та модель (те требования), которая нам даёт объяснение, а не просто предсказание. И что вот так понимаемое качество — это про то, какое описание из многих возможных нужно выбрать (а потом оказывается, что всегда можно сделать описание получше, но это только потом, когда найдётся случай, плохо описываемый — жизнь и описание расходятся). Этот выбор описаний (требований в их начальных вариантах) осуществляется путём фальсификации вариантов двумя путями:
— доказательством непротиворечивости (в том числе с ранее известными хорошими описаниями). И тут вспоминаем, что доказательства -- это вычисления, информатика это "наука о доказательствах", чуть подробней тут: https://ailev.livejournal.com/1540866.html (впрочем, и выдвижение требований это тоже вычисление, generative алгоритмы именно про "творческое мышление").
— измерением предсказанного описанием (эксперимент). Тут do-calculus, контрфактуальность, вычисления байесовских сетей, причинный вывод/causal inference. Тоже вычисления/вывод/доказательства.

Про такие описания, как требования, всё это вполне применимо. И тут же вылезает тот самый assurance case, который про доказательства (в том числе логические, и в том числе экспериментальные — описания). Для работы с требованиями через assurance case нужно вычислительное мышление. Нет -- вместо культурной работы с требованиями будет работа "на коленке", "требовательное кулибинство" (pun intended).

Разница только в том, что в требованиях мир (целевую систему) подгоняют потом под описания, а в классической эпистемологии описания под требования. В этом плане инженерия (в том числе инженерия требований) -- это reverse-epistemology, на этом уровне интеллект-стека это ближе к прагматике и праксиологии. И эту мысль нужно ещё продумать. Если требования невыполнимы в принципе — то это плохие требования. Они должны быть возможны. Это одна из проверок описаний, их физичность (выполнимость в жизни) — как раз это Дойч хорошо описывает, он в этом направлении хорошо дополнил SoTA эпистемологию Поппера. Так что да,
-- выявление требований, валидация требований и проверка требований с использованием assurance case берём из практик системной инженерии
-- объекты (целевая система) и их описания (требования) берём из системного мышления,
-- а вот читать для более глубокого понимания, что это такое и зачем нужно Дойча (который рекомендует читать более старого Поппера, чьи идеи он разделяет) -- это эпистемология, вычислительное мышление, эволюция, физика. Поверх всего этого читаем Judea Pearl, который говорит о том, что все эти объяснения — это объяснения причин и следствий, и даёт формальную модель для этого.

2. Вариант "вычислительное мышление выше системного мышления, сначала нужно освоить системное мышление".
Тот же Дойч в этих описаниях использует системное мышление: он явно говорит о системных уровнях (уровнях крупности вещества, у него же там в самом низу физика) и эмерджентности, требующей на каждом системном уровни новых объяснений. Квантовая физика имеет своё знание, свои объяснения -- частицы, атомы. А вот молекулы -- это другой уровень, работает эмерджентность, описания/объяснения там свои. Клетки и биохимия -- там уже новый уровень, новые эмерджентные свойства, поэтому новые описания/объяснения.

Но Дойч не использует в полной мере понятия "система": кроме системных уровней и эмерджентности у него из системного подхода нет практически ничего. Да и вряд ли он знает о системном мышлении в его современной версии. В старинных работах по общей теории систем системное мышление выглядит как ряд простых идей вокруг понятия "эмерджентность", это и использует Дойч. Это используют и другие авторы более-менее системных "теорий всего", тот же Уилбер, у которого вместо физики и реализма на ведущем месте вдруг "духовность", а из системного мышления идея холона трактуется более-менее произвольно в части соблюдения отношения часть-целое и эмерджентности, зато множественность методов описания/viewpoints на первом месте. У Дойча множественность методов описания по факту не отмечается, он всё больше про "универсальность" говорит и у него практически ничего про прагматизм и разделение труда, разнообразие ролей и интересов/concerns, влекущих разнообразие методов описаний. На более-менее полноценную трансдисциплину, которая рассказывает о структурировании мышления о проектах, а не только о целевых системах этих проектов, системное мышление 1.0 из общей теории систем не претендует, и именно оно у Дойча. А вот современная версия 2.0, развиваемая в системной инженерии -- она уже претендует. Тем не менее, идея "на разных системных уровнях используются разные описания, разные доказательства" -- она уже требует для своего понимания системного мышления.

А ещё в вычислительном мышлении нужно говорить о вычислительном стеке: внизу там физика, выше конструкция вычислителя, выше софт. Что-то по линии текста "сколько уровней в интеллект-стеке", https://ailev.livejournal.com/1382464.html (7 уровней только аппаратуры классического компьютера, и при этом я интеллект-стек я понимал как стек вычислителя, это сейчас я работаю именно с понятием интеллекта и мышления, обсуждая этот стек в "Образовании для образованных 2020").

Ход от вычислительного мышления (computer science) к инженерии (computer engineering, software engineering -- стек там слишком большой, чтобы говорить об одной инженерии) тоже требует системного мышления, ибо сегодня вся частная инженерия по факту специализация системной. Делаем-то successful computer system, successful software system. Но это не слишком сильное тут соображение в пользу "сначала системное мышление, потом вычислительное", ибо можно сказать, что "сначала вычислительное мышление, потом системное, потом уже инженерия, менеджмент, предпринимательство".

3. Почему системным мышлением и вычислительным мышлением нужно заморачиваться прямо сейчас?
Вот тут несколько моих комментов по поводу выступления Ольги Максименковой на тему современного IT-образования: https://www.facebook.com/olga.maksimenkova/posts/3812043265482152.

Вычислительное мышление как трансдисциплина -- это общее образование, и его можно понимать как айти образование, но не только для айтишников, а для всех образованных людей. Чтобы эти образованные люди могли хотя бы поддержать разговор с айтишниками. Далее вопрос: если вот так образованный для разговора с айтишником человек с каким-никаким вычислительным мышлением (и системным мышлением!)придёт к образованному айтишнику -- что он там встретит?! По идее, такое же вычислительное мышление, как у него (но кто научит ему сегодня айтишника?!) плюс что-то за его пределами (ибо речь идёт об образованном своим прикладным дисциплинам айтишнике, а не каком-нибудь условном директоре стадиона, которому даём просто трансдисциплины).

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

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

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

Айтишникам же примерно так задачу и ставят: "Нарисуйте нам айти стратегию, а затем реализуйте её". То есть у айтишника в образовании должна быть ещё и учительская компетенция для дисциплины "вычислительное мышление" aka "информатика 2020" (и это ни разу не школьная сегодняшняя дисциплина).

При этом в самом айти огромное количество системных уровней (в модели OSI только семь!). Каждый из них требует своей дисциплины, своей практики, своего инструментария/технологии. Системность (а не систематичность) образования именно во многоуровневости, программы развития айтишника должны быть многоуровневыми. Для этого нужно учить айтишника работать с айти системно. Это где в его образовании?

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

Но системности в разговоре про современные вычисления -- с гулькин нос, только эхо от разговоров старых компьютерщиков. В этом-то и беда момента. А поскольку парадигма вычислений меняется (алгоритмы AI это не алгоритмы Кнута, квантовый компьютинг -- это даже не функциональное программирование), и время этой смены становится сравнимым со временем образования, бессистемность становится вообще фатальной. Тему непонятно без этой многоуровневости даже как обсуждать. Разве что ограничиться "принципиальной вычислимостью" как у Тьюринга: формально, академично, но бесполезно без последующего развития в сторону неизбежной многоуровневости вычислителей.

4. А если таки попробовать говорить на системном языке в вычислительном мышлении с самого начала? Сделать системное мышление пререквизитом?

В курсе "вычислительное мышление" мы должны дать понятийный минимум: объекты внимания, нужные неайтишникам (и, конечно, айтишникам) при разговоре о вычислениях. По факту говорим о том, как описывать систему "вычислитель": зачем нужна эта система, из чего она состоит и как работает. Вычисления -- это и есть функционирование вычислителя! Мышление -- это функционирование интеллекта, а интеллект -- это тоже вычислитель.

Алгоритм -- функциональное (время работы) описание вычислителя. Система определяется по её функции. Вычислитель определяется по его алгоритму работы. Код или инф.модель харда -- это описание вычислителя (включая его поведение: вычисления), его можно документировать. Вычислитель -- воплощение системы, описанной алгоритмом. Вычислитель физичен!

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

В системном языке вроде как получается меньше размахивать руками, и потом проще переходить к инженерии. Поэтому пока выбираем вариант "вычислительное мышление в интеллект-стеке уровнем выше, чем системное".

UPDATE: обсуждение в фейсбуке -- https://www.facebook.com/ailevenchuk/posts/10219884643120531, в чате лаборатории вычислительного мышления -- https://t.me/comp_thinking/384