Изследване на хибриден подход за визуално отговаряне на въпроси чрез по-задълбочена интеграция на OpenCog и Vision Subsystem.

Въведение

Нека си представим сценарий, в който на София, социалния хуманоиден робот, някой задава прост въпрос:

София, вали ли?

Ако София каже „да“ на въпроса, знае ли защое дала този отговор? С други думи, как София отговаря на въпроса?

Способността да се отговаря на въпроси относно визуални сцени, с други думи, способността да се извършва Визуален отговор на въпроси (VQA) е нещо, което идва естествено за хората. Въпреки това, настоящите най-съвременни модели на VQA оставят много да се желае.

Една от системите за управление, използвани за „опериране“ на София, е „OpenCog“, „когнитивна архитектура“. OpenCog оперира върху база от знания, представена като хиперграф, наречена Atomspace. За да може София да отговаря точно на въпроси относно визуални сцени, съдържанието на тези сцени трябва да бъде направено достъпно за OpenCog.

В по-ранна „изследователска статия“ обсъдихме, че най-лесният начин да постигнем това е да обработваме изображения с дълбока невронна мрежа (DNN) и да вмъкваме описанията на изображенията в Atomspace. Един пример за такъв DNN би бил YOLO, който описва изображение с набор от етикетирани ограничаващи кутии.

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

Например въпросите „детето щастливо ли е?“ и „момчето скача ли?“ могат да се отнасят за едно и също ограничаващо поле. Това ясно показва, че един етикет на ограничителна кутия не е достатъчен. Освен това би било трудно да се присвоят всички възможни съответни етикети от системата за обработка на изображения предварително. Недостатъчността на такъв прост подход става още по-очевидна, когато въпросите изискват анализ на визуални характеристики, а не етикети. Например може да бъде попитано „хората гледат ли в една и съща посока?“ или може би „сходни ли са столовете?

Очевидно е, че за да се отговори на подобни въпроси е необходима по-дълбока интеграция на когнитивната архитектура и подсистемата за зрение. Следователно въпросът е как да постигнем такова по-дълбоко ниво на интеграция?

Основани предикати

OpenCog поддържа заземени предикати. Най-просто казано, това са предикати с истинностни стойности, които се изчисляват от някои външни процедури, по-специално от DNN.

В предишната ни „изследователска статия“ хвърлихме светлина върху това как „Pattern Matcher“ на OpenCog може да се използва за изпълнение на заявки като find a video frame containing a man in a car. Ако съответните етикети са присвоени правилно на ограничителните полета, извличането ще бъде успешно.

Pattern Matcher може да се използва по същия начин, дори ако не присвоим етикети на ограничаващите полета и не ги свържем към съответните им концептуални възли чрез наследствени връзки. Това е така, защотоPattern Matcher може вместо това да използва обоснованите предикати. При такъв подход, вместо да проверява наличието на съответната наследствена връзка, Pattern Matcher просто ще оцени съответните основани предикати.

За да разберем как ще работи този подход, нека първо разгледаме прост въпрос с „да“ или „не“:

„Зебрите дебели ли са?

За да анализира въпроса, OpenCog използва анализатора Link Grammar и инструмента за извличане на отношения на зависимост RelEx. Парсерът за граматика на връзките ще произведе нещо подобно:

(S are.v (NP the zebras.n) (ADJP fat.a) ?)

или в графичен вид:

Формата RelEx просто ще бъде _predadj(zebra, fat).

Това може допълнително да се преобразува в заявката в Atomese , който е вътрешен език на OpenCog, за представяне на знания и мисли. Тук използваме синтаксис на схема:

(SatisfactionLink
  (TypedVariable (VariableNode “$X”) (Type “ConceptNode”))
  (AndLink
    (InheritanceLink (VariableNode “$X”) 
                     (ConceptNode “BoundingBox”))
    (EvaluationLink
      (GroundedPredicateNode “py:recognize”)
      (ListLink (VariableNode “$X”) (ConceptNode “zebra”)))
    (EvaluationLink
      (GroundedPredicateNode “py:recognize”)
      (ListLink (VariableNode “$X”) (ConceptNode “fat”)))))

В горния синтаксис имаме един основан предикат recognize, внедрен в Python. Освен това бихме могли да използваме директно основани предикати като zebra и fat, но предаването на концептуални възли (които могат да бъдат свързани с други части от знания) към един предикат е по-гъвкаво.

И накрая, Pattern Matcher автоматично ще намери такова заземяване за променлива $X, която е ограничаваща кутия. За тази променлива оценката на основания предикат recognize (имплементиран като DNN) ще даде висока истинска стойност както за zebra, така и за fat.

Можем също така да конвертираме други въпроси в заявки за Pattern Matcher. Например въпросът „Какъв цвят е самолетът?“ може автоматично да се преобразува във формата Relex:

_det(color, _$qVar);_obj(be, plane);_subj(be, color)

След което може да бъде конструирана следната заявка за Pattern Matcher:

(BindLink
  (VariableList
    (TypedVariable (Variable”$B”) (Type “ConceptNode”))
    (TypedVariable (Variable “$X”) (Type “ConceptNode”)))
  (AndLink
    (InheritanceLink (VariableNode “$B”) 
                     (ConceptNode “BoundingBox”))
    (InheritanceLink (VariableNode “$X”) (ConceptNode “color”))
    (EvaluationLink
      (GroundedPredicateNode “py:recognize”)
      (ListLink (VariableNode “$B”) (ConceptNode “plane”)))
    (EvaluationLink
      (GroundedPredicateNode “py:recognize”)
      (ListLink (VariableNode “$B”) (VariableNode “$X”))))
  (ListLink (VariableNode “$B”) (VariableNode “$X”)))

Тук се нуждаем от две променливи, които да бъдат заземени. Първата променлива е ограничителната кутия, а другата е отговорът на въпроса, който се предава на recognize. Pattern Matcher ще вземе предвид само онези заземявания за тази променлива, които съответстват на възли на концепцията, наследени от концепцията color. Въпреки че знанията за такива онтологични отношения трябва да бъдат представени в Atomspace, те могат също да бъдат директно извлечени от набора за обучение.

Сравнение с чисти DNN модели

Някой може да се чуди, защо не използваме изцяло базирани на DNN решения, които имат най-съвременни резултати при съществуващи VQA бенчмаркове. Причината е проста; такива базирани на DNN решения имат за цел да решават конкретни задачи и са обучени да използват отклоненията на конкретни набори от данни. Следователно такива модели не са „когнитивни архитектури“.

По-конкретно, VQA моделите са обучени да картографират двойки (image, question) към отговори с една дума и не могат да извършват нищо друго. За разлика от това, когнитивните архитектури отговарят на визуални въпроси не чрез самостоятелен модел, а по-скоро чрез интегративна система, която може да извършва и други действия. Такива действия могат да зависят от отговора или дори да го повлияят.

Може би анализът на DNN моделите може да помогне да се разкрият възможните подобрения на хибридната система, която притежава както символни, така и подсимволни компоненти. Затова нека разгледаме един от най-новите „VQA модели“:

Този модел разчита на ограничаващи кутии с предварително обучен инструмент за извличане на характеристики на високо ниво. Той използва стандартни вграждания на думи, предварително обучени върху големи текстови корпуси, които не са свързани с наборите от данни на VQA. Освен това, моделът използва механизъм за „внимание“, който присвоява тегла на ограничаващите полета в зависимост от тяхната релевантност към въпроса, въз основа на неговото обучимо вграждане, изчислено от GRU.

Друг „VQA модел“, вместо да използва вграждането на целия въпрос, използва отделни думи за изчисляване на тежестта на вниманието за ограничаващите полета.

По същество такова внимание е подобно на разпознаването дали граничните полета съответстват на определени думи, изпълнявани от базираните на DNN основателни предикати, изпълнявани от Pattern Matcher. Разликата е, че VQA моделите използват вграждане на думи, съчетани с визуални характеристики, вместо отделни класификатори. Такъв подход може да бъде приложен в OpenCog; ще трябва само да приложим основателния предикат recognize в следната форма:

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

Това, което намираме за интересно, е, че такава конструкция може да бъде обобщена с помощта на HyperNets, която може да приеме вграждането на дума като вход и да върне мрежа, която след това може да приеме визуалните функции като вход - дава ни вероятността, с която тези характеристики съответстват на дадената дума.

Въпреки приликите обаче,има някои значителни разлики между двата подхода. Например, механизмът за внимание в базираните на DNN VQA модели работи, като първо се присвояват тегла на ограничаващите полета, характеристиките на тези ограничаващи полета след това се сумират, след което ограничаващите полета се сливат с вграждането на въпроса и се предават на класификатора. Такъв класификатор може да се счита за подобен на набор от отделно обосновани предикати, обучени да разпознават всяка концепция. Класификаторът обаче не се прилага към визуалните характеристики на всяко ограничаващо поле. Вместо това се прилага към сумираните характеристики на всички ограничителни полета, филтрирани с помощта на вграждане на въпроси.

В конструкцията, описана по-горе, ако въпросът е „Какъв цвят е колата?“ се запазват само тези характеристики, които са подходящи за въпроса, така че класификаторът да може да отговори red вместо car. Такава конструкция е малко странна. За да илюстрираме защо, нека сравним въпросите:

Колата червена ли е?“ и „Какъв цвят е колата?

Когато бъде представен с първия въпрос, механизмът за внимание ще бъде отговорен за избора на ограничителните полета, съответстващи на понятието red(car), докато, ако бъде представен с втория въпрос, класификаторът ще разпознае избраните ограничителни полета като red. За разлика от тях Pattern Matcher на OpenCog ще извърши много повече подобни операции, когато му бъдат представени двата въпроса.

По-важното е, че не всички въпроси ще имат толкова ясна формализация. Например въпросът: „Вали ли?“ не означава, че има ограничителна кутия, която може да се характеризира като it и raining. По-скоро моделът трябва да търси umbrellas и clouds.

Можем също да recognize всяка ограничителна кутия като it и да разпознаем umbrellas като raining. Това всъщност правят и базираните на DNN решения; те просто свързват положителния отговор на този въпрос с наличието на чадъри. Въпреки това, решенията, базирани на DNN, могат по принцип да отчитат както облаците, така и чадърите, като обобщават визуалните характеристики на съответните ограничаващи полета.

По същия начин въпроси като „Той яде ли?“ или „Тъмна ли е стаята?“ изисквайте DNN модела да се грижи за няколко ограничителни кутии. Въпреки че претегленото сумиране е много опростен начин за това, то по някакъв начин работи.

Проблемът, разбира се, е, че DNN моделът не знаезащо отговаря с „да“ на въпроса „Той яде ли?“

Моделът просто съвпада със сумираните визуални характеристики с вграждането на холистичен въпрос. Както казахме по-рано, въпреки че такова холистично съвпадение е стабилно, то далеч не е перфектно. Ако срещне неочакван въпрос, може да даде неразумен отговор.

Например, когато се даде следното изображение и се зададе въпросът „Какво прави дървото?“, демонстрационният DNN модел „на този сайт“ отговаря с 67% сигурност, че е eating и прикачва 13% сигурност в отговора, че е walking.

Ето защо ние вярваме, че хибриден подход, който работи както на функционално, така и на символно ниво, може да се справи по-добре. Въпреки това, такъв подход е по-труден за прилагане.

Например OpenCog съдържа модул, наречен Pattern Miner, който е предназначен за намиране на модели в Atomspace. По-специално, ние вярваме, че може да открием, че понятието raining е свързано с понятията umbrella и cloud, докато понятието eating е свързано с понятията animals или human и food.

Ако случаят е такъв, тогава се надяваме, че бъдещ модел на София, който ще се управлява чрез SingularityNET (която ще използва рамката OpenCog) ще може да обясни защо тя мисли, че вали, когато му бъде зададен въпросът: „Вали ли?“ За разлика от моделите, които съвпадат със смесен вектор на визуални характеристики с вграждането на въпроса, Sophia, управлявана от SingularityNET, се надяваме да може да открие, че концепцията raining е свързана с няколко други концепции, като например umbrella, clouds и water drops.

Какви са предизвикателствата?

Разбира се, все още има няколко трудни предизвикателства, които трябва да бъдат преодолени. Например, картографирането от въпроси на естествен език към формата, разбираема от OpenCog, трябва да се научи. Ние вярваме, че проектът „Unsupervised Language Learning“ на SingularityNET може да допринесе за решаването на този проблем.

Ние също вярваме, че е необходимо задълбочаване на символно-подсимволната интеграция. По-конкретно, сигналите за обучение трябва да се разпространяват чрез символни следи за изводи - не само за достигане до DNN на подсистемата за зрение (която сега се обучава отделно), но също така и за модифициране на истинните стойности на възлите и връзките, съставляващи базата от знания.

И накрая, необходимо е допълнително развитие на подсистемата за зрение. Например, за да разпознаете стабилно, че „момчето държи чашата“, може да се наложи да извършите семантична сегментация или може би дори 3D реконструкция. Би било голямо предизвикателство да направим толкова фини детайли на изображението достъпни от символно ниво. Едно решение за преодоляване на това предизвикателство може да бъде изграждането на генеративен модел на сцена, който обхваща както символното, така и субсимволното ниво. Такъв генеративен модел може да е необходим и за справяне с други задачи като трансформация от текст към изображение.

Как можете да се включите?

Ще докладваме за напредъка си в преодоляването на предизвикателствата, пред които сме изправени, в бъдещи научни статии. Можете да посетите нашия Форум на общността, за да разговаряте за изследването, споменато в тази статия.

През следващите седмици се надяваме не само да ви предоставим повече вътрешен достъп до новаторските изследвания на AI на SingularityNET, но и да споделим с вас спецификата на нашата разработка.

За допълнителна информация, моля, вижте нашите пътни карти и се абонирайте за нашия бюлетин, за да бъдете информирани относно всички наши разработки.