Delphi

Úvodem

Úvodem  |  Soubory ke stažení

 

Dnes dokončíme povídání o neuronové síti a závěrem opět odlehčení.

Neuronové sítě - 3.

V minulých částech jsme si uvedli základní principy práce s jedním typem neuronových sítí. V této části si uvedeme praktické výsledky - program v Delphi, realizující neuronovou síť.

K naprogramování je využita komponenta firmy DatalandSoftware. Pokud budete chtít sami s přiloženým příkladem nebo s nějakou vlastní neuronovou sítí experimentovat, a nebude se vám samotným chtít programovat algoritmy neuronové sítě od začátku do konce, doporučuji vám zmíněnou komponentu si nainstalovat. Práce s komponentou je velmi snadná - viz popis na konci stati.

V přiloženém naprogramovaném příkladu - viz obrázek - je v pravém okně zobrazena množina učebních příkladů. Každý příklad je na jednom řádku, přičemž první tři znaky jsou chápány jako kombinace znaků v řádku, sloupci či diagonále ze hry Tic-Tac-To verze 3 x 3. Znak . (tečka) opticky nahrazuje mezeru. Za znakem / (lomítko) je uvedena kombinace nul a jedniček, jako ocenění pole, na něž se má provést tah (0 - neprovádět, 1 - provést). Celé hodnocení je bráno s hlediska hráče s kolečky. Množina příkladů je v textovém souboru s názvem TestData.txt a načítá se po spuštění programu.


příklad

V prvním editačním poli je zadán implicitní počet učebních průchodů přes množinu příkladů. Teoreticky čím více průchodů, tím lépe, ale abychom u počítače nestrávili třeba celou noc učebním procesem, omezuje se v lepším případě počet průchodů dosažením nějakého minimálního součtu chyb za celou množinu příkladů, v horším případě se počet průchodů omezí napevno nějakým počtem kroků. Počet kroků můžete změnit, nebo můžete projít celou výuku vícekrát a ve druhém editačním okně se celkový počet průchodů součtuje. Výukový proces se spouští tlačítkem "výuka".

Poté co neuronovou síť příklady "naučíte", můžete si ověřit jak dobře se příklady "naučila". Můžete buď zadat kombinaci znaků x, o a . (tečka) (namísto tečky můžete ponechat prázdné pole) a nebo poklepejte na řádek s příkladem. Poté stiskněte tlačítko "test kombinace" a v řádcích pod zadanou trojicí se objeví naučené hodnoty.

Obdobně můžete provést test vyhodnocení situace - tentokrát nad celým hracím polem. Program postupně vybere všechny vodorovné, svislé a diagonální trojice a po vyhodnocení trojice sečte hodnoty na odpovídajících polích. Tah (kolečkem) by se měl teoreticky provést na pole s nejvyšším součtem.

Pokud si s programem trochu pohrajete a provedete pár pokusů, zjistíte, že vyhodnocování závisí na celé řadě faktorů. Jednak je to učební množina, dále počet cyklů výuky, struktuře sítě (tj. počet vrstev sítě a počet neuronů v jednotlivých skrytých vrstvách) a dále vyhodnocení závisí na některých dalších parametrech. Výsledky jsou občas zajímavé a překvapivé.

Pokud použijete pro definici sítě výše zmíněnou komponentu, pak v inspektoru objektů můžete nastavit vlastnosti:

inspektor

BPSpeed a Inertion jsou výše zmíněné parametry, na nichž mohou záviset výsledky. InputCount a OutputCount určují počet neuronů vstupní a výstupní vrstvy, vlastnosti Input/OutputMin a Input/OutputMax určují v jakém intervalu se mohou vstupní a výstupní hodnoty pohybovat. Vlastnost NLayers je kolekce skrytých vrstev, přičemž pro každou skrytou vrstvu si můžete zvolit počet neuronů.

Základní metody a hodnoty proměnných, s nimiž budete v programu pracovat, jsou:

Proměnné:

Input[1] .. Input[InputCount]    -> hodnoty vstupní vrstvy
Output[1] .. Output[OutputCount] -> hodnoty výstupní vrstvy


Metody: 

BackProp - učící algoritmus - nastavíme hodnoty pole Input a Output  a voláme metodu

CalcOut - vyhodnocovací algoritmus - nastavíme hodnoty pole Input, voláme metodu a výsledek odčítáme v poli Output.
To je zatím k neuronovým sítím a umělé inteligenci vše. Vaše vlastní konstruktivní příspěvky, názory a komentáře jsou vítány.

Závěrem

Počítače nám pomáhají efektivně zvládat administrativu:




Následující série obrázků ukazuje moderní trendy konstrukce ergonomických PC:





Pokud vás výše uvedená vylepšení zaujala, máte pravděpodobně sklon k workoholismu a tak byste si měli dát pozor, abyste nakonec nedopadli podobně:




Viry dnes útočí na naše počítače ze všech stran. Musíme využít všech možností jak je před nimi ochránit...

 

Jiří Ventluka