Neuralna mreža je moćen alat za modelovanje podataka koji je u stanju da obuhvati i reprezentuje kompleksne ulazno-izlazne veze. Motivacija za razvoj tehnologije neuralnih mreža je potekla od želje da se razvije veštački sistem koji bi mogao da obavlja „inteligentne“ zadatke slične onima koje obavlja ljudski mozak. Neuralne mreže liče na ljudski mozak na sledećih nekoliko načina: one stiču znanje kroz učenje i znanje je uskladišteno u okviru inter-neuronskih veza koje su poznate kao sinaptičke veze.
Istinska snaga i prednost neuralnih mreža leži u njihovoj sposobnosti da reprezentuju kako linearne, tako i nelinearne veze u njihovoj sposobnosti da uče ove odnose direktno iz podataka koji se modeluju. Tradicionalni linearni modeli su jednostavno neadekvatni kada se radi o modelovanju podataka koji sadrže nelinearne karakteristike.
Najuobičajeniji model neuralne mreže je poznat kao nadzirana mreža zato što zahteva željeni izlaz kako bi učila. Cilj ovog tipa mreže je da kreira model koji mapira ulaz i izlaz koristeći istorijske podatke, tako da model onda može da bude korišćen da proizvede izlaz kada je željeni izlaz nepoznat. Grafička reprezentacija percepcije u više slojeva je data na Slici 1.
Slika 1. Percepcija u više slojeva
Ulazi su snabdevani unutar ulaznog sloja i pomnoženi težinom interkonekcije, kako bi prešli iz ulaznog sloja u prvi skriveni sloj. U okviru prvog skrivenog sloja, oni se sumiraju i zatim obrađuju pomoću nelinearnih funkcija. Kada obrađeni podaci napuste prvi skriveni sloj, oni ponovo bivaju pomnoženi sa težinom interkonekcije, zatim sumirani i obrađeni od strane drugog skrivenog sloja. Konačno podatak je pomnožen sa težinom interkonekcije i onda obrađen poslednji put u okviru izlaznog sloja kako bi proizveo izlaz neuralne mreže.
Neuralne mreže, sa svojom značajnom sposobnošću da izvedu značenje iz komplikovanih ili nepreciznih podataka, mogu da budu korišćene da ekstrakuju obrazce i detektuju trendove koji su suviše kompleksni da bi bili uočeni od strane čoveka ili neke druge računarske tehnike. O treniranoj neuralnoj mreži može da se razmišlja kao o „ekspertu“ u kategoriji informacija koje su joj date na analizu. Ovaj ekspert onda može biti korišćen da pruži projekcije date novim rešenjima od interesa i da odgovori na „šta ako“ pitanja. Ostale prednosti uključuju:
- Adaptivno učenje: Sposobnost da se uči kako da se obavi zadatak koji je zasnovan na podacima datim za trening ili inicijalno iskustvo. Primer adaptivnog učenja je dat na Slici 2.
- Samo-organizacija: Veštačka neuralna mreža može da kreira svoju sopstvenu organizaciju ili reprezentaciju informacija koje prima dokom učenja.
- Rad u realnom vremenu: Računanje neuralnih mreža može da bude izvedeno u paralelnom i specijalnom hardverskom uređaju koji je dizajniran i proizveden, što daje prednost ovim sposobnostima.
- Tolerancija greške preko kodiranja suvišnih informacija: Delimična destrukcija neuralnih mreža vodi u odgovarajuću degradaciju performansi. Međutim, neke od osobina mreže mogu biti zadržane čak i sa velikim mrežnim oštećenima.
Slika 2. Primer adaptivnog učenja
C# je multi-paradigmalni programski jezik koji objedinjuje jaku daktilografiju, imperativne, deklarativne, funkcionalne, generične, objektno-orjentisane i komponentalno-orjentisane programerske discipline. Razvijen je od strane Microsoft-a u okviru svoje .NET inicijative i kasnije odobren kao standard od strane Ecma (ECMA-334) i ISO (ISO/IEC 23270:2006). C# je jedan od programskih jezika koji je dizajniran za uobičajenu jezičku infrastrukturu.
C# je nameravan da bude jednostavan, moderan, predviđen za opštu upotrebu i objektno-orjentisan programski jezik. Njegov razvojni tim je vođen od strane Anders-a Hejlsberg-a. Najnovija verzija je C# 4.0, koja je izdata u aprilu 2010. godine.
- Klasifikacija (neuralna mreža sa jednim slojem koja je trenirana pomocu percepcionog algoritma učenja);
- Aproksimacija (neuralna mreža sa više slojeva koja je trenirana pomoću algoritma učenja back-propagacije);
- Predviđanje vremenskog niza (neuralna mreža sa više slojeva koja je trenirana pomoću algoritma učenja koji se zasniva na back-propagaciji);
- Klasterizacija boja (Kohonen samo-organizaciona mapa);
- Problem putujućeg prodavca (elastična mreža).
Tokom dizajniranja biblioteke, jedna od glavnih ideja je bila da se napravi biblioteka koja je fleksibilna, upotrebljiva i jednostavna za upotrebu i razumevanje. Umesto kombinovanja nekoliko entiteta neuralnih mreža u jednu klasu i stvaranja nereda, što vodi u gubitak fleksibilnosti i jasnoće u kodu i dizajnu, svi entiteti su podeljeni u različite klase, što ih čini jednostavnijim za razumevanje i upotrebu. Neke biblioteke neuralnih mreža teže da kombinuju entitet neuralne mreže zajedno sa algoritmom učenja, što otežava razvoj drugog algoritma učenja koji može da bude primenjen na istoj arhitekturi neuralne mreže. Neke druge biblioteke i aplikacije ne isporučuju takve entitete kao što su neuroni, slojevi neurona ili mreže slojeva, ali implementuju celokupnu arhitekturu neuralne mreže u jednu klasu. U nekim slučajevima je diskutabilno šta je bolje, zato što može da se javi neuobičajena arhitektura neuralne mreže, gde je teško razdvojiti mrežu u slojeve i neurone. U nekim drugim slučajevima, mreže ne teže višeslojnoj arhitekturi, tako da je potpuno beskorisno imati dodatne entitete kao što su slojevi. Ali, u većini slučajeva, preporučljivo je da se svi entiteti podele u različite klase, što vodi, ne samo ka lakšem razumevanju, već takođe dopušta ponovnu upotrebu svih komponenti i izgradnju nove neuralne mreže od manjih generičkih delova.
Biblioteka sadrži šest glavnih entiteta:
- Neuron – osnovna abstraktna klasa za sve neurone, koja obuhvata tako obične entitete kao što su neuronska težina, izlazna vrednost i ulazna vrednost. Druge neuronske klase se nasleđuju iz osnovne kalase sa ciljem da je prošire koristeći dodatke karakteristike i specijalizujući ih.
- Sloj – predstavlja kolekciju neurona. Ovo je osnovna abstraktna klasa, koja obuhvata običnu funkcionalnost za sve neuronske slojeve.
-
Mreža – predstavlja neuralnu mrežu koja je kolekcija neuronskih slojeva. Ovo je osnovna abstraktna klasa, koja pruža običnu funkcionalnost generičke neuralne mreže. Kako bismo implementovali specifičnu arhitekturu neuralne mreže, potrebno je da nasledimo klasu, proširujući je specifičnim funkcionalnostima bilo koje arhitekture neuralne mreže. Proces učenja neuralne mreže je dat na Slici 4.
- IActivationFunction – interfejs aktivacione funkcije. Aktivacione funkcije se koriste kod aktivacionih neurona – tipa neurona, gde težinske suma njegovih ulaza biva izračunata i onda se ta vrednost koristi kao ulaz za funkciju aktivacije i izlaz postaje izlazna vrednost neurona.
- IUnsupervisedLearning – interfejs za nenadzirani algoritam učenja – tip algoritma učenja gde je sistemu pružen primer ulaza samo tokom faze učenja, ali ne i željeni izlazi. Cilj ovog sistema je da organizuje samog sebe na način da pronađe koleraciju i sličnosti između uzoraka podataka.
-
ISupervisedLearning – interfejs za nadzirane algoritme učenja – tip algoritama učenja gde sistem dobija uzorke ulaza, sa željenim izlaznim vrednostima tokom faze učenja. Cilj ovog sistema je da uopšti podatke koji treba da se nauče i nači da obezbedi tačne izlazne vrednosti kada su one predstavljene samo ulaznim vrednostima.
Slika 4. Proces učenja neuralne mreže
Biblioteka pruža sledeće arhitekture neuralnih mreža:
-
Mreža aktivacije – neuralna mreža gde neuroni računaju svoje izlaze kao funkciju aktivacije izlaza i argument je težinska suma njenih ulaza kombinovana sa vrednošću threshold-a. Mreža može da se sastoji od pojedinačnog sloja ili više slojeva. Trenirana nadziranim algorimima učenja, mreža dopušta da se reše zadaci poput aproksimacije, predviđanja, klasifikacije i prepoznavanja.
-
Mreža rastojanja – neuralna mreža gde svaki neuron računa svoj izlaz kao rastojanje između težinskih vrednosti i ulaznih vrednosti. Mreža se sastoji od jednog sloja i može da bude korišćena kao osnova za mreže kao što su Kohonen samo-organizaciona mapa, elastična mreža i Hamming mreža.
Korišćeni su različiti algoritmi učenja kako bi se istrenirale različite neuralne mreža i kako bi se rešili različiti tipovi problema:
- Percepciono učenje – ovaj algoritam se smatra prvim algoritmom za učenje neuralnih mreža i njegova istorija počinje od 1957. godine. Algoritam može da bude korišćen sa jednoslojnom aktivacionom mrežom, gde svaki neuron ima funkciju aktivacije threshold-a. Opseg njenih primena je prilično mali i ograničen i svodi se na klasifikaciju linearno odvojivih podataka.
- Učenje po Delta pravilu – ovaj algoritam je po težini sledeći iza algoritma percepcionog učenja. On koristi izvode funkcije aktivacije i može da se primeni samo u jednoslojnoj aktivacionoj mreži gde svaki neuron ima kontinualnu funkciju aktivacije umesto threshold funkcije aktivacije. Najpopularnija kontinualna funkcija aktivacije je unipolarna i bipolarna sigmoidna funkcija. Kako algoritam može da se primeni samo na jednoslojne mreže, spektar primene ovakvih mreža je ograničen na zadatke koji se tiču klasifikacije i prepoznavanja.
- Učenje pomoću back-propagacije – ovo je jedan od najpopularnijih i najpoznatijih algoritama za višeslojne mreže i njihovo učenje. Inicijalno, on je opisan 1974. godine i od tog vremena, on je detaljno proučavan i primenjivan za širok spektar različitih zadataka, koji uključuju aproksimaciju, predviđanje, prepoznavanje objekata, itd.
- SOM učenje – ovaj algoritam je razvijen od strane Kohonen-a, i smatra se jednim od najpoznatijih nenadziranih algoritama učenja koji se primenjuje u problemima klasterizacije. On tretira neuralnu mrežu kao 2D mapu čvorova, gde svaki čvor može da predstavlja odvojenu klasu. Algoritam organizuje mrežu na način tako da je moguće pronaći koleraciju i sličnosti između uzoraka podataka.
- Učenje elastične mreže – algoritam je sličan ideji SOM algoritma učenja, ali ne tretira mrežne neurone kao 2D mapu čvorova, već kao prsten. Za vreme procedure učenja, prsten dobija neki oblik, što predstavlja rešenje. Jedna od najpoznatijih demonstracija ovog algoritma učenja je problem putujućeg prodavca.
Primer primene neuralnih mreža je dat na Slici 5.
Tekst poseduje informacije proneđene na sledeićim linkovima:
- http://www.codeproject.com/Articles/16447/Neural-Networks-on-C
- http://en.wikipedia.org/wiki/C_Sharp_(programming_language)
i u radu „Application of Neural Networks to Character Recognition“ autora Dong Xiao Ni iz Seidenberg School of CSIS, Pace University, White Plains, NY, objavljenog 2007. godine.