Nie przejmuj się, mój perceptronku

 

Mój wstępniak na You Tube

 

A takie tam różne. Robię trochę badań nad zjawiskiem inteligencji zbiorowej i ponieważ trudno mi tak z biegu znaleźć dobre przykłady inteligencji zbiorowej w prawdziwym życiu, to zrobiłem sobie taki mały perceptron – czyli sieć neuronalną – który ma zastępować prawdziwe życie. Tak trochę w kontekście tej inteligencji zbiorowej, dalej przegryzam się przez Rozporządzenia Ministra Nauki i Szkolnictwa Wyższego z dnia 22 lutego 2019 roku w sprawie ewaluacji jakości działalności naukowej. Ogólnie się dzieje.

Interesuję się inteligencją zbiorową, ponieważ mam wrażenie, że nawet najdziwniejsze relacje międzyludzkie, takie na pozór naprawdę pogięte, mają jakiś swój funkcjonalny sens. Robimy coś na pierwszy rzut oka idiotycznego. Kiedy jednak pierwszy rzut oka ustępuje miejsca drugiemu, wtedy ten drugi widzi trochę inny kontekst i widzi sens w tym pozornym idiotyzmie. Weźmy takie przejście dla pieszych. Gdyby przyglądał się temu człowiek z dżungli, stwierdziłby: „Idiotyzm. Chodzą zawsze tak samo, po ścieżkach oznakowanych tak, że tylko niewidomy tapir by nie zauważył. Są przewidywalni jak fiks. Nic nie upolują. Zdechną z głodu. Przykre”. A jednak my nie zdychamy z głodu i te przejścia dla pieszych jakoś działają, tyle że w innym kontekście niż dżungla.

Kiedy używam sztucznej inteligencji, odkrywam mnóstwo ciekawych rzeczy na temat działania naszej inteligencji. Znacie zapewne tą zasadę, że nagrody działają na nas mocniej niż kary. Wzmocnienie pozytywne działa mocniej niż wzmocnienie negatywne. No i ja tu właśnie prowadzę badania na temat efektywności energetycznej gospodarek, w sensie na temat ilości PeKaBe (Produktu Krajowego Brutto) w przeliczeniu na 1 kilogram przeliczeniowy ropy naftowej w sensie finalnej konsumpcji energii, no i zrobiłem taki prosty perceptron wielowarstwowy (zaraz tam „wielo-„… trzy warstwy wszystkiego), no i ten perceptron kombinuje jak łączyć tą efektywność energetyczną z PeKaBe na głowę, z odsetkiem energii odnawialnych w całości konsumpcji finalnej i z różnymi innymi zjawiskami. W zasadzie, perceptron wielowarstwowy uczy się na podstawie porażek i związanych z tym kar. Perceptron się multiplikuje i próbuje, jaka mu wyjdzie efektywność energetyczna z tej jego chwilowej postaci. Jak się multiplikuje, to się nieuchronnie myli, ale umie się do błędu przyznać, a nawet mierzy ten błąd i następnie go wpuszcza do wartości swoich zmiennych wejściowych. Perceptron uczy się czegokolwiek tylko wtedy, kiedy się pomyli i w pewnym sensie karze sam siebie za pomyłkę.

Postanowiłem spróbować co będzie, kiedy dam mojemu perceptronowi wzmocnienie pozytywne. Dzielę błędy na korzystne i niekorzystne. Te pierwsze to efektywność energetyczna wyższa od oczekiwanej, te drugie to wręcz przeciwnie. Kiedy perceptron popełnia błąd korzystny, wtedy pozwalam mu wykorzystać go w całości w kolejnych rundach eksperymentalnych. Kiedy jednak popełnia błąd niekorzystny, to ja ten błąd zmniejszam i dopiero taki zmniejszony jest propagowany dalej. Wzmacniam wydźwięk sukcesów, zmniejszam wagę porażek.

No i co? No i w sumie to kicha. Mój standardowy eksperyment z perceptronem to 5000 prób, no i zawsze coś z tego wychodzi. Kiedy jednak wprowadzam do algorytmu mechanizm wzmacniania sukcesów i osłabiania porażek – czyli kiedy wprowadzam arbitralne rozróżnienie na sukcesy i porażki – to perceptron już po 30 ÷ 40 rundach eksperymentalnych stwierdza, że zjadł wszystkie rozumy. Przestaje generować błąd, fiksuje wszystkie zmienne i wszystko byłoby fajnie, gdyby ich nie fiksował na poziomach absurdalnie niskich. Wyszło mu, na ten przykład, że Austriacy mogliby mieć taką samą efektywność energetyczną, jak mają teraz, przy liczbie ludności o ¾ niższej od obecnej i generalnie ze wszystkim co się da o ¾ poniżej poziomów dzisiejszych. Jak mu dałem wzmocnienie pozytywne, to doradził Austriakom powrót do prymitywu. Dobrze, że mu nie wrzuciłem danych na temat Polski. Dopiero by wstyd był, a tak to co najwyżej może być incydent dyplomatyczny.

Jeszcze parę słów wyjaśnienia, dlaczego i jak stosuję perceptron wielowarstwowy, aby przedstawić działanie inteligencji zbiorowej. Opieram się na tzw. teorii roju (patrz np. Stradner et al 2013[1]), zgodnie z którą inteligencja zbiorowa przejawia się jako koordynacja. W ten sposób ograniczamy nieco nasze ambicje względem naszej własnej zbiorowej inteligencji. Fajnie byłoby myśleć, że jako zbiorowość dążymy do jakiegoś sensownego zbiorowego celu i robimy to rozsądnie. Zauważmy jednak, że ocena wartości naszego celu oraz ocena racjonalności drogi, którą przyjęliśmy wymagają odniesienia etycznego i prakseologicznego. Układ odniesienia musimy oczywiście stworzyć sami. Nikt inny tego za nas nie zrobi. Jeżeli sami tworzymy układ odniesienia dla oceny naszych celów i ścieżki do ich osiągnięcia, to tak trochę mało ambitnie. Sami sobie kadzimy, do jakich to fajnych celów dążymy albo też sami siebie wbijamy w kompleksy, że niby te nasze cele za mało ambitne.

W teorii roju zakłada się że wystarczy, jak jesteśmy skoordynowani. Możemy być skoordynowani na trzech poziomach: statycznym, dynamicznym skorelowanym i dynamicznym losowym. Koordynacja statyczna to tak, jak w synapsach albo w McDonaldzie. Jak podmiot A zrobi X, to podmiot B zawsze zrobi Y. Zawsze tak samo. Koordynacja dynamiczna skorelowana jest wtedy, jak podmiot B może zachować się różnie wobec działania podmiotu B, ale to różnie ma swój powtarzalny wzorzec. B czasami zrobi Y1, a czasami Y2, ale Y3 to już raczej nie, a to czy Y1 czy Y2 zależy od subtelnych różnic w zachowaniu X ze strony podmiotu A. Kiedy jednak podmiot A nawet nie wie, który inny podmiot zareaguje na jego zachowanie A, wtedy musi to zachowanie jakoś zasygnalizować szerszej zbiorowości. Może zareaguje B, a może C? Kto wie? Tak działa roznoszenie zarodników roślin i grzybów, czy też rozprzestrzenianie feromonów.  To jest koordynacja dynamiczna losowa.

Rój jest inteligentny, kiedy potrafi przystosować się do nowych okoliczności poprzez zmianę stopnia koordynacji. Eksperymentujemy z nowymi wariantami naszych nawyków i strategii. Na chwilę przechodzimy od koordynacji statycznej do dynamicznej skorelowanej. Ta ostatnia może się na chwilę przekształcić w koordynację dynamiczną losową. Wszystko po to, żeby wpuścić trochę świeżego powietrza i nauczyć się nowych wzorców zachowań. Nowe wzorce zachowań będą prawdopodobnie faworyzować nieco inny typ partnerów seksualnych, a tym samym nieco inną pulę genów. W ten inteligencja przekłada się na trwałą mutację genetyczną całego gatunku.

Sieć neuronalna wykorzystuje zbiór zmiennych. Kiedy są to zmienne ekonomiczne, takie jak PKB na głowę mieszkańca czy efektywność energetyczna, każdą z nich można traktować jako chwilowy przejaw zbioru decyzji podejmowanych przez dużą liczbę ludzi w dłuższym okresie czasu. Stopień wzajemnego powiązania tych decyzji można traktować jako stopień wzajemnej koordynacji zachowań, które stoją za takimi a nie innymi wartościami zmiennych. Związki pomiędzy liczbami są prostsze niż związki między ludźmi. Można te związki zmierzyć, np. przy pomocy odległości Euklidesowej: V(x1;x2) = [(x1 – x2)2]0,5.  Z tym pierwiastkiem z kwadratu to chodzi o zlikwidowanie możliwego minusa. Ujemna odległość źle wygląda w pomiarach. W tym wypadku należy pohamować zapędy wpojone na lekcjach matematyki. Mówili nam „upraszczaj !”. W tym wypadku, jeżeli uproszczę potęgi, to wyjdzie mi potęga „1”, a to z minusem nic nie zrobi. Nie upraszczamy więc nadmiernie, tylko grzecznie, po kolei, najpierw do kwadratu, a potem dopiero z tego pierwiastek kwadratowy.

Kiedy mam wiele zmiennych, wtedy dla każdej z nich mogę określić jej odległości Euklidesowe wobec wszystkich pozostałych i wyciągnąć średnią arytmetyczną z tych odległości. Potem z tych średnich arytmetycznych wyciągam kolejną średnią arytmetyczną i otrzymuję w ten sposób jedną z możliwych postaci funkcji spójności, która określa jak ciasne są relacje między zmiennymi.

Moje eksperymenty z perceptronem wielowarstwowym pokazały, że zmienia on wartość swojej funkcji spójności, a dokładnie zwiększa średnią odległość Euklidesową między swoimi zmiennymi wejściowymi po to, żeby zminimalizować błąd w szacowaniu zmiennej wyjściowej (wynikowej). W tym sensie perceptron zachowuje się jak inteligentny rój żywych istot. Daje sobie trochę dodatkowego luzu, żeby się czegoś nauczyć. Co ciekawe, kiedy w skład błędu odnotowywanego przez perceptron włączam także wartość jego funkcji spójności – czyli wzajemną odległość Euklidesową zmiennych – wtedy sieć neuronalna zachowuje się bardzo rożnie w zależności od zastosowanej funkcji aktywacyjnej. Kiedy stosuję funkcję sigmoidalną unipolarną, wtedy perceptron mniej się uczy i zachowuje większą spójność. Zachowuje się trochę jak człowiek, któremu nagle kazano zwracać uwagę na nieznane mu wcześniej zasady savoir-vivre’u. Zachowywać to się zachowuje, ale jakby tak z lekkim odcieniem kija w d**ie. Kiedy jednak zmieniam funkcję aktywacji na tangens hiperboliczny, wtedy perceptron zmuszony do obserwacji swojej własnej spójności zaczyna się bujać w krainę wyobraźni: znacznie zmniejsza swoją wewnętrzną spójność i wymyśla bardzo wysokie wartości zmiennych wejściowych.

No i ja tu tak gadu gadu i ni z tego, ni z owego prawie dokładnie wyjaśniłem, o co mi chodzi z tym perceptronem jako wyrazem inteligencji zbiorowej. Mam coś, co potrafi samo ze sobą eksperymentować i stopniowo zmniejszać błąd generowany przez te eksperymenty. Znaczy będą z tego czegoś ludzie. Jak się uczy, to rozluźnia swoją wewnętrzną spójność, czyli otwiera się na inherentny chaos egzystencji. Otwiera się różnie w zależności od zastosowanej funkcji aktywacyjnej oraz tego, czy ma zwracać uwagę na to, jak się otwiera. Jak pozwolę temu czemuś odróżniać sukcesy od porażek i wyciągać optymistyczne wnioski z niektórych odchyleń od wartości oczekiwanych, to nagle stwierdza, że już wszystko wie i że dość tego eksperymentowania.

 

No dobrze. Teraz ważne pytanie: co z tego? Jaka jest wartość naukowa tego narzędzia? Przypuszczam, że mogę w ten sposób tworzyć dość dokładne hipotezy dla badań empirycznych. Przy pomocy perceptrona symuluję, jakie mogą być oczekiwane wartości zmiennych empirycznych, w różnych warunkach uczenia się. Następnie sprawdzam dopasowanie wartości empirycznych do tych oczekiwanych i mogę określić, która hipoteza na temat zbiorowego uczenia się jest najbliższa prawdy.

 

Perceptron opiera się na akumulacji danych z przeszłości. To typ sztucznej inteligencji, który dokłada kolejne porcje informacji do już posiadanej wiedzy i w ten sposób coś optymalizuje. To jest mechanizm uczenia się, który wykracza poza potocznie pojmowany schemat « bodziec <> reakcja » (już raz o tym pisałem, w „Dwie kule w Kalifornii i wielebny Thomas Bayes”). W tej chwili chyba najbardziej fascynuje mnie to, w jaki sposób modyfikacja tej pamięci – czy też raczej zmiana sposobu zbierania informacji do pamięci – wpływa na proces uczenia się. Przedstawię teraz krótki eksperyment, jaki prowadzę przy pomocy mojego perceptronu, na danych dotyczących efektywności energetycznej gospodarki Polski.

 

Mój podstawowy model, który wykorzystałem już do jednego artykułu, zakłada że efektywność energetyczna gospodarki jest efektem oddziaływania następujących zmiennych:

 

  1. Współczynnika kapitału w bilansowych środkach trwałych przedsiębiorstw w przeliczeniu na 1 krajowe zgłoszenie patentowe; to nam mówi, jak przeciętnie dokapitalizowany jest każdy wynalazek zgłaszany do patentowania;
  2. Współczynnika udziału zagregowanej amortyzacji środków trwałych w PKB; ta zmienna mierzy, jakim obciążeniem dla gospodarki jest nadążanie za zmianą technologiczną;
  3. Liczby krajowych zgłoszeń patentowych na 1 mln mieszkańców, czyli stopnia innowacyjności społeczeństwa;
  4. Finalnego zużycia energii per capita;
  5. Odsetka ludności miejskiej w całości populacji;
  6. Zagregowanego PKB
  7. PKB per capita
  8. Liczby ludności

 

Biorę jedną i tą samą funkcję aktywacji neuronalnej: sigmoid unipolarny. Jako materiał wyjściowy, żeby perceptron oparty na tej funkcji cośkolwiek zakumał, daję mu dane empiryczne na temat powyższych zmiennych w Polsce, włącznie z samą efektywnością energetyczną, dla lat 1990 – 2014. Dane standaryzuję, czyli dla każdej zmiennej każdą wartość z osobna dzielę przez zaobserwowaną w jej rozkładzie wartość maksymalną. W efekcie każda zmienna ma wartości w przedziale 0 < x ≤ 1. Zaczynamy w roku 1990. Perceptron generuje wagi losowe, w przedziale 0 < w < 1 dla każdej zmiennej. Mnoży zestandaryzowane wartości zmiennych przez te wagi losowe i suma iloczynów „xi*wi” stanowi złożony argument „x” dla funkcji sigmoidalnej unipolarnej. Funkcja zwraca jakąś lokalną wartość i jakąś lokalną pochodną, dla roku 1990. Biorę rzeczywistą, zestandaryzowaną wartość zmiennej wynikowej – efektywności energetycznej dla roku 1990 – i odejmuję od niej wartość zwróconą przez funkcję aktywacji. Tą różnicę mnożę przez lokalną pochodną i mam lokalny błąd ważony znaczeniem lokalnej zmiany wartości (czyli pochodnej).

 

Swoją drogą, na boku, obliczam średnią arytmetyczną dla odległości Euklidesowych każdej zmiennej, w roku 1990, od wszystkich pozostałych. Potem z tych średnich arytmetycznych wyciągam kolejną średnią arytmetyczną, a następnie obliczam jej odwrotność, czyli 1/V(x). To jest ogólna funkcja spójności mojego perceptronu.

 

Dalej, począwszy od roku 1991 i dalej w przyszłość, mam jeden stały sposób postępowania – czyli podstawowy schemat uczenia się mojego perceptronu – oraz kilka możliwych wariacji na ten główny temat. Co do zasady, w roku 1991, perceptron bierze zestandaryzowaną wartość każdej zmiennej, zarówno wynikowej efektywności energetycznej i jak i zmiennych wejściowych (a – h), dodaje do tej empirycznej wartości te lokalny błąd ważony pochodną dla roku poprzedniego – 1990 – i dalej tak samo, czyli wagi losowe, suma iloczynów zmiennych wejściowych przez wagi losowe jako złożony argument dla funkcji aktywacji neuronalnej itd. To się nazywa propagacja błędu.

 

W ten sposób, dla każdego roku od 1991 do 2014, perceptron buduje stopniowo coraz bardziej odchyloną od rzeczywistości wersję wydarzeń. Daje to 2014 – 1990 = 24 rundy eksperymentalne, podczas których perceptron twórczo uczy się na danych empirycznych.

Począwszy od rundy 25 i dalej, perceptron już nie ma danych empirycznych jako układu odniesienia. Wtedy zaczyna powtarzać tą samą operację na swojej własnej, zmodyfikowanej wersji roku 2014. Nadbudowuje na tym ostatnim rzeczywistym zdarzeniu swoją całkowicie własną wersję wydarzeń, wciąż według tego samego mechanizmu dodawania błędu zaobserwowanego w bezpośrednio poprzedzającej przeszłości.

 

Teraz możliwe modyfikacje. Pierwsza polega na obserwacji własnej spójności. W każdej kolejnej rundzie eksperymentu, poza dodawaniem błędu z poprzedniej rundy, perceptron dodaje średnią spójność tej konkretnej zmiennej z pozostałymi zmiennymi (jej średnią odległość Euklidesową od pozostałych zmiennych), zaobserwowaną w rundzie poprzedniej. Innymi słowy, perceptron zapamiętuje, jak daleko była ta konkretna zmienna od pozostałych. Potem jak w scenariuszu podstawowym: wagi losowe, suma iloczynów itede.

 

Druga modyfikacja to rozróżnienie na sukcesy i porażki. Obliczam, o ile wzrosła standaryzowana efektywność energetyczna gospodarki Polski w okresie 1990 – 2014. Wychodzi (11,77694401 – 9,673094195) / 11,77694401 = 0,178641404. Dalej dzielę to przez 24 lata, czyli 0,178641404 / 24 = 0,007443392. To jest próg odniesienia „y*” dla odróżnienia sukcesu od porażki. Błąd „e” zwracany przez funkcję aktywacji perceptronu i spełniający warunek „e > y*” jest sukcesem, każda inna jest porażką. Daję więc mojemu perceptronowi do zrozumienia: jeżeli wygenerowałeś błąd większy od średniego rocznego przyrostu efektywności energetycznej, to brawo. Jak nie, to niestety, ale wtopiłeś.

Teraz pytanie, jak mu to powiedzieć. Niektórzy ludzie źle reagują na krytykę. Nie wiem, jak zareaguje sztuczna inteligencja. Muszę sprawdzić. Na początek robię tak, jak doradza psychologia: zamiast krytykować, pokaż konsekwencje sukcesu oraz porażki. Mogę te konsekwencje wzmocnić w jednym albo w drugim kierunku, czyli wzmocnić sukcesy kosztem porażek („nieważne, że nie zająłeś pierwszego miejsca, perceptronku, ten przed Tobą i tak był na koksach, ważne jest uczestnictwo i rywalizacja”) albo też mogę wzmocnić porażki kosztem sukcesów („Ty łajzo, jak mogłeś tak polec!”). Kiedy chcę wzmocnić pamięć o sukcesach i osłabić pamięć o porażkach, to robię na przykład tak, że kiedy e > y*, to wtedy pozwalam perceptronowi dalej propagować błąd „e”, kiedy jednak e ≤ ∆y*, to wtedy pozwalam propagować tylko jakiś ułamek błędu „e”. Kiedy chcę wzmocnić pamięć o porażkach kosztem pamięci o sukcesach, to robię odwrotnie. Wszystko to mogę ująć elegancko w ramy jednego warunku logicznego:

 

>> jeżeli (e > y*), to propaguj ß1*e, a jeżeli (e ≤ y*), to propaguj ß2*e.

 

Parametry ß1 oraz ß2 określają odpowiednie wzmocnienie pamięci o sukcesach oraz o porażkach. Jeżeli ß1 > ß2, to wzmacniam wspomnienie sukcesu („W 1970-tym tośmy im pokazali!”). Jeżeli ß1 < ß2, wzmacniam z kolei wspomnienie porażki („Nigdy nie zapomnimy tego, jak ONI nas skrzywdzili!”). Konstruuję pięć scenariuszy:

 

Scenariusz 0: Bez uczenia się na spójności, bez nagrody

Scenariusz A.1: Bez uczenia się na spójności, wzmocnienie nagrody *2 ó ß1 = 1, ß2 = 0,5

Scenariusz A.2: Bez uczenia się na spójności, wzmocnienie nagrody o 5% ó ß1 = 1, ß2 = 0,95

Scenariusz B.1: Uczenie się na spójności, wzmocnienie nagrody *2 ó ß1 = 1, ß2 = 0,5

Scenariusz B.2: Uczenie się na spójności, wzmocnienie nagrody o 5% ó ß1 = 1, ß2 = 0,95

 

Dla każdego z pięciu scenariuszy obserwuję funkcję spójności mojego perceptronu – czyli to, na ile zachowuje się jak inteligentny rój – oraz procent energii odnawialnych w konsumpcji finalnej energii ogółem. Obserwacja obejmuje 100 rund eksperymentalnych: interesuje mnie przede wszystkim to, jak perceptron zaczyna się uczyć. Tak, dla perceptrona wielowarstwowego 100 rund eksperymentalnych to zaledwie rozgrzewka. To jest chyba największa odmiana w stosunku do moich poprzednich eksperymentów z tym perceptronem. Wcześniej moja standardowa obserwacja obejmowała 5000 rund eksperymentalnych, czyli okres 50 razy dłuższy (dłuższy w sensie zgromadzonego doświadczenia, a nie upływu czasu – perceptron nie ma pojęcia czasu). Ten eksperymentalny zoom przyniósł bardzo ciekawe wyniki, które pokazuję na dwóch wykresach poniżej i komentuję dalej, pod wykresami.

 

Widać wyraźnie dwa etapy uczenia się perceptronu. Pierwszy etap to ten, kiedy perceptron pracuje na danych empirycznych i tylko trochę je tak sobie przekształca. W tym etapie wszystkie pięć scenariuszy uczenia się idzie łeb w łeb. Wszystkie pięć zmniejsza wartość funkcji spójności – a więc usztywnia strukturę logiczną i czyni ją mniej podatną na zmiany adaptacyjne – a jednocześnie zwiększa udział energii odnawialnych w ogólnej konsumpcji. W momencie kiedy perceptron przechodzi we fristajl, czyli kiedy już sam buduje wartości danych wejściowych na podstawie zapamiętanych informacji o rzeczywistości, wszystko się zmienia. Scenariusz 0 oraz scenariusze A.1 i A.2 utrzymują sztywną strukturę logiczną (niską wartość funkcji spójności) oraz mniej więcej ten sam mix energetyczny, w sensie względem odnawialnych. Z kolei scenariusze B.1 i B.2 wracają częściowo do poprzedniej, nieco luźniejszej struktury logicznej perceptronu (wartość funkcji spójności zwiększa się), a jednocześnie generują coraz większy odsetek energii odnawialnych.

 

Kiedy więc robię zbliżenie na 100 pierwszych rund eksperymentalnych, obserwuję coś przeciwnego niż relacje zaobserwowane dla 5000 rund. Perceptron wyposażony w zdolność uczenia się na swojej własnej spójności zachowuje się jak o wiele bardziej inteligentny rój niż perceptron bez takiej zdolności. Przy 5000 rund perceptron obserwujący własną spójność wydawał się mieć kij w tyłku, a tutaj, przy zbliżeniu na pierwsze 100 rund, jest dokładnie odwrotnie: jest bardziej elastyczny i jakby śmielszy i więcej fantazji ma i w ogóle. Co ciekawe, perceptron operujący stosunkowo niewielkim rozróżnieniem między karą a nagrodą  –  jeżeli (e > y*), to propaguj e, a jeżeli (e ≤ y*), to propaguj 0,95*e – buja się bardziej niż ten, który operuje rozróżnieniem jak jeden do dwóch.

 

Najważniejszym czynnikiem różnicującym procesy uczenia się okazuje się być obserwacja własnej spójności. Jeżeli traktuję perceptron jako przedstawienie rzeczywiście działającej inteligencji zbiorowej, społeczność wyposażona w zdolność wyciągania wniosków z własnej spójności może nauczyć się więcej, niż społeczność pozbawiona takiej zdolności. No jednak musi być jakieś jednakowoż. Jednakowoż, kiedy sięgam do rundy eksperymentalnej 5000, obraz się zmienia. Perceptron wyposażony w zdolność obserwacji własnej spójności generuje odsetek energii odnawialnych ok. 16,5%. Z kolei ten, który ignoruje własną spójność osiąga ok. 17,5%. Coś się zmienia gdzieś po drodze między setną rundą eksperymentalną, a tą pięciotysięczną. Jest taka masa krytyczna pamięci zgromadzonej przez perceptron, która w pewnym sensie odwraca jego działanie. Ciekawe.

[1] Stradner, J., Thenius, R., Zahadat, P., Hamann, H., Crailsheim, K., & Schmickl, T. (2013). Algorithmic requirements for swarm intelligence in differently coupled collective systems. Chaos, Solitons & Fractals, 50, 100-114.

Dwie kule w Kalifornii i wielebny Thomas Bayes

Wstępniak video na You Tube

Kontynuuję moją wycieczkę pokazową po krainie na granicy matematyki i codzienności. Tym razem chcę omówić nieco obszerniej podstawy czegoś, czym wykładowcy straszą (czasami) studentów na zajęciach z podstaw statystyki. „Myślicie, że te podstawy są trudne ? To poczekajcie, aż zaczniecie się uczyć statystyki Bayesowskiej: to dopiero jest trudne”. Chcę przybliżyć moim czytelnikom podstawy właśnie tego straszaka, czyli statystyki Bayesowskiej.

Aha, no tak. We wcześniejszych wpisach zapowiadałem, że będę omawiał sposób, w jaki podstawowe twierdzenia nauk społecznych można zastosować w praktyce. Przyjrzeliśmy się już dwóm takim twierdzeniom. Pierwsze, całkiem banalnie mówi: jesteśmy zbiorowością (patrz „Gra w tożsamość”). Drugie postuluje, że prawie wszystko co robimy, robimy w sposób powtarzalny, według powtarzalnych wzorców, a każdy taki wzorzec można rozpisać jako sekwencję (patrz „Czasami coś odrasta”). Pora na trzecie: powtarzalne wzorce zachowań tworzymy poprzez uczenie się na kolejnych eksperymentach.

Wszystko zaczęło się w roku 1763 roku, chociaż może nieco wcześniej. W dniu 23 grudnia 1763 pan John Canton, redaktor czasopisma „Philosophical Transactions”, wydawanego nakładem Królewskiego Towarzystwa Naukowego, otrzymał list od pana Richarda Price’a (nie mylić ze współcześnie żyjącym pisarzem o dokładnie tym samym imieniu i nazwisku), buntowniczego kaznodziei związanego z architektami amerykańskiej niepodległości, podobno głównie Benjaminem Franklinem. List był wysłany 10 listopada 1763 roku i rekomendował panu Johnowi Cantonowi, jako materiał na artykuł, esej napisany (podobno) przez nieżyjącego już wówczas przyjaciela Richarda Price’a, wielebnego Thomasa Bayesa. Price twierdził, że wypełniając ostatnią wolę nieżyjącego Bayesa, porządkował jego osobiste dokumenty i znalazł wśród nich właśnie ten. Redaktor John Canton musiał być pod sporym wrażeniem nadesłanego tekstu, ponieważ ukazał się on jeszcze w tym samym, 1763 roku, którego zostało wtedy tylko 7 dni, pod tytułem: „An Essay towards Solving a Problem in the Doctrine of Chances[1].

Oto jak Richard Price przedstawiał w swym liście do Johna Cantona główną myśl Thomasa Bayesa: „[…] Jego zamiarem było znaleźć metodę, poprzez którą moglibyśmy wydać osąd na temat prawdopodobieństwa że jakieś zdarzenie będzie miało miejsce, w danych okolicznościach, w oparciu o supozycję że nie wiemy nic poza tym, że w takich samych okolicznościach wydarzyło się to już pewną liczbę razy i nie powiodło się w jakiejś innej liczbie razy. […] Dodaje on, że nie jest trudno to wyliczyć, pod warunkiem posiadania jakiejś reguły dla oszacowania szans, że prawdopodobieństwo zdarzenia doskonale nam nieznanego mieści się między jakimikolwiek znanymi stopniami prawdopodobieństwa, jeszcze przed wykonaniem jakichkolwiek eksperymentów […]”.

Richard Price przedstawił redaktorowi Johnowi Cantonowi myśl swojego przyjaciela z prawie doskonałą wiernością. Prawie, gdyż Thomas Bayes wprowadzał jednak element eksperymentu w swoim modelu matematycznym. W celu wyjaśnienia logiki tego eksperymentu i jego związku z całą przedstawianą tu teorią, poniżej przedstawiam moją własną reprodukcję tzw. prostokąta Bayesa. Narysowałem go tak wiernie w stosunku do oryginału z 1763 roku, jak tylko mogłem. Na razie oznaczenia prostokąta niewiele Wam powiedzą, ale wyjaśniam je dalej pod rysunkiem. W moich wyjaśnieniach staram się streścić i odtworzyć oryginalny wywód Thomasa Bayesa też tak wiernie, jak to możliwe.

Prostokąt Bayesa

Wyobraźmy sobie, że wszystko co może się wydarzyć przedstawiamy jako płaszczyznę, a dokładnie jako skończony prostokąt ABCD wyznaczony na dwuwymiarowej płaszczyźnie; podobne geometryczne podejście jak w przypadku rozkładu normalnego ( patrz „Czasami coś odrasta” ). Wyobraźmy sobie, że mamy dwie kule: W i O. Stajemy twarzą do naszego prostokąta tak, że bok AB jest przed nami, jak rozciągnięta poprzecznie linka. W sumie tyłem też można stanąć, ale wtedy trzeba rzucać przez ramię; matematycznie nie ma to większego znaczenia. Najpierw rzucamy kulą W. Nie musimy jej nadawać żadnego konkretnego celu: po prostu staramy się, żeby potoczyła się po prostokącie ABCD. Trajektorię, jaką pokonała nasza kula W, oznaczamy jako odcinek oS.

Teraz rzucamy kulą O, ale przed rzutem zastanawiamy się, gdzie może trafić w nasz prostokąt ABCD. Pierwsza możliwa odpowiedź brzmi: gdziekolwiek. Druga, alternatywna odpowiedź brzmi jednak: albo w prostokąt oBCS, albo w przyległy do niego prostokąt AoSD. Rozumiecie ? Pierwszy rzut – kulą W – podzielił nam całą przestrzeń możliwych zdarzeń na dwie części. Pytanie o to, co się stanie następnie można uprościć: albo walnie w jedną część przestrzeni, albo w drugą. Sukces albo porażka.

Geometria ma swoje prawa: prawa proporcji. Kiedy już rzuciliśmy kulą W i podzieliliśmy w ten sposób nasz prostokąt ABCD na dwa mniejsze – oBCS oraz AoSD – prawdopodobieństwo że kolejny rzut kulą O trafi w któryś z nich jest zależny od ich powierzchni. Im większy jest prostokąt oBCS w stosunku do macierzystego ABCD, tym większa szansa że kula O trafi właśnie w niego. Ponieważ to są prostokąty, naszą proporcję prawdopodobieństwa można nawet jeszcze bardziej uprościć: prawdopodobieństwo trafienia w prostokąt oBCS jest takie, jak proporcja długości odcinka oB do długości odcinka AB. Genialnie proste.

W ten sposób działa nasz umysł. Wchodzimy na nieznany teren, na przykład do nowego biznesu albo zaczynamy nową pracę. Najpierw określamy granice, w których cokolwiek może się wydarzyć, czyli prostokąt ABCD. Następnie zaczynamy eksperymentować: rzucamy kulą W. Próbujemy nawiązać pierwsze kontakty, przeprowadzić pierwsze własne pomysły itd. Każda kolejna taka próba jest jak rozpoczynany wciąż na nowo eksperyment Bayesa. Rzut kulą W dzieli nam przestrzeń wszystkiego, co się może zdarzyć na dwie kategorie: sukces albo porażkę.

W ten sposób jednostki i zbiorowości uczą się nowych wzorców zachowań. Coś robimy. Spośród wszystkiego co się może zdarzyć, to co robimy trafia albo w prostokąt oBCS (sukces, dostajemy efekty, których oczekiwaliśmy po naszym działaniu) albo w AoSD (porażka, czyli kicha, czyli nam nie wyszło). Sekwencja sukcesów utwierdza nas w przekonaniu, że nasze działanie ma sens i z każdym sukcesem utrwalamy odpowiedni wzorzec zachowań. Sekwencja porażek skłania do refleksji, że w naszym doskonałym planie być może powinniśmy wnieść drobne korekty i następnie próbujemy znowu. Jeżeli w całkowitym zbiorze n prób będziemy mieli większość sukcesów, utrwalimy nasze wzorce zachowań. W teorii uczenia się jest to określane jako wykształcanie świadomej kompetencji. Jeżeli natomiast w sekwencji n prób mamy większość porażek, wtedy będziemy mnożyć wciąż nowe warianty zachowań i sprawdzać, który przynosi efekty. Takie zjawisko jest z kolei określane jako budowanie świadomej niekompetencji, czyli budowanie wiedzy na temat tego, kiedy nam nie wychodzi.

Sformalizujmy nieco to rozumowanie. Jeżeli na 10 prób mamy 70% prawdopodobieństwo ośmiu sukcesów i 2 porażek, całe nasze zachowanie będzie szło w kierunku utrwalania obecnie rozgrywanych strategii i kształtowania świadomej kompetencji. Jeżeli natomiast będziemy mieli 70% szans na 8 porażek i 2 sukcesy, nasze działania będą szły w kierunku budowania świadomej niekompetencji i szukania nowych rozwiązań. Prawdopodobieństwo, które starał się wyliczyć wielebny Thomas Bayes – prawdopodobieństwo p sukcesów na n prób – to obiektywny stan rzeczywistości, który nadaje kierunek naszym procesom uczenia się.

Wracam do kwestii proporcji. Przypuśćmy, że nasz pierwszy rzut kulą W wyjdzie prawie dokładnie pośrodku prostokąta ABCD. Wtedy proporcja pomiędzy odcinkiem oB i całym bokiem AB będzie bliska 50%. Prawdopodobieństwo sukcesu w kolejnym rzucie, tym kulą O, jest również bliskie 50%. Prawdopodobieństwo, że sekwencja kolejnych rzutów kulą O będzie sekwencją sukcesów, która utrwali nasz wzorzec zachowań, jest prawie równe prawdopodobieństwu, że będzie to sekwencja porażek i skłoni nas do poszukiwania wciąż nowych rozwiązań.

Nooo, nareszcie ! Pierwsza praktyczna wskazówka od wielebnego Bayesa ! Jeżeli nasz system wartości jest wyostrzony, tzn. bardzo jasno określa czego chcemy i co określamy jako sukces – czyli nasz prostokąt oBCS jest wyraźnie większy albo wyraźnie mniejszy od AoSD – wtedy potrafimy świadomie zbudować wyraźne rozróżnienie między doświadczalnym uczeniem się skierowanym na utrwalanie naszych wzorców zachowań, a uczeniem się ukierunkowanym na szukanie czegoś nowego. Jeżeli natomiast nasz system wartości jest taki cośkolwiek nijaki i nie wiemy dokładnie, na czym nam zależy, wtedy trudno jest nam określić czy lepiej utrwalać to, co już robimy czy też może szukać nowych rozwiązań. Czyli, tak po ludzku, jak wiemy czego chcemy to uczymy się szybciej, a jak nie wiemy, to wolniej.

Druga praktyczna wskazówka, taka na wielkie okazje: nasz system wartości jest określony przez nasze doświadczenie. Zawsze gdzieś tam u zarania i w kolebce zdarzeń był ten rzut kulą W, który podzielił prostokąt naszej rzeczywistości na dwie kategorie. Czasami warto się zastanowić, szczególnie kiedy czujemy że coś jest naprawdę nie tak, czy przypadkiem nie byłoby warto zainicjować nowej sekwencji i rzucić tą kulą W po raz kolejny.

No dobra, no to jakie jest w końcu to prawdopodobieństwo p sukcesów na n prób ? Thomas Bayes podszedł do tego w sposób, który dzisiaj znamy jako rozkład dwumianowy. Nie byłbym belfrem z krwi i kości, gdybym teraz nie zrobił na ten temat szczegółowego wykładu. Mamy prawdopodobieństwo sukcesu a, że nasza kula O walnie w jeden prostokąt wykreślony przez uprzedni rzut kulą W) oraz prawdopodobieństwo porażki b, czyli że kula O trafi niezupełnie w ten właśnie prostokąt. Mamy n prób, gdzie oczekujemy p sukcesów oraz q = n – p porażek. Z tych zmiennych robimy dwumian Newtona: (a + b)p + q.

Jeżeli ulegniemy pokusie dodawania w nawiasie, czyli jeżeli dodamy a + b, wtedy wyjdzie nam 1 – czyli 100% – i to samo wyjdzie nam po podniesieniu do jakiejkolwiek potęgi. Jeżeli jednak zachowamy się zgodnie z logiką dwumianu Newtona, to otrzymamy wielomian, gdzie jednym ze składników będzie: {n!/[p!(n-p)!]}*ap*bq. Ten właśnie składnik wielomianu jest prawdopodobieństwem otrzymania p sukcesów w n próbach. W składniku tym mamy dwa odrębne czynniki. Z jednej strony mamy czynnik ap*bq , czyli ściśle pojęte prawdopodobieństwo że zdarzy się p sukcesów i q porażek. Drugi czynnik to raczej współczynnik – tzw. współczynnik wielomianu – czyli {n!/[p!(n-p)!]}, który odzwierciedla liczbę możliwych sposobów, na które możemy mieć p sukcesów i q porażek na n prób.

Ten drugi czynnik, czyli {n!/[p!(n-p)!]}, ma ciekawą własność. Wyobraźmy sobie, że mamy 100 prób, czyli n = 100 oraz że chcemy sprawdzić prawdopodobieństwo osiągnięcia 33 sukcesów i 67 porażek. Wyrażenie {n!/[p!(n-p)!]} daje nam wtedy wynik 294 692 427 022 540 894 366 527 900 sposobów wystąpienia takiej kombinacji. Strasznie dużo. Co ciekawe, tyle samo, co liczba możliwych kombinacji 67 sukcesów i 33 porażek. Teraz chcę 58 sukcesów na 100 prób. Wyrażenie {n!/[p!(n-p)!]} jest wtedy równe 28 258 808 871 162 574 166 368 460 400. Jeszcze bardziej strasznie dużo, dokładnie dwa rzędy wielkości więcej co poprzednie strasznie dużo. Jeżeli mogę zadowolić się tylko 3 sukcesami, mogę je otrzymać w 100 próbach na {n!/[p!(n-p)!]} = 161 700 sposobów, tyle samo zresztą co 97 sukcesów na 100 prób. Ciągle dużo ale już nie tak strasznie dużo.

Rozwijam teraz dalej myśl, że teoria Thomasa Bayesa odzwierciedla nasze procesy uczenia się poprzez eksperymentowanie. Powyższy pokaz obliczeniowy wskazuje na ciekawą własność tego procesu. Proces eksperymentowania i uczenia się, gdzie liczba sukcesów jest zbliżona do liczby porażek, czyli gdzie utrwalanie wzorców zachowań (rozwijanie świadomej kompetencji) jest mniej więcej zrównoważone z szukaniem nowych rozwiązań (rozwijaniem świadomej niekompetencji) może się wydarzyć na więcej możliwych sposobów niż procesy skrajne, gdzie mamy albo prawie wyłącznie porażki (prawie wyłącznie uczymy się, co nam nie wychodzi) albo prawie same sukcesy i pracowicie utwierdzamy się w doskonałości naszych metod działania.

To wydarzyło się pod koniec 1763 roku. Inna ciekawa rzecz wydarzyła się całkiem niedawno. W dniu 10 sierpnia 2018 roku gubernator stanu Kalifornia podpisał i przekazał Sekretarzowi Stanu akt prawa stanowego, nakreślający plan dla przejścia gospodarki całego stanu Kalifornia w 100% na energie odnawialne[1]. Temat energii odnawialnych jest drogi mojemu sercu, prowadzę na ten temat badania i staram się tworzyć koncepcje biznesów dla rozwoju energii odnawialnych. Teraz staram się wykorzystać ten konkretny przypadek dla zilustrowania zasad racjonalnego eksperymentowania zgodnie z filozofią matematyczną Thomasa Bayesa. Tak jest, wezmę artykuł napisany w osiemnastym wieku i zastosuję jego założenia teoretyczne do interpretacji działań podejmowanych przez stan Kalifornia dla przejścia na energie odnawialne, w dwudziestym pierwszym wieku.

We wstępie owej kalifornijskiej ustawy możemy się dowiedzieć, iż przed jej uchwaleniem niejaka PUC, czyli Public Utilities Commission, czyli po naszemu Komisja ds. Infrastruktury Publicznej, miała prawo egzekwować od wszystkich detalicznych dostawców energii elektrycznej aby w ich koszyku dostaw energie odnawialne miały następujący udział: 25% w dniu 31 grudnia 2016, 33% w dniu 31 grudnia 2020, 40% dnia 31 grudnia 2024, 45% trzydziestego pierwszego grudnia 2027 oraz 50% w dniu 31 grudnia 2030. Tenże sam wstęp oznajmia, że stan (Kalifornia) wziął i się zastanowił i stwierdził, że jak się da tyle, to pewnie da się i więcej, no i zrewidowano podanej powyżej progi. Teraz postanawia się, że trzydziestego pierwszego grudnia 2024 roku elektryczność ze źródeł odnawialnych ma stanowić 44% sprzedaży detalicznej i ma to podskoczyć do 52% w dniu 31 grudnia 2027, aby osiągnąć 60% w dniu 31 grudnia 2030 roku.

Jestem ekonomistą, więc lubię wykresy. Poniżej, możecie zobaczyć tą zmianę polityki energetycznej właśnie w postaci wykresu.

Ustawowe cele stanu Kalifornia w zakresie udziału energii odnawialnych w detalicznej sprzedaży elektryczności

Pytanie nr 1: w jaki sposób cały stan – w zasadzie cały kraj, bo Kalifornia jest ludnościowo większa od Polski – może takie progi jak wymienione powyżej ustalić w sposób racjonalny i realistyczny ? Pytanie nr 2: skąd cały taki kraj wie, że można te progi podnieść ?

Przypuśćmy, że każdy z Was, moi czytelnicy, chce takie wyliczenia przeprowadzić. Skąd wiadomo, jaki procent energii odnawialnych można wyznaczyć jako cel na przyszłość dla społeczności liczącej sobie ponad 30 milionów ludzi ? Wiadomo, czego nie mamy:  nie mamy żadnej reprezentatywnej próbki wielodziesięciomilionowych populacji wraz z ich proporcjami elektryczności dostarczanej ze źródeł odnawialnych. Na tym poziomie analizy nie mamy więc podstaw do rozumowania w kategoriach typowego rozkładu statystycznego ( patrz „Czasami coś odrasta” ). Jak więc podejść do sprawy racjonalnie i wyznaczyć cele, które mają szanse być zrealizowane ?

Politycznie najprościej jest wyznaczyć takie cele, o których wiemy na pewno że zostaną zrealizowane. Jako prawodawca mamy więc przed sobą twarde prognozy, że w roku 2024 odsetek energii odnawialnych wyniesie 46 – 48% i do ustawy wpisujemy 44% itd. Jeżeli jednak myślimy nieco bardziej ambitnie i chcemy stworzyć rzeczywistą strategię przejścia, trzeba zapuścić się w krainę ryzyka i przybić jakiś zakład z losem.

No dobra, ale miało być też o Kalifornii i o jej przejściu na energie odnawialne. W zasadzie wszędzie na świecie przejście to ma szczególną postać, odmienną od tego co działo się jakieś 100 – 150 lat temu, kiedy z kolei przestawialiśmy się na energię z paliw kopalnych. Wtedy, w przeszłości, węgiel, gaz czy ropa naftowa zastępowały młyny wodne czy wiatrowe, tudzież domowe piece, w postaci wielkich skoków. Otwierała się nowa duża elektrownia i za jednym zamachem „przestawiała” na paliwa kopalne całe duże społeczności. Z energiami odnawialnymi jest przeciwnie. Z wyjątkiem niektórych miejsc na świecie (np. kompleksu słoneczno-cieplnego Ouarzazate w Maroku), energie odnawialne pojawiają się w postaci stosunkowo niewielkich, lokalnych instalacji. Przejście na energie odnawialne to stopniowe przechodzenie lokalnych społeczności na „paczki” energii pochodzącej z wody, wiatru czy słońca.

Mamy tu do czynienia z procesem zbiorowego uczenia się. Najpierw zbiorowość rzuca kulą W, jak u Bayesa i jest to zresztą rzut wielokrotny. Zaczyna się od niewielkiej liczby lokalnych instalacji opartych na energiach odnawialnych. Przedsięwzięcia te są eksperymentem, który daje wiedzę na temat tego, co można uznać za sukces ekonomiczny i technologiczny, a co jest porażką. Każde kolejne przedsięwzięcie, spośród tych pionierskich, dostarcza nowych informacji. Przychodzi moment, kiedy „sukces” i „porażka” są na tyle ściśle zdefiniowane, że można pokusić się o określenie ich prawdopodobieństwa.

Według danych udostępnianych przez U.S. Energy Information Administration, przeciętny mieszkaniec Kalifornii zużywa rocznie 199 milionów Btu (British Thermal Units) energii, czyli ok. 58 321 kilowatogodzin. Ludność Kalifornii, zgodnie z danymi World Population Review, to obecnie  39 776 830 osób. Jeżeli strukturę rynku energii w Kalifornii wyrażamy w procentach, to dzielimy ten rynek na „paczki”, z których każda równa jest 1% tegoż rynku, czyli jest to 1% * 39 776 830 osób * 58 321 kilowatogodzin =  23 198 301 877,32 kilowatogodzin = 23 198,3 gigawatogodzin. Jeżeli ustawa zakłada, że

Wskaźniki procentowe zawarte w cytowanej tu ustawie Parlamentu Stanu Kalifornia można zinterpretować jako miary prawdopodobieństwa. Jest to prawdopodobieństwo, że losowo wybrana „paczka” energii równa 23 gigawatogodziny z groszami wyląduje w prostokącie „energie odnawialne” a nie w prostokącie „energia z paliw kopalnych”. Innymi słowy, zbiorowość stanu Kalifornia rzuca już drugą kulą, czyli kulą O. W ustawie jest wpisane założenie, że prawdopodobieństwo to będzie rosło w czasie. Założenie to jest nawet wzmocnione przez fakt, że najnowszy tekst tych przepisów zakłada wyższe prawdopodobieństwo niż poprzednia wersja. Zgodnie z filozofią matematyczną Bayesa jest tylko jeden sposób, aby to prawdopodobieństwo wzrosło: prostokąt odpowiadający kategorii „sukces w eksploatacji energii odnawialnych” musi być coraz większy w relacji do całkowitych rozmiarów prostokąta ABCD, czyli całego uniwersum zdarzeń. Innymi słowy, definicja sukcesu musi być coraz bardziej pojemna.

Jest jeszcze drugi poziom logiczny w tym rozumowaniu. Pamiętacie wyliczenia współczynnika wielomianu sprzed kilku akapitów ?No wiecie, tego {n!/[p!(n-p)!]}. Pokazałem wtedy wyliczenia dla 100 prób, a więc tak jakby pokazywał je dla 100 paczek energii, z których każda ma te tam 23 gigawatogodziny z lekkim hakiem, w sensie że w Kalifornii, bo u nas w Polsce to taka paczka miałaby jakieś 11 gigawatogodzin. Oni zużywają więcej energii na transport i na klimatyzację. W każdym razie, logika rachunku dwumianowego, opartego na rozumowaniu Thomasa Bayesa sugeruje, że istnieje 100 891 344 545 564 193 334 812 497 256 sposobów uzyskiwania ze źródeł odnawialnych 50 paczek energii na 100 możliwych. To był kiedyś wyznaczony cel dla Kalifornii na rok 2030. Jest to jednocześnie największa możliwa liczba kombinacji sukcesów i porażek w 100 próbach. Innymi słowy, jest to proces uczenia się o największym potencjale przynoszenia informacji z kolejnych eksperymentów. Teraz, od 10 września, ten cel został zrewidowany do 60%, a więc do 60 paczek energii na 100 możliwych. Jest 13 746 234 145 802 811 501 267 369 720 sposobów uzyskania 60 sukcesów na 100 prób. To jest ponad siedem razy mniej niż w przypadku 50 sukcesów. Nowe ustawodawstwo stanu Kalifornia przesunęło moment maksymalnie efektywnego, zbiorowego uczenia się wstecz w czasie, z roku 2030 na moment gdzieś między rokiem 2024 a 2027. Ciekawe.

[1] Senate Bill No. 100, CHAPTER 312, An act to amend Sections 399.11, 399.15, and 399.30 of, and to add Section 454.53 to, the Public Utilities Code, relating to energy. [Approved by Governor September 10, 2018. Filed with Secretary of State September 10, 2018.]

 

[1] „An Essay towards Solving a Problem in the Doctrine of Chances”. By the Late Rev. Mr.Bayes, F. R. S. Communicated by Mr. Price, in a Letter to John Canton, A. M. F. R. S. ; Author(s): Mr. Bayes and Mr. Price; Source: Philosophical Transactions (1683-1775), Vol. 53 (1763), pp. 370-418. Published by: Royal Society; Stable URL: http://www.jstor.org/stable/105741