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