Glauber

Glauber to naukowa metoda odkrywcza napisana w kontekście obliczeniowej filozofii nauki . Jest to związane z uczeniem maszynowym w sztucznej inteligencji .

Glauber został napisany między innymi przez Pata Langleya, Herberta A. Simona , G. Bradshawa i J. Zytkowa, aby zademonstrować, w jaki sposób można uzyskać odkrycia naukowe metodami rozwiązywania problemów , w ich książce Scientific Discovery, Computational Explorations on the Creative Mind .

Ich programy symulują historyczne odkrycia naukowe w oparciu o dowody empiryczne znane w momencie ich odkrycia.

Glauber został nazwany na cześć Johanna Rudolpha Glaubera , XVII-wiecznego alchemika, którego praca pomogła rozwinąć teorię kwasu i zasady . Glauber (metoda) na nowo odkrywa prawo reakcji kwasowo-zasadowych, w których powstają sole, biorąc pod uwagę właściwości substancji i zaobserwowane fakty, będące wynikiem mieszania substancji. Na podstawie tej wiedzy Glauber odkrywa, że ​​substancje o smaku gorzkim reagują z substancjami o smaku kwaśnym, tworząc substancje o smaku słonym.

W kilku słowach prawo:

Kwas + Zasady -> Sól

Glauber został zaprojektowany przez Pata Langleya w ramach jego pracy nad heurystyką odkrywania , aby komputer automatycznie przeglądał wiele wartości i cech oraz przeprowadzał na ich podstawie niezależne analizy. W przypadku Glaubera celem było stworzenie autonomicznej aplikacji , która mogłaby oszacować, a nawet doskonale opisać naturę danego związku chemicznego , porównując go z pokrewnymi substancjami. Langley sformalizował i skompilował Glaubera w 1983 roku.

Oprogramowanie zawierało informacje o różnych materiałach, jakie opisali chemicy z XVII-XVIII wieku, zanim większość współczesnej wiedzy chemicznej została odkryta lub wynaleziona. W aplikacji zaprogramowano opisy jakościowe, takie jak smak , a nie dane liczbowe , takie jak masa cząsteczkowa . Przedstawiono również reakcje chemiczne znane w tamtej epoce oraz rozróżnienie między reagentami a produktami . Na podstawie tej wiedzy Glauber miał dowiedzieć się, które substancje są kwasami , zasady i sole bez żadnych informacji ilościowych . System badał substancje chemiczne i wszystkie ich najbardziej prawdopodobne reakcje oraz korelował oczekiwany smak i związaną z nim kwasowość lub słoność zgodnie z zasadą, że kwasy i zasady wytwarzają sole.

Glauber był bardzo udanym postępem w chemii teoretycznej wykonywanej przez komputer i wraz z podobnymi systemami opracowanymi przez Herberta A. Simona , w tym Stahla (który bada utlenianie ) i DALTON (który oblicza masę atomową ), pomógł stworzyć podstawy wszystkich obecnych zautomatyzowanych Analiza chemiczna.

Metoda Glaubera

Reprezentacja informacji (struktury danych)

Glauber używa dwóch predykatów: Reacts i Has-Quality, reprezentowanych na listach LISP w następujący sposób:

(Reakcje Wejścia {reagent 1 reagent 2 ...} Wyjścia {produkt 1 produkt 2 ...})
(Ma jakość Obiekt {substancja} jakość {wartość})

W swoim eksperymencie autorzy wykorzystali następujące fakty:

(Reaguje Wejścia {HCl NaOH} Wyjścia {NaCl})
(Reaguje Wejścia {HCl KOH} Wyjścia {KCl})
(Reaguje Wejścia {HNO 3 NaOH} Wyjścia {NaNO 3 })
(Reaguje Wejścia {HNO 3 KOH} Wyjścia {KNO 3 })
(Obiekt o jakości {HCl} Smak {Kwaśny})
(Obiekt o jakości {HNO 3 } Smak {Kwaśny})
(Obiekt o jakości {NaOH} Smak {Gorzki})
(Obiekt o jakości {KOH} Smaki {Gorzkie})
(Obiekt o jakości {NaCl} Smaki {Słony})
(Obiekt o jakości {NaNO 3 } Smaki {Słone})
(obiekt ma jakość {KCl} smakuje {słony})
(obiekt ma jakość {KNO 3 } smakuje {słony})

Odkrywanie następujących praw i klas równoważności:

Sole: {KNO 3 , KCl, NaNO 3 , NaCl}
Kwasy: {HCl, HNO 3 }
Zasady: {NaOH, KOH}
∀ zasady ∀ kwas ∃ sól (Reaguje Wejścia {kwas, zasady} Wyjścia {sól})
∀ sól ( Obiekt ma-Jakość {sól} Smakuje {Słony})
∀ kwaśny (Obiekt ma-Jakość {kwas} Smakuje {Kwaśny})
∀ alkaliczny (Obiekt ma-Jakość {alkali} Smakuje {Gorzko})

Współczesna notacja z ciągami typu: NaOH, HCl itp. jest używana jako skrócone nazwy substancji. Tutaj nie mają na myśli budowy chemicznej substancji, która nie była znana w momencie odkrycia; program działa z każdą nazwą używaną w XVII wieku, taką jak woda królewska , kwas solny itp.

Procedury

Glauber opiera się na dwóch procedurach: Form-Class i Determine-Quantifier. Procedura Form-Class uogólnia predykaty Reacts, zastępując nazwy substancji zmiennymi obejmującymi klasy równoważności określone przez jakość, której wartość wyróżnia substancje w każdej klasie. W eksperymencie zaprojektowanym przez jego autorów substancje podzielono na trzy klasy w oparciu o wartość jakości smakowej na podstawie ich wartości: kwasy (kwaśne), zasady (gorzkie) i sole (słone).

Główna procedura Glaubera

Dane wejściowe : Zestawy predykatów Reacts i Has-Quality
Wyjście : Po pomyślnym zakończeniu zwraca uogólnioną wersję predykatu Reacts, którego zmienne obejmują klasy równoważności, oraz nowy predykat Class, który jest podobny do Has-Quality i ma nazwę-klasa zamiast nazwy substancji: ( Has-Quality {class-name} quality {value})
  1. Jeśli w predykatach Reacts nie ma więcej nazw substancji, zakończ
  2. przetworzyć predykaty Reacts za pomocą procedury Form-Class
  3. przetwórz wynik poprzedniego kroku za pomocą Determine-Quantifier
  4. przejdź do kroku 3

Utwórz klasę

Dane wejściowe : zestawy predykatów Reacts i Has-Quality
Wyjście : nowa klasa substancji, nowy zestaw predykatów Has-Quality i nowy zestaw predykatów Reacts
  1. Policz liczbę wystąpień każdej jakości {value} w predykatach Has-Quality
  2. Wybierz wartość jakości z największą liczbą wystąpień, które substancje znajdują się w predykatach Reacts
  3. Utwórz nazwę dla klasy
  4. Wygeneruj nowy zestaw predykatów Has-Quality, usuwając wszystkie predykaty w Has-Quality z wybraną jakością {value} i dodając predykat (Has-Quality {class-name} quality {value}) do predykatów Class, gdzie nazwa-klasy to nazwa uzyskana w kroku 3
  5. Wygeneruj nowy zestaw predykatów Reacts, zastępując nazwę substancji w klasie utworzonej w kroku 2 nazwą utworzoną w kroku 3
  6. Utwórz nowe rozszerzenie klasy, kojarząc nazwę wygenerowaną w kroku 3 ze zbiorem wszystkich substancji w klasie wybranej w kroku 2

Określ kwantyfikator

Dane wejściowe : zestawy predykatów Reacts, Has-Quality i Class (wygenerowane przez Form-Class)
Wyjście : celowo skwantyfikowana klasa odpowiadająca klasie ekstensyjnej wygenerowanej przez Form-Class, nowy zestaw predykatów Reacts rozszerzony o odpowiedni kwantyfikator ostatniego odkrytego klasa otrzymana od Form-Class
  1. Uniwersalna kwantyfikacja reguły w celu określenia klasy
    (Has-Quality {class-name} quality {value}) => (∀ class-name (Has-Quality {class-name} quality {value}))
  2. Generuj predykaty Reacts zastępując każdą substancję w nowej klasie jej nazwą klasy w predykatach Reacts
  3. jeśli wszystkie predykaty wygenerowane w poprzednim kroku są zawarte w oryginalnym zbiorze,
    to skwantyfikuj uniwersalnie
    , w przeciwnym razie skwantyfikuj egzystencjalnie