Algorytmiczne sieci neuronowe idea działania, słabe i mocne strony



Podobne dokumenty
Sieć Hopfielda. Sieci rekurencyjne. Ewa Adamus. ZUT Wydział Informatyki Instytut Sztucznej Inteligencji i Metod Matematycznych.

Temat: Sieci neuronowe oraz technologia CUDA

8. Neuron z ciągłą funkcją aktywacji.

Oprogramowanie Systemów Obrazowania SIECI NEURONOWE

Metody Sztucznej Inteligencji II

Sztuczna Inteligencja Tematy projektów Sieci Neuronowe

Algorytmy sztucznej inteligencji

ZACHODNIOPOMORSKI UNIWERSYTET TECHNOLOGICZNY W SZCZECINIE

Algorytm wstecznej propagacji błędów dla sieci RBF Michał Bereta

Temat 20. Techniki algorytmiczne

Scenariusz lekcji opartej na programie Program nauczania informatyki w gimnazjum DKW /99

PRZEWODNIK PO PRZEDMIOCIE

Najprostsze modele sieci z rekurencją. sieci Hopfielda; sieci uczone regułą Hebba; sieć Hamminga;

Wykład z Technologii Informacyjnych. Piotr Mika

Projekt Sieci neuronowe

Elementy inteligencji obliczeniowej

Systemy uczące się Lab 4

Programowanie i techniki algorytmiczne

Problemy matematyczne ułatwiające tworzenie zaawansowanych algorytmów w klasach IV VIII szkoły podstawowej

S O M SELF-ORGANIZING MAPS. Przemysław Szczepańczyk Łukasz Myszor

IMPLEMENTACJA SIECI NEURONOWYCH MLP Z WALIDACJĄ KRZYŻOWĄ

Wprowadzenie do algorytmiki

Testowanie modeli predykcyjnych

Lekcja 5: Sieć Kohonena i sieć ART

Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa.

Programowanie w Baltie klasa VII

Zastosowania sieci neuronowych

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa VI

Zapisywanie algorytmów w języku programowania

Wstęp do sztucznych sieci neuronowych

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

SZTUCZNA INTELIGENCJA

PRZEWODNIK PO PRZEDMIOCIE

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa.

Wymagania edukacyjne z matematyki dla uczniów klasy VII szkoły podstawowej

Wymagania edukacyjne z informatyki dla uczniów klas VI SP nr 53 w Krakowie w roku szkolnym 2019/2020

Zagadnienia optymalizacji i aproksymacji. Sieci neuronowe.

Podstawy Sztucznej Inteligencji (PSZT)

1. Historia 2. Podstawy neurobiologii 3. Definicje i inne kłamstwa 4. Sztuczny neuron i zasady działania SSN. Agenda

; B = Wykonaj poniższe obliczenia: Mnożenia, transpozycje etc wykonuję programem i przepisuję wyniki. Mam nadzieję, że umiesz mnożyć macierze...

Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa.

1 Wprowadzenie do algorytmiki

Kilka prostych programów

Lekcja 3: Pierwsze kroki z Pythonem. Pętle

Rozdział 1 Sztuczne sieci neuronowe. Materiały do zajęć dydaktycznych - na podstawie dokumentacji programu Matlab opracował Dariusz Grzesiak

Materiały pomocnicze do ćwiczeń z podstaw techniki cyfrowej (przygotował R.Walkowiak) Dla studiów niestacjonarnych rok AK 2017/18

Wyszukiwanie binarne

Wymagania edukacyjne z matematyki dla klasy VII

Uczenie się pojedynczego neuronu. Jeśli zastosowana zostanie funkcja bipolarna s y: y=-1 gdy z<0 y=1 gdy z>=0. Wówczas: W 1 x 1 + w 2 x 2 + = 0

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Wstęp do sieci neuronowych, wykład 04. Skierowane sieci neuronowe. Algorytmy konstrukcyjne dla sieci skierowanych

Co to jest grupowanie

synaptycznych wszystko to waży 1.5 kg i zajmuje objętość około 1.5 litra. A zużywa mniej energii niż lampka nocna.

ALGORYTM RANDOM FOREST

Prof. Stanisław Jankowski

Wymagania na poszczególne oceny szkolne dla klasy VI. (na podstawie Grażyny Koba, Teraz bajty. Informatyka dla szkoły podstawowej.

KRYTERIA OCEN Z MATEMATYKI DLA KLASY I GIMNAZJUM

Wymagania edukacyjne na ocenę z informatyki klasa 3

Opis efektów kształcenia dla programu kształcenia (kierunkowe efekty kształcenia) WIEDZA. rozumie cywilizacyjne znaczenie matematyki i jej zastosowań

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa VI

Wstęp do teorii sztucznej inteligencji Wykład III. Modele sieci neuronowych.

Dariusz Brzeziński Instytut Informatyki, Politechnika Poznańska

Badacze zbudowali wiele systemów technicznych, naśladujących w komputerze ludzki mózg. Najbardziej pożyteczne okazały się sieci neuronowe.

Temat: Sztuczne Sieci Neuronowe. Instrukcja do ćwiczeń przedmiotu INŻYNIERIA WIEDZY I SYSTEMY EKSPERTOWE

Wstęp do sieci neuronowych, wykład 07 Uczenie nienadzorowane cd.

EGZAMIN MATURALNY 2013 INFORMATYKA

EGZAMIN MATURALNY 2013 INFORMATYKA

Sortowanie zewnętrzne

sieci jednowarstwowe w MATLABie LABORKA Piotr Ciskowski

Zapisywanie w wybranej notacji algorytmów z warunkami i iteracyjnych

25. NIE TYLKO WORECZKI CZYLI O ROZUMIENIU SYSTEMU DZIESIĘTNEGO, CZ. I

Budowa komputera Komputer computer computare

Algorytm genetyczny (genetic algorithm)-

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

Algorytm. a programowanie -

PRZEWODNIK PO PRZEDMIOCIE

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Arytmetyka liczb binarnych

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Jak nie zostać niewolnikiem kalkulatora? Obliczenia pamięciowe i pisemne.

Sztuczne sieci neuronowe Ćwiczenia. Piotr Fulmański, Marta Grzanek

Algorytm. Krótka historia algorytmów

Programowanie dynamiczne

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Sieci neuronowe w Statistica

Sztuczne sieci neuronowe (SNN)

Inteligentne systemy decyzyjne: Uczenie maszynowe sztuczne sieci neuronowe

Programowanie celowe #1

Algorytmy klasteryzacji jako metoda dyskretyzacji w algorytmach eksploracji danych. Łukasz Przybyłek, Jakub Niwa Studenckie Koło Naukowe BRAINS

Teoretyczne podstawy informatyki

Wymagania edukacyjne na poszczególne oceny z informatyki w gimnazjum klasa III Rok szkolny 2015/16

METODY INŻYNIERII WIEDZY KNOWLEDGE ENGINEERING AND DATA MINING

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Wprowadzenie do teorii systemów ekspertowych

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium Nr 4

Wstęp do sieci neuronowych, wykład 9 Sieci rekurencyjne. Autoasocjator Hopfielda

ALGORYTMY SZTUCZNEJ INTELIGENCJI

5. Rozwiązywanie układów równań liniowych

- odnajduje część wspólną zbiorów, złączenie zbiorów - wyodrębnia podzbiory;

Transkrypt:

Patryk DUŃSKI Wydział Informatyki, Zachodniopomorski Uniwersytet Technologiczny w Szczecinie E mail: pdunski@wi.zut.edu.pl Algorytmiczne sieci neuronowe idea działania, słabe i mocne strony Streszczenie: Głównym tematem referatu są algorytmiczne sieci neuronowe abstrakcyjny twór z dziedziny sztucznej inteligencji, autorstwa referenta. W artykule przedstawiono definicję, sposób działania oraz podstawowe korzyści i wady płynące z ich zastosowania. Na koniec przytoczono kilka przykładów użycia sieci w problemach takich jak rozpoznawanie tekstu, wspomaganie decyzji biznesowych, nauka matematyki przez automat i samoczynne programowanie. 1. Definicja Algorytmiczne sieci neuronowe to niejednorodna struktura dostosowana do uczenia ewolucyjnego, której celem jest realizowanie algorytmów zapisanych w formie dwuwymiarowych macierzy liczb rzeczywistych. W skład tych sieci wchodzi neuron w ujęciu innym, niż do tej pory. Najprościej rzecz ujmując są to elementy operujące na sygnałach, posiadające swoje wyjście oraz metodę wywołania. W trakcie wywołania neuron może aktualizować swój stan (wyjście), jak również wywoływać inne neurony. Rys. 1. Przykładowy interfejs neuronu Na rysunku 1 zaprezentowano przykładowy schemat interfejsu neuronu, który realizuje neuron w tym ujęciu. Neurony w sieci ułożone są w jednowymiarową listę i podobnie jak w przypadku neuronowych sieci komórkowych, każdy neuron sieci ma dostęp do każdego neuronu (nie ma podziału na warstwy). 20

2. Sposób działania sieci Sieć tego typu można zbudować w oparciu o kolejkę, w której znajdują się neurony, które będą miały zostać zaktualizowane (kolejka wykonawcza sieci). Przy starcie sieci, do kolejki dodawany jest neuron początkowy. Następnie w trakcie pracy sieci z kolejki tej wyciągane i wywoływane są neurony, aż kolejka nie będzie pusta. Jak wspomniano wcześniej algorytmiczne sieci to niejednorodne struktury, a więc składają się z różnych rodzajów neuronów. Neurony te można podzielić na dwa podstawowe typy: obliczeniowe, sterujące. Neurony obliczeniowe to takie, które uaktualniają swój stan na podstawie stanów innych neuronów oraz swojego dotychczasowego (lub mówiąc prościej operują na liczbach). Do tego grona można zaklasyfikować neurony takie jak: McCullocha-Pitsa Neuron dla n-neuronowej sieci posiada n wag, tak że dla każdego neuronu przypisana jest osobna waga. Przy wywołaniu, neuron liczy sumę iloczynów stanów neuronów oraz przypisanych im wag. Gdy obliczona suma jest większa od jedynki, stan neuronu przyjmuje wartość 1, w przeciwnym wypadku -1. Inkrementacyjny Początkowo stan neuronu wynosi zero. Po każdym wywołaniu stan neuronu zwiększany jest o jeden. Sumacyjny Podobnie jak w wypadku neuronu McCullocha-Pitsa, neuron posiada n wag, z tym że jego działanie jest inne. Stan wyjściowy neuronu, to suma stanów tych neuronów, dla których przypisana waga jest większa od zera. Przykładowo: dla neuronu sumacyjnego z wagami [1, -1, -1, 1], wyjście neuronu będzie równe sumie neuronu pierwszego i czwartego sieci. Warunkowy Neuron wykorzystuje 3 wagi. Każda z tych wag jest referencją wskazującą na neuron. Podczas wywołania neuron przyrównuje do zera stan neuronu, na który wskazuje pierwsza waga. Gdy jest on większy od zera, stan tego neuronu zostanie skopiowany z neuronu, na który wskazuje waga druga, w przeciwnym razie z tego, na który wskazuje waga trzecia. Przykładowo: dla neuronu warunkowego z wagami [2, 2, 0], neuron pobierze stan neuronu drugiego. Gdy będzie on większy niż zero, zostanie on ustawiony na wyjściu tego neuronu, w innym razie skopiowany na wyjście zostanie stan neuronu zerowego. Natomiast neurony sterujące to takie neurony, które dodają do kolejki wykonawczej neurony, które powinny zostać zaktualizowane. Można powiedzieć, że neurony te, pobudzają inne neurony. W tym wypadku, do tej grupy należą neurony takie jak: Neuron z listą wywołań 21

Dla n-neuronowej sieci, neuron ten korzysta z n wag. Neuron tego rodzaju dodaje do kolejki wykonawczej te neurony, dla których przypisane wagi są większe od zera. Przykład: neuron o wagach [1, -1, -1, 1] wywoła pierwszy i czwarty neuron. Neuron pętli Neuron ten zapamiętuje ile razy został wywołany. Gdy liczba wywołań jest mniejsza niż ta, którą określa pierwsza waga tego neuronu, dodaje on do kolejki wykonawczej neuron, na który wskazuje waga druga, a następnie siebie samego. Dodatkowymi typami neuronów w sieci są neurony wejściowe i wyjściowe. Ich zadaniem jest dostarczanie innym neuronom danych wejściowych i wyprowadzanie z sieci wyniku. Zarówno wejścia, jak i wyjścia, to wektor liczb całkowitych. Efektem takiego podziału jest to, że sieć sama steruje swoim wykonaniem, tj. zarówno kolejność, jak i sposób wykonywania obliczeń jest określony za pomocą przypisanych sieci wagom. 3. Uczenie sieci Uczenie sieci polega na wynalezieniu takiej macierzy wag, która najlepiej odpowiada wzorcowi. Wzorzec to zbiór połączonych wejść oraz odpowiadających im wyjść sieci. Przy uczeniu wykorzystywany jest algorytm ewolucyjny. Uczenie może odbywać się w dwóch trybach: Uczenie z prototypem Przed samym uczeniem określany jest prototyp opis z jakich neuronów i w jakiej ilości powinna być zbudowana sieć. Uczenie w tym wypadku ogranicza się do odpowiedniego dobrania wag dla tego prototypu. Wagi oceniane są wedle następujących kryteriów: 1 procent poprawnych odpowiedzi, 2 czas działania. W populacji algorytmu ewolucyjnego preferowane są sieci najlepiej spełniające powyższe kryteria, tj. które mają największą poprawność i najkrótszy czas działania. Uczenie bez prototypu Procedura ucząca sama określa strukturę sieci poprzez sukcesywne modyfikowanie liczby i rodzajów neuronów. W tym wypadku dodatkowym kryterium oceny sieci jest liczba neuronów. Preferowane są te sieci, które mają ich mniejszą liczbę, a jednocześnie równie dobrze radzą sobie z rozwiązywaniem materiału uczącego. W ten sposób w sieci pozostają tylko te neurony, które są jej niezbędne do poprawnego działania. Przy odpowiednio dobranym prototypie, wybranie trybu uczenia nie ma wpływu na wydajność działania sieci. Jednak w przypadku uczenia algorytmem ewolucyjnym z prototypem, uczenie przebiega statystycznie szybciej, jednak w przypadku uczenia bez prototypu, powstała sieć neuronowa zajmuje mniej pamięci RAM. Dzieje się tak, ze względu na to, że przy ustalonym prototypie zwiększa się stosunek ilości poprawnych macierzy wag w stosunku do wszystkich możliwych do wylosowania, a sieć neuronowa i tak korzysta tylko z tych neuronów, które są jej konieczne do obliczeń (za pomocą neuronów sterujących). Jednak w przypadku uczenia bez prototypu, sieć w swojej strukturze posiada tylko potrzebne neurony, co oszczędza pamięć operacyjną. 22

4. Wady i zalety Za używaniem tego typu sieci przemawia wiele argumentów. Nowe możliwości. Sieci te dają nowe możliwości. Potrafią one nauczyć się wzorców, z którymi nie radzą sobie inne sieci lub które przy uczeniu budują bardziej skomplikowane struktury. Także w przypadku bardziej skomplikowanych problemów, ich uczenie przebiega szybciej. Wydajność działania. Sieci algorytmiczne są też wydajniejsze w obliczeniach (porównując je na przykład z sieciami komórkowymi). Dzieje się tak przez to, że wykonują się tylko te neurony, które są potrzebne w danej chwili, dzięki mechanizmom sterującym przebiegiem obliczeń (neuronom sterującym i kolejki aktualizacji neuronów). Deterministyczne działanie. Pod warunkiem, że w strukturze sieci nie ma żadnych neuronów działających niedeterministycznie, to dla tej samej sieci (o tej samej strukturze i wagach) oraz dla tych samych danych wyjściowych, wynik zawsze jest jednakowy. Ułatwia to testowanie, uczenie i analizę działania sieci. Wykorzystanie dotychczasowej wiedzy. Dzięki specjalnym typom neuronów, sieć może skorzystać z repozytoriów wiedzy, czyli zbioru innych sieci, które poprawnie rozwiązują inne problemy. Sieć może wbudować je w swoją strukturę. Dzięki temu przy opracowywaniu rozwiązania może zostać wykorzystany już działający model. W ten sposób jeden bardziej złożony problem, można podzielić na podzbiory mniejszych problemów i rozwiązywać je niezależnie, przez co uczenie sieci jest szybsze. Są też wady i nie w każdym przypadku są one najlepszym rozwiązaniem. Ograniczenia w metodach uczących. Podstawową wadą tego typu struktur jest to, że sposób działania sieci uniemożliwia zaimplementowanie wielu metod uczenia i praktycznie jedyną metodą jest zastosowanie algorytmu ewolucyjnego. Przez to w przypadku niektórych wzorców, uczenie przebiega bardziej optymalnie w strukturach innego typu. Trudności w doborze materiału uczącego. Dodatkowo, aby uczenie przebiegało sprawnie, ważne jest odpowiednie ułożenie materiału uczącego, co wymaga wprawy, gdyż nie da się tego procesu sprowadzić do kilku prostych zasad, ze względu na dużą różnorodność problemów jakie można sformułować. 5. Przykłady zastosowania Oczywiście omawiane sieci można stosować wszędzie tam, gdzie były do tej pory stosowane sieci neuronowe. Kilka z tych dziedzin zostanie tutaj omówionych. Poza nimi omówię kilka, z którymi większość typów sieci sobie nie radzi lub radzi bardzo słabo. Systemy wczesnego ostrzegania w przedsiębiorstwach Idea działania jest taka, że program na podstawie danych z wnętrza firmy (a także ewentualnie o ogólnym stanie gospodarki) ma określić czy firma ma się dobrze lub czy 23

też może coś złego się z nią dzieje i należałoby uruchomić środki nadzwyczajne. Sieci algorytmiczne w tym przypadku na przykładowych danych z pełną skutecznością określały przyszły stan firmy. Wspomaganie podejmowania decyzji dla CMO W tym wypadku chodzi o narzędzie do wspomagania podejmowania decyzji marketingowych w przedsiębiorstwach. Powstał program oparty na sieciach algorytmicznych, który właśnie temu służy. Działa on w dwóch trybach: (a) Sugeruje optymalne parametry, (b) określa czy podawane mu decyzje są prawidłowe. Został on przetestowany na dwóch symulatorach gospodarczych. Pierwszym z nich jest działający w internecie SGE Strateg [1]. Program nie tylko nie doprowadził do bankructwa wirtualnej firmy, ale także zapewnił jej kilkukrotne zwycięstwo. W drugim przypadku został przetestowany w konkursie Eurel IMC [2], na symulatorze TOPSIM autorstwa firmy Simens, którego używa w szkoleniach swoich przyszłych menadżerów. Niestety tutaj ze względu na zbyt małą ilość danych w pierwszym etapie nie został on wykorzystany w takim stopniu jak w SGE, ale z pewnością rokuje dość dobrze. Po zastosowaniu go post factum, okazuje się, że można by uniknąć wielu błędów, które popełniła nasza drużyna. Rozpoznawanie tekstu OCR (ang. Optical Character Recognition) to jeden z najpopularniejszych problemów, w którym wykorzystuje się sieci neuronowe. W chwili obecnej wiele instytucji przeprowadza digitalizację swoich zbiorów bibliotecznych. Systemy OCR radzą sobie z tym dosyć dobrze, jednak nie są idealne i nie zawsze są w stanie rozpoznać zapisane słowo. Z tego powodu powstają takie programy jak Capatcha [3]. Słowa z którymi nie radzą sobie najlepsze systemy OCR, są dodatkowo deformowane i używane w celu uniemożliwienia dostępu automatom do miejsc, gdzie dostępu mieć nie powinny. Przy okazji ludzie wykorzystywani są do przepisywania zbiorów bibliotecznych na wersje cyfrowe. Program ten jest dobrym wyzwaniem dla nowych systemów OCR. Projekt budowy OCR na bazie algorytmicznych sieci neuronowych nie jest jeszcze skończony, ale już w tym momencie sieci radzą sobie z ok. 10% słów. Automatyczna nauka matematyki Tutaj algorytmiczna sieć neuronowa ma za zadanie nauczyć się w jaki sposób rozwiązywać formuły matematyczne. Mówiąc prościej, sieci na przykładach pokazujemy czym są poszczególne znaki matematyczne i w jaki sposób je traktować, tak aby umiała ona rozwiązywać dowolne formuły z tymi znakami. W pierwszym kroku, jako że sieć na wejściu przyjmuje zespolone pary liczb całkowitych, trzeba ustalić konwencję zapisu równań. Przykładowo możemy przyjąć, że: (1, x) to liczy całkowite (gdzie x to konkretna liczba), (2, 1) to dodawanie, (2, 2) odejmowanie, (2, 3) mnożenie, itd. 24

Następnie możemy zbudować pakiety uczące. Przykładowo: 6 + 7 = 13, czyli zgodnie z wcześniejszą konwencją (wejście sieci wyjście): (1, 6), (2, 1), (1, 7) (1, 13) 6 7 = 42, co przekładamy na: (1, 6), (2, 3), (1, 7) (1, 42) 2 + 2 2 = 6 : (1, 2), (2, 1), (1, 2), (2, 3), (1, 2) (1, 6), itd. Gdy ułożymy odpowiednio dużo takich przykładów jak powyżej (tak aby sieć miała okazję poznać wszystkie przypadki szczególne), możemy rozpocząć uczenie w efekcie czego powstanie sieć, która będzie potrafiła policzyć dowolną formułę zawierającą zdefiniowane znaki. W przypadku gdy mamy do rozwiązania dużo zadań matematycznych, a dysponujemy taką siecią, możemy jej tutaj użyć i w tym czasie pójść na kawę, podczas gdy osoba, która sama potrafi policzyć tego typu zadania i nie potrzebuje automatu, będzie musiała obejść się bez kawy. Automatyczne programowanie Na sam koniec najbardziej złożony z omawianych tu problemów stawianych przed algorytmicznymi sieciami neuronowymi. Jest to tylko koncept, który nie został jeszcze do końca zrealizowany. Chodzi o to, aby na podstawie definicji w formie materiału uczącego (czyli powiązanych par wejść i wyjść) tworzyć algorytmy bez udziału programisty. Na początek zdefiniujmy algorytm X, który realizuje określony problem. Przy założeniu, że korzystając z skończonej ilości instrukcji da się zbudować każdy algorytm (tak jak w architekturze RISC), a następnie da się go zapisać w postaci macierzy danych (tj. istnieje taka macierz, która odpowiada algorytmowi X), to możliwe jest wylosowanie tej macierzy. W przypadku algorytmicznych sieci neuronowych, każdy typ neuronu reprezentuje jakąś instrukcję, której sposób wykonania determinują wagi własne oraz stany innych neuronów, a stany neuronów to wypadkowa wejścia sieci i ich wag, tak więc całe działanie sieci jest zdeterminowane przez macierz wag oraz dane wejściowe. Wagi, to nic innego jak zapis algorytmu, który wykonuje określone operacje na danych i przez losowanie możemy trafić w taki ich zbiór, który realizuje postawiony problem. Gdyby w postaci neuronów dało się zapisać zbiór takich instrukcji, z których można zbudować każdy możliwy algorytm, a postawione tutaj założenia są poprawne, to sieć taka będzie realizowała automatyczne programowanie. W tym momencie algorytmiczne sieci neuronowe nie radzą sobie jeszcze z każdym typem algorytmów i potrzeba sporo pracy, aby to zmienić, oczywiście jeżeli jest to w ogóle możliwe. Literatura 1. Strona Symulacyjnej Gry Ekonomicznej Strateg : http://sge-strateg.pl/ 2. Strona konkursu: http://www.eurel.org/imc 3. Strona projektu: http://www.captcha.net/ 25