Към съдържанието
Станете партньор
Изследвания · Обучение на правила

Научаване на четими правила от примери

Често една компания умее да различава добрите от лошите случаи, без да може да формулира правилото, което ги разделя: кои поръчки да се проверят, кои клиенти отговарят на условията, кой е старши. Индуктивното логическо програмиране, или ILP, открива това правило от етикетирани примери. За разлика от статистическия модел, резултатът е писано правило, което може да се чете, обсъжда и внедрява.

Как работи

Учене от неуспехите

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

  1. 01Известни факти
  2. 02Пристрастие
  3. 03Етикетирани примери
  4. 04Тествано правило

Не е необходимо обръщение към езиковия модел. Един незадължителен вариант може да поиска от модела да предложи пристрастие или начални правила въз основа на описание; крайната програма винаги се тества формално спрямо примерите.

Контрол на поръчките

Кои поръчки да се проверят?

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

Научаване на правилото

Фактите, пристрастието, примерите: машината връща програмата.

Резултат, получен на сървъра: две правила, „нов клиент и висока сума“ или „чужда карта и различен адрес за доставка“, които покриват четирите случая за проверка и нито един от останалите пет.

ilp:learnVVL
[kb set "cmd_verif"]
[facts "cmd_verif"
  "montant_eleve(c1)." "nouveau_client(c1)."
  "montant_eleve(c2)." "nouveau_client(c2)." "carte_etrangere(c2)."
  "carte_etrangere(c3)." "adresse_differente(c3)."
  "carte_etrangere(c4)." "adresse_differente(c4)." "montant_eleve(c4)."
  "montant_eleve(c5)." "nouveau_client(c6)." "carte_etrangere(c7)."
  "adresse_differente(c8)." "nouveau_client(c8)."
  "montant_eleve(c9)." "adresse_differente(c9)."]
$biais = [ilp:bias [JSON '{
  "target": "a_verifier/1",
  "predicates": [
    {"name": "a_verifier",         "modes": ["+commande"], "role": "head", "is_bk": false},
    {"name": "montant_eleve",      "modes": ["+commande"]},
    {"name": "nouveau_client",     "modes": ["+commande"]},
    {"name": "carte_etrangere",    "modes": ["+commande"]},
    {"name": "adresse_differente", "modes": ["+commande"]}],
  "types": {"commande": "symbolic"}, "max_body": 2, "max_clauses": 3}']]
$positifs = [JSON '[["c1"], ["c2"], ["c3"], ["c4"]]']
$negatifs = [JSON '[["c5"], ["c6"], ["c7"], ["c8"], ["c9"]]']
$regle = [ilp:learn $biais "a_verifier" $positifs $negatifs [JSON '[]'] [JSON '{"beam_width": 128, "seed": 7}'] "cmd_verif"]
$regle.program

Внедряване на наученото правило

Наученото правило е тествана логическа програма. То се добавя без промени към производствена база знания и се прилага към новите поръчки.

Резултат, получен на сървъра: поръчка c42 е за проверка, поръчка c43 не е.

в експлоатацияVVL
[kb set "cmd_prod"]
[facts "cmd_prod" "montant_eleve(c42)." "nouveau_client(c42)." "carte_etrangere(c43)."]
[for $clause $regle.program [[rules "cmd_prod" $clause]]]
[query VVL "cmd_prod" "a_verifier(c42)?"]      # oui : nouveau client, montant élevé
[query VVL "cmd_prod" "a_verifier(c43)?"]      # non : carte étrangère seule
Одит на съществуващо правило

Проверка на ръчно написано правило спрямо примерите

Преди въвеждането му в експлоатация: колко добри случая покрива и дали улавя лоши.

a_verifier(C) :- montant_eleve(C).c1за проверкаc2за проверкаc3за проверкаc4за проверкаc5изряднаc6изряднаc7изряднаc8изряднаc9изрядна3 от 4 покрити · 2 изрядни поръчки сигнализирани · нито пълна, нито непротиворечива
ilp:testVVL
$clause = [JSON '["a_verifier(C) :- montant_eleve(C)."]']
[ilp:test $clause "a_verifier" $positifs $negatifs [JSON '[]'] "cmd_verif"]
# { n_pos, covered_pos, covered_neg, complete, consistent }

Резултат, получен на сървъра: правилото „висока сума“ покрива 3 от 4-те поръчки за проверка, но сигнализира и 2 изрядни поръчки; то не е нито пълно, нито непротиворечиво.

Други случаи

Човешки ресурси и насочвано обучение

Човешки ресурси: кой е старши?

Ръководителите могат да посочат старшите профили. Обучението открива критерия: опитен и сертифициран. Hugo, сертифициран, но без опит, и Carol, опитна, но без сертификат, принуждават правилото да съчетае двете условия.

Резултат, получен на сървъра: senior(X), ако certifie(X) и experimente(X), покритие 3 от 3, статус „тествано“.

rh_seniorVVL
[kb set "rh_senior"]
[facts "rh_senior"
  "experimente(alice)." "experimente(carol)." "experimente(eve)." "experimente(grace)."
  "certifie(alice)." "certifie(eve)." "certifie(grace)." "certifie(hugo)."]
$biais = [ilp:bias [JSON '{
  "target": "senior/1",
  "predicates": [
    {"name": "senior",      "modes": ["+personne"], "role": "head", "is_bk": false},
    {"name": "experimente", "modes": ["+personne"]},
    {"name": "certifie",    "modes": ["+personne"]}],
  "types": {"personne": "symbolic"}, "max_body": 2, "max_clauses": 2}']]
$r = [ilp:learn $biais "senior" [JSON '[["alice"], ["eve"], ["grace"]]']
                [JSON '[["carol"], ["hugo"], ["bob"], ["dave"]]']
                [JSON '[]'] [JSON '{"beam_width": 128, "seed": 7}'] "rh_senior"]
[ilp:explain $r]

Насочване на обучението чрез описание

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

ilp:induceVVL
$r = [ilp:induce
  "A grandparent is two generations of parent. Use parent/2, male/1, female/1."
  "grandparent" 2
  $pos $neg
  [JSON '{"n_seeds": 5, "max_body": 3, "beam_width": 128, "seed": 42}']
  "ilp_llm_bootstrap"]
Гаранции

Какво гарантира и какви са ограниченията

  • Резултатът е четимо правило, тествано спрямо всеки пример, заедно с неговото покритие: а не черна кутия.
  • Избраното правило е най-простото, съвместимо с примерите. Ако примерите не разграничават два критерия, правилото ще запази само единия: качеството на примерите е по-важно от техния брой.
  • Пристрастието ограничава търсенето; разширяването му забавя обучението.
  • Едно научено правило може да бъде подложено на политика за валидиране, преди да бъде въведено в експлоатация.
Към практиката

Да приложим тези разработки към вашите процеси?

Тези инструменти са инструкции на езика VVL: нашите партньори ги внедряват при своите клиенти, на платформите ProSuite.