Продукційні правила

Продукційні правила (англ. Production rules) чи правила-продукції — це форма представлення знань людини у вигляді речення типу ЯКЩО (умова), ТО (дія). Правила забезпечують формальний спосіб представлення рекомендацій, вказівок або стратегій. Вони ідеально підходять в тих випадках, коли знання предметної області виникають з емпіричних асоціацій, накопичених за роки роботи по вирішенню завдань у тій чи іншій галузі.

Продукційна модель — це набір продукційних правил, яка, з одного боку, близька до логічних моделей, що дозволяє організувати на ній ефективні процедури виведення, а з іншого боку, більш наочно відображає знання.

Продукційні правила використовуються в системах штучного інтелекту (як приклад, експертні системи)[1], як одна з найпоширеніших форм представлення знань, на ряду з логічними моделями, фреймами та семантичними мережами[2].

Історія виникнення[ред. | ред. код]

Уперше ідея продукційних правил з'явилась в роботі американського логіка Еміля Поста (Emil Post) у 1943 році[3], що була присвячена дослідженню окремого випадку його канонічної системи. В цій роботі модель продукційних правил запропонована як формальна теорія обчислень. Пост доказав, що будь-яка система в математиці чи логіці може бути представлена у вигляді продукційних правил. Ця теорія тісно пов'язана з алгоритмами Маркова[4] і, подібно їм, еквівалентна машині Тюрінга.

Програми, що розробили американські вчені Нюелл та Саймон з технологічного інституту Carnegie Institute of Technology у 1960−1970-х роках, включаючи «Загальний розв'язувач задач», були першим практичним застосуванням продукційних систем у штучному інтелекті[5]. Автори дослідили людське мислення у процесі рішення різноманітних задач, таких як задачі по логіці предикатів та ігри у шахи, на основі чого будували «графи поведінки задачі». Продукційна система використовувалась не тільки для пошуку по цьому графу, але і для представлення моделі людської поведінки при рішенні задачі.

Загальна структура продукційних правил[ред. | ред. код]

Структура продукційного правила може бути описана наступним чином:

<ЯКЩО А, ТО В>,

де А – передумова (посилка чи антецедент), В — висновок (дія чи консеквент). Передмову та висновок виражають через факти, якими описують предметну область.

Як умова, так і дія правила можуть враховувати кілька фактів, об'єднаних логічними зв'язками І, АБО, НІ. Логічний висновок полягає у використанні правила modus ponens: якщо відомо, що істинним є твердження А, та існує правило виду «Якщо А, то В», тоді твердження В також є істинним.

Класичний приклад продукційного правила:

ЯКЩО (температура газу Т> 30ºС) І (тиск 49−104 Па),
ТО порушений режим, тому необхідно включити вентилятор і вимкнути рідинний насос.

Передумовою виступає «температура газу Т> 30ºС» та «тиск 49−104 Па», а висновком — «включити вентилятор і вимкнути рідинний насос».

Продукційні системи[ред. | ред. код]

Рисунок 1 − Структура продукційної системи

Інформаційні системи, що використовують продукційні правила, називаються продукційними системами (ПС) або системами, що базуються на правилах[6]. У ПС можна виділити базу знань (БЗ), базу даних (БД) та машину логічного виведення (МЛВ), узагальнена структура подібної системи представлена на рисунку 1.

Для знайомства з механізмом функціонування ПС розглянемо простий приклад, який спрощено описує предметну область, пов'язану з вибором транспортного засобу для організації планованої відпустки.

Припустимо, що дані, записані в робочу пам'ять (РП), представлять собою набір фактів:

  • «намір − відпочинок»
  • «місце відпочинку − гори»,

а база знань для даної предметної область використовує лише два правила:

1. ЯКЩО «намір − відпочинок» І «дорога − вибоїста», ТО «використовувати − джип»
2. ЯКЩО «місце відпочинку − гори», ТО «дорога − вибоїста».

Після того, як в РП будуть записані всі вихідні факти, а в БЗ − всі правила, що описують досліджувану предметну область, МЛВ буде розглядати можливість застосування цих правил.

Для цього машина виведення зіставляє образи з умовної частини правила з фактами, що зберігаються в робочій пам'яті. Якщо всі факти є в робочій пам'яті, умовна частина вважається дійсною, в іншому випадку − помилковою.

Слід зазначити, що існує різні алгоритмічні реалізації машини виведення, але найбільш поширенішим є пряме та зворотне виведення. Прямий порядок означає, що ланцюг міркувань будується, відштовхуючись від даних (істинності умов), до гіпотез (дії, що випливає з цих умов). Зворотній ланцюжок означає, що міркування будуються, відштовхуючись від заданої мети (гіпотези, що представляють цільовий стан системи) до умов, при яких можливе досягнення цієї мети.

Приклад прямого ланцюжка міркувань[ред. | ред. код]

Після запуску в роботу розглянутої вище продукційної системи алгоритм її роботи і послідовність прямого логічного висновку буде наступною:

  1. МЛВ аналізує умовну частину правила № 1 та визначає наявність в РП факту «намір − відпочинок» і відсутність в ній факту «дорога − вибоїста».
  2. Умовна частина правила № 1 вважається помилковою (логіка І), і механізм виведення переходить до правила № 2.
  3. Умовна частина правила № 2 визнається дійсною, тому що факт «місце відпочинку − гори» присутній в РП і МЛВ переходить до виконання його заключної частини.
  4. Заключна частина правила № 2 «дорога − вибоїста» заноситься в РП.
  5. Після перегляду всіх правил відбувається вторинне їх застосування, починаючи з першого правила, за винятком тих, які вже були застосовані (в цьому прикладі це правило № 2).
  6. При повторному зіставленні правила № 1 його умовна частина стає істинної тому, що в РП з'явився факт «дорога − вибоїста» (етап 4), і МЛВ виконує його заключну частину.
  7. Заключна частина «використовувати − джип» переноситься в РП, а правило № 1 виключається з подальшого узгодження.
  8. Правил для зіставлення не залишається, і система зупиняється.

Результатом роботи такої продукційної системи стане рекомендація «використовувати − джип», а до РП будуть додані два факти «дорога − вибоїста» та «використовувати − джип».

Такий вивід називають прямим (прямий ланцюжок міркувань).

Приклад зворотного ланцюжка міркувань[ред. | ред. код]

Для пояснення цього алгоритму виведення розглянемо ситуацію, коли метою запиту до ПС є факт встановлення доцільності використання Джипа при відпочинку в горах за умови розглянутих раніше фактів та правил, що записані до РП та БЗ.

Послідовність зворотного логічного висновку буде наступною:

  1. Визначається правило, в якому в заключній частині міститься цільовий факт.
  2. Досліджується можливість застосування першого правила для підтвердження вихідного факту.
  3. Оскільки зразок «намір − відпочинок» з умовної частини правила № 1 занесений до РП, то для досягнення мети досить підтвердити факт «дорога − вибоїста».
  4. Зразок «дорога − вибоїста» приймається за нову мету, і необхідно знайти правило, яке підтверджує цей факт.
  5. Досліджується можливість застосування правила № 2. Умовна частина цього правила є істинною, тому що зразок «місце відпочинку − гори» є у РП.
  6. З огляду на можливості застосування правила № 2, РП поповниться фактом «дорога − вибоїста» і з'являється можливість застосування правила № 1 для підтвердження мети «використовувати − джип».

Таким чином, результатом виведення є підтвердження мети «використовувати − джип» за умови, що «дорога − вибоїста».

На практиці МЛВ, що спирається на прямий ланцюжок міркувань, використовується в системах діагностики, МЛВ, що спирається на зворотний ланцюжок міркувань  у системах прогнозування.

Нечіткі продукційні правила[ред. | ред. код]

При спробі формалізувати людські знання дослідники незабаром зіткнулися з проблемою, що ускладнила використання традиційного математичного апарату для їх представлення. Існує цілий клас описів, які оперують якісними характеристиками об'єктів (багато, мало, сильний, дуже сильний тощо). Для вирішення низки проблем, що виникла у зв'язку з використанням неточних знань в інтелектуальних системах, в 70-х роках американський математик Лотфі Заде запропонував формальній апарат нечіткої (англ. fuzzy) алгебри та нечіткої логіки[7]. Заде ввів одне з головних поняття в нечіткій логіці – поняття лінгвістичної змінної, та допустив, що як її значення (терми) виступають нечіткі множини[8][9].

Продукційні правила, умова (антецедента) та висновок (консеквента) яких виражені нечітко, називаються нечіткими[10]. Структура нечіткого продукційного правила має вигляд

де та  — це лінгвістичні змінні,  — їх значення, яким відповідає лінгвістичний терм з базової терм-множини лінгвістичної змінної. В даному випадку вираз «» називають нечіткою умовою, а вираз «» − нечітким виводом правила.

Так само як і у класичних продукційних правилах, в нечітких правилах як антецедент та консеквент можуть використовуватися не тільки прості, але і складні логічні нечіткі висловлювання, тобто елементарні нечіткі висловлювання, з'єднані нечіткими логічними зв'язками, такими як нечітке заперечення, нечітка кон'юнкція, нечітка диз'юнкція.

Нечітка продукційна система, окрім стандартних блоків, таких як БЗ, БД та МЛВ, також має два допоміжних блоки — блок фазифікації (англ. fuzzification), що перетворює чисельні вхідні значення в ступінь відповідності лінгвістичним змінним та блок дефазифікації (англ. defuzzification), перетворює результати виведення в чисельні значення.

Стосовно до нечіткої продукційної системи машина логічного виведення представляє собою конкретизацію раніш розглянутих методів прямого та зворотного виведення. Для отримання висновків в системах нечіткого виведення запропоновано декілька алгоритмів[8], таких як, алгоритми Мамдані, Сугєно, Ларсена, Цукамото тощо. Опис цих алгоритмів базується на поділі процесу виводу на ряд послідовних етапів, представлених на рисунку 2.

Рисунок 2 — Етапи нечіткого виведення

Редактор бази знань в системі Matlab[ред. | ред. код]

Розглянуті на рис. 2 етапи нечіткого виведення дозволяє виконувати модуль Fuzzy Logic Toolbox системи MATLAB, в тому числі створювати базу знань у формі продукційних правил.

Редактор бази знань (Rule Editor) призначений для формування і модифікації нечітких правил. Редактор бази знань може бути викликаний з будь-якого GUI-модуля, використовуваного із системами нечіткого логічного виведення, командою Rules…меню Edit або натисканням клавіш Ctrl+3.

У FIS-редакторі відкрити редактор бази знань можна також подвійним щигликом лівою кнопкою миші по прямокутнику з назвою системи нечіткого логічного виведення, розташованого в центрі графічного вікна.

Загальний вид редактора бази знань із указівкою функціонального призначення основних полів графічного вікна приведений на рис. 3.

Рисунок 3 − Редактор бази знань модуля Fuzzy Logic Toolbox системи MATLAB

Переваги та недоліки продукційних правил[ред. | ред. код]

До переваг представлення знань у вигляді продукційних правил слід віднести наступне[11]:

  1. Модульність (окремі продукційні правила можуть буди додані до БЗ, видалені чи відредаговані незалежно від інших).
  2. Наглядність та однаковість структури.
  3. Простота створення та розуміння окремих правил.
  4. Простота механізму логічного виведення.

Слабкими сторонами продукційної моделі є:

  1. Низька ефективність обробки, оскільки більша частина часу витрачається на непродуктивну перевірку можливості застосування правил.
  2. Відсутність гнучкості при логічному виведенні.
  3. Складність оцінки цілісного образу знань з тієї чи іншої предметної області.
  4. При великій кількості продукційних правил достатньо складно відстежити несуперечливість та повноту бази знань.
  5. Застосування тільки одного формату запису продукцій призводить до громіздких, складних для розуміння виразів в лівій частині (антецеденті) правила і ускладнює його написання і перевірку.

Див. також[ред. | ред. код]

Джерела інформації[ред. | ред. код]

  1. Люггер, Джорж Ф. Искусственный интеллект. Стратегии и методы решения сложных проблем / Джорж Ф. Люггер. – М. : Издательский дом «Вильямс», 2005. – 864 с.
  2. Гаврилова, Т. А. Базы знаний интеллектуальных систем / Т. А. Гаврилова, В. Ф. Хорошевский // СПб.: Питер, 2001. − 384 с.
  3. Post E. L. Formal Reductions of the General Combinatorial Decision Problem / E.L. Post // American Journal of Mathematics. – 1943. – v. 65(2). – P. 197—215.
  4. Марков А. А. Теория алгоритмов / А. А. Марков// Труды математического ин-та им. В. А. Стеклова АН СССР, 1954, т. 42.
  5. Newell A. Human problem solving / A. Newell, H.A. Simon //Englewood Clis.– NJ: Prentice-Hall.– 1972.
  6. Хабаров, С. П. Представление знаний в информационных системах [Электронный ресурс] / С. П. Хабаров // Конспект лекций.− Режим доступа: http://www.habarov.spb.ru/bz/.−[недоступне посилання з липня 2019] Загл. с экрана.−Дата обращения: 12.03.2016.
  7. Заде Л. Понятие лингвистической переменной и его применение к принятию приближенных решений [Архівовано 2016-03-05 у Wayback Machine.]. − М.: Мир, 1976. − 166 с.
  8. а б Круглов В. В., Дли М. И., Голубов Р. Ю. Нечеткая логика и искусственные нейронные сети.– М.: Физматлит, 2001.– 221 с.
  9. Леоненков А. В. Нечеткое моделирование в среде MATLAB и fuzzyTECH / А. В. Леоненков. – СПб.: БХВ-Петербург, 2005. – 736 с.
  10. Штовба С. Д. Введение в теорию нечетких множеств и нечеткую логику. – Винница: Издательство винницкого государственного технического университета, 2001. – 198 с.
  11. Каргин А. А. Введение в интеллектуальные машины. Книга 1. Интеллектуальные регуляторы / А. А. Каргин. – Донецк: Норд-Прессс, ДонНУ, 2010. – 526 с.