Neuronove siete

Programovacie jazyky, rady, poradňa...
kekso
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 122
Registrovaný: 02 sep 2005, 12:10
Kontaktovať používateľa:

Re: Neuronove siete

Príspevok od používateľa kekso »

harrison314 napísal:Preboha 3 dni je strasne vela
3 dni na co? Algoritmy sa u mna vytvaraju od par sekund do par hodin. 3 dni nasledne po vytvoreni sluzia len na to, aby ak sa v tomto case najde lepsi algoritmus, tak sa nahradi ten povodny tymto.
harrison314 napísal:Imho. evolucne algoritmy sa paralelizuju lahko, len na co najvyssiu efektivnost treba zvolit vhodnu velkost uloh, na ktore to rozsekas.
Samozrejme - rozdelenie ulohy na mensie je vzdy vyhodou. Problem je, ked ani zadavatel nevie ako bude algoritmus vyzerat. Na to presne chcem pouzivat A.I. Aby programovala ulohy za mna a nie aby som jej na tacke predkladal jasne ulohy a pozeral sa, ci ich spravne vyriesi.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8216
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Neuronove siete

Príspevok od používateľa harrison314 »

kekso napísal:3 dni na co? Algoritmy sa u mna vytvaraju od par sekund do par hodin. 3 dni nasledne po vytvoreni sluzia len na to, aby ak sa v tomto case najde lepsi algoritmus, tak sa nahradi ten povodny tymto.
AJ par hodin je na taketo ulohy strasne vela.
kekso napísal:Samozrejme - rozdelenie ulohy na mensie je vzdy vyhodou. Problem je, ked ani zadavatel nevie ako bude algoritmus vyzerat.
Ja nehovorim o ulohach s pohladu cloveka, ale s pohladu paraleizacie. Napr. na jeden procesor das vypocitat 1000 iteracii evoludneho algoritmu, na druhy dasich 1000.
kekso napísal:Aby programovala ulohy za mna a nie aby som jej na tacke predkladal jasne ulohy a pozeral sa, ci ich spravne vyriesi.
na toto je umela inteligencia uplne zbytocna. Pretoze, cokolvek vieme riesit jednoducho algoritmicky, malo by sa to riesit algoritmicky, kvoli zolozitosti algoritmou.
Ak na nieco mame standardny algoritmus treba pouzit ten, jeho vykonanie bude v drvivej vetcine bezat kratcie ako to co ti vypluje evolucny algoritmus, ci nueronova siet, bude (pravdepodobne) deterministicky, a bude fungovat vo vetcej miere pripadov.
kekso
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 122
Registrovaný: 02 sep 2005, 12:10
Kontaktovať používateľa:

Re: Neuronove siete

Príspevok od používateľa kekso »

Nastudoval som si niekolko materialov ku evolucnym algoritmom. Vychadza mi z toho to, kazdy neuron musi mat jediny vystup a musi ist o cislo. To zarucuje moznost porovnavania potomkov a vytvaranie novej generacie. Problem je, ze ja chcem mat aj viac vystupov a mozu to byt napr. textove retazce.
Teraz napr. ucim neuronovu siet pracovat s regularnymi vyrazmy a hladat take vstupy do funkcie RegExp, aby sa spravne vyhodnotil retazec, ci splna dany pattern.
To je aj dovod, preco som pouzil trochu iny pristup.
1. nahodne sa vytvori novy neuron a miesto toho aby sa porovnaval jeho vystup; hlada sa ci kdekolvek vo vnutri neexistuje vystup zhodny s danym vzorom
2. ak sa najde spravny a PRESNY algoritmus pre neuron, tak sa bud rovno ulozi, alebo ak uz existuje iny algoritmus, porovna sa s tymto novym a ponecha sa ten KRATSI, co by mal byt aj rychlejsi algoritmus

Ak myslis, ze sa mylim a evolucny algoritmus by sa dal pouzit aj pri napr. textovom vystupe a pri viacnasobnom vystupe, tak mi to prosim skus popisat.

//autoeditácia príspevku (04 Nov 2016, 21:21)
harrison314 napísal:na toto je umela inteligencia uplne zbytocna. Pretoze, cokolvek vieme riesit jednoducho algoritmicky, malo by sa to riesit algoritmicky, kvoli zolozitosti algoritmou.
Ak na nieco mame standardny algoritmus treba pouzit ten, jeho vykonanie bude v drvivej vetcine bezat kratcie ako to co ti vypluje evolucny algoritmus, ci nueronova siet, bude (pravdepodobne) deterministicky, a bude fungovat vo vetcej miere pripadov.
Tvoj argument je logicky. Za dlhe roky prace pri vyvoji softveru som vsak zistil dve veci:

1. pri zlozitej funkcii v programe sa casom neustale doplnaju nove a nove kroky a odocky v algoritme az nakoniec vznikne tak obrovsky a neprehladny kod, ze je skoro nemozne popisat cely jeho postup a rychlejsie ako optimalizacia kodu je vymazanie a urobenie ho znovu

2. pri velkom projekte a mnozstve programatorov sa velmi casto stava, ze aby programator pri novom probleme vytvori novy algoritmus, miesto toho aby pouzil uz existujuci. Dovod je jednoduchy - nenasiel ho

Oba dovody riesi umela inteligencia. V prvom je stale znamy pattern, takze UI bude drzat kod optimalizovany a miesto pridavania kodu ho casom zmensuje, pretoze ho neustale optimalizuje.
Ak je urceny spravy okruh neuronov pre vyvoj noveho neuronu, tak sa najde neuron s uz existujucim algoritmom a pouzije sa ten.

Opakujem, ze netvorim uplne standartnu neuronovu siet, kde byt aj riesenia s odchylkami. Ja odchylky netolerujem, takze takato UI sa da pouzit pre velke programy.
eMPiko
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3085
Registrovaný: 11 jan 2007, 16:40

Re: Neuronove siete

Príspevok od používateľa eMPiko »

Tie evolucne algoritmy sa daju v tvojom pripade pouzit takto. Kazda tvoja neuronova siet (teda nejake usporiadanie tvojich neuronov) je osobitny jedinec v populacii. Na zaciatku si vygenerujes X takychto nahodnych jedincov, ktori ti budu tvorit pociatocnu populaciu. Tychto jedincov ohodnotis nejakou funkciou. V tvojom pripade by tato funkcia mohla byt napr. to, ako blizko je dany jedinec ku ocakavanemu vysledku. Napokon nad touto populaciou prebehnu operacie mnozenia a vzniknu nove jedince. O tychto operaciach si si uz zrejme nieco precital. Najprv sa urobi selekcia, kde sa vyberu najlepsie jedince. Tie sa skrizia a vznika novy jedinec, nad ktorym sa navyse urobi nejaka mutacia. Takto ti vznikaju nove, originalne riesenia, ktore potom dalej v evolucii zasa ziju.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8216
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Neuronove siete

Príspevok od používateľa harrison314 »

kekso napísal:Ak myslis, ze sa mylim a evolucny algoritmus by sa dal pouzit aj pri napr. textovom vystupe a pri viacnasobnom vystupe, tak mi to prosim skus popisat.
Ano dal, to co hladas sa volaabstraktny syntakticky strom.
kekso napísal:1. pri zlozitej funkcii v programe sa casom neustale doplnaju nove a nove kroky a odocky v algoritme az nakoniec vznikne tak obrovsky a neprehladny kod, ze je skoro nemozne popisat cely jeho postup a rychlejsie ako optimalizacia kodu je vymazanie a urobenie ho znovu
V praxi to nie je ruzove, to viem... ale programatori, ktorych opisujes nepoznaju ani zaklady OOP, SOLID a refaktoringu?
Toto je problem programtorov, nevyriesi ho zazracny "pseudo neuro-evolucny algoritmus", lebo jeho vystup bude realne este horsi. Ludi, ktori produkuju takyto kod v praxi stretvam, ale tlcenim ich varechou po hlave :D
Hlavny problem je ze tvoje rienie sice bude fungovat na zadanych prikladoch, ale nemusi na tych co v trenovacej mnozine neboli.
Osobne by som nechcel aby sa moj produkt spraval neockavane.
kekso napísal:2. pri velkom projekte a mnozstve programatorov sa velmi casto stava, ze aby programator pri novom probleme vytvori novy algoritmus, miesto toho aby pouzil uz existujuci. Dovod je jednoduchy - nenasiel ho
To je vporiadku, ak sktocne nejestvuje.
kekso napísal:Opakujem, ze netvorim uplne standartnu neuronovu siet, kde byt aj riesenia s odchylkami. Ja odchylky netolerujem, takze takato UI sa da pouzit pre velke programy.
Ked sa ti to podari tak sem s tym.
kekso
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 122
Registrovaný: 02 sep 2005, 12:10
Kontaktovať používateľa:

Re: Neuronove siete

Príspevok od používateľa kekso »

harrison314 napísal:Ano dal, to co hladas sa volaabstraktny syntakticky strom.
Uff. Studujem tie abstraktne syntaticke stromy to uz dve hodiny a ide mi hlava prasknut.
Vynara sa mi tu zakladna otazka, ktoru asi stale nechapem. Pri viac ako trojvrtvovych neuronovych sietach, kde je mozne pouzit vahy a derivovanie je nutne aby programator urcil tieto vrstvy? Alebo su uz vrstvy navrhnute v samotnej sieti? Alebo ide o nahodne vytvarenie vrstiev?

Ja pouzivam standartne trojvsrstvovu siet a stvorvrstvovu len v pripade, ze siet moze obsahovat neurony bez vstupov (t.j. konstanty). Vtedy sa tieto neurony automaticky presunu do druhej vrstvy.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8216
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Neuronove siete

Príspevok od používateľa harrison314 »

kekso napísal:Vynara sa mi tu zakladna otazka, ktoru asi stale nechapem. Pri viac ako trojvrtvovych neuronovych sietach, kde je mozne pouzit vahy a derivovanie je nutne aby programator urcil tieto vrstvy? Alebo su uz vrstvy navrhnute v samotnej sieti? Alebo ide o nahodne vytvarenie vrstiev?
Mylis skutocne neuronove siete, alebo to co skladas ty?
kekso
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 122
Registrovaný: 02 sep 2005, 12:10
Kontaktovať používateľa:

Re: Neuronove siete

Príspevok od používateľa kekso »

Mylis skutocne neuronove siete, alebo to co skladas ty?
To co skladam ja.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8216
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Neuronove siete

Príspevok od používateľa harrison314 »

Pravdepodobne nie, zalezi ako to navrhnes.

V skutocnych neuronovych sietach (je ich vela druhou), ti stacia 3 lebo dasie nemaju vyznam, kvoli uceniu pomocou Backpropagation, pri inych druhoch to jine, napriklad deep neural network mavaju tych vrstiev ovela viac.
eMPiko
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3085
Registrovaný: 11 jan 2007, 16:40

Re: Neuronove siete

Príspevok od používateľa eMPiko »

kekso napísal:
Uff. Studujem tie abstraktne syntaticke stromy to uz dve hodiny a ide mi hlava prasknut.
Vynara sa mi tu zakladna otazka, ktoru asi stale nechapem. Pri viac ako trojvrtvovych neuronovych sietach, kde je mozne pouzit vahy a derivovanie je nutne aby programator urcil tieto vrstvy? Alebo su uz vrstvy navrhnute v samotnej sieti? Alebo ide o nahodne vytvarenie vrstiev?

Ja pouzivam standartne trojvsrstvovu siet a stvorvrstvovu len v pripade, ze siet moze obsahovat neurony bez vstupov (t.j. konstanty). Vtedy sa tieto neurony automaticky presunu do druhej vrstvy.
Nechapem preco ti ide hlava prasknut z abstraktnych syn. stromov ked je to presne ta tvoja neuronova siet :)
Napísať odpoveď