Kalendarz z rokiem pierwszym, czyli pamięć sieci neuronalnej

Wstępniak video na You Tube

Po wielu tygodniach przerwy wracam do blogowania. W tym semestrze idę na mój dotychczasowy rekord dydaktyczny: w sumie 630 godzin zajęć w ciągu 4 miesięcy. Pierwsze dwa – październik i listopad – ciut mi przemieliły korę mózgową. Mam zwyczaj prowadzić zajęcia w sposób, który twórcy NLP (Neurolinguistic Programming) – Richard Bandler i John Grinder – nazywali „uptime”. Nie korzystam z notatek ani z prezentacji z Power Point, jeżeli już coś wyświetlam to raczej materiały źródłowe, na przykład raporty roczne spółek, a w wokalu jadę z pamięci oraz improwizuję. Fantastyczne uczucie dla mnie i mam nadzieję, że studentom też się podoba, ale synapsy to mam po tym kompletnie wyprane. Jednakowoż taki dydaktyczny freestyle sprzyja myśleniu na głos, przetwarzaniu własnych przemyśleń i krystalizacji nowych treści. Właśnie trochę skrystalizowałem tam pod sufitem i staram się tym podzielić na świeżo.

„Na świeżo” oznacza, że mam mnóstwo pomysłów na raz i wyzwaniem jest ułożyć i przekazać je w sposób zrozumiały dla odbiorcy. No więc tak: kilka rzeczy zbiegło się w czasie. Ja wiem: z reguły tak jest, że (co najmniej) kilka rzeczy zbiega się w czasie. Określamy to mianem rzeczywistości i to jest tak cholernie skomplikowane, że potrzebujemy uproszczonego obrazu tego czegoś i po to właśnie jest nam potrzebny język, jako struktura logiczna dla ogarnięcia tego wszystkiego.

Wracam do adremu. Od kilku miesięcy pracuję nad czymś, co jest jednocześnie koncepcją naukową i możliwym pomysłem na biznes. Nazwałem to coś EneFin. Jest to pomysł na finansowanie małych, lokalnych dostawców energii (najlepiej odnawialnych), wraz z finansowaniem lokalnych sieci dystrybucji energii. Zaobserwowałem, przynajmniej w krajach europejskich, że cena za 1 kWh energii płacona przez drobnych klientów, głównie przez gospodarstwa domowe, jest znacząco wyższa od ceny płaconej przez tych dużych. Wyobraźmy sobie sytuację, kiedy gospodarstwa domowe kupują energię z odnawialnych źródeł, od lokalnego dostawcy, na przykład od lokalnej, małej elektrowni wodnej. Za każdą kilowatogodzinę płacą tyle, ile by płacili dużemu dostawcy – a więc cenę stosunkowo wysoką – jednak w ramach tej opłaty energię ściśle pojętą dostają po niższej cenie, zarezerwowanej normalnie dla dużych odbiorców, a za różnicę „wysoka cena dla małych klientów minus niska cena dla dużych klientów” otrzymują udziały w kapitale swojego dostawcy, czy to jako ściśle pojęte udziały albo akcje, czy to jako papiery dłużne (weksle, obligacje itp.).

Między lokalnym operatorem małych turbin wodnych a jego lokalnymi klientami tworzy się w ten sposób układ na poły spółdzielczy. Każda megawatogodzina energii zakupionej przez odbiorców jednocześnie wzbogaca bazę kapitałową dostawcy, który dzięki temu może się rozwijać i modernizować. To jednak dopiero część mojego pomysłu. Druga część to stworzenie wirtualnej platformy transakcyjnej, na której te złożone kontrakty – gwarancja dostawy energii po określonej cenie plus udziały w kapitale dostawcy – mogą być kupowane i sprzedawane, np. jako jednostki specjalnie stworzonej w tym celu kryptowaluty. Tego typu projekt już jest uruchomiony w Estonii: nazywa się WePower. Staram się rozwinąć własną, autorską koncepcję czegoś podobnego.

Staram się rozwinąć ten pomysł na biznes i jednocześnie pracuję nad modelem teoretycznym, który pozwoliłby przewidzieć przyswajanie takiego pomysłu przez konkretny rynek energii złożony z konkretnych nabywców. Chcę zbadać i opracować naukowo sposób, w jaki lokalne rynki mogą reagować na możliwość tworzenia struktur biznesowych według mojego pomysłu. Postanowiłem walnąć z grubej rury, pójść za najnowszą modą w naukach ekonomicznych i zaprojektować – przynajmniej teoretycznie – sieć neuronalną, której uczenie się odzwierciedlałoby zachowanie takiego rynku. Stąd konieczność nauczenia się czegoś na temat sieci neuronalnych oraz sztucznej inteligencji. Tak, dopiero muszę się tego nauczyć.

Kiedy uczę się jakiejś nowej teorii, z reguły robię to z konkretnej potrzeby: mam do rozpracowania pomysł, który wymaga tej teorii. Mam więc swoje intuicje i konfrontuję je z ustaloną wiedzą teoretyczną. Teoria sieci neuronalnych zaczyna się od definicji pojedynczego neuronu. Jak na razie, znalazłem definicje dwóch rodzajów neuronów: perceptronów oraz neuronów sigmoidalnych (logistycznych). Te pierwsze odpalają tylko wtedy, kiedy sygnał jest taki jak trzeba, a jak nie, to śpią. Są zerojedynkowe. Matematycznie, perceptron to funkcja wyrażona jako układ dwóch implikacji logicznych. Jeżeli siła sygnału x przekracza poziom krytyczny, wtedy perceptron zwraca 1. Jeżeli sygnał pozostaje słabszy niż wartość krytyczna, perceptron daje 0. Sigmoidy są inne; ciągle są pobudzone, w sensie że ciągle zwracają jakiś wyjściowy sygnał, jednak natężenie tego sygnału wyjściowego zmienia się w zależności od natężenia i struktury sygnału wejściowego. Delta na wejściu daje deltę na wyjściu, tak żeby jak najprościej.

No i te neurony układa się w warstwy. Każda warstwa dostaje sygnał, przetwarza go perceptronowo albo sigmoidalnie, no i w ten sposób tworzy sygnał dla kolejnej warstwy. Aha, no i są jeszcze neurony tan h, czyli te oparte na funkcji tangensa hiperbolicznego. W sumie, z tymi teoretycznymi neuronami to jest jedna ciekawa rzecz. Jak czytam opracowania na ten temat, to wygląda tak, że ktokolwiek by się nie brał za matematyczne przedstawienie neuronu jako funkcji, prędzej czy później dochodzi do funkcji zawierającej komponent wykładniczy, czyli stałą Eulera e = 2,718281828459 podniesioną do potęgi odzwierciedlającej siłę lub obecność sygnału, jaki ten neuron ma przekazać dalej.

To ciekawe. Niedawno złożyłem do recenzji manuskrypt artykułu na temat efektywności energetycznej gospodarek narodowych, pod roboczym tytułem „Apprehending energy efficiency: what is the cognitive value of hypothetical shocks?”. W badaniach, które przedstawiłem w tym właśnie artykule wyszło mi, że największą moc wyjaśniającą w analizie statystycznej mogę uzyskać wtedy, kiedy dane empiryczne potraktuję jako prymitywne i ogólnie dépassé, a więc kiedy zamiast brać je takimi jakimi są, przekształcę je we współczynniki funkcji wykładniczej, czyli funkcji opartej na stałej Eulera. W ogóle najlepiej, jak ta funkcja odzwierciedla stosunkowo niedawny wstrząs, którego fala uderzeniowa rozprzestrzenia się z przeszłości w przyszłość.

Majaczę ? Nie da się tego wykluczyć. Rzeczywistość może być snem motyla. Postaram się jednak wyjaśnić, o co mi chodzi. Stała Eulera ma ciekawą własność: można ją wykorzystać do przedstawienia przebiegu w czasie takich zjawisk, gdzie każdy kolejny krok zależy od kroku poprzedniego. Biorę szereg czasowy liczb, które odzwierciedlają przebieg jakiegoś zjawiska w czasie. W ekonomii książkowym przykładem są szeregi czasowe cen: ropy naftowej, kursu akcji na giełdzie itp. Każdą cenę w szeregu wyrażam teraz jako potęgę stałej Eulera, czyli liczba obserwowana = en. Ta potęga liczby e to jest logarytm naturalny liczby obserwowanej.

Logarytmy naturalne są interesujące. W ekonomii i finansach już dawno odkryliśmy, że kiedy zamiast szeregu czasowego cen akcji na giełdzie weźmiemy szereg ich logarytmów naturalnych, to jakby uspokajamy grę. Eliminujemy doraźne odjazdy i łatwiej jest nam dostrzec długofalowy trend. Ja jednak o czym innym. Otóż ten logarytm naturalny liczby można jeszcze rozłożyć na dwie części, a dokładnie to idzie tak że liczba obserwowana = en = et*a , gdzie ‘t’ to numer kolejnego okresu, zaś ‘a’ to współczynnik wykładniczy.

W artykule, który właśnie popełniłem, tak właśnie podszedłem do danych empirycznych na temat efektywności energetycznej gospodarek narodowych (czyli do tego, ile Produktu Krajowego Brutto potrafimy wytworzyć średnio z jednego kilograma równoważnika ropy naftowej) oraz czynników warunkujących tą efektywność: wziąłem i ściąłem stałą Eulera, czyli przekształciłem w logarytmy naturalne, a potem te logarytmy jeszcze rozłożyłem na czynnik czasu z jednej strony i lokalny współczynnik wykładniczy z drugiej strony. „Lokalny” współczynnik wykładniczy oznacza przekształcenie, w którym liczba obserwowana = en = et*a(t) , czyli współczynnik wykładniczy jest charakterystyczny dla danego konkretnego momentu t.

Tu zaczyna się najciekawsza część. To, który mamy konkretnie moment zależy od tego, na kiedy ustaliliśmy moment początkowy całego szeregu. Każdy znany ludzkości kalendarz słoneczny (czyli taki, gdzie numerujemy po kolei lata) zawiera założenie, jak dawno temu był rok zerowy. W moich badaniach dane empiryczne obejmują okres lat 1990 – 2014. Przyjąłem dwa alternatywne kalendarze. W jednym z nich rokiem zerowym jest 1889, a więc wszystko zaczęło się sto lat przed początkiem obserwacji. Wtedy moja liczba obserwowana =  en  =     e(t-1889)*a(t-1889) . W drugim kalendarzu mój rok zerowy to 1989, czyli wszystko dzieje się w sumie na świeżo, a konkretnie liczba obserwowana = en = e(t-1989)*a(t-1989) .

Ktoś mógłby zadać pytanie: jaka to różnica ? Już wyjaśniam. Kiedy mój kalendarz zaczyna się 100 lat wcześniej, logarytmy naturalne moich kolejnych obserwacji dzielę kolejno przez liczby o stosunkowo niewielkim skoku: 1990 – 1889 = 101, 1991 – 1889 = 102 itd. Między 101 a 102 nie ma wielkiej różnicy. Kiedy dzielę logarytmy naturalne przez taki szereg współrzędnych czasu, to różnica między dzieleniem czegoś przez 101 a dzieleniem przez 102 nie powala na kolana. Jednakowoż, kiedy moja historia zaczyna się w 1989, to 1990 = 1990 – 1989 = 1, 1991 = 1990 – 1989 = 2 itd., czyli inna bajka. Logarytm naturalny obserwacji z roku 1990 dzielę przez 1, czyli nie dzielę w ogóle, logarytm naturalny obserwacji z roku 1991 tnę przez 2, kolejny dzielę na 3 itd. Tutaj każdy kolejny okres przynosi duży skok, wynikający ze struktury arytmetycznej mojego kalendarza.

Kalendarz z rokiem pierwszym w roku gregoriańskim 1989 intuicyjnie traktuję jako wyraz długoterminowego, stopniowego trendu zmian. Z kolei ten, który zaczyna się od roku 1989 traktuję jako matematyczne odzwierciedlenie jakiegoś hipotetycznego wstrząsu w roku 1989, gdzie kolejne lata są jak stopniowo słabnące wstrząsy wtórne. W badaniach empirycznych wykonanych na potrzeby artykułu wyszło mi, że właśnie takie przetworzenie danych empirycznych – czyli zrobienie z nich współczynników wykładniczych w gwałtownym procesie zmian zainicjowanym hipotetycznym wstrząsem w roku 1989 – pozwala zbudować model ekonometryczny o stosunkowo największej mocy wyjaśniającej. Wtłoczone w taki kalendarz, dane empiryczne nabierają jakby większego znaczenia i zaciera się biały szum, zawarty w każdym dużym zbiorze obserwacji.

Co to znaczy ? No właśnie staram się zrozumieć. Mam również nadzieję, że recenzent mojego artykułu też stara się to zrozumieć. Wracam teraz do sieci neuronalnych i sztucznej inteligencji. Przeglądając literaturę na temat funkcji matematycznych odzwierciedlających działanie pojedynczego neuronu – czyli tzw. funkcji transmisji sygnału – prędzej czy później znajduję ex albo e-x, gdzie e to oczywiście stała Eulera, a x to siła sygnału otrzymanego przez neuron. Ta funkcja wykładnicza siły sygnału jest z reguły wciśnięta do mianownika jakiegoś ułamka.

Teraz to ja myślę sobie tak: podnoszę stałą e do potęgi x równej sile sygnału otrzymanego przez neuron, czyli gdzieś tam w tle zakładam że siła sygnału x jest logarytmem naturalnym (tempem zmian) czegoś innego, jakiejś hipotetycznej liczby I = ex albo I = e-x. Wybrałem „I”, bo kojarzy mi się z inteligencją, ale może być równie dobrze „S” jak spryt. Tą hipotetyczną liczbę I mogę potraktować jako wyraz pamięci procesu, czyli wskaźnik siły sygnału nerwowego x mogę rozłożyć na dwa czynniki: parametr czasu ‘t’ oraz współczynnik wykładniczy ‘a’, który może być ogólny – po prostu ‘a’ – albo lokalny a(t). Poniżej staram się wyjaśnić mój tok rozumowania w sposób na poły graficzny.

No dobra, tylko po co ? Po co przekształcać funkcję aktywacyjną sieci neuronalnej tak, żeby wcisnąć do niej zmienną czasu ? Chodzi mi o pamięć. Moja głęboka intuicja na temat naszej inteligencji – indywidualnej i zbiorowej – opiera się na roli, jaką odgrywa pamięć. Jeżeli wkładam do sieci neuronalnej zmienną porządkową czasu (czyli numery kolejnych okresów), to zakładam że aktywacja neuronu z warstwy czasowej t – 1 jest w jakiś sposób odmienna od aktywacji neuronu z warstwy czasowej t + 1. Co więcej, jeżeli do takiej przekształconej funkcji neuronu sigmoidalnego włożę zmienną czasu w dwóch alternatywnych kalendarzach, jak to zrobiłem w badaniach zacytowanych powyżej. Jeden kalendarz to spokojny, długofalowy trend, taki gdzie np. t0 = 1889. Drugi kalendarz zakłada t0 = 2017, czyli od teraz wszystko zmienia się bardzo szybko. W jaki sposób zmieni to funkcjonowanie sieci neuronalnej ? No właśnie się zastanawiam.

Jeżeli przetestuję sieć neuronalną pod kątem zgodności jej wartości wyjściowych z wartościami obserwowanymi empirycznie, mogę dopasować kalendarz, czyli najlepiej pasującą sekwencję numeracji momentów t. Ciekawe…

Chodzi za mną pomysł eksperymentów behawioralnych na temat interakcji człowieka z nowymi technologiami. Być może sieć neuronalną, włącznie z elementami czasu i pamięci, można zastosować to projektowania takich eksperymentów, podobnie jak równania fizyki kwantowej stosuje się do projektowania eksperymentów w fizyce ? Taką metodę mógłbym również zastosować do symulowania sposobu, w jaki rynek energii oraz rynki finansowe przyjęłyby ten mój pomysł: EneFin.

 

Leave a Reply