Przez lata fi lmy science-fi ction, takie jak
|
|
- Eleonora Wrona
- 9 lat temu
- Przeglądów:
Transkrypt
1 Steffen Nissen Tworzenie sieci neuronowych to proste Na CD: Na płycie CD zamieściliśmy omawianą bibliotekę oraz listingi użyte w tym artykule. Przez lata fi lmy science-fi ction, takie jak Ja, Robot pochodzące z hollywoodzkich wytwórni przedstawiały sztuczną inteligencję (SI) jako wieszcza zagłady. Nic bardziej mylnego. Podczas gdy Hollywood karmi nas opowieściami o naszym nieuchronnym odejściu w niepamięć, ludzie zupełnie niezainteresowani wyniszczeniem naszego gatunku pracowali nad SI po to, by uczynić nasze życie łatwiejszym, bardziej produktywnym, dłuższym. Po prostu lepszym. Roboty w filmie Ja, Robot dysponują centralnym układem decyzyjnym zbudowanym z sieci sztucznych neuronów; ta sieć neuronowa (SSN) została stworzona w celu wymodelowania prawdziwej sieci neuronowej znajdującej się w ludzkim mózgu. Fast Artificial Neural Network (FANN) jest biblioteką implementującą SSN, którą można wykorzystać w C, C++, PHP, Pythonie, Delphi a nawet w środowisku Mathematica. Mimo iż nie zagwarantuje ona hollywoodzkiej magii, to jednak stanowi potężne narzędzie dla twórców oprogramowania. SSN mogą być użyte w zaskakująco wielu dziedzinach. Tworzenie bardziej realistycznych gier komputerowych, rozpoznawanie obiektów na obrazach czy pomaganie maklerowi w przewidywaniu trendów na nieustannie ulegającej zmianom giełdzie papierów wartościowych. pobieżne, bardzo selektywne wyliczenie nie odda potencjału, jaki drzemie w sieciach neuronowych. Aproksymacja funkcji Zasada działania SSN opiera się na aproksymowaniu pewnej funkcji. Innymi słowy uczą się zadanej funkcji poprzez obserwowanie przykładów jej działania. Najprostszym przykładem może być SSN ucząca się funkcji XOR; jednak w ten sam sposób mogłaby ona uczyć się rozpoznawania języka na podstawie tekstu bądź sprawdzania, czy na zdjęciu rentgenowskim znajduje się obraz nowotworu. Jeśli SSN ma być zdolna do rozwiązywania jakiegoś problemu, zagadnienie musi być zdefiniowane jako pewna funkcja ze zbiorem zmiennych wejściowych i wyjściowych, poparta przykładowymi zestawami danych wejściowych i wyjściowych. Problem taki jak Steffen Nissen jest informatykiem z Danii. Autor biblioteki FANN, którą nadal rozbudowuje, podczas gdy inni zajmują się utrzymywaniem jej powiązań z innymi językami. Opracował raport techniczny obejmujący proces powstawania biblioteki FANN zatytułowany Implementation of a Fast Artificial Neural Network Library (fann). Kontakt z autorem: lukesky@diku.dk Rysunek 1. SSN z czterema neuronami wejściowymi, warstwą ukrytą i czterema neuronami wyjściowymi. funkcja XOR jest już z założenia funkcją z dwoma zmiennymi na wejściu (o możliwych wartościach 0 i 1) i jedną na wyjściu, a przykłady zdefiniowane są jako cztery różne kombinacje wejściowe. Oczywiście bardziej skomplikowane problemy mogą być trudniejsze do zdefiniowania jako funkcje. Zmiennymi wejściowymi, w przypadku problemu wyszukiwania nowotworu na zdjęciu rentgenowskim, mogą być wartości pikseli na danym obrazie, ale mogą też to być inne informacje uzyskane ze zdjęcia. Na wyjściu może się wtedy pojawić wartość binarna lub zmiennoprzecinkowa, określająca prawdopodobieństwo wystąpienia nowotworu na zdjęciu. W przypadku znormalizowanego rozkładu prawdopodobieństwa wartość zmiennoprzecinkowa przyjmowałaby wartości od 0 do 1 włącznie. Ludzki mózg Aproksymator funkcyjny taki jak SSN może być postrzegany jako czarna skrzynka. Właściwie mniej więcej tyle użytkownik biblioteki FANN musi wiedzieć o działaniu aproksymatorów. Jednak, aby zrozumieć jak działają SSN, potrzebna jest podstawowa wiedza o działaniu ludzkiego mózgu. Mózg ludzki jest bardzo skomplikowanym systemem zdolnym do rozwiązywania wielu nierzadko złożonych problemów. Składa się z wielu różnych elementów, lecz jedną z najistotniejszych jego części jest neuron. Mózg zawiera ich około 10 11, a liczba połączeń między poszczególnymi neuronami sięga około 10 15, tworząc tym samym ogromną sieć neuronową. Neurony wysyłają do siebie impulsy poprzez połączenia, co stanowi podstawową funkcję tego narządu. Sieć neuronowa otrzymuje też impulsy od pięciu zmysłów i narządów wewnętrznych; wysyła także impulsy do mięśni odpowiedzialnych za ruch czy mowę. Pojedynczy neuron może być postrzegany jako maszyna dysponująca wejściem i wyjściem, czeka- 14
2 Biblioteka Fast Artificial Neural Network jąca na impulsy od połączonych z nim neuronów. Kiedy otrzyma wystarczającą liczbę impulsów, sama wysyła impuls do innych sąsiadów. Listing 1. Program mierzący częstotliwość występowania liter A-Z w pliku tekstowym #include <vector> #include <fstream> #include <iostream> #include <ctype.h> void error(const char* p, const char* p2 = "") std::cerr << p << ' ' << p2 << std::endl; std::exit(1); void generate_frequencies(const char *filename, float *frequencies) std::ifstream infile(filename); if(!infile) error( "Cannot open an input file", filename); std::vector<unsigned int> letter_count(26, 0); unsigned int num_characters = 0; char c; while(infile.get(c)) c = tolower(c); if(c >= 'a' && c <= 'z') letter_count[c - 'a']++; num_characters++; if(!infile.eof()) error("something strange happened"); for(unsigned int i = 0; i!= 26; i++) frequencies[i] = letter_count[i]/(double)num_characters; int main(int argc, char* argv[]) if(argc!= 2) error( "Remember to specify an input file"); float frequencies[26]; generate_frequencies(argv[1], frequencies); Sieci Neuronowe Sztuczne neurony wykazują wiele podobieństw w budowie, jeśli porówna je się do biologicznych protoplastów. Mają połączenia wejściowe, które są sumowane w celu wyznaczenia mocy wyjścia. Wartości mocy wyliczne za pomocą funkcji aktywacji. Choć istnieje wiele funkcji aktywacji, najbardziej popularna jest funkcja sigmoidalna, której wynikiem jest liczba od 0 (dla niskich wartości na wejściu) do 1 (dla wysokich wartości na wejściu). Wynik tego typu funkcji jest następnie przekazywany jako wartość wejściowa do następnych neuronów przez kolejne złącza, z których każde ma swoją wagę statystyczną. Wagi są bardzo istotnym elementem SSN, gdyż określają sposób zachowywania się całej sieci. Listing 2. Początkowy fragment pliku trenującego zawierającego częstotliwości występowania liter w języku angielskim, francuskim i polskim; pierwsza linia jest nagłówkiem informującym o tym, że plik zawiera 12 wzorców treningowych składających się z 26 wejść i 3 wyjść for(unsigned int i = 0; i!= 26; i++) std::cout << frequencies[i] << ' '; std::cout << std::endl; return 0;
3 W ludzkim mózgu neurony połączone są ze sobą w sposób robiący wrażenie przypadkowego. Co więcej, wysyłają impulsy asynchronicznie. Jeśli chcielibyśmy dokładnie odwzorować mózg, to właśnie te cechy musiałby być uwzględnionie. Jednak SSN są z reguły zorganizowane w inny sposób, z tego względu że chodzi nam przede wszystkim o zbudowanie aproksymatora funkcyjnego, a nie dokładne odwzorowanie budowy mózgu. W SSN neurony są z reguły uporządkowane warstwami z połączeniami pomiędzy kolejnymi. Pierwsza warstwa zawiera neurony wejściowe a ostatnia wyjściowe. Neurony wejściowe i wyjściowe reprezentują odpowiednio wejście i wyjście funkcji, którą chcemy aproksymować. Między warstwami wejściową a wyjściową istnieje pewna liczba warstw ukrytych, natomiast połączenia (i odpowiadające im wagi) do i z warstw ukrytych określają, jak dobrze sieć radzi sobie z danym zagadnieniem. Kiedy SSN uczy się aproksymować pewną funkcję, musi otrzymać przykłady działania tej funkcji. Na tej podstawie SSN powoli zmienia swoje wagi tak, aby wyprodukować wyniki identyczne z wynikami podanymi w przykładach. Jest wtedy nadzieja, że kiedy SSN otrzyma inny zestaw wartości wejściowych również wyprodukuje poprawne wyniki. Zatem, jeśli SSN ma za zadanie nauczyć się wykrywania nowotworów na zdjęciach rentgenowskich, otrzyma na wstępie wiele obrazów zawierających nowotwory i wiele obrazów zwierających jedynie zdrowe tkanki. Po pewnym okresie uczenia z tymi obrazami, wagi w SSN powinny zawierać informacje pozwalające na prawidłową identyfikację nowotworów na zdjęciach rentgenowskich, które sieć analizuje po raz pierwszy. Biblioteka FANN: kurs dla początkujących Internet spowodował, że globalna komunikacja stała się częścią życia wielu ludzi, ale również dobitnie wyeksponował problem polegający na tym, że nie każdy posługuje się tym samym językiem. Narzędzia tłumaczące pozwalają w pewnym stopniu na rozwiązanie tego problemu, ale aby mogły one Listing 3. Program uczący SSN rozpoznawania różnych języków #include "fann.h" int main() struct fann *ann = fann_create(1, 0.7, 3, 26, 13, 3); fann_train_on_file(ann, "frequencies.data", 200, 10, ); fann_save(ann, "language_classify.net"); fann_destroy(ann); return 0; działać poprawnie, muszą wiedzieć, w jakim języku dany tekst został napisany. Jedną z metod na rozpoznanie języka jest analiza częstotliwości występowania w tekście liter alfabetu. Choć może się to wydawać bardzo naiwnym podejściem do rozpoznawania języka, technika ta wielokrotnie się sprawdziła. Dla wielu języków europejskich wystarczy wziąć pod uwagę częstotliwość występowania tylko liter A-Z, pomimo nawet tego, że wiele języków wykorzystuje również inne litery. Z pomocą biblioteki FANN napisanie programu, którego zadaniem będzie określenie, w jakim języku został napisany dany plik tekstowy, jest niezwykle proste. Zastosowana w tym celu SSN powinna mieć neuron wejściowy dla każdej z 26 liter i jeden neuron wyjściowy dla każdego języka. Zanim jednak przystąpimy do pisania właściwego programu, całą zabawę rozpoczniemy od stworzenia małego programu mierzącego częstotliwość występowania liter w pliku tekstowym. Listing 1. wygeneruje częstotliwości występwania liter w pliku tekstowym i zapisze je w formacie, który następnie zostanie użyty do wygenerowania pliku trenującego dla biblioteki FANN. Pliki treningowe dla biblioteki FANN muszą składać się z linii zawierającej wartości wejściowe, po której Rysunek 2. Wykres słupkowy przedstawiający uśrednionych częstotliwości występowania liter w językach francuskim, angielskim i polskim 16
4 Biblioteka Fast Artificial Neural Network Listing 4. Wyjście FANN podczas trenowania Max epochs 200. Desired error: Epochs 1. Current error: Epochs 10. Current error: Epochs 20. Current error: Epochs 30. Current error: Epochs 40. Current error: Epochs 50. Current error: Epochs 57. Current error: następuje linia zawierająca wartości wyjściowe. Jeśli chcemy rozpoznawać trzy różne języki (angielski, francuski i polski), moglibyśmy reprezentować je poprzez przyporządkowanie jednej zmiennej wyjściowej przyjmującej wartość 0 dla angielskiego, 0.5 dla francuskiego i 1 dla polskiego. Jednak sieci neuronowe znacznie lepiej sie sprawują, jeśli dla każdego języka zarezerwujemy osobną zmienną wyjściową, która będzie przyjmowała wartość 1 dla swojego języka lub 0 w przeciwnym wypadku. Mając już gotowy ten prosty program, można wygenerować plik trenujący, zawierający częstotliwości występowania liter w różnych językach. Oczywiście SSN będzie lepiej radziło z rozróżnianiem języków, jeśli w pliku trenującym zostaną umieszczone częstotliwości opracowane na podstawie wielu przykładowych plików tekstowych. Jednak w tym przykładzie wystarczające będzie, jeśli będziemy mieli do dyspozycji po 3-4 teksty przypadające na język. Listing 2. pokazuje zawartość pliku trenującego, wygenerowanego przy użyciu czterech plików tekstowych dla każdego z trzech języków. Natomiast Rysunek 2. prezentuje wykres uśrednionych częstotliwości występowania liter w plikach trenujących. Dokładniejsza analiza pliku wskazuje wyraźne trendy, jako że w angielskim litera H występuje częściej niż pozostałych językach, we francuskim prawie nie występuje litera K, zaś polskim częściej występują litery W i Z niż w pozostałych. Użyty plik treningowy zawiera jedynie litery z zakresu A-Z. Oczywiście można by ulepszyć działanie programu poprzez dodanie neuronów wejściowych odpowiedzialnych za te litery charakterystyczne dla danego języka (w przypadku polskiego: Ą, Ł czy Ś). Jednak z uwagi na to, że porównujemy jedynie trzy języki, nie ma potrzeby dodawania dodatkowych liter, ponieważ rozkłady występowania liter, które są dostępne w alfabecie każdego z tych trzech języków, zawierają wystarczająco dużo informacji by prawidłowo zaklasyfi kować język. Aczkolwiek jeśli SSN miałaby klasyfi kować setki języków, z pewnością potrzebowalibyśmy więcej liter. Dysponując takim plikiem trenującym bardzo łatwo jest stworzyć program mający na celu przystosowanie SSN do rozpoznawania trzech języków. Listing 3. pokazuje, jak łatwo jest tego dokonać przy użyciu FANN. Program używa czterech funkcji FANN: fann _ create, fann _ train _ on _ file, fann _ save i fann _ destroy. Funkcja struct fann* fann _ create(float connection _ rate, float learning _ rate, unisigned int num _ layers,...) jest stosowana do tworzenia SSN, gdzie parametr connection _ rate może być użyty do utworzenia SSN nie w pełni połączonej (z reguły preferuje się w pełni połączone sieci), zaś learning _ rate stosowany jest do określenia intensywności, z jaką ma być przeprowadzony proces uczenia (ma to znaczenie tylko dla niektórych algorytmów uczenia). Ostatni parametr funkcji fann _ create służy do zdefi niowania układu warstw w SNN. W tym wypadku wybrano SSN z trzema warstwami (wejściową, ukrytą i wyjściową). Warstwa wejściowa ma 26 neuronów (jeden na każdą literę), wyjściowa ma ich 3 (jeden na każdy język), zaś ukryta posiada 13 neuronów. Liczba warstw oraz neuronów w warstwie ukrytej zostały dobrane w wyniku przeprowadzenia eksperymentów. Niestety w zasadzie nie ma łatwej metody na dobranie optymalnych wartości. Pomocna może być jednak informacja, że SSN uczy się poprzez modyfi kowanie swoich wag. Jeśli zatem SSN zawiera więcej warstw i neuronów, to może nauczyć się rozwiązywania bardziej skomplikowanych problemów. Jednak posiadanie zbyt wielu wag również może okazać się niebezpieczne, ponieważ proces uczenia jest utrudniony i może okazać się, że SSN zostanie wyuczona rozpoznawania tylko specyfi cznych cech właściwych dla testowych danych zamiast uogólnionych wzorców. Z tego względu, aby SSN poprawnie klasyfi kowała dane niepochodzące ze zbioru treningowego, bardzo ważna jest opisana przed chwilą umiejętność generalizowania, gdyż bez niej SSN nie będzie w stanie rozpoznać danych, z którymi wcześniej nie miała do czynienia. Funkcja void fann _ train _ on _ file(struct fann *ann, char *filename, unsigned int max _ epochs, unsigned int epochs _ between _ reports, float desired _ error) uczy SSN. Trening wykonywany jest poprzez ciągłe zmienianie wag tak, aby wartości na wyjściu SSN odpowiadały wartościom wyjściowym w pliku trenującym. Jeden cykl, w którym wagi są modyfikowane w celu uzyskania wyniku zgodnego z plikiem trenującym, nazywany jest epoką. W tym przykładzie ustawiono maksymalną liczbę epok na dwieście, a raport o aktualnym statusie generowany jest co dziesięć epok. W celu zmierzenia, w jakim stopniu wynik działania SSN odpowiada oczekiwaniom, używa się uśrednionego błędu kwadratowego. Uśredniony błąd kwadratowy jest wartością średnią z kwadratów różnic pomiędzy faktyczną a pożądaną wartością wyj- Listing 5. Program klasyfikujący tekst jako napisany w jednym z trzech języków (program używa niektórych funkcji zdefiniowanych w Listingu 1.) int main(int argc, char* argv[]) if(argc!= 2) error("remember to specify an input file"); struct fann *ann = fann_create_from_file( "language_classify.net"); float frequencies[26]; generate_frequencies(argv[1], frequencies); float *output = fann_run(ann, frequencies); std::cout << "English: " << output[0] << std::endl return 0; << "French : " << output[1] << std::endl << "Polish : " << output[2] << std::endl; 17
5 ściową SSN dla danego wzorca treningowego. Niska wartość uśrednionego błędu kwadratowego oznacza dobrą zbieżność wyniku działania sieci z oczekiwaniami. Kiedy program z Listingu 3. zostanie uruchomiony, SSN zostanie wyuczona i pewne informacje dotyczące jej funkcjonowania (patrz Listing 4.) zostaną wyświetlone, aby umożliwić nam monitorowanie postępów w treningu. Po zakończeniu tego procesu SSN mogłaby od razu zostać wykorzystana do zadania, dla którego została stworzona stwierdzenia, w jakim języku napisano dany tekst. Jednak z reguły lepiej jest rozdzielić część kodu odpowiedzialną za trening oraz za wywoływanie właściwej analizy na dwa programy, gdyż wówczas czasochłonny proces uczenia wykonywany jest tylko raz. Z tego względu program z Listingu 3. po prostu zapisuje parametry określające SSN do pliku, który potem mogą zostać użyte przez inny program. Mały program z Listingu 5. wczytuje zachowaną SSN i używa jej do klasyfikowania tekstu jako angielski, francuski lub polski. Podczas testowania na tekstach znalezionych w internecie, sieć potrafi ła poprawnie sklasyfikować język nawet dla tekstów zawierających jedynie kilka linii. Mimo że ta metoda nie jest niezawodna, nie udało mi się znaleźć nawet jednego tekstu, który zostałby błędnie zaklasyfikowany. Sztuczna Kiedy kogoś można określić mianem inteligentnego? Czy pies jest inteligentny? A co z nowonarodzonym dzieckiem? Z reguły definiujemy inteligencję jako umiejętność zdobywania i używania wiedzy, wciągania wniosków i wykazywania kreatywności. Jeśli chcielibyśmy użyć tych samych standardów wobec sztucznej inteligencji (SI), doszlibyśmy do wniosku, że na dzień dzisiejszy coś takiego nie istnieje. Zwykle jednak SI definiowana jest jako umiejętność wykonywania zadań, które z reguły utożsamiane są z ludzką inteligencją. Zgodnie z tą definicją terminem SI można oznaczyć wszystkie komputerowe działania związane z przyswajaniem informacji lub wykorzystaniem ludzkiej wiedzy. Definicja ta pozwala na nazwanie mianem SI najprostszego nawet komputera szachowego bądź postaci w grze komputerowej. Rysunek 3. Wykres przedstawiający sigmoidalną funkcję aktywacji mającą stromiznę o wartości odpowiednio 0.25, 0.50 i 1.00 Biblioteka FANN: szczegóły Przykład z klasyfi kacją języków pokazuje, jak łatwo można użyć biblioteki FANN do rozwiązywania prostych, codziennych problemów informatyki, które dużo trudniej rozwiązywałoby się przy użyciu innych technik. Niestety nie wszystkie problemy są tak łatwe do rozwiązania, a podczas pracy z SSN często znajdujemy się w sytuacji, w której ciężko jest wytrenować sieć tak, aby dawała poprawne wyniki. Czasami jest to spowodowane tym, że problemu nie da się rozwiązać przy użyciu SSN. Jednak często można wspomóc proces uczenia poprzez odpowiednią modyfi kację parametrów biblioteki FANN. Najważniejszym czynnikiem mającym wpływ na uczenie SSN jest jej rozmiar. Może on być prawidłowo ustawiony jedynie w drodze eksperymentu. Znajomość problemu często pomaga poprawnie go oszacować. W przypadku SNN o rozsądnych rozmiarach trening może być przeprowadzony na kilka sposobów. Biblioteka FANN oddaje do dyspozycji wiele różnych algorytmów uczenia. Warto pamiętać o tym, że algorytm domyślny (FANN _ TRAIN _ RPROP) nie zawsze jest najlepszy do rozwiązania danego problemu. Jeśli tak jest, można użyć funkcji fann _ set _ training _ algorithm do zmiany al- gorytmu uczenia. W wersji biblioteki FANN dostępne są cztery różne algorytmy uczenia, przy czym każdy z nich w jakimś stopniu stosuje propagację wsteczną. Algorytmy propagacji wstecznej zmieniają działanie sieci poprzez propagowanie błędu od warstwy wyjściowej do wejściowej i odpowiednie ustawianie napotykanych wag. Propagowana wartość błędu może być wyliczona albo na podstawie błędu pochodzącego od jednego wzorca (incremental), albo też na podstawie sumy błędów wynikłych z przejścia przez wszystkie wzorce (batch). FANN _ TRAIN _ INCREMENTAL implementuje rosnący algorytm uczący, który zmienia wagi po każdym wzorcu treningowym. Zaletą takiego algorytmu jest to, że wagi są zmieniane wielokrotnie podczas każdej epoki. A ponieważ każdy wzorzec zmienia wagi w trochę innym kierunku, mało prawdopodobne jest, by cały proces uczenia utknął w jakimś minimum lokalnym lub w stanie, w którym niewielka zmiana wag pogorszy średni błąd kwadratowy, mimo że optymalne rozwiązanie nie zostało jeszcze znalezione. FANN _ TRAIN _ BATCH, FANN _ TRAIN _ RPROP i FANN _ TRAIN _ QUICKPROP są przykładami algorytmów uczących typu batch. Algorytmy te zmieniają wagi po przeliczeniu błędów dla całego zbioru wzorców treningowych. Zaletą tych algorytmów jest to, że mogą one skorzystać z informacji o optymalizacji globalnej, która nie jest dostępna dla algorytmów typu incremental. Może to jednak oznaczać, że niektóre co bardziej subtelne cechy charakterystyczne dla pojedynczych wzorców treningowych mogą zostać pominięte. Nie ma prostej odpowiedzi na pytanie, który algorytm uczący jest najlepszy. Jednak z reguły jeden z zaawansowanych algorytmów uczących tupu batch, taki jak rprop lub quickprop, jest najlepszym rozwiązaniem. Tym niemniej czasami trening typu incremental jest bardziej skutecz- ny, zwłaszcza jeśli mamy do dyspozycji wiele wzorców treningowych. W przykładzie z językami najefektywniejszym algorytmem był domyślny algorytm rprop, który osiągnął wyznaczoną wartość średniego błędu kwadratowego juz po 57 epokach. Algorytm FANN _ TRAIN _ INCREMENTAL potrzebował 8108 epok do osiągnięcia tego samego celu, zaś algorytm FANN _ TRAIN _ BATCH aż epok. Algorytm quickprop miał naj- 18
6 Biblioteka Fast Artificial Neural Network więcej problemów i z początku w ogóle nie osiągnął żądanej wartości błędu, lecz po poprawieniu czasu działania algorytmu osiągnął wymaganą wartość po 662 epokach. Czas działania (ang. decay) algorytmu quickprop jest parametrem używanym do kontrolowania agresywności algorytmu i może być zmieniany poprzez funkcję fann _ set _ quickprop _ decay. Inne funkcje fann _ set _... również mogą być używane do modyfi kowania parametrów poszczególnych algorytmów uczących, jednakże poprawne ustawienie wartości niektórych z tych parametrów może być dosyć kłopotliwe bez uprzedniej, gruntownej znajomości działania algorytmu. Jeden parametr, niezależny od wyboru algorytmu uczącego, może być dopasowany w dość prosty sposób. Parametrem tym jest stromizna funkcji aktywacji. Funkcja aktywacji jest funkcją, która określa, kiedy wyjście powinno być zbliżone do 0, a kiedy do 1. Stromizna może być rozumiana (choć nie dosłownie) jako pochodna funkcji aktywacji precyzuje, jak szybkie ma być przejście z 0 do 1. Jeśli stromizna ma wysoką wartość, algorytm uczący będzie szybciej dążył do wartości ekstremalnych 0 lub 1, co przyspieszy proces uczenia, np. dla problemu rozpoznawania języków. Tym niemniej, jeśli stromizna ustawiona jest na wartość niską, łatwiej jest wytrenować sieć dla przypadku, gdy wymagamy otrzymania na wyjściu wartości ułamkowych. FANN oferuje dwie funkcje umożliwiające ustawienie stromizny funkcji aktywacji. Są nimi: fann _ set _ activation _ steepness _ hidden oraz fann _ set _ activation _ steepness _ output. Funkcje są dwie, ponieważ często chcielibyśmy mieć możliwość ustawienia innej stromizny funkcji aktywacji dla warstw ukrytych a innej dla warstwy wyjściowej. Możliwości FANN Zagadnienie identyfi kacji języków należy do specjalnego rodzaju problemów nazywanych problemami klasyfi kacji. Problemy klasyfi kacji posiadają jeden neuron wyjściowy na każdą kategorię i przy każdym wzorcu treningowym dokładnie jedna wartość wyjściowa musi być równa 1. Bardziej ogólnym problemem aproksymacji funkcji jest przypadek, w którym wyjścia przyjmują wartości ułamkowe. Może to być np. aproksymowanie odległości do obiektu zarejestrowanego przez kamerę lub nawet zużycia energii w domu. Zadania te mogą oczywiście być łączone z zadaniami klasyfi kacji. Możemy zatem mieć zadanie, by zidentyfi kować obiekt na obrazie z kamery, a następnie oszacować, w jakiej znajduje się odległości. Niejednokrotnie możemy takie zadanie rozwiązać poprzez jedną SSN, jednak czasami dobrym pomysłem może być rozdzielenie zadań np. stworzenie jednej sieci neuronowej do klasyfi kacji obiektu i po jednej sieci na określenie odległości każdego obiektu danej kategorii. Kolejnym rodzajem zadań aproksymacji to problemy szeregów czasowych, które aproksymują funkcję ewoluującą w czasie. Dobrze znanym zadaniem tego typu jest zadanie polegające na oszacowaniu, ile w danym roku pojawi się plam na Słońcu na podstawie danych historycznych. Zwykłe funkcje biorą wartość x na wejściu i generują wartość y na wyjściu. Zadanie z plamami słonecznymi również mogłoby zostać przedstawione w taki sposób, jeśli za rok przyjmiemy wartość x, a ilość plam jako wartość y. Jednakże okazuje się, że nie jest to najlepsze podejście do rozwiązywania zagadnień związanych z ewolucją w czasie. Znacznie lepszą strategią jest podanie wartości z pewnego przedziału czasu na W Sieci The FANN library Steffen Nissen, Implementation of a Fast Artificial Neural Network Library (fann) pdf?download Steffen Nissen and Evan Nemerson, Fast Artificial Neural Network Library Reference Manual Martin Riedmiller and Heinrich Braun, A Direct Adaptive Method for Faster Backpropagation Learning: The RPROP Algorithm ANN FAQ ftp://ftp.sas.com/pub/neural/faq.html wejściu i zdefi niowanie wartości dla następnego kroku czasowego jako wyjścia. Jeśli odstęp ustawimy na 10 lat, nasza SSN mogłaby zostać wyuczona przez wszystkie dziesięcioletnie odstępy czasu, dla których istnieją dane historyczne, po czym byłaby w stanie aproksymować liczbę plam na słońcu w roku 2005 na podstawie liczby plam w latach podanych na wejścia. Z zastosowania takiego podejścia wynika, że każdy zbiór danych historycznych używany jest wielokrotnie we wzorcach trenujących, np. liczba plam z roku 1980 jest używana we wzorcach mających na wyjściu liczbę plam w latach Podejście takie oznacza również, że ilość plam słonecznych nie może być bezpośrednio wyznaczona dla roku 2010 bez uprzedniego wykonania aproksymacji dla lat W rezultacie połowa wejść potrzebnych dla obliczeń dla tego roku będzie aproksymacją, a co za tym idzie wartość uzyskana dla roku 2010 będzie mniej dokładna niż dla roku Z tego względu rozważanie szeregów czasowych jest wskazane jedynie dla zdarzeń mających wydarzyć się w niedalekiej przyszłości. Szeregi czasowe mogą również zostać użyte w celu nadania pamięci robotom. Mogłoby to zostać wykonane np. poprzez podanie kierunku i prędkości z ostatnich dwóch kroków czasowych na wejściu w celu obliczenia kroku następnego, ale oczywiście tylko jako dodatek do innych danych wejściowych takich jak sygnały z czujników lub kamer. Jednakże przy takim podejściu trudności może sprawiać utworzenie wzorców trenujących, jako że każdy z nich musi zawierać dane historyczne. Sztuczki i porady Istnieje mnóstwo trików, które mogą zostać użyte w celu przyspieszenia procesów uczenia i właściwej analizy sieci neuronowej, jak również w celu poprawienia dokładności jej działania. Prosty zabieg, który może zostać użyty do przyspieszenia i zwiększenia dokładności procesu uczenia, polega na zmianie wartości wejściowych i wyjściowych z 0 i 1 na -1 i 1. Można tego dokonać poprzez zmianę wartości w pliku trenującym i wywołanie funkcji fann _ set _ activation _ function _ hidden oraz fann _ set _ activation _ function _ output w celu zmiany funkcji aktywacji na FANN _ SIGMOID _ SYMMETRIC mającej wartości wyjściowe z przedziału -1 do 1 zamiast od 0 do 1. Trik ten działa, ponieważ war- 19
7 tość 0 ma w SSN tę nieszczęsną własność, że bez względu na wagi wyjście zawsze jest równe 0. FANN oczywiście posiada mechanizmy zapobiegające sytuacji, w której stałoby się to dużym problemem. Jednak okazuje się, że zastosowanie tej sztuczki skraca czas uczenia. Funkcja fann _ set _ activation _ function _ output może być również użyta do zmiany funkcji aktywacji na FANN _ LINEAR, która jest nieograniczona i może zostać użyta do tworzenia SSN mogących przyjmować dowolne wartości na wyjściu. Podczas uczenia SSN zwykle trudno oszacować, ile epok jest koniecznych dla prawidłowego funkcjonowania sieci neuronowej. Jeśli użyjemy zbyt mało epok, SSN nie będzie w stanie zaklasyfi kować danych treningowych. Z drugiej strony, jeśli użyjemy zbyt wielu epok, SSN stanie się zbyt wyspecjalizowana w rozpoznawaniu danych wzorcowych i nie będzie prawidłowo klasyfi kować tych, których wcześniej nie widziała. Z tego powodu zwykle dobrze jest mieć dwa zestawy danych treningowych: jeden stosowany podczas faktycznego procesu uczenia i jeden stosowany w celu zweryfi kowania jakości SSN poprzez sprawdzenia jej na danych, które nie zostały użyte podczas treningu. W tym celu może zostać użyta funkcja fann _ test _ data razem z innymi funkcjami służącymi do obsługi i manipulacji danych treningowych. Wyrażenie konkretnego problemu poprzez funkcję, której SSN mogłaby nauczyć się z łatwością, czasami może okazać się kłopotliwe. Warto zatem kierować się ogólnymi wskazówkami: Używaj co najmniej jednego neuronu wejścia/wyjścia na każdą jednostkę informacyjną. W wypadku systemu klasyfi kacji języków oznacza to, że mamy jeden neuron wejściowy na każdą literę i jeden wyjściowy na każdy język. Podczas określania potrzebnej liczby neuronów wejściowych wykorzystaj całą wiedzę na temat danego zadania, którą posiadasz jako programista. Jeśli na przykład wiesz, że długość słowa jest istotna w systemie klasyfi kacji języków, to powinieneś utworzyć dodatkowy neuron wejściowy przyjmujący długość wyrazu (ten sam cel mógłby zostać osiągnięty poprzez dodanie neuronu przyjmującego częstotliwość występowania spacji). Tudzież, jeśli wiesz, że niektóre litery są używane tylko w niektórych językach, to niezłym pomysłem może okazać się dodanie dodatkowego neurony wejściowego, na który podamy 1 jeśli taka litera jest obecna w tekście lub 0 w przeciwnym przypadku. W ten sposób nawet jedna polska litera w całym tekście może pomóc w poprawnym zaklasyfi kowaniu tekstu. Niektóre języki zawierają więcej samogłosek niż inne, dlatego też określenie częstotliwości występowania samogłosek jako jeszcze jednego neuronu wejściowego może okazać się pomocne. Uprość zadanie. Jeśli na przykład chcesz użyć SSN do wykrycia pewnych cech jakiegoś obrazu, to może dobrym pomysłem byłoby uproszczenie tegoż obrazu tak, aby zadanie stało się łatwiejsze do rozwiązania. Obraz w swojej pierwotnej formie często zawiera zdecydowanie za dużo informacji i SSN nie będzie łatwo uzyskać z niego istotnych informacji. Uproszczenie obrazu może zostać osiągnięte przez zastosowanie fi ltrów do wygładzania, wykrywania konturów, wykrywania krawędzi, odcieni szarości itp. Inne problemy mogą zostać uproszczone na drodze wstępnej obróbki danych innymi metodami, mającymi na celu usunięcie zbędnych informacji. Uproszczeń można dokonywać również poprzez rozbijanie złożonych problemów na wiele, łatwiejszych do rozwiązania zadań. W systemie klasyfi kacji języków jedna SSN mogłaby zostać użyta do rozdzielania języków na europejskie i azjatyckie, a dwie następne do rozpoznawania konkretnych języków z tych obszarów. O ile proces uczenia SSN zwykle zabiera wiele czasu i z tym trzeba się pogodzić o tyle czas potrzebny do przeprowadzenia właściwej analizy powinien być jak najkrótszy, zwłaszcza w systemach korzystających z bardzo złożonych sieci neuronowych bądź wykonujących analizy setki razy na sekundę. Istnieje wiele działań zmierzających do usprawnienia FANN tak, by działała jeszcze szybciej niż do tej pory. Jedną z takich metod jest wybranie liniowej funkcji skokowej jako funkcji aktywacji, która szybciej się wykonuje, ale jest również mniej dokładna. Dobrym pomysłem jest również zredukowanie liczby ukrytych neuronów na tyle, na ile to możliwe, bo to również zmniejszy czas wykonania. Kolejną metodą, choć efektywna jedynie na systemach wbudowanych nieposiadających jednostki liczb zmiennoprzecinkowych, jest uruchomienie FANN tak, aby używała jedynie liczb całkowitych. Biblioteka FANN ma kilka funkcji pomocniczych, które pozwalają na korzystanie z jej z użyciem jedynie liczb całkowitych. W systemach nieposiadających układów odpowiedzialnych z operacje zmiennoprzecinkowe można w ten sposób poprawić wydajność nawet o więcej niż 5000%! Opowieść ze świata Open Source Kiedy po raz pierwszy w listopadzie 2003 roku udostępniłem bibliotekę FANN w wersji 1.0, nie bardzo wiedziałem, czego się spodziewać. Jednak byłem zdania, że każdy powinien mieć możliwość używania stworzonej przeze mnie biblioteki. Ku memu zdziwieniu ludzie zaczęli ją ściągać i używać. Miesiące mijały, a FANN była używana przez coraz większą liczbę użytkowników. Z początku dostępna była jedynie pod Linuksem. Obecnie dostępna jest dla większości kompilatorów i systemów operacyjnych (niewyłączając MSVC++ i Borland C++). Zestaw dodatkowych funkcji biblioteki również został znacząco rozszerzony, a wielu użytkowników zaczęło pracować nad jej dalszym rozwojem. W niedługim czasie biblioteka miała powiązania z PHP, Pythonem, Delphi i Mathematicą oraz została włączona do linuksowej dystrybucji Debian. Moja praca z FANN i jej użytkownikami zabiera trochę mojego wolnego czasu, jednak jest to praca, której chętnie się poświęcam. FANN daje mi możliwość oddania czegoś z powrotem środowisku Open Source. Dzięki temu mogę jednocześnie pomagać ludziom i robić coś, co lubię. Nie mogę powiedzieć, że tworzenie oprogramowania Open Source jest czymś, czym powinien zająć się każdy twórca oprogramowania. Powiem jednak, że mi dało to ogromną satysfakcję. Jeśli myślisz, że to może być coś dla ciebie, to znajdź jakiś projekt, przy którym miałbyś ochotę popracować, i zrób to. Albo jeszcze lepiej stwórz swój własny projekt Open Source. 20
NEURAL NETWORK ) FANN jest biblioteką implementującą SSN, którą moŝna wykorzystać. w C, C++, PHP, Pythonie, Delphi a nawet w środowisku. Mathematica.
Wykorzystanie sztucznych sieci neuronowych do rozpoznawania języków: polskiego, angielskiego i francuskiego Tworzenie i nauczanie sieci przy pomocy języka C++ i biblioteki FANN (Fast Artificial Neural
Sztuczna Inteligencja Tematy projektów Sieci Neuronowe
PB, 2009 2010 Sztuczna Inteligencja Tematy projektów Sieci Neuronowe Projekt 1 Stwórz projekt implementujący jednokierunkową sztuczną neuronową złożoną z neuronów typu sigmoidalnego z algorytmem uczenia
IMPLEMENTACJA SIECI NEURONOWYCH MLP Z WALIDACJĄ KRZYŻOWĄ
IMPLEMENTACJA SIECI NEURONOWYCH MLP Z WALIDACJĄ KRZYŻOWĄ Celem ćwiczenia jest zapoznanie się ze sposobem działania sieci neuronowych typu MLP (multi-layer perceptron) uczonych nadzorowaną (z nauczycielem,
Algorytm wstecznej propagacji błędów dla sieci RBF Michał Bereta
Algorytm wstecznej propagacji błędów dla sieci RBF Michał Bereta www.michalbereta.pl Sieci radialne zawsze posiadają jedną warstwę ukrytą, która składa się z neuronów radialnych. Warstwa wyjściowa składa
8. Neuron z ciągłą funkcją aktywacji.
8. Neuron z ciągłą funkcją aktywacji. W tym ćwiczeniu zapoznamy się z modelem sztucznego neuronu oraz przykładem jego wykorzystania do rozwiązywanie prostego zadania klasyfikacji. Neuron biologiczny i
Optymalizacja optymalizacji
7 maja 2008 Wstęp Optymalizacja lokalna Optymalizacja globalna Algorytmy genetyczne Badane czasteczki Wykorzystane oprogramowanie (Algorytm genetyczny) 2 Sieć neuronowa Pochodne met-enkefaliny Optymalizacja
Rozdział 1 Sztuczne sieci neuronowe. Materiały do zajęć dydaktycznych - na podstawie dokumentacji programu Matlab opracował Dariusz Grzesiak
2 Rozdział 1 Sztuczne sieci neuronowe. 3 Sztuczna sieć neuronowa jest zbiorem prostych elementów pracujących równolegle, których zasada działania inspirowana jest biologicznym systemem nerwowym. Sztuczną
Podstawy Sztucznej Inteligencji (PSZT)
Podstawy Sztucznej Inteligencji (PSZT) Paweł Wawrzyński Uczenie maszynowe Sztuczne sieci neuronowe Plan na dziś Uczenie maszynowe Problem aproksymacji funkcji Sieci neuronowe PSZT, zima 2013, wykład 12
ZACHODNIOPOMORSKI UNIWERSYTET TECHNOLOGICZNY W SZCZECINIE
ZACHODNIOPOMORSKI UNIWERSYTET TECHNOLOGICZNY W SZCZECINIE INSTYTUT TECHNOLOGII MECHANICZNEJ Metody Sztucznej Inteligencji Sztuczne Sieci Neuronowe Wstęp Sieci neuronowe są sztucznymi strukturami, których
Temat: Sieci neuronowe oraz technologia CUDA
Elbląg, 27.03.2010 Temat: Sieci neuronowe oraz technologia CUDA Przygotował: Mateusz Górny VIII semestr ASiSK Wstęp Sieci neuronowe są to specyficzne struktury danych odzwierciedlające sieć neuronów w
Zapisywanie algorytmów w języku programowania
Temat C5 Zapisywanie algorytmów w języku programowania Cele edukacyjne Zrozumienie, na czym polega programowanie. Poznanie sposobu zapisu algorytmu w postaci programu komputerowego. Zrozumienie, na czym
Wstęp do sieci neuronowych, wykład 6 Wsteczna propagacja błędu - cz. 3
Wstęp do sieci neuronowych, wykład 6 Wsteczna propagacja błędu - cz. 3 Andrzej Rutkowski, Maja Czoków, Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2018-11-05 Projekt
Oprogramowanie Systemów Obrazowania SIECI NEURONOWE
SIECI NEURONOWE Przedmiotem laboratorium jest stworzenie algorytmu rozpoznawania zwierząt z zastosowaniem sieci neuronowych w oparciu o 5 kryteriów: ile zwierzę ma nóg, czy żyje w wodzie, czy umie latać,
Optymalizacja ciągła
Optymalizacja ciągła 5. Metoda stochastycznego spadku wzdłuż gradientu Wojciech Kotłowski Instytut Informatyki PP http://www.cs.put.poznan.pl/wkotlowski/ 04.04.2019 1 / 20 Wprowadzenie Minimalizacja różniczkowalnej
Algorytmy decyzyjne będące alternatywą dla sieci neuronowych
Algorytmy decyzyjne będące alternatywą dla sieci neuronowych Piotr Dalka Przykładowe algorytmy decyzyjne Sztuczne sieci neuronowe Algorytm k najbliższych sąsiadów Kaskada klasyfikatorów AdaBoost Naiwny
Sieci neuronowe w Statistica
http://usnet.us.edu.pl/uslugi-sieciowe/oprogramowanie-w-usk-usnet/oprogramowaniestatystyczne/ Sieci neuronowe w Statistica Agnieszka Nowak - Brzezińska Podstawowym elementem składowym sztucznej sieci neuronowej
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Zagadnienia optymalizacji i aproksymacji. Sieci neuronowe.
Zagadnienia optymalizacji i aproksymacji. Sieci neuronowe. zajecia.jakubw.pl/nai Literatura: S. Osowski, Sieci neuronowe w ujęciu algorytmicznym. WNT, Warszawa 997. PODSTAWOWE ZAGADNIENIA TECHNICZNE AI
Dokumentacja Końcowa
Metody Sztucznej Inteligencji 2 Projekt Prognozowanie kierunku ruchu indeksów giełdowych na podstawie danych historycznych. Dokumentacja Końcowa Autorzy: Robert Wojciechowski Michał Denkiewicz Wstęp Celem
Uczenie sieci typu MLP
Uczenie sieci typu MLP Przypomnienie budowa sieci typu MLP Przypomnienie budowy neuronu Neuron ze skokową funkcją aktywacji jest zły!!! Powszechnie stosuje -> modele z sigmoidalną funkcją aktywacji - współczynnik
Instrukcja realizacji ćwiczenia
SIEĆ KOHONENA ROZPOZNAWANIE OBRAZÓW Cel ćwiczenia: zapoznanie się ze sposobem reprezentacji wiedzy w sieciach Kohonena i mechanizmami sąsiedztwa i sumienia neuronów. Zadanie do analizy: analizujemy sieć
ALGORYTMY SZTUCZNEJ INTELIGENCJI
ALGORYTMY SZTUCZNEJ INTELIGENCJI Sieci neuronowe 06.12.2014 Krzysztof Salamon 1 Wstęp Sprawozdanie to dotyczy ćwiczeń z zakresu sieci neuronowych realizowanym na przedmiocie: Algorytmy Sztucznej Inteligencji.
Systemy uczące się Lab 4
Systemy uczące się Lab 4 dr Przemysław Juszczuk Katedra Inżynierii Wiedzy, Uniwersytet Ekonomiczny 26 X 2018 Projekt zaliczeniowy Podstawą zaliczenia ćwiczeń jest indywidualne wykonanie projektu uwzględniającego
C++ Przeładowanie operatorów i wzorce w klasach
C++ i wzorce w klasach Andrzej Przybyszewski numer albumu: 89810 14 listopada 2009 Ogólnie Przeładowanie (przeciążanie) operatorów polega na nadaniu im nowych funkcji. Przeładowanie operatora dokonuje
Zastosowania sieci neuronowych
Zastosowania sieci neuronowych klasyfikacja LABORKA Piotr Ciskowski zadanie 1. klasyfikacja zwierząt sieć jednowarstwowa żródło: Tadeusiewicz. Odkrywanie własności sieci neuronowych, str. 159 Przykład
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
OpenAI Gym. Adam Szczepaniak, Kamil Walkowiak
OpenAI Gym Adam Szczepaniak, Kamil Walkowiak Plan prezentacji Programowanie agentowe Uczenie przez wzmacnianie i problemy związane z rozwojem algorytmów Charakterystyka OpenAI Gym Biblioteka gym Podsumowanie
Teraz bajty. Informatyka dla szkoły podstawowej. Klasa VI
1 Teraz bajty. Informatyka dla szkoły podstawowej. Klasa VI 1. Obliczenia w arkuszu kalkulacyjnym Rozwiązywanie problemów z wykorzystaniem aplikacji komputerowych obliczenia w arkuszu kalkulacyjnym wykonuje
Elementy modelowania matematycznego
Elementy modelowania matematycznego Modelowanie algorytmów klasyfikujących. Podejście probabilistyczne. Naiwny klasyfikator bayesowski. Modelowanie danych metodą najbliższych sąsiadów. Jakub Wróblewski
Jazda autonomiczna Delphi zgodna z zasadami sztucznej inteligencji
Jazda autonomiczna Delphi zgodna z zasadami sztucznej inteligencji data aktualizacji: 2017.10.11 Delphi Kraków Rozwój jazdy autonomicznej zmienia krajobraz technologii transportu w sposób tak dynamiczny,
Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.
Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na
Budowa sztucznych sieci neuronowych do prognozowania. Przykład jednostek uczestnictwa otwartego funduszu inwestycyjnego
Budowa sztucznych sieci neuronowych do prognozowania. Przykład jednostek uczestnictwa otwartego funduszu inwestycyjnego Dorota Witkowska Szkoła Główna Gospodarstwa Wiejskiego w Warszawie Wprowadzenie Sztuczne
Zastosowania sieci neuronowych
Zastosowania sieci neuronowych aproksymacja LABORKA Piotr Ciskowski zadanie 1. aproksymacja funkcji odległość punktów źródło: Żurada i in. Sztuczne sieci neuronowe, przykład 4.4, str. 137 Naucz sieć taką
INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE
Studia podyplomowe dla nauczycieli INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Przedmiot JĘZYKI PROGRAMOWANIA DEFINICJE I PODSTAWOWE POJĘCIA Autor mgr Sławomir Ciernicki 1/7 Aby
Rozpoznawanie obrazu. Teraz opiszemy jak działa robot.
Rozpoznawanie obrazu Implementujesz oprogramowanie do rozpoznawania obrazu dla robota. Za każdym razem, gdy robot robi zdjęcie kamerą, jest ono zapisywane jako czarno-biały obraz w pamięci robota. Każdy
lekcja 8a Gry komputerowe MasterMind
lekcja 8a Gry komputerowe MasterMind Posiadamy już elementarną wiedzę w zakresie programowania. Pora więc zabrać się za rozwiązywanie problemów bardziej złożonych, które wymagają zastosowania typowych
znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
Podstawy Programowania Obiektowego
Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja
Wstęp do teorii sztucznej inteligencji Wykład III. Modele sieci neuronowych.
Wstęp do teorii sztucznej inteligencji Wykład III Modele sieci neuronowych. 1 Perceptron model najprostzszy przypomnienie Schemat neuronu opracowany przez McCullocha i Pittsa w 1943 roku. Przykład funkcji
Metody Sztucznej Inteligencji II
17 marca 2013 Neuron biologiczny Neuron Jest podstawowym budulcem układu nerwowego. Jest komórką, która jest w stanie odbierać i przekazywać sygnały elektryczne. Neuron działanie Jeżeli wartość sygnału
Język C++ zajęcia nr 2
Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator
Wykład 5: Klasy cz. 3
Programowanie obiektowe Wykład 5: cz. 3 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD - podstawy Konstruktor i destruktor (część I) 2 Konstruktor i destruktor KONSTRUKTOR Dla przykładu
2
1 2 3 4 5 Dużo pisze się i słyszy o projektach wdrożeń systemów zarządzania wiedzą, które nie przyniosły oczekiwanych rezultatów, bo mało kto korzystał z tych systemów. Technologia nie jest bowiem lekarstwem
Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.
Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class
Sieci neuronowe w Statistica. Agnieszka Nowak - Brzezioska
Sieci neuronowe w Statistica Agnieszka Nowak - Brzezioska Podstawowym elementem składowym sztucznej sieci neuronowej jest element przetwarzający neuron. Schemat działania neuronu: x1 x2 w1 w2 Dendrites
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie
Inteligentne systemy decyzyjne: Uczenie maszynowe sztuczne sieci neuronowe
Inteligentne systemy decyzyjne: Uczenie maszynowe sztuczne sieci neuronowe Trening jednokierunkowych sieci neuronowych wykład 2. dr inż. PawełŻwan Katedra Systemów Multimedialnych Politechnika Gdańska
O co chodzi z tym MATLAB'em?!
O co chodzi z tym MATLAB'em?! Część 1. SIMULINK W pliku data.mat jest zapisany przebieg. Gdzieś tam i kiedyś tam zarejestrowany. Widać go na fioletowo poniżej. Powstał on z obiektu, co ciekawe wiemy jak
ĆWICZENIE 5: Sztuczne sieci neuronowe
Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny, Politechnika Śląska www.imio.polsl.pl METODY HEURYSTYCZNE ĆWICZENIE 5: Sztuczne sieci neuronowe opracował: dr inż. Witold
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
Uczenie się pojedynczego neuronu W0 X0=1 W1 x1 W2 s f y x2 Wp xp p x i w i=x w+wo i=0 Jeśli zastosowana zostanie funkcja bipolarna s y: y=-1 gdy z=0 Wówczas: W 1 x 1 + w 2 x 2 + = 0 Algorytm
Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania
Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania Krzysztof Kluza, Janusz Miller 1 Debugowanie Debugowanie, czy też po polsku odpluskiwanie, to proces polegający na kontrolowanym wykonaniu programu
Najprostsze modele sieci z rekurencją. sieci Hopfielda; sieci uczone regułą Hebba; sieć Hamminga;
Sieci Hopfielda Najprostsze modele sieci z rekurencją sieci Hopfielda; sieci uczone regułą Hebba; sieć Hamminga; Modele bardziej złoŝone: RTRN (Real Time Recurrent Network), przetwarzająca sygnały w czasie
S O M SELF-ORGANIZING MAPS. Przemysław Szczepańczyk Łukasz Myszor
S O M SELF-ORGANIZING MAPS Przemysław Szczepańczyk Łukasz Myszor Podstawy teoretyczne Map Samoorganizujących się stworzył prof. Teuvo Kohonen (1982 r.). SOM wywodzi się ze sztucznych sieci neuronowych.
XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery
http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod
Badacze zbudowali wiele systemów technicznych, naśladujących w komputerze ludzki mózg. Najbardziej pożyteczne okazały się sieci neuronowe.
Naśladując w komputerze ludzki mózg staramy się połączyć zalety komputera (dostępność i szybkość działania) z zaletami mózgu (zdolność do uczenia się) informatyka + 2 Badacze zbudowali wiele systemów technicznych,
//warunki początkowe m=500; T=30; c=0.4; t=linspace(0,t,m); y0=[-2.5;2.5];
4.3. Przykłady wykorzystania funkcji bibliotecznych 73 MATLAB % definiowanie funkcji function [dx]=vderpol(t,y) global c; dx=[y(2); c*(1-y(1)^2)*y(2)-y(1)]; SCILAB // definiowanie układu function [f]=vderpol(t,y,c)
WYKORZYSTANIE SIECI NEURONOWEJ DO BADANIA WPŁYWU WYDOBYCIA NA SEJSMICZNOŚĆ W KOPALNIACH WĘGLA KAMIENNEGO. Stanisław Kowalik (Poland, Gliwice)
WYKORZYSTANIE SIECI NEURONOWEJ DO BADANIA WPŁYWU WYDOBYCIA NA SEJSMICZNOŚĆ W KOPALNIACH WĘGLA KAMIENNEGO Stanisław Kowalik (Poland, Gliwice) 1. Wprowadzenie Wstrząsy podziemne i tąpania występujące w kopalniach
Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa.
Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa. Maja Czoków, Jarosław Piersa, Andrzej Rutkowski Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2018-10-15 Projekt
Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy
Programowanie w C++ 1.Czym jest programowanie Pisanie programów to wcale nie czarna magia, tylko bardzo logiczna rozmowa z komputerem. Oczywiście w jednym ze specjalnie stworzonych do tego celu języków.
Program Coachingu dla młodych osób
Program Coachingu dla młodych osób "Dziecku nie wlewaj wiedzy, ale zainspiruj je do działania " Przed rozpoczęciem modułu I wysyłamy do uczestników zajęć kwestionariusz 360 Moduł 1: Samoznanie jako część
Laboratorium 5: Tablice. Wyszukiwanie binarne
Wojciech Myszka Laboratorium 5: Tablice. Wyszukiwanie binarne 2016-05-07 09:02:17 +0200 1. Tablice Do tej pory nie było potrzeby odwoływać się do zmiennych złożonych. Programy były bardzo proste i korzystały
P R Z E T W A R Z A N I E S Y G N A Ł Ó W B I O M E T R Y C Z N Y C H
W O J S K O W A A K A D E M I A T E C H N I C Z N A W Y D Z I A Ł E L E K T R O N I K I Drukować dwustronnie P R Z E T W A R Z A N I E S Y G N A Ł Ó W B I O M E T R Y C Z N Y C H Grupa... Data wykonania
Szablony funkcji i szablony klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument
Języki programowania zasady ich tworzenia
Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie
C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów
Operatory są elementami języka C++. Istnieje zasada, że z elementami języka, takimi jak np. słowa kluczowe, nie można dokonywać żadnych zmian, przeciążeń, itp. PRZECIĄŻANIE OPERATORÓW Ale dla operatorów
Wymagania edukacyjne z informatyki dla uczniów klas VI SP nr 53 w Krakowie w roku szkolnym 2019/2020
Prowadzący: Elwira Kukiełka Ewa Pawlak-Głuc 1 Opracowano na podstawie: 1. Podstawa programowa(dz.u. z 017r. poz. ) Rozporządzenie Ministra Edukacji Narodowej z dnia 1 lutego 017 r. w sprawie podstawy programowej
Jak napisać program obliczający pola powierzchni różnych figur płaskich?
Część IX C++ Jak napisać program obliczający pola powierzchni różnych figur płaskich? Na początku, przed stworzeniem właściwego kodu programu zaprojektujemy naszą aplikację i stworzymy schemat blokowy
Wyjątki (exceptions)
Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.
Uczenie sieci neuronowych i bayesowskich
Wstęp do metod sztucznej inteligencji www.mat.uni.torun.pl/~piersaj 2009-01-22 Co to jest neuron? Komputer, a mózg komputer mózg Jednostki obliczeniowe 1-4 CPU 10 11 neuronów Pojemność 10 9 b RAM, 10 10
PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec
PROE wykład 3 klasa string, przeciążanie funkcji, operatory dr inż. Jacek Naruniec Przypomnienie z ostatnich wykładów Konstruktory/destruktory i kolejność ich wywołania w złożonej klasie. Referencja Obiekty
Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1
Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem
Lekcja : Tablice + pętle
Lekcja : Tablice + pętle Wprowadzenie Oczywiście wiesz już jak dużo można osiągnąć za pomocą tablic oraz jak dużo można osiągnąć za pomocą pętli, jednak tak naprawdę prawdziwe możliwości daje połączenie
Ćwiczenie numer 4 JESS PRZYKŁADOWY SYSTEM EKSPERTOWY.
Ćwiczenie numer 4 JESS PRZYKŁADOWY SYSTEM EKSPERTOWY. 1. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z przykładowym systemem ekspertowym napisanym w JESS. Studenci poznają strukturę systemu ekspertowego,
Szablony funkcji i klas (templates)
Instrukcja laboratoryjna nr 3 Programowanie w języku C 2 (C++ poziom zaawansowany) Szablony funkcji i klas (templates) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp
Temat: Sztuczne Sieci Neuronowe. Instrukcja do ćwiczeń przedmiotu INŻYNIERIA WIEDZY I SYSTEMY EKSPERTOWE
Temat: Sztuczne Sieci Neuronowe Instrukcja do ćwiczeń przedmiotu INŻYNIERIA WIEDZY I SYSTEMY EKSPERTOWE Dr inż. Barbara Mrzygłód KISiM, WIMiIP, AGH mrzyglod@ agh.edu.pl 1 Wprowadzenie Sztuczne sieci neuronowe
Metody systemowe i decyzyjne w informatyce
Metody systemowe i decyzyjne w informatyce Laboratorium JAVA Zadanie nr 2 Rozpoznawanie liter autorzy: A. Gonczarek, J.M. Tomczak Cel zadania Celem zadania jest zapoznanie się z problemem klasyfikacji
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN 006 Wydajność systemu 2 SO i SK/WIN Najprostszym sposobem na poprawienie wydajności systemu, jeżeli dysponujemy zbyt małą ilością pamięci RAM
Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.
Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.
Sieci neuronowe - dokumentacja projektu
Sieci neuronowe - dokumentacja projektu Predykcja finansowa, modelowanie wskaźnika kursu spółki KGHM. Piotr Jakubas Artur Kosztyła Marcin Krzych Kraków 2009 1. Sieci neuronowe - dokumentacja projektu...
Zadanie 2: Arytmetyka symboli
1 Cel ćwiczenia Zadanie 2: Arytmetyka symboli Wykształcenie umiejętności abstrahowania operacji arytmetycznych. Zapoznanie się i przećwiczenie mechanizmu tworzenia przeciążeń funkcji operatorowych. Utrwalenie
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,
Projekt Sieci neuronowe
Projekt Sieci neuronowe Chmielecka Katarzyna Gr. 9 IiE 1. Problem i dane Sieć neuronowa miała za zadanie nauczyć się klasyfikować wnioski kredytowe. W projekcie wykorzystano dane pochodzące z 110 wniosków
Wyszukiwanie binarne
Wyszukiwanie binarne Wyszukiwanie binarne to technika pozwalająca na przeszukanie jakiegoś posortowanego zbioru danych w czasie logarytmicznie zależnym od jego wielkości (co to dokładnie znaczy dowiecie
SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa
Autorzy scenariusza: SCENARIUSZ LEKCJI OPRACOWANY W RAMACH PROJEKTU: INFORMATYKA MÓJ SPOSÓB NA POZNANIE I OPISANIE ŚWIATA. PROGRAM NAUCZANIA INFORMATYKI Z ELEMENTAMI PRZEDMIOTÓW MATEMATYCZNO-PRZYRODNICZYCH
Algorytm. a programowanie -
Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik
Algorytm genetyczny (genetic algorithm)-
Optymalizacja W praktyce inżynierskiej często zachodzi potrzeba znalezienia parametrów, dla których system/urządzenie będzie działać w sposób optymalny. Klasyczne podejście do optymalizacji: sformułowanie
Innowacja pedagogiczna dla uczniów pierwszej klasy gimnazjum Programowanie
Innowacja pedagogiczna dla uczniów pierwszej klasy gimnazjum Programowanie Opracował Ireneusz Trębacz 1 WSTĘP Dlaczego warto uczyć się programowania? Żyjemy w społeczeństwie, które coraz bardziej się informatyzuje.
SZTUCZNA INTELIGENCJA
SZTUCZNA INTELIGENCJA SYSTEMY ROZMYTE Adrian Horzyk Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i Inżynierii Biomedycznej Laboratorium
Algorytmy sztucznej inteligencji
Algorytmy sztucznej inteligencji Dynamiczne sieci neuronowe 1 Zapis macierzowy sieci neuronowych Poniżej omówione zostaną części składowe sieci neuronowych i metoda ich zapisu za pomocą macierzy. Obliczenia
Sposoby przedstawiania algorytmów
Temat 1. Sposoby przedstawiania algorytmów Realizacja podstawy programowej 5. 1) wyjaśnia pojęcie algorytmu, podaje odpowiednie przykłady algorytmów rozwiązywania różnych problemów; 2) formułuje ścisły
ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje
Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych
Wymagania na poszczególne oceny szkolne dla klasy VI. (na podstawie Grażyny Koba, Teraz bajty. Informatyka dla szkoły podstawowej.
1 Wymagania na poszczególne oceny szkolne dla klasy VI (na podstawie Grażyny Koba, Teraz bajty. Informatyka dla szkoły podstawowej. Klasa VI ) 2 1. Obliczenia w arkuszu kalkulacyjnym słucha poleceń nauczyciela
Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015
Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015 1 Metody numeryczne Dział matematyki Metody rozwiązywania problemów matematycznych za pomocą operacji na liczbach. Otrzymywane
Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw
Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej
Programowanie i techniki algorytmiczne
Temat 2. Programowanie i techniki algorytmiczne Realizacja podstawy programowej 1) wyjaśnia pojęcie algorytmu, podaje odpowiednie przykłady algorytmów rozwiązywania różnych 2) formułuje ścisły opis prostej
Przyspieszenie obróbki CNC z edytorem ścieżki. narzędzia w ZW3D. ZW3D CAD/CAM Biała księga
Przyspieszenie obróbki CNC z edytorem ścieżki narzędzia w ZW3D Wstęp Podczas procesu obróbki, dobrze wykonane części zawsze wymagają doskonałych umiejętności wytwarzania i doświadczenia. Czy zdarzyło ci
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
HAŁASU Z UWZGLĘDNIENIEM ZJAWISK O CHARAKTERZE NIELINIOWYM
ZASTOSOWANIE SIECI NEURONOWYCH W SYSTEMACH AKTYWNEJ REDUKCJI HAŁASU Z UWZGLĘDNIENIEM ZJAWISK O CHARAKTERZE NIELINIOWYM WPROWADZENIE Zwalczanie hałasu przy pomocy metod aktywnych redukcji hałasu polega
Dariusz Brzeziński Instytut Informatyki, Politechnika Poznańska
Dariusz Brzeziński Instytut Informatyki, Politechnika Poznańska Podstawowe architektury sieci neuronowych Generowanie sztucznych danych Jak się nie przemęczyć Korzystanie z istniejących wag Zamrażanie