В этой статье я расскажу об одном из самых важных отличий человеческого мышления от того, как работают нейросети: о структурном восприятии мира. Мы поймем, как это отличие мешает ИИ эффективно решать многие задачи, а также поговорим об идеях, с помощью которых можно внедрить в нейросети понимание структуры. В том числе обсудим недавние работы таких известных в области AI людей, как Джеффри Хинтон и Ян ЛеКун.

https://www.advancedsciencenews.com/think-like-a-brain-using-artificial-synapses/
https://www.advancedsciencenews.com/think-like-a-brain-using-artificial-synapses/

Начнем мы с понимания того, что вообще такое “структурное мышление” и почему люди им обладают.

Структурное мышление

Существуют убедительные данные, что мы — люди — воспринимаем мир с помощью структуры.

(ссылки на научные работы касательно структурного восприятия мира человеком, подкрепляющие утверждения этого раздела, можно найти в разделе “Литература” в конце статьи) 

Это значит, что мы делим все сложные абстрактные понятия на части, и воспринимаем все объекты и понятия как сложные составные сущности, состоящие из простых элементов (building blocks), которые взаимодействуют между собой (имеют relations).

Пример: планета состоит из стран, страна — из городов, города — из улиц и т.д. Города — это составные части стран (building blocks), при этом города находятся внутри стран. "Внутри" — это вид взаимодействия между городом и страной (relation). Также взаимодействия есть и между отдельными городами — например, один город может быть больше другого. "Больше" — это тоже relation. При этом сами части — города — также состоят из более мелких building blocks — улиц, а улицы — из домов и т.д. 

Эти понятия (улица, город, страна в нашем примере) и связи между ними создают иерархическую структуру с взаимодействиями между элементами у нас в голове. 

Точно так же можно разбить на составляющие практически любой объект: смартфон состоит из деталей; молекула — из атомов; театр — из сцены, зрительского зала, буфета и холла; греческий салат — из нарезанных овощей, оливкового масла и сыра. Человек стремится наделить структурой абсолютно все. Вспомните иерархию живых организмов из учебников биологии: живые организмы делятся на эукариотов, мезокариотов и т.д.; эукариоты, в свою очередь, делятся на царства растений, животных и грибов; эти царства также делятся на подцарства и т.д. Мы ищем и описываем структуру даже там, где она не так очевидна: просто структура — это то, как мы воспринимаем любой объект. Более подробнее о том, почему это так, и к каким интересным эффектам мышления это приводит, можно прочитать в книге "Почему мы ошибаемся" (глава 8). 

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

Вот так в зависимости от ситуации мы можем оперировать объектами на разных уровнях иерархии.

Вообще, иерархия — самый эффективный способ организации систем с точки зрения взаимодействия элементов системы, их специализации и передачи информации между частями системы. Почему это так, можно прочитать в книге "Азбука системного мышления" (Глава 3: "Почему системы так хорошо работают") Скорее всего, иерархическое мышление у людей также развилось по причине его эффективности. Мысля таким образом, мы затрачиваем меньше энергии, чем если бы мышление было устроено другим образом. 

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

Теперь заметим вот что:

Структурное ассоциативное мышление помогает нам эффективно воспринимать мир и приспосабливаться к новому. Вот как:

Сталкиваясь с чем-то новым, мы пытаемся разделить это новое на известные нам из прошлого опыта составляющие (те самые building blocks) и таким образом создать структурное представление новой сущности. Как только структурное представление новой сущности создано, мы можем делать выводы о новой сущности. Эти выводы основаны на том, из каких известных элементов состоит структура нового объекта и наших знаний об этих известных элементах и их взаимодействиях.

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

  • Пример 1: Пусть вы идете по лесу и видите незнакомое вам существо. Вы осматриваете это существо и находите, что у него есть знакомые вам части: лапы (4 штуки), хвост, уши, клыки, когти. На основе наличия этих частей и их взаимного расположения вы делаете вывод, что перед вами животное, да еще и, похоже, опасное: клыки и когти не внушают доверия. Вы собрали свое восприятие новой сущности из прошлого опыта, и теперь можете решить, как с этим животным взаимодействовать: опять же, на основе прошлого опыта взаимодействия с похожими сущностями. И опыт подсказывает, что с животным лучше не связываться: когти и клыки говорят о том, что животное может порвать вас в два счета. 

https://jliza.ru/nesushhestvuyushhee-zhivotnoe.html
Посмотрите на это несуществующее животное. Как считаете, на что оно способно?
https://jliza.ru/nesushhestvuyushhee-zhivotnoe.html Посмотрите на это несуществующее животное. Как считаете, на что оно способно?
  • Пример 2: попроще. Пусть у вас есть друг Петя, лицо которого вы хорошо помните. Петя купил новую шляпу и пришел в ней к вам в гости. Вы с первого взгляда поймете, что перед вами тот же самый друг Петя, хоть вы и никогда не видели его в этой шляпе. Все потому, что вы понимаете, что человек и шляпа — это отдельные сущности. Вы знаете свойства каждой из них, а также то, как они взаимодействуют между собой. Вы понимаете, что люди могут носить разные шляпы на голове, но при этом они все равно остаются теми же людьми. Вы воспринимаете человека в шляпе структурно.

https://www.adhnk.com/?a=4&b=156&c=6882362&pp=funny+weird+hats
Петя купил новую шляпу, и доволен!
https://www.adhnk.com/?a=4&b=156&c=6882362&pp=funny+weird+hats Петя купил новую шляпу, и доволен!

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

  • Пример 3. Структура помогает нам не только взаимодействовать с новыми объектами, но и приспосабливаться к новому окружению. Например, если вы попали в новый для вас город в новой стране, вы примерно понимаете, как нужно себя вести, ведь вы бывали в городах и раньше. Вам нужно приспособиться лишь к нескольким новым аспектам. Это могут быть, к примеру, специфические правила дорожного движения (допустим, в новой для вас стране движение левостороннее, в отличие от правостороннего на вашей родине). Так структурное восприятие помогает  вам сократить количество усилий для адаптации к новой среде.

Вот так структура позволяет нам очень эффективно взаимодействовать с миром. 

Идем далее: структурное мышление позволяет нам создавать новое на основе отдельных известных частей: спроектировать новый город будущего, по-разному соединяя отдельные известные части (building block'и: дома и улицы) с помощью разных известных взаимосвязей (relations). Например, кто-то же создал несуществующее животное с картинки выше. Оно состоит из вполне стандартных, известных нам элементов.

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

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

Это умение разбивать высокоуровневые понятия на структурные элементы, осознавать и создавать новое, собирая его из хорошо известных старых понятий, называется комбинаторным обобщением (conbinatorial generalization). И это — то, что суперлегко дается мозгу человека и суперсложно — искусственному интеллекту. В частности, подходам, основанным на нейросетях. 

Тут отметим, что существуют два понятия “искусственный интеллект”: “сильный ИИ” и “слабый ИИ”. О том, что означает каждый из них, можно прочитать тут. Очевидно, что весь существующий на данный момент искусственный интеллект — слабый. В тексте выше (и далее ниже) под “искусственным интеллектом” я подразумеваю слабый ИИ.

Давайте поговорим о структуре в нейросетях:

Нейросети и структура

Если посмотреть на принципы работы современных нейросетей, в них, на самом деле, можно найти структурные элементы.

Возьмем, к примеру, сверточные нейросети (CNN). Сверточные слои состоят из фильтров, которые выделяют из изображения информацию о паттернах, которые присутствуют на изображении. Причем каждый последующий сверточный слой реагирует на все более сложные, высокоуровневые паттерны, чем предыдущие слои. 

К примеру, пусть у нас есть сверточная нейросеть для классификации картинок. И пусть среди классов есть “лицо человека”. Тогда в самых первых слоях сверточной нейросети будут фильтры, которые реагируют на простые, низкоуровневые паттерны лица: горизонтальные/вертикальные линии, линии глаз/носа и т.п. В следующих слоях будут фильтры, реагирующие на более сложные, составные паттерны: глаза, нос, рот и т.п. И в последних сверточных слоях будут фильтры, реагирующие на паттерн “лицо человека”.

https://www.quora.com/How-does-a-convolutional-neural-network-recognize-an-occluded-face
Примеры паттернов, на которые реагируют последовательные слои сверточной нейросети.  Первые слои реагируют на низкоуровневые паттерны вроде вертикальных/диагональных линий, следующие слои реагируют на более сложные паттерны (глаз/нос), последние — на паттерны наличия лица.
https://www.quora.com/How-does-a-convolutional-neural-network-recognize-an-occluded-face Примеры паттернов, на которые реагируют последовательные слои сверточной нейросети.  Первые слои реагируют на низкоуровневые паттерны вроде вертикальных/диагональных линий, следующие слои реагируют на более сложные паттерны (глаз/нос), последние — на паттерны наличия лица.

Получается, сверточные слои как бы обрабатывают картинку, распознавая на ней сначала низкоуровневые паттерны, а затем постепенно собирая эти паттерны вместе в более сложные конструкции. Это напоминает структуру: нейросеть учится находить на изображении отдельные элементы (паттерны), а затем собирает целое из составных элементов.

Однако такой идеи устройства нейросети недостаточно, чтобы нейросеть развила понимание структуры,  приближенное к тому, как структуру понимает человек. Свидетельством этому служат проблемы, которые возникают и у сверточных, и у практически всех других нейросетей повсеместно. Далее мы рассмотрим некоторые из них.

Можете подумать о том, почему той структуры, что есть в сверточных нейросетях, не хватает для имитации восприятия человека. Чего недостает сверточным сетям?

Общие проблемы нейросетей

У нейросетей есть несколько известных общих проблем. Общих — потому что эти проблемы характерны для всех видов нейросетей. Рассмотрим три из них: те, которые, на мой взгляд, связаны с отсутствием у нейросетей понимания структуры.

  • Знания нейросетей плохо переносятся из домена в домен, даже если домены сильно похожи. Например, нейросеть, которая отлично распознает лица европейцев, будет плохо работать на лицах людей из Африки. Эта проблема называется domain shift / out-of-domain.  Или, еще по-другому — отсутствие у нейросетей обобщающей способности. Есть отдельные направления исследований, которые ищут подходы для улучшения адаптации нейросетей к новым доменам: эти области называются domain adaptation или transfer learning. Но все эти техники далеки от совершенства, проблема domain shift еще не решена.

    Для человека проблемы domain shift практически не стоит. Мы легко проводим аналогии между объектами из двух доменов, выделяя в каждом структурные элементы и сопоставляя их между собой. Выделив в объекте из неизвестного домена знакомую структуру, мы понимаем, что примерно представляет из себя объект и как с этим объектом взаимодействовать. Другими словами, мы сравниваем разные объекты из разных доменов между собой на основе структуры, не обращая внимания на мелкие неважные различия. Мы поймем, что перед нами человек, даже если этот человек будет неизвестной нам ранее расы: мы поймем это, проведя аналогию между людьми известных нами рас и людьми новой расы на основе того, что оба типа людей состоят из одинаковых структурных элементов: головы, глаз, носа, рук и т.д. Таким образом, умение к комбинаторному обобщению позволяет людям взаимодействовать со структурно похожими элементами из разных доменов.

  • Нейросети чувствительны к шуму и малым изменениям в данных (это проблема отсутствия устойчивости/робастности нейросетей). Даже самое малое изменение картинки, малое добавление шума может сильно изменить ответ нейросети. Посмотрим, например, на две картинки ниже. Человеку явно понятно, что на картинках один и тот же объект, и малый шум не мешает это осознать, точно так же как и новая шляпа из примера выше не мешала понять, что перед нами тот же друг Петя. Просто для нас картина и шум — это две сущности, которые взаимодействуют между собой. И взаимодействуют они так, что шум не меняет значения объектов на картине.

    У нейросетей же так не получается: совсем малый шум может сильно изменить восприятие объекта нейросетью. Это выдает отсутствие в нейросетях структуры, а также позволяет создавать adversarial атаки на сети. Adversarial атака — это когда входящий объект изменяется очень малым образом, так, что человеку практически не заметно, но ответ нейросети на этот объект при этом сильно искажается. Более подробно об  adversarial атаках можно почитать тут.

https://medium.comr/the-unusual-effectiveness-of-adversarial-attacks-e1314d0fa4d3
Пример adversarial attack. При подаче в нейросеть картинки слева модель классифицирует ее правильно: “поросенок”. Но при добавлении небольшого шума, не видного глазу, нейросеть начинает классифицировать правую картинку как “авиалайнер”.
https://medium.comr/the-unusual-effectiveness-of-adversarial-attacks-e1314d0fa4d3 Пример adversarial attack. При подаче в нейросеть картинки слева модель классифицирует ее правильно: “поросенок”. Но при добавлении небольшого шума, не видного глазу, нейросеть начинает классифицировать правую картинку как “авиалайнер”.
  • Для обучения нейросетей требуется огромное количество данных. При малом количестве обучающих данных нейросети переобучаются. Человек же может обучиться под новую задачу на основе ограниченного опыта. Это умение людей, опять же, связано со структурным мышлением: как было показано в примере с диким зверем, мы можем собирать общее представление о новом объекте, разложив объект на известные составные части и проанализировав их взаимодействия. Пары объектов нового вида будет достаточно, чтобы на основе их структуры сделать о них выводы и научиться правильно с ними взаимодействовать.

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

В общем-то, все описанные проблемы имеют одну основу: нейросети плохо справляются с любыми данными, которые как-то отличаются от тех, на которых нейросеть была обучена. 

Один из возможных способ решить эту проблему — наделить нейросети способностью к комбинаторному обобщению, “заставив” нейросеть воспринимать объекты структурно.

Есть несколько идей, как это можно сделать. Далее мы рассмотрим некоторые из них.

Внедрить в нейросеть понимание структуры

Тут мы рассмотрим несколько идей, как можно внедрить в нейросети понимание структуры и связей между элементами, и тем самым приблизиться к созданию AGI (Artificial General Intelligence). 

Отметим, правда, что общей и ясной концепции, как внедрить в нейросетевые модели понятие структуры, еще нет. Это открытый вопрос, над которым думают многие исследователи, включая таких известных, как Джефф Хинтон и Ян ЛеКун (об их работах мы тоже упомянем в этом разделе). Однако все же есть несколько идей, которые стоят рассмотрения. О четырех из них мы и поговорим в этом разделе.

Идея #1: Больше данных в модель!

Многие считают, что чтобы нейросеть стала лучше “понимать мир”, нужно просто сделать очень большую модель (с огромным количеством параметров) и обучить ее на намного большем и разнообразном количестве данных, чем это делается сейчас. Типа, очень большая модель в процессе обучения на разнообразных данных сама поймет, как лучше всего представлять объекты, и в итоге у нее само собой возникнет понятие структуры.В этом есть резон: практика показывает, что чем больше в обучающей выборке разнообразных примеров, тем лучше генерализация нейросети, и тем менее проявляются эффекты out of domain, adversarial attack и чувствительности к шуму. 

Но достаточно ли этого, чтобы достичь комбинаторного обобщения? Похоже, что все-таки нет. Посмотрим на DALL-E 2: нейросеть для text-to-image, которая обучалась на просто огромном количестве данных. При этом понимания структуры у этой нейросети, увы, не возникло. Казалось бы, это странно: DALL-E 2 отлично генерирует картинки по текстовым запросам, комбинируя различные сущности: даже те, которые обычно несовместимы (вспомним знаменитый авокадо-стул). Но нет. Ученые из Гарварда провели исследование, по итогам которого сделали вывод, что у DALL-E 2 нет даже базового понимания отношений между объектами и, соответственно, структуры (цитата: “... current image generation models do not yet have a grasp of even basic relations involving simple objects and agents”) 

https://arxiv.org/pdf/2208.00005.pdf
Пример генерации DALL-E 2 по запросу “чашка под цилиндром”. Видно, что модель не понимает отношения “под”: на большинстве картинок чашка не расположена под цилиндром.
https://arxiv.org/pdf/2208.00005.pdf Пример генерации DALL-E 2 по запросу “чашка под цилиндром”. Видно, что модель не понимает отношения “под”: на большинстве картинок чашка не расположена под цилиндром.

Получается, просто увеличивая размер модели и количество данных для ее обучения добиться возникновения понятия структуры у модели не выйдет. Ну или выйдет, но данных все еще недостаточно. Учитывая, что сильно большее количество данных, чем есть у OpenAI (компания, которая создала DALL-E 2), в ближайшее время вряд ли у кого-то выйдет собрать, то нам нужны какие-то другие идеи, как же помочь нейросетям развить понимание структуры. 

Лично я считаю, что просто сделав большую модель и скормив ей много-много данных, AGI получить не выйдет. Также считают и многие опытные исследователи. Вот, например, речь Яна ЛеКуна, одного из пионеров AI, на Парижской конференции Viva Technology. Тут он рассказывает про свое видение General AI и поясняет, почему не верит в  то, что AGI будет получен как развитие больших нейросетей вроде  GPT-3 и DALL-E.

Обратимся поэтому к другим идеям того, как внедрить понимание структуры в нейросети. Другая идея состоит в том, чтобы как-то изменить идею устройства модели. Другими словами, внедрить в модель некий inductive bias, cпроектировать архитектуру модели так, чтобы при обучении она была вынуждена выучивать некое подобие структуры и отношений между объектами.

В случае с text-to-image моделями, к слову, такой подход работает: добавление в архитектуру сети некоторых трюков помогает улучшить восприятие моделью отношений между объектами. К примеру, text-to-image модель Parti (Google, 2022) достаточно хорошо передает взаимодействия объектов:

https://gweb-research-parti.web.app/parti_paper.pdf
Пример генерации картинок моделью Parti. Видно, как точно на картинке переданы отношения между объектами (wombat, chair, martinim keyboard), описанные в тексте.
https://gweb-research-parti.web.app/parti_paper.pdf Пример генерации картинок моделью Parti. Видно, как точно на картинке переданы отношения между объектами (wombat, chair, martinim keyboard), описанные в тексте.

В следующих разделах мы рассмотрим несколько общих идей, как можно внедрить понимание структуры в модель. И первая из таких идей — графовые нейросети.

Идея #2: Графовые нейросети

Графовая нейросеть —это архитектура, которая прямо в своем устройстве содержит понятие структуры и связей между объектами, и успешно применяется для  работы с определенными видами данных. Как понятно из названия, основа графовой нейросети —  граф. 

Граф — это, наверное, самый наглядный способ представления структур. Вершины графа соответствуют сущностям (понятиям, объектам), а ребра между вершинами — отношениям между этими сущностями. 

Некоторые виды данных прямо таки представляют собой графы. Примеры — графы социальных сетей или молекул веществ. 

С такими видами данных очень удобно работать с помощью графовых нейросетей.

https://www.researchgate.net/figure/A-sample-social-network-graph_fig1_262331004
Граф социальной сети. Его вершины — люди (их странички в соцсети). Между двумя людьми есть ребро, если они являются друзьями в социальной сети.
https://www.researchgate.net/figure/A-sample-social-network-graph_fig1_262331004 Граф социальной сети. Его вершины — люди (их странички в соцсети). Между двумя людьми есть ребро, если они являются друзьями в социальной сети.
Граф молекулы серотонина. Вершины — химические элементы. Ребра показывают связи между отдельными элементами в строении молекулы.
Граф молекулы серотонина. Вершины — химические элементы. Ребра показывают связи между отдельными элементами в строении молекулы.

Графовая нейросеть строит граф объекта. Во время обучения GNN выучивает эмбеддинги (векторы-описания) каждой вершины и каждого ребра. То есть, GNN выучивает информацию о каждом элементе (вершине) графа и о природе связей (ребер) между этими элементами. Получается, GNN в процессе обучения “понимает” структуру объекта. 

Подробно о том, как обучаются графовые нейросети, есть прекрасные статьи на  distill.pub, towardsdatascience и arxiv.

Успех графовых нейросетей в работе с графовыми типами данных очевиден: в последнее время большинство успешных моделей для разработки лекарств или других химических соединений были основаны на графовых нейросетях. Пример: MoLeR (модель от Microsoft для разработки новых лекарств). Эта модель — VAE, энкодер и декодер которой — графовые нейросети.

К сожалению, применить графовые сети для работы с другими типами данных (вроде картинок или текста) намного сложнее. Их, при желании, тоже можно представить в виде графов, но это представление не будет идеальным. При обработке картинки мы бы хотели, чтобы в графовой нейросети вершинами были объекты, а ребра между объектами выражали взаимодействие объектов на сцене. Ниже на картинке — пример того, как сцену можно разделить на совокупность объектов и связей между ними:

https://distill.pub/2021/gnn-intro/
https://distill.pub/2021/gnn-intro/

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

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

В заключение про графовые сети порекомендую эту статью от DeepMind. В ней вводится понятие графовой нейросети: как она устроена, для каких задач применима и как ее обучать. Также в ней подробно разбирается то, как различные архитектуры нейросетей (сверточные, полносвязные, рекуррентные) оперируют связями между объектами (т.е. какой в них relational inductive bias), и в чем преимущество графовых нейросетей в этом плане. 

А мы идем дальше. Как я писала выше, многие известные люди глубоко задумываются над тем, как должен выглядеть AGI. Джефф Хинтон и Ян ЛеКун — не исключение. За последние два года оба выпустили большие работы на 40+ страниц со своим видением того, как должен быть устроен General AI. В частности, в обеих работах идея иерархической структуры — одна из центральных: и Хинтон, и ЛеКун верят, что это — одно из важнейших составляющих мощного ИИ.

Кроме общей идеи иерархии и структуры в работах описаны и другие мысли о том, из чего должен состоять general AI. Ян, например, в своей работе упирает на то, что general AI будет модульным, т.е. состоять из многих разных частей, но при этом связанных между собой. По его мнению, тут помогут и reinforcement learning, и обычные нейросети, и символьный подход, и, возможно, что-то еще. В работе Хинтона используются идеи Трансформеров, капсульных нейросетей, neural fields, contrastive representation learning и еще пары других. Давайте в общих чертах пройдемся по идеям этих двух работ.

Идея #3: Мысли Джеффа Хинтона

Джефф Хинтон в феврале 2021 года выпустил большую авторскую статью под названием “How to represent part-whole hierarchies in a neural network”. В  своей работе он концентрируется именно на создании нейросетей для компьютерного зрения (обработки картинок и видео), но, тем не менее, содержит интересные идеи.

Главный лейтмотив работы Хинтона — иерархическая структура. Статья начинается со слов:

“There is strong psychological evidence that people parse visual scenes into part-whole hierarchies […] If we want to make neural networks that understand images in the same way as people do, we need to figure out how neural networks can represent part-whole hierarchies. ”

“Есть  убедительные психологические доказательства того, что люди воспринимают визуальные сцены в виде иерархии объектов на ней […] Если мы хотим создать нейронные сети, которые воспринимают изображения так же, как люди, нам нужно выяснить, как нейронные сети могут представлять иерархии.”

То есть, главная проблема: как заставить нейросети выучивать иерархическую структуру визуальной сцены. 

Хинтон в статье предлагает идею модели, которую он назвал GLOM. GLOM — это не четко прописанная архитектура, которую завтра можно написать на PyTorch и обучить; это, скорее, абстрактная идея устройства модели. Вот на чем она основана:

Как мы обсуждали выше, любое изображение человек представляет в виде иерархической структуры. Возьмем, к примеру, портрет Мона Лизы. Для нас это картина, где есть два высокоуровневых элемента: фон и человек. Человек, в свою очередь, “делится” на более мелкие элементы иерархии: голова, руки, тело. Далее, голова — это нос, рот, нос, волосы, расположенные в определенных местах относительно друг друга. И так далее. Возможно, у вас в голове возникнет немного другая иерархия объектов на этой картинке, но это неважно. Важна сама идея представления сцены как иерархической структуры.

https://ru.wikipedia.org/wiki/Мона_Лиза
https://ru.wikipedia.org/wiki/Мона_Лиза

Как мы могли бы представить изображение в виде иерархической структуры в компьютере? Очевидный ответ — в виде дерева (заметим, что тут мы снова приходим к идее графа. Дерево — это тоже граф). Вот как он будет выглядеть:

Дерево иерархии портрета Мона Лизы
Дерево иерархии портрета Мона Лизы

Подобные деревья иерархии можно построить для любой сцены. Было бы очень круто научить нейросети создавать для изображений такие деревья: это гарантировало бы, что нейросеть “воспринимает” визуальные сцены структурно. 

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

Стоит сказать, что добиться разных видов взаимодействий между нейронами сети в зависимости от входящей картинки, на самом деле, не так сложно. Можно применить механизм гейтов или тот же Attention. Но с остальным — как строить иерархические деревья с разным количеством вершин, которые будут соответствовать разным элементам — неясно.

Хинтон в своей статье предлагает устройство нейросети, которое обрабатывает изображения похожим образом.

Делим изображение на регионы одинакового размера. Например, 8х8. Каждому региону ставим в соответствие пять автоэнкодеров (далее я буду часто вместо слова “автоэнкодер” писать AE, чтобы было короче). Латентный вектор каждого из этих автоэнкодеров будет содержать информацию об этом регионе изображения. Но векторы разных AE будут выражать разную по структуре, уровню абстракции информацию. Поясню, что имеется в виду. Посмотрим на картинку и выделенный красным регион:

https://www.freepik.com/free-vector/teacher-collection-concept_7915184.htm#query=people illustration&position=11&from_view=keyword
https://www.freepik.com/free-vector/teacher-collection-concept_7915184.htm#query=people illustration&position=11&from_view=keyword

Этому региону будут соответствовать пять автоэнкодеров. Латентный вектор первого AE будет содержать информацию, что в этом регионе изображена сережка. Латентный вектор второго AE будет содержать информацию, что в регионе изображено ухо. Третьего AE — что в регионе изображено лицо человека. Четвертого — что тут изображен человек, пятого — что тут изображен человек на розовом фоне. 

То есть, каждый следующий автоэнкодер воспринимает регион изображения как часть все большей сущности. Первый AE концентрируется на “локальной” сути региона (на нем изображена сережка), следующий AE воспринимает регион как часть большей сущности (уха), третий — еще большей (лицо) и т.д.

Тут может возникнуть воспрос: как второй и последующий атоэнкодеры понимают, что регион — это часть уха/лица/человека, если они не имеют доступ к другим регионам? Ответ такой: в процессе обработки картинки каждый автоэнкодер обменивается информацией с другими AE. А именно, каждый автоэнкодер получает информацию от:

  • AE того же региона уровня ниже;

  • AE того же региона уровня выше;

  • AE соседних регионов того же уровня.

Таким образом, после нескольких итераций обмена информацией между автоэнкодерами латентные векторы всех AE стабилизируются и будут содержать нужную информацию.  Разумеется, чтобы этого добиться, нужно грамотно построить процесс обучения модели GLOM. Как это сделать, читайте в оригинальной статье Хинтона.

А мы заметим вот что: при таком подходе латентные векторы многих соседних AE уровней 2 и выше будут содержать одинаковую информацию. Действительно, посмотрим на четыре соседних региона, выделенных красным:

https://www.freepik.com/free-vector/teacher-collection-concept_7915184.htm#query=people illustration&position=11&from_view=keyword
https://www.freepik.com/free-vector/teacher-collection-concept_7915184.htm#query=people illustration&position=11&from_view=keyword

Все эти регионы — части лица человека. Поэтому векторы AE третьего уровня (и всех уровней выше) должны будут содержать одинаковую информацию — что в этих регионах изображено лицо. И чем выше уровень, тем больше соседних AE будут иметь похожие латентные векторы. 

Таким образом, AE каждого уровня буду распадаться на “островки”, внутри каждого из которых латентные векторы будут похожи. Проиллюстрировать это можно так (рисунок взят из оригинальной статьи):

https://www.cs.toronto.edu/~hinton/absps/glomfinal.pdf
https://www.cs.toronto.edu/~hinton/absps/glomfinal.pdf

Здесь каждый столбик — пять AE, соответствующих одному региону картинки. Нижний квадрат в столбце — AE первого уровня, второй снизу квадрат — AE второго уровня и т.д. Видно, что чем выше уровень, тем больше соседних AE имеют одинаково направленные векторы. У AE верхнего уровня стояит знаки вопроса, потому что векторы этих AE еще не стабилизировались в процессе обработки изображения.

Мы видим, что при таким подходе автоэнкодеры образуют явную иерархическую структуру, которая очень напоминает деревья иерархии, которые мы обсуждали выше. Действительно, каждый “островок” AE — это одна вершина дерева. Вершины могут выражать разную по семантике информацию в зависимости от того, что именно изображено на картинке. И из разных картинок могут получиться разные по устройству деревья иерархии: AE каждого уровня будут по-разному собираться в “островки”. 

Вот такая изящная идея пришла в голову Хинтону. Конечно, к ней есть много вопросов. Самые очевидные, на мой взгляд, эти:

  • Как выбрать количество AE для каждого региона (т.е. как понять, сколько будет уровней абстракции). Почему именно 5?

  • Как выбрать деление картинки на регионы? Какого размера они должны быть?

Сам Хинтон рассуждает об этих и других вопросах. А еще он утверждает, что такое устройство модели имеет связь с биологией.  Подробнее обо всем этом — в его статье.

Ну а мы пойдем дальше, и обсудим идеи еще одного пионера AI: Яна ЛеКуна.

Идея #4: Мыcли Яна ЛеКуна

Если Джефф Хинтон концентрировался именно на AI для обработки картинок, то Ян ЛеКун мыслит шире: его работа посвящена устройству AGI (Artificial General Intelligence). Опять же, эта работа — не полное техническое описание модели, а набор идей и рассуждений. 

В начале статьи ЛеКун приводит три главных, на его взгляд, вызова для современного AI:

  1. Как машины могут научиться представлять мир, делать предсказания и действовать, основываясь на наблюдениях? (Тут имеется в виду, что человек учится, в основном взаимодействуя с миром. Дать AI возможность учиться на основе реальных взаимодействий — слишком сложно и дорого. Хочется обучить AI, скармливая ему только наблюдения)

  2. Как научить машину рассуждать и планировать способами, основанными на вычислениях градиентов? (Тут имеется в виду, что современный AI в большинстве своем основан на нейросетях, которые обучаются с помощью градиентного спуска. Это накладывает на нейросети существенное ограничение: все функции должны быть дифференцируемы)

  3. Как машины могут научиться воспринимать мир и строить планы действий иерархически, на нескольких уровнях абстракции и в разных временных масштабах?

Получается, один из трех наибольших вызовов AI, по мнению ЛеКуна — это то, как заставить AI думать иерархически, структурно. 

В статье ЛеКун предлагает идеи для решения всех этих вопросов. Мы здесь рассмотрим только ту идею, которая связана с иерархией. Это модуль JEPA (Joint Embedding Predictive Architecture). Ян называет этот модуль “центральной частью” (centerpiece) свой работы.

JEPA — это модуль для создания ассоциаций и предсказаний. В самом начале статьи мы говорили о том, как ассоциации помогают нам мыслить структурно и воспринимать мир. Еще одно свойство человеческого восприятия мира — это то, что мозг человека каждую секунду строит предсказания того, что произойдет в ближайшем будущем (хоть мы этого и не замечаем). Модуль JEPA призван внедрить в AI эти два умения.

Устройство JEPA показано на картинке ниже:

https://openreview.net/pdf?id=BZ5a1r-kVsf
https://openreview.net/pdf?id=BZ5a1r-kVsf

На вход модуль принимает два объекта — х и y. Они могут быть разных модальностей: например, картинка и звук. Далее х и y прогоняются каждый через свой енкодер. На выходе получаются два векторных представления х и y — s_x и s_y.  Потом s_x подается на вход модулю Pred, задача которого — на выходе получить s_y с волной, который будет близок к s_y (“близок” по некоторой метрике). Грубо говоря, задача модуля Pred — научиться по s_x  предсказывать s_y. Или, по-другому, ассоциировать s_x с s_y.

Теперь смотрите: пусть мы во время обучения модели подали на вход в качестве х и y два объекта, например, картинку и звук. Тогда  модуль Pred должен будет по вектору картинки s_x научиться получать вектор, близкий к вектору звука s_y. То есть, Pred должен будет выучить ассоциацию между этой картинкой и этим звуком. 

Заметим, что важно, что мы подаем на вход Pred не сам х, а s_x. Было бы странно пытаться предсказывать y по х, т.е. получать звук по входящей картинке. Вместо этого мы с помощью энкодеров сначала выделяем из х и y суть, информацию, и уже эту информацию ассоциируем между собой с помощью модуля Pred. Во время обучения модели энкодеры научатся выделять из х и y ту информацию, которая лучше всего позволит ассоциировать их между собой.

А теперь представим, что мы подаем на вход JEPA не два объекта, а одну и ту же сцену в разные моменты времени. х — сцена в момент времени t, y — сцена в момент времени t+1. Тогда модуль Pred должен будет научиться по сцене х предсказывать, что произойдет дальше (т.е. y). Таким образом, JEPA может использоваться как модуль для получения предсказаний о будущем (ну или планирования будущего).

Конечно, чтобы JEPA работал именно так, как описано выше, нужно грамотно выстроить процесс обучения и подобрать лосс-функции. О том, как устроено обучение JEPA, читайте в разделе 4.5 статьи ЛеКуна.

Теперь: иерархия. Человеческие ассоциации между объектами могут быть совершенно разной природы, разного уровня абстракции. Возьмем, например, банан и грушу. Ассоциаций между этими объектами может быть много разных: оба объекта — фрукты, оба желтые и сладкие. Оба продаются в одном отделе супермаркета, растут на деревьях и т.д. 

Точно так же и наши предсказания будущего могут быть разного уровня абстракции. Пусть, к примеру, мы едем в машине из города А в город Б. В каждый момент времени мы можем примерно понять, что произойдет в следующую секунду: где мы окажемся, повернем направо/налево и т.п. Также мы можем сделать более дальнее во времени предсказание: мы знаем, что, скорее всего, окажемся в городе Б. 

Чтобы наделить модель возможностью создавать ассоциации и предсказания разной семантики и уровня, ЛеКун предлагает объединить несколько модулей JEPA в иерархию. Он назвал это Hierarchical JEPA (H-JEPA). Схематично это можно представить так:

https://openreview.net/pdf?id=BZ5a1r-kVsf
https://openreview.net/pdf?id=BZ5a1r-kVsf

Общая идея здесь в том, что несколько слоев энкодеров (Enc1, Enc2, …) выделяют из входных объектов информацию разного уровня. Enc1 выделяет low-level информацию, содержащую больше назкоуровневых деталей. Enc2 использует выход Enc1 и фильтрует его далее: выделяет из входа более абстрактную, общую информацию, содержащую меньше деталей. Далее можно навесить еще энкодеры: Enc3 и т.д. 

На основе выходов Enc1, Enc2, … модули Pred1, Pred2, … строят ассоциации/предсказания разного уровня. К примеру, Pred2 на основе выхода Enc2 строит более далекое во времени предсказание, чем предсказание Pred1, так как для более близких во времени предсказаний требуется больше деталей.  Точно так же ассоциация, построенная с помощью Pred2, будет  более абстрактной, чем с помощью Pred1.

Подробнее о H-JEPA читайте в статье (раздел 4.6). Также в разделе 4.7 приводятся идеи, как адаптировать H-JEPA и всю идею планирования на реальный мир, где присутствует очень много uncertanty и никакие предсказания не могут быть стопроцентно верными. 

Вот такие мысли крутятся в голове (а теперь и в статье) Яна ЛеКуна. На мой взгляд, довольно лаконичная идея, сочетающая в себе и ассоциативное мышление, и иерархию, и планирование. 

Конечно, статья ЛеКуна намного больше, чем просто модуль JEPA: Ян рассуждает об AGI в целом: о том, что AI должен имитировать “здравый смысл человека”, о том, из каких частей должна состоять архитектура и каковы в этом роли reinforcement learning, обычных нейросетей, и многое другое. Поэтому рекомендую прочитать саму статью. Но если вам все же лень, то в MIT Technology Review выходила небольшая статья о работе Яна. В ней — краткая выжимка идей ЛеКуна, немного истории о том, как эти идеи развивались, и реакция других ученых на публикацию работы. 

Сложность внедрения структуры в модели

В заключение темы структуры в AI добавлю такую мысль: на мой взгляд, основная сложность внедрения структурного восприятия в модели машинного обучения — это то, как сделать структуру гибкой.

Люди с рождения начинают выстраивать структурное восприятие мира, но структура любой сущности в нашей голове постоянно меняется. Когда-то люди считали, что атом — это неделимая сущность, то есть, это единичный структурный элемент. Теперь же мы знаем, что атомы тоже состоят из частей: протонов, электронов, и т.д. То есть, наше структурное представление о веществе изменилось: в нем появился еще один уровень вложенности. И таких новых уровней может появляться бесконечное число: элементы могут делиться на новые структурные части.

 Или, еще интереснее: мы можем делить один и тот же элемент на структурные части по-разному. Например, Москва — это, с одной стороны, набор административных районов (северный, северо-западный и т.д.). С другой, я в своей голове делю Москву на примерно такие части: “внутри Садового кольца”, “Север Москвы”, “Юг Москвы”, “Москва-Сити”, “Новая Москва” и “Юго-восток”. Это деление связано с моим опытом жизни в этом городе и его восприятием. 

И вот то, как дать возможность нейросетям оперировать структурой так же гибко — это, на мой взгляд, основная сложность. Выше мы рассматривали несколько идей, как наделить модели структурным восприятием, но, кажется, ни одна ни из них не обладает достаточной гибкостью. В графовой нейросети количество вершин четко задано, больше появиться не может. В идее Хинтона четко заданы количество уровней автоэнкодеров и деление картинки на области. В модели ЛеКуна может быть ограниченное количество модулей JEPA, а один модуль отвечает за ассоциации определенного уровня. Как развить эти идеи, чтобы структура стала гибче, на мой взгляд, открытый вопрос. 

Заключение

В этой статье мы рассмотрели одно из главных отличий современного AI от человека — структурное мышление. Мы поняли, как именно структура помогает человеку воспринимать и взаимодействовать с миром и рассмотрели основные проблемы AI, которые возникают от отсутствия понимания им структуры. Ну и разобрали несколько идей, как эту структуру в нейросеть внедрить. 

Разумеется, существует еще много идей того, как заставить AI воспринимать объекты более структурно. В статье я описала те, что привлекли мое внимание, и, на мой взгляд, являются наиболее гибкими и “общими”, т.е. могут быть применены к широкому классу задач, и поэтому обладают хорошим потенциалом. В разделе “Литература” ниже вы найдете еще несколько ссылок на работы, в которых предлагаются механизмы для внедрения структурного знания в модели машинного обучения. 

Также стоит сказать такие две вещи: 

  • структурное восприятие мира — далеко не единственная преграда, отделяющая нас от создания AGI. Не менее интересная тема, к примеру — проблема causality vs correlation, т.е. Как научить AI оперировать причинно-следственными связями. Здесь проблемы начинаются прямо с порога: мы не можем даже дать нормального определения тому, что такое causality. Но это тема уже совершенно иной статьи =)

  • описанные выше идеи — не единственные на тему того, как создать AGI. Есть, к примеру, не менее интересный подход embodied intelligence. Но тема этой статьи — не AGI, а структурное мышление, поэтому другие идеи AGI мы не рассматривали. 

На этом все, я уже и так слишком много слов написала. Спасибо за прочтение! Надеюсь, было интересно.

Благодарности

Выражаю огромную благодарность Александру Петюшко за вычитку статьи, ценные замечания и правки. 

Литература

Ссылки на научные работы по структурному мышлению у людей, которые подкрепляют идеи из первой части статьи:

Ссылки на некоторые работы, в которых предлагаются механизмы для внедрения структурного знания в модели машинного обучения:

Комментарии (48)


  1. frideviloop
    14.09.2022 17:14
    -1

    МО суть которого в создании ИИ.


  1. AlexunKo
    14.09.2022 17:30
    +1

    Существуют убедительные данные, что мы — люди — воспринимаем мир с помощью структуры.

    Думаю, человек может воспринимать мир как угодно.

    Это значит, что мы делим все сложные абстрактные понятия на части, и воспринимаем все объекты и понятия как сложные составные сущности, состоящие из простых элементов (building blocks), которые взаимодействуют между собой (имеют relations).

    Из ложной посылки может следовать что угодно.


    1. Atmyre Автор
      14.09.2022 18:11
      +6

      Да, вы правы в том, что неизвестно досконально, как именно человек воспринимает мир. Я и не претендую на истину, я лишь со ссылкой на научные исследования (в разделе литература) привожу, что одна из (и очень вероятная) гипотеза состоит в том, что человек оперирует понятием структуры. В статьях в разделе "литература" описаны методы исследований, которым ученые это проверяли.

      Короче, я описываю одну из гипотез человеческого восприятия и показываю, как это может делать наше взаимодействие с миром эффективнее


      1. AlexunKo
        14.09.2022 18:49

        Дело не в доскональности или истинности. Просто не нужно делать подмену реальности ее описанием (моделью), это грубая ошибка. Особенно в таких сферах как сознание, восприятие, мышление.


        1. Atmyre Автор
          14.09.2022 21:48
          +1

          Я не делаю подмену реальности, я ж не говорю, что я полностью описываю то, как работает человеческое мышление) Это одно из его свойств. Точно так же, как в психологии есть много различных моделей поведения/мышления человека — никакая из них не является точной, но все они описывают некие общие свойства разума и помогают в работе над психикой. Так и тут — эта модель помогает что-то понять о мышлении и, возможно, построить лучший ИИ


          1. AlexunKo
            14.09.2022 22:04

            Полнота тут не при чем. Но вот искажение - хуже неполноты. Вместо "мышление работает во так" более корректно и скромно сказать что "мышление можно [рассмотреть, cмоделировать, описать], например, так-то и так-то". Ощутите, что называется, разницу в претенциозности и трезвости рассуждений.


            1. Atmyre Автор
              15.09.2022 01:05
              +5

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


              1. AlexunKo
                15.09.2022 10:44

                Я не моделирую мышление целиком. Я говорю, что одно из свойств нашего мышления в том, что оно использует структурное восприятие.

                Здесь снова ошибка. "Оно" ничего не использует и уж тем более что-то структурное. Это Вы моделируете "его" таким образом, причем это лишь один из вариантов. То есть, Вы проецируете то, как вы "его" понимаете на "него" же (приписываете то что "оно" работает именно так как вы это понимаете). Ну, а еще одна ошибка считать смысл формулировкой и аргументы придирками. Но это уже личное, оставим этот пункт в стороне.


                1. Atmyre Автор
                  15.09.2022 12:22

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


                  1. AlexunKo
                    15.09.2022 13:04

                    Нет, я все же ничего не моделирую.

                    А кто сводил восприятие к структурам? Если это были не Вы то извините, значит кто-то еще пишет с вашего аккаунта.

                    Моделировать и описывать одно из свойств — разные вещи.

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


                    1. Atmyre Автор
                      15.09.2022 13:45

                      Я не свожу восприятие к структурам, я указываю, что понимание структуры — одно из свойств восприятия. Пишу это уже раз третий, наверное.

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


                      1. AlexunKo
                        15.09.2022 13:53
                        -1

                        Я не свожу восприятие к структурам, я указываю, что понимание структуры — одно из свойств восприятия. Пишу это уже раз третий, наверное.

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


                      1. Atmyre Автор
                        15.09.2022 14:01

                        Мне становится довольно неприятно то, как вы выражаетесь. "Абсурд, в общем", "чудеса таки есть". Если честно, я вижу здесь нотку издевки.

                        Да, возможно, я ошибаюсь. Это нормально. И я дискутирую с вами в комментариях, чтобы разобраться в этом и, возможно, как-то поправить и расширить свое представление.

                        Но я все еще не вижу подмену и проекцию, да. Напротив, я вижу, что вы путаете следствие и признак. Цилиндричность не является признаком воды в стакане, как и структура не является признаком мышления. Но цилиндричность является свойством воды в стакане, как структура является свойством мышления.


                      1. AlexunKo
                        15.09.2022 14:09

                        Но цилиндричность является свойством воды в стакане, как структура является свойством мышления.

                        Мы живем в разных мирах. В моем свойством воды (жидкой) является принятие любой формы. А уж свойство стакана - цилиндричность. Зачем мне именно такое описание? А чтобы подойти, вылить воду и мир остался таким же как я его понимал и до этого. А мышление, конечно же, может быть вырождено (сведено) к структурному, логическому. Но логичность будет характеризовать не мышление, а акт сведения. Если Вы понимаете о чем я.


                      1. Atmyre Автор
                        15.09.2022 14:14
                        +2

                        А я вам и говорю, что я не утверждаю, что "мышление таково", вот и все.

                        Я живу в математическом мире. В нем четко определены понятия свойства и признака объектов. И цилиндричность стакана с водой — вполне себе свойство. Если определять свойство как "свойство это то что мне хочется называть свойством", то ни о какой строгости и правильности формулировок речи быть не может.


                      1. AlexunKo
                        15.09.2022 14:22

                        Я живу в математическом мире. В нем четко определены понятия свойства и признака объектов. И цилиндричность стакана с водой — вполне себе свойство.

                        Не похоже что Ваш мир математический, он скорее спутанный. Осознавание нетождественности мира его картине, модели, представления (в Вашем уме) здесь бы помогло.


                      1. Atmyre Автор
                        15.09.2022 14:25

                        Я прекрасно это осознаю, о чем я писала уже в половине своих комментариев


                      1. Atmyre Автор
                        15.09.2022 14:03

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


                      1. AlexunKo
                        15.09.2022 14:29

                        Убедительные? Подкрепляют? Простите, это не аргументация, а тенденциозность.


        1. vkomen
          14.09.2022 23:46
          +1

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


          1. AlexunKo
            15.09.2022 00:22

            В голове не модель, а потенциал. Поэтому одно к другому и несводимо.


            1. AcckiyGerman
              16.09.2022 11:07
              +2

              Объясните пожалуйста, что за потенциал вы имеете в виду, и что к чему несводимо?


              1. AlexunKo
                16.09.2022 12:32
                -3

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


  1. StriganovSergey
    14.09.2022 19:02
    +1

    Не просто иерархия обьектов важна, но очень важно понимание свойств этих обьектов и способов их взаимодействия между собой.
    Нужно уметь видеть не только стол и чашку, но и «чашность» по Платону, и «стольность».
    Та самая «чашность» может быть обнаружена даже у человеческой ладони, особым образом сложенной, чтобы зачерпнуть воду из источника.


    1. Atmyre Автор
      14.09.2022 21:44

      это тоже верно. Структура и иерархия — не единственные свойства человеческого мышления)


  1. Sarjin
    14.09.2022 21:25
    +2

    "Например, нейросеть, которая отлично распознает лица европейцев, будет плохо работать на лицах людей из Африки."

    чтож тут мы с нашим творением на равных

    часто возникают вопрос, что если учить не на 2д изображениях, а на 3д моделях и 2д изображениях?


    1. Atmyre Автор
      14.09.2022 21:46

      Честно — не знаю, что будет, если учить на 3D моделях. Скорее всего, это внесет больше дополнительной информации в модель и она сможет работать лучше


      1. StriganovSergey
        15.09.2022 11:11

        Я бы рядом с сервером нейросети поставил еще сервер, реализующий некий виртуальный мир, в котором ИИ мог бы создавать все предметы, которые распознал, и изучать их.
        Пусть он сам строит 3D модели обектов, которые увидел на фотках, и выдвигает гипотезы о их предназначении и свойствах.
        Вертит под разными углами, меняет освещение, перекрывает другими предметами и изучает что при этом происходит.
        Задает вопросы людям, или ищет самостоятельно информацию.
        А если в этот виртуальный мир еще и запустить цифровые копии реальных людей в реальном времени, и предложить этим людям взаимодействовать с предметами, обучая таким образом ИИ тому, как эти предметы используются, то получим… барабанная дробь… «META».
        Да, наверняка, это не просто площадка для организации взаимодействия людей :)))


  1. victor79
    15.09.2022 10:40

    Я потихоньку занимаюсь разработкой алгоритмов поиска закономерностей в текстах без нейронок. Что я могу сказать: там есть структуры. Для изображений там должны быть алгоритмы отчасти похожи.

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

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


  1. emptycat
    15.09.2022 11:04

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

    Этим я хочу сказать, что не вижу пока оснований проводить параллели в функционировании нейросетей с человеческим мозгом. Сам рассказ о нейросетях довольно интересен.

    структурное мышление позволяет нам создавать новое 

    Это как? Кто то уже опроверг теорему Геделя о неполноте? Не сдержался от легкой иронии...


    1. Atmyre Автор
      15.09.2022 12:18

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

      Про "создавать новое": имеется в виду новое для каждого конкретного человека.


  1. Sergey_Kovalenko
    15.09.2022 12:03
    +1

    Спасибо автору за статью, было интересно почитать.
    У меня к вам вот такой вопрос. Есть ли у вас идеи, как построить машину "основанную на градиентном поиске", которая бы могла отличить правильное скобочное выражение от неправильного (то есть из примеров научилась бы отличать одни от других) и машину, способную ответить, являются ли две разделенные пробелом последовательности цифр записями двух последовательных натуральных чисел (n и n+1). Оба примера - это задачи контестносвободных грамматик - простейших языков, в которых глубина определения понятий может быть сколь угодно большой.


    1. Alexey2005
      15.09.2022 18:06

      Да по идее с такими несложными задачами должны даже примитивные LSTM'ки справляться.
      Думаю, большинство из тех, кто изучал нейросети, натыкались на туториал с нейросетевым символьным калькулятором на LSTM: в процессе обучения сети «скармливается» большой обучающий набор символьных последовательностей вида «99+12/5» и правильных ответов к ним, и сетка быстро обучается счёту, ничего заранее не зная о правилах математики.
      И это очень маленькая сеточка весом менее 10Мб, которую можно даже на CPU обучать.
      Проблема лишь в том, что точность её ответов не равна 100%. Она может быть очень большой, более 97%, но никогда не станет абсолютной, и в вычислениях всё равно будут проскакивать ошибки. Это фундаментальная проблема всех нейросетей (в том числе живых межушных).


      1. Sergey_Kovalenko
        15.09.2022 18:34

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


  1. sturex
    15.09.2022 12:19

    Вы говорите "основная сложность внедрения структурного восприятия в модели машинного обучения — это то, как сделать структуру гибкой".

    Ответ, как мне кажется, уже содержится в вопросе - нужно использовать структурную адаптацию, а не параметрическую, как все (или не все?) делают.

    Параметрическая адаптация означает, что подстраиваются числовые параметры модели, минимизируются различные ошибки и пр.

    Структурная адаптация - означает, что модель не работает с символами (числами), а работает по принципу адаптивного пространственно-временного фильтра для входящих потоков данных, просто перенаправляя потоки в правильном направлении.

    Как сделать подобную адаптацию - до конца не знаю)


    1. Atmyre Автор
      15.09.2022 14:18

      Так в этом-то и затык: как сделать структурную адаптацию?)


      1. sturex
        15.09.2022 14:47

        Понятие структурной адаптации далеко не новое. Как сейчас её делают, анализировали?)


  1. MultiView
    15.09.2022 18:16

    Мы в Государственном архиве РФ создаем виртуального сотрудника иподключаем в него различные модели мышления, ставим приоритеты по их последовательному применению для понимания запросов граждан: дедуктивное - экспертные системы самый первый приоритет анализа - дает достоверную картину; второй приоритет - интуитивное мышление на основе ассоциативного анализа по спец словарям; индуктивное мышление третьего приоритета на основе нейросетей распознает типовые сущности - эвристики и дает правдоподобные оценки в случае, если 1 и 2 модель мышления не сработала и наконец 4 приоритет это абдуктивный анализ на основе сравнения всех предыдущих методов пытается построить новую картину происходящего.


  1. maslyaev
    16.09.2022 10:26
    -2

    Ну здрасте, приехали. Ещё совсем недавно, каких-то 20 лет назад, отличием человеческого ума от ИИ было как раз то, что мы воспринимаем вещи как единое целое, а для ИИ (был тогда представлен экспертными системами, базами знаний, системами логического вывода) всё нужно разложить на структуры.
    По ходу дела, просто память у ребят короткая.


    1. MultiView
      16.09.2022 11:38

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


    1. Atmyre Автор
      16.09.2022 16:29

      А 150 лет назад люди не верили, что мытье рук хирургами помогает избежать инфекций при операциях. Мир и наука так и развиваются: представления сменяют друг друга, становятся сложнее. Говорить "мы воспринимаем как целое" — это очень грубое представление того, как работает мышление)


      1. Atmyre Автор
        16.09.2022 16:30

        Так никто ж не заставляет эти организации использовать нейросети) Для хранения и обработки важных данных используются другие алгоритмы


  1. kapas19
    16.09.2022 14:36

    Восприятие (будем говорить далее конкретно – зрительное восприятие) достаточно сложный многоэтапный и иерархически организованный процесс формирования текущей предметной картины среды (текущей модели обстановки), который в том числе включает в себя распознавание (опознание). Процесс восприятия реализуется и организуется в единое целое активностью некоторой совокупности функционально-специфических нейронных ансамблей ЦНС для достижения главного полезного для организма результата – построения текущей предметной картины среды (обстановки). И не стоит думать, что это справедливо только для человека.  Также не стоит надеяться та то, что, и распознавание (опознание), как составная часть зрительного восприятия, происходит «одномоментно», одним проходом через сложный нейросетевой ансамбль, на который (на однопроходную процедуру) большие надежды, как я полагаю, возлагают нейросетевики, в том числе упомянутые в статье (что само по себе удивительно – это специалисты высокой квалификации – и я уверен что они знакомы с соответствующими исследованиями  психологов и нейрофизиологов). Распознавание также достаточно сложный процесс: вспомним, например, про важнейшую роль саккад – задействование глазодвигательной системы – в этом процессе, или зрительные иллюзии (применительно ко всему процессу зрительного восприятия). Но и механически вырывать его из  общего процесса восприятия и пытаться найти некую «волшебную» архитектуру нейросети, которая гарантировано обеспечила 100% распознавание при выполнении перечисленных в статье дополнительных требований к ней, мне кажется неразумно, и даже невозможно.

    Для подтверждения вышесказанного не буду вдаваться в детали надежно установленных фактов по зрительному восприятию которые прямо или косвенно приводят к такому выводу – при желании лучше ознакомиться с работами А.Л. Ярбуса, Н.В. Позина, В.П. Зинченко, Б.М. Величковского, Н.Ю. Веригилес, В.А. Барабанщикова, Е.Н. Соколова, А.Н. Радченко, а также их соавторов и многочисленных коллег - других крупных психологов и (нейро)физиологов (ссылки на зарубежных авторов можно найти в публикациях вышеуказанных исследователей). Работы этих исследователей как раз и приводят к пониманию процессов распознавания и зрительного восприятия как сложного (комплексного) психофизиологического процесса. Игнорировать их результаты при попытках моделирования искусственного разума (ИР) нерационально. Это надежная опора для понимания в каком направлении при этом нужно двигаться.

    В дополнение к (нейро)психо(физио)логическим результатам которые могут, как мне кажется, помочь в продвижении к заветной цели – построению ИР (с точки зрения применения структурных методов для распознавания образов), то можно сослаться на достаточно старую работу Фу К.С. Структурные методы в распознавании образов (1974, 1977).


    1. Atmyre Автор
      16.09.2022 16:18

      Спасибо за комментарий) То, что вы пишете, безусловно, верно.

      Но хочу дать два комментария:

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

      Это не так. Например, в той же работе Хинтона нейросеть обрабатывает каждое изображение не одним проходом, а настраивая в течение нескольких итераций латентные представления автоэнкодеров. В работе ЛеКуна одно и то же изображение может подаваться на вход разным обрабатывающим блокам, а также может обрабатываться одна и та же сцена в разные моменты времени. Можно еще почитать другие работы Хинтона (к примеру, про капсюльные нейросети), в которых он как раз идет глубже в механизм распознавания у людей и пытается построить архитектуру, повторяющую некоторые свойства человеческого восприятия.

      В целом, опять же: я вообще не утверждаю, что понимаю, как полностью работает человеческое восприятие и что хочу построить AGI по образу и подобию. Я лишь выделяю в восприятии одно свойство, которое, на мой взгляд (и взгляд многих ученых), могло бы помочь AGI лучше обрабатывать и картинки, и другие виды информации. ИИ сейчас очень далек от того, как работает человек, об этом никто не спорит. Более того, AGI не обязан развиться именно по образу и подобию человека, т.е. в целом общество ученых AGI не стремится повторить механизм работы человека в AGI. Но с какого-то уровня абстракции смотреть, как мыслит человек, пытаться понять, что ему помогает и внедрять эти механизмы в ИИ — хорошая практика. Даже если этот уровень абстракции — не знания о достижениях нейробиологии, а просто мысли обычного человека о том, как работает мышление. Так, например, появились сверточные сети, механизм attention, другие удачные архитектуры. Да, ученые-нейросетевики не досконально понимают устройство мышления и восприятия человека, но пока что даже то понимание, которое есть у них, позволяет находить новые точки для улучшения ИИ. В будущем, скорее всего, нам действительно нужно будет идти вглубь, и изучать то, что вы написали.


  1. parallelcourse
    16.09.2022 14:38

    You make a really great article! Applause!


    1. Atmyre Автор
      16.09.2022 21:27

      Thank you! :)


  1. ksenkalys
    16.09.2022 14:39

    Спасибо за статью, понятно и интересно даже не специалисту)


    1. Atmyre Автор
      16.09.2022 21:27

      Спасибо :)