Правдоподобно не означава точно
Езиковият модел предсказва най-вероятния текст. Той не проверява нищо. Щом трябва да се свържат няколко правила, процентът му на грешки рязко нараства.
В сърцето на ProSuite сървърът VAILS и неговият език VVL обединяват две семейства изкуствен интелект: езиковите модели, които разбират текст, и символното разсъждение, което прилага правила точно и проверимо. Тази страница представя нашите решения в моделирането и първите ни измервания.
Да поверите на ИИ част от управлението означава да му поверите хиляди малки решения всеки ден: да сортира запитване, да квалифицира клиент, да провери документ, да приложи тарифа. Един голям езиков модел, използван сам, не е създаден за това.
Езиковият модел предсказва най-вероятния текст. Той не проверява нищо. Щом трябва да се свържат няколко правила, процентът му на грешки рязко нараства.
Той връща отговор, но никога използваема вероятност. А именно от нея се нуждае един процес, за да реши сам, да поиска проверка или да предаде случая на човек.
Всяко сортиране или проверка се превръща в бавно и платено извикване. В мащаба на едно предприятие забавянето и цената стават основната пречка.
Когато бизнес правилото е скрито в указание, написано на естествен език, никой не може да го одитира, да управлява версиите му или да докаже, че е било приложено.
Невро-символният ИИ съчетава невронна мрежа, която осигурява разбирането на езика, със символен слой, който осигурява логиката, структурата и доказателството. Във VAILS това съчетание следва четири слоя.
Езиковият модел чете конкретния случай: запитване, оферта, CV или фактура се пренася в схемата на предприятието. Моделът пренася, той не разсъждава.
Онтологията носи общото знание: категории, правила, изключения и типови профили, написани веднъж и компилирани в логически правила.
Правило, после Jev, после езиков модел, после човек: всяко решение отива към най-простия двигател, способен да го вземе с достатъчна увереност.
Договори, доказателства и дневник на решенията: кой двигател е решил, с каква увереност, въз основа на кое правило.
В повечето инструменти извикванията към ИИ се добавят върху класически език за програмиране. Във VAILS самият език, VVL, умее да работи със смисъла.
По подразбиране стойността във VVL се държи като обикновена стойност: текст, число, списък. Програмата остава детерминирана и бърза. Когато една стойност е маркирана като семантична, обичайните оператори започват да преценяват според смисъла: равенството става смислова еквивалентност, принадлежността – включване на понятия, наредбата – сравнение по ранг.
Това разделяне е основно проектантско решение: непредвидимата част от системата остава малка, видима и локализирана. VVL разполага с 21 оператора от този вид, инструкция, която избира разклонение според смисъла, таблици на решенията, проекции върху наредена скала и степени на размита логика, измерени върху текст.
[semanticMode "jev"]
[print ([§ "a baby penguin"] == [§ "a young penguin"])] # 1
[print ([§ "a salmon"] in [§ "freshwater and saltwater fish"])] # 1
[print ([§ "a colonel"] < [§ "a captain"])] # 0Jev е модел за решения, който не пише текст: той решава. Подават му се текст и типизирани въпроси в три форми: да или не, избор между варианти, позиция на скала. Той отговаря с едно преминаване, с калибрирана вероятност за всеки отговор.
Използваме го като това, което когнитивната психология нарича Система 1: бърз и икономичен начин на вземане на решения. Големият езиков модел играе ролята на Система 2 – по-бавна и по-скъпа, привличана само когато Jev се колебае.
Нека p е вероятността, дадена от Jev, а τ – прагът, избран от бизнеса, по подразбиране 0,8.
Ако p ≥ τ, отговорът е да. Ако p ≤ 1 − τ, отговорът е не. Между двете въпросът преминава към езиковия модел, а след това към човек, ако съмнението остане.
Така прагът става управленски параметър: колкото по-висок е, толкова повече деликатни случаи се ескалират към езиковия модел или към човек. Няколко въпроса върху един и същ текст се изпращат с едно извикване. Всяко решение се записва в дневника заедно с двигателя, който го е взел, вероятността и времето за отговор.
| Време за едно решение на Jev | 0,35 до 0,45 s, от които 2 ms обработка във VAILS |
|---|---|
| Класификация на въпросите, зададени на маршрутизатора | 16 от 16 верни, увереност ≥ 0,99 |
| Референтни сценарии за маршрутизиране | 11 от 13 решени от Jev, всички верни; 2-та умишлено двусмислени случая са оставени на езиковия модел |
| Съдия за приключване на задача на агент | 10 от 10, около 0,4 s |
| Три решения по един и същ тикет, предварително заредени | 1 извикване вместо 3, 0,5 s вместо 1,1 s |
Настройъчни измервания върху малки извадки. Те ще бъдат разширени до няколкостотин случая за всеки тип решение.
Общото знание на предприятието е записано в онтология; езиковият модел само пренася конкретния случай в тази онтология; разсъждението е поверено на символния двигател.
Онтологията на VAILS описва класове, типизирани атрибути и релации. Тя се превежда автоматично в логически клаузи, изпълнявани от вграден в сървъра двигател от типа на Prolog. Наследяването става правило: всичко, което е оферта за строителни работи, е и оферта. Релация, обявена за транзитивна, като „се намира в“, се изчислява чрез затваряне, което запомня вече посетените елементи и така гарантира, че изчислението приключва дори когато данните съдържат цикли. Правилата за изключения се записват при допускането за затворен свят: това, което нито е заявено, нито може да се изведе, се счита за невярно.
rel(X, r, Z) :- tc(X, r, Z, [X]).
tc(X, r, Z, _) :- dedge(X, r, Z).
tc(X, r, Z, V) :- dedge(X, r, Y), not(member(Y, V)), tc(Y, r, Z, [Y|V]).За да представи профил, архетип или норма, VAILS се опира на теорията за абстрактните обекти на логика Edward Zalta. Абстрактният обект кодира свойствата, които го определят. Сравняването на кандидат, клиент или досие с даден профил дава степен на удовлетвореност между 0 и 1: делът на кодираните свойства, които екземплярът притежава.
[semanticMode "jev"]
$rh = [ontology:define rh
[ontology:class Candidat [attributes
[nom String] [competence String] [remote String] [niveau String]]]
[ontology:abstract ProfilDevConfirme : Candidat
[encode competence "ingenieure logicielle"]
[encode remote "teletravail complet"]
[encode niveau "confirmee"]]]
$bob = [new Candidat [nom "Bob"] [competence "boulanger"]
[remote "sur site uniquement"] [niveau "apprenti"]]
[print ($bob ~~ "ProfilDevConfirme")] # ~0.04Заимстван от софтуерното инженерство на критичните системи, договорът уточнява какво трябва да е вярно преди и след една операция. Онтологичният договор приема извличане от езиковия модел само ако то удовлетворява онтологията над определен праг; в противен случай извличането се повтаря с установената грешка, а след това се отхвърля коректно. За съждителната логика моделът може да предложи доказателство, но малко проверяващо ядро е това, което го приема или отхвърля.
Ние сме точни относно това, което това носи: договорът не прави модела непогрешим. Той гарантира, че преминалото е проверено спрямо изрични правила.
За да сравним строго езиков модел сам и невро-символното моделиране, изградихме генератор на малки светове: факти, правила, отвличащи елементи и въпрос, чийто отговор е да или не. Имената са измислени, така че никакво предварително знание на модела да не може да му помогне.
| k | Само модел, пряко | Само модел, стъпка по стъпка | Двигател VAILS |
|---|---|---|---|
| 1 | 97 % | 99 % | 100 % |
| 2 | 87 % | 95 % | 100 % |
| 3 | 75 % | 88 % | 100 % |
| 4 | 69 % | 86 % | 100 % |
| 5 | 64 % | 84 % | 100 % |
| 6 | 60 % | 82 % | 100 % |
| Общо | 74 % | 88 % | 100 % |
Правилата за изключения: дори когато разсъждава стъпка по стъпка, той отговаря вярно само на 72 % от тези въпроси. Цитира правилните изречения, след което заключава, че не може да се знае, вместо да приложи допускането за затворен свят, формулирано в текста.
Езиковият модел извлича фактите, VAILS разсъждава: първи пилотен тест с 52 въпроса дава 98 % верни отговори срещу 65 % и 87 % за модела сам по същите въпроси. Всички останали грешки идват от извличането и се измерват отделно. Пълната кампания е в ход.
Когато общото знание остане в текста, подаван на модела за извличане, той започва да разсъждава вместо двигателя. Информиран, че дадена релация е транзитивна, нашият извличащ модел направи 369 непоискани извода при 52 случая, въпреки изричното указание да не извежда нищо. Премахването на това знание от текста и поставянето му в онтологията накара проблема да изчезне. Същата тестова среда, повторена в едновременни сесии, ни позволи също да открием и отстраним дефект в изолацията между сесиите в сървъра: да измерваш означава и да повишаваш надеждността.
Управленско правило, написано на VVL, остава четимо за бизнеса. Ето маршрутизатор на клиентски запитвания: три типизирани решения, поверени на Jev с едно извикване, и разклонение за ескалация към човек, когато нищо не съвпада.
[semanticMode "jev"]
$route = [match [§ $ticket]
`[[§ "urgent, time-critical"] [§ "Payments, invoicing, refunds"]] "on-call billing"
`[[§ "urgent, time-critical"] [§ "Bugs, outages, integrations"]] "on-call technical"
`[_ ?team] ("queue " + $__team)
"human escalation"]Маршрутизиране на запитвания, спешност, настроение на клиента, откриване на спам и измами, ескалация.
Извличане, водено от схема, класифициране, проверка за съгласуваност преди всякаква обработка.
Точно прилагане на тарифните правила, моделирани в онтология, върху стотици оферти.
Сравняване на кандидати, клиенти или досиета с типови профили, със степен на удовлетвореност.
Предпочитаме да кажем точно докъде сме стигнали.
Тези инструменти са инструкции на езика VVL: нашите партньори ги внедряват при своите клиенти върху платформите на ProSuite.