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})
- Jeśli w predykatach Reacts nie ma więcej nazw substancji, zakończ
- przetworzyć predykaty Reacts za pomocą procedury Form-Class
- przetwórz wynik poprzedniego kroku za pomocą Determine-Quantifier
- 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
- Policz liczbę wystąpień każdej jakości {value} w predykatach Has-Quality
- Wybierz wartość jakości z największą liczbą wystąpień, które substancje znajdują się w predykatach Reacts
- Utwórz nazwę dla klasy
- 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
- Wygeneruj nowy zestaw predykatów Reacts, zastępując nazwę substancji w klasie utworzonej w kroku 2 nazwą utworzoną w kroku 3
- 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
- Uniwersalna kwantyfikacja reguły w celu określenia klasy
- (Has-Quality {class-name} quality {value}) => (∀ class-name (Has-Quality {class-name} quality {value}))
- Generuj predykaty Reacts zastępując każdą substancję w nowej klasie jej nazwą klasy w predykatach Reacts
-
jeśli wszystkie predykaty wygenerowane w poprzednim kroku są zawarte w oryginalnym zbiorze,
- to skwantyfikuj uniwersalnie
- , w przeciwnym razie skwantyfikuj egzystencjalnie