Плюрализм в информатике

Jun 10, 2012 16:09

Есть определенная параллель того, что происходит сейчас в когнитивной науке и компьютерной лингвистике:

-- в когнитивной науке растёт поддержка гибридных (прежде всего дуальных -- см. обзор Keith Frankish "Dual-Process and Dual-System Theories of Reasoning", http://commonsenseatheism.com/wp-content/uploads/2011/09/Frankish-Dual-process-and-dual-system-theories-of-reasoning.pdf) архитектур, в которых предполагается, что есть две системы работы с понятиями: S1, работающая "аналогово" на "похожестях", и S2, работающая "логически". Есть также гипотезы, что в этих когнитивных архитектурах есть разные представления понятий (понятийный плюрализм, http://ailev.livejournal.com/1007293.html), и прототипы с экземплярами соответствуют обработке в S1, а теории теорий и атомизм -- обработке в S2 (подробнее -- Fernando Martínez Manrique, "Dual minds, dual concepts?", http://www.grupocyp.comuv.com/trabajosWS/ManriqueWS.pdf. Если вы свободно читаете этот текст, значит вы уже разобрались в предмете). Ага, дуализм "подсознания" и "сознания", "интуиции" и "рассуждения", "быстрого" и "медленного".

-- в компьютерной лингвистике гибридный подход, в котором обработка "перцептов" входного потока происходит "статистически", а затем всё постепенно переходит в обработку разного уровня понятий-объектов, с которыми работа уже ведется по правилам как с использованием статистики на нижнем уровне, так и с использованием логические машины вывода (reasoners) на верхнем, онтологическом, уровне. Так устроены практически все более-менее мощные системы компьютерной лингвистики: в них можно явно выделить "аналоговую" обработку S1 и логический вывод S2. Даже CYC в той части, где он пытается быть лингвистической системой, определяет контент-анализом микротеорию (S1), чтобы потом использовать валидный логический вывод (S2) в соответствующей микротеории (http://ailev.livejournal.com/489099.html).

Я сам считаю, что "дуализм" -- это слабо сказано. На самом деле, речь идёт о плюрализме, причём каждая подсистема (S1, S2, S3 и т.д.) имеет возможность доступа к представлениям понятий для других процессов. Но для начала и дуализма может хватать.

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

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

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

До "зимы искусственного интеллекта") выбор для написания интеллектуальных систем был между функциональным лиспом и процедурными/пакетными/объектными языками, плюс особнячком был Пролог. И их довольно трудно было сочетать в одной системе, хотя и приходилось это делать. Сейчас можно брать почти любой современный мультипарадигмальный язык общего назначения (general purpose programming , который достаточно мультипарадигмален, чтобы на нём можно было писать и процедурно, и декларативно, и гибридно. Не нужно забывать, что даже любимый язык игроделов Lua был изобретён, чтобы "скриптовать декларативно". Это самое "скриптовать декларативно" -- общий сегодняшний тренд.

Первые экспертные системы оказалось легко строить, но сложно сопровождать (достаточно вспомнить, почему загнулась самая первая успешная экспертная система -- MYCIN. Она просто стремительно отстала от текущей медицинской практики: обновлять её знания было практически невозможно). Современные языки программирования имеют развитые средства поддержки управления конфигурацией, непрерывной интеграции, рефакторинга и т.д.. Это означает, что экспертная система -- это просто код более-менее интеллектуальной системы, использующей разнообразное представление данных и разные методы обработки этих данных. То есть сложные информационные системы сегодняшнего дня -- это и есть экспертные системы прошлого, только более удобные в сопровождении, более сложно устроенные и гибридные в плане одновременной работы как с "логикой", так и с "ана-логикой". Вот пруфлинк, описывающий ровно такой подход к делу в ABBY: "Грязное программирование с чистой душой: разработка эвристических систем", http://habrahabr.ru/company/abbyy/blog/144859/ (часть первая), http://habrahabr.ru/company/abbyy/blog/144913/ (часть вторая).
Previous post Next post
Up