Типы (аспекты) моделей, алгоритмов, Теорий, И объяснений

В ОдО2021 есть фраза "модели причинности -- это главное в объяснениях". Мне показалось это упрощением, если под моделями причинности мы понимаем structural causal models как из задал Judea Pearl в The Book of Why. Например, на мой взгляд, назвать теорию эволюции "причинной моделью" было бы большой натяжкой, несмотря на то, что она является хорошим объяснением.

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

  • Compartmentalisation/boundary: понятизация
  • Connectionistic/ontological: онтология
  • Analytical/equation-based: объяснения
  • Algorithmic/rule-based (generation): алгоритмика, логика, формальное мышление по спектру семантики
  • Principles/rules-based (verification only): исследования, некоторые изводы этики
  • Stochastic/randomised: предпринимательство, творчество (в составе исследований и эстетики)
  • Statistical/vote-based/parallel: алгоритмика, интуитивное/нечеткое мышление по спектру семантики
  • Multicomputational: алгоритмика (квантовые алгоритмы)

По этой классификации, причинные модели отчасти connectionistic/ontological, отчасти analytical/equation-based.

Вы бы разделили модели на типы по-другому? Есть ли какие-то типы моделей, которые я забыл?

#сиОдО

Ну вот “объяснение” – это то, что ведёт к какому-то предсказанию (по Дойчу). В том числе предсказанию запрета (если это принцип). Сама идея поглядеть, чем “объяснения” по Дойчу отличаются от “объяснений” по Перлу – она очень хороша. Моя мысль была в том, что как Дойч поправил Поппера в том, что не любая идея будет итогом исследования, а именно объяснение, так Перл поправляет Дойча, указывая на то, что там было формализовано как “объяснение” в итоге “одомашнивания причинности”. Конечно, это всё требует разбираться, что там с контрфактическими высказываниями и интервенциями в этих моделях, а сама их форма – да любая! То есть “ходил по базару, видел разные модели” ничего не даёт, если не понимать, как эти разные модели потом использовать. Разные использования дают разные классификации. Общий принцип тут такой: если не знаешь, как использовать, то и не классифицируй, пользуйся полнотекстовым поиском, не подводи под тип! И дальше: сколько разных целей, столько и разных классификаций будет. Цель же не заявлена!

Мелкие замечания не по существу: все эти “генераторы и верификаторы” напоминают постановку задачи про P vs. NP, у словая “функция” есть пять разных значений (и тут я не очень понимаю, на какое ссылаемся), а алгоритмика квантовых алгоритмов мне не очень понятна (квантовые вычисления же – это универсальный компьютер, эквивалентность машине тьюринга, так что по скорости разница будет, но по видам моделей – то же самое, нет? Нужно пояснять, что там имеется ввиду. В любом случае, в этом месте просится ход на ещё один вид моделей: “физические модели”, типа аэродинамической модели самолёта масштабом 1:100 для продувки в аэродинамической трубе).

Но пока нет ответа на вопрос “Для чего делить на классы”, обсуждать ничего нельзя.

Дисклеймер: на момент написания заметки, я был знаком с The Master Algorithm на уровне описания в ОдО (то есть, примерно никак), но на данный момент я посмотрел часовое видео, где он презентует свои пять типов алгоритмов. Наверное, если бы я посмотрел видео или прочитал книгу раньше, не написал бы заметку.

> а сама их форма – да любая! То есть «ходил по базару, видел разные модели» ничего не даёт, если не понимать, как эти разные модели потом использовать. Разные использования дают разные классификации. Общий принцип тут такой: если не знаешь, как использовать, то и не классифицируй, пользуйся полнотекстовым поиском, не подводи под тип! И дальше: сколько разных целей, столько и разных классификаций будет. Цель же не заявлена!

В дополнение к фразе из книги за которую я зацепился, есть еще соображение из рабочего проекта, где текущее решение – на “классических” алгоритмах, и есть мнение, что “ML тут не подходит”. Но вот под этим “ML”, скорее всего, имеется ввиду чистый Deep Learning, как сейчас модно, а на другие типы алгоритмов/моделей – может быть смотрели, может быть, нет – надо проверять.

Я согласен, что от данной классификации толку нет, например, потому что очень много всего внутри statistical/vote-based, да и вообще, те же интересные эволюционные алгоритмы по этой схеме не классифицируются однозначно, потому что имеют много разнотипных элементов. Спасибо за объяснение.

В разделе ОдО про исследования еще, похоже, подразумевается, что исследования – это не только про нахождение “объяснений”, но и собственно алгоритмов/решений задач (там, где про решение противоречий в СМД и ТРИЗ). Или это уже относится к алгоритмике? Тут в ОдО говорится практически только то, что решения так или иначе берутся “из шума”/“творчеством”: либо эволюционной подстройкой существующих прототипов решений в неком эволюционном процессе, либо прогоном этого шума через автоэнкодер. Тут, мне кажется, классификация алгоритмов обучения (а не любых моделей/алгоритмов) Педро Домингоса очень подходит. Оттуда видно, что решения (или хотя бы догадки) берутся не только из шума: 1) перебором/индукцией, 2) чистой интуицией (условие задачи на вход нейросети – решение на выход, что бы оно ни значило), 3) из шума – это Домингосовские эволюционные алгоритмы, 4) Байесовские сети – не знаю как притянуть, но наверное как-то можно, и, наконец, 5) по аналогии.

Наглядный пример обучения, о котором я думаю – это спортивное программирование. Спортсмен-программист “выучивает” за 10 минут решение – текст программы, имея условия на вход, несколько примеров правильного входа–выхода, и проверяльщика решений – черный ящик. Сами алгоритмы там обычно императивные, интересен процесс поиска решения. Также, хотя это и “тренируемый навык”, в какой-то немалой степени спортивное программирование – это интеллектуальное занятие, потому что оно далеко от чистой интуиции/S1.

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