» »

Genetski algoritem

Genetski algoritem

pietro ::

Za dolocen proces v celici ze imam eksperimentalne podatke, sedaj pa skusam ta proces se in silico simulirati. Za to sem napisal 115 diferencialnih enacb, ki slonijo na 340 paramterih. Ker vsi parametri se niso poznani, sem se odlocil le-te nakljucno enega po enega spreminjati (znane parametre le za 10% od znane vrednosti, neznane pa po stiri velikostne razrede od neke smiselne vrednosti) in ob vsaki spremebi izracunati deviacijo med eksperimentom in izracunom, spremembo parametra pa sprejeti le, ce je nova deviacija manjsa od prejsnje (princip Monte Carlo torej).

Problem nastane, ker je za izracun enega koraka potrebnih cca. 10 sekund, pri tisoc spremembah pa se ne dobim ustreznega rezultata. OK, lahko naredim recimo milijon korakov, kar bi vzelo svoj cas. Sprasujem vas za kaksno drugo idejo, predlog, ki bi proces pohitril.

Sam sem razmisljal v smeri dveh vzporednih procesih in nato vsake toliko case med tema procesoma izmenjati del parametrov (ce se zgornji proces imenuje genetski algoritem, bi se ta lahko imenoval rekombinacijski algoritem :)). Nisem pa razmisljal v smeri spreminjanja poti v simulaciji (tj. spreminjanje mreze interakcij med proteini). Po pravici, o slednjem niti ne zelim razmisljati.

Hvala ze vnaprej.

whatever ::

lahk rečem sam: svaka čast stari:|
Veliko jih je notri, še več jih je pa zunaj.
Bilijarde v šole! - Ivan Kramberger
Abnormal behaviour of abnormal brain makes me normal.

Fave ::

Kot je rekel whatever.

Drugače pa povprašaj v ZT, bo mogoče kaj več odgovorov.
My mind's a hyper tool that fixes everything.

dzinks63 ::

Kaj takega skoraj ne moreš računat na domačem compu, vse skupaj bi moral dat na npr. super računalnik.

terryww ::

rasta ::

Verjetno bi za začetek poskusil s čim bolj preprostim, recimo hill climbing algoritmom.
Pri genetskih algoritmih se ti stvar zakomplicira (v kolikor ne uporabljaš kakšnega toolboxa) in so tudi bolj sitni, če slučajno nimaš konvergence.

rasta ::

Po drugi strani, se ti sploh splača (oz. smeš) narediti ta "parameter-fitting"? Bo model uporaben (in verodostojen)?
Ker (verjetno) nikakor ne drži, da lahko parametre določiš enolično za dani eksperiment. Se pravi, boš nastavil parametre modela tako, da se bodo rezultati dobro pokrili z meritvami danega eksperimenta, ampak ne bodo pa ustrezali dejanskemu realnemu modelu. Se pravi, z modelom boš dobil napačno percepcijo procesa pa tudi, ko boš z modelom izvajal kakšen drugačen eksperiment, boš dobil kar nekaj.

imagodei ::

Thomasa vprašaj.
- Hoc est qui sumus -

Thomas ::

Kaj bi jaz naredil?

Problem je tukajle v kriterijski funkciji. Kako veš, da se sistem obnaša prav, kako veš, da se sistem obnaša bolj ali manj prav?

Moraš nujno postaviti neke empirične podatke za gabarid sistema. Potem je kriterijska funkcija samo ta, kako blizu pride empiričnim podatkom tvoj sistem, s posameznim naborom parametrov.

Parametre moraš zevoluirati pri čimveč že znanih situacijah, potem bodo edinole lahko pravilni.

Fitnes evolucije ti je pa "bližina" z opaženimstanjem.
Man muss immer generalisieren - Carl Jacobi

Thomas ::

Evoluiranje seta parametrov s takim fitnesom, da so parametri boljši, če imajo enačbe "PODOBNEJŠI" izid eksperimentalnemu in so parametri slabši, če imajo "RAZLIČNEJŠI" izid je sigurno ok.

Treba je definirati samo še metriko, kaj je "PODOBNEJŠE". Mislim, da je vsaj milijon načinov, kako to storiti. Ampak o tem kako, idejo že imaš, saj govoriš o neki "deviaciji". Mogoče je kar dobra, morda jo je treba še mau natunat. Morda celo podvreči evoluciji!

sem se odlocil le-te nakljucno enega po enega spreminjati


Spreminjati jih moraš naključno več. Koliko? Random. Od enega do ene par, vsakič različno. Če se situacija poslabša - glede na deviacijo - vrneš prvotno nastavitev. Sicer spet izžrebaš število mutacij na novem optimumu in jih toliko narediš.

Tako v loop, saj to veš.

Ne splača se ti pa hraniti samo alfa seta parametrov, ampak kar ene milijon najboljših setov, recimo. S tem da najbolj verjetno mutiraš taboljše in novi pride v elitno družbo TOP 1000000, ali pa ne pride.

Tako vsaj, bi se lotil jaz.
Man muss immer generalisieren - Carl Jacobi

pietro ::

Super, hvala vsem.

Sedaj spreminjam poljubno stevilo parametrov, poleg tega pa od nekaj generacij do nekaj generacij "med bratranci" zamesam poljubno stevilo parametrov. Sem imel veliko sreco in ze po nekaj sto generacijah dobil sila ustrezen rezultat. Ne cisto, vendar dvomim, da je bolje samo s spreminjanjem parametrov mogoce doseci. Moral bi spreminjati topologijo grafa interakcij med proteini.

Eksperimentalni podatki so casovno spreminjanje koncetracije v celicnem jedru. Po simulaciji modela izmerim standardno deviacijo glede na eksperimentalno krivuljo, kar je tudi fitnes algoritma.

Ali se (tako, teoreticno) kdaj pa kdaj splaca dopustiti, da sistem preide v novo stanje, cetudi je novo stanje manj ugodno od prejsnjega? Pri tem bi verjetnost za tak neugoden prehod bila sorazmerna z "velikostjo neugodja". Vedar kako sorazmerna? Bi bilo to odvisno od stevila parametrov, vrednosti rezultatov ...?

rasta ::

Ali se (tako, teoreticno) kdaj pa kdaj splaca dopustiti, da sistem preide v novo stanje, cetudi je novo stanje manj ugodno od prejsnjega?

Ne razumem točno, kaj misliš s "stanjem sistema", najboljšo do sedaj najdeno rešitev? V tem primeru, ne samo, da se splača dopustiti, je kar nujno potrebno. V nasprotnem primeru obtičiš v lokalnem maksimumu.
Pri "plezanju po hribu" (hill-climbing) imaš razne razširitve, kot je stimulirano ohlajanje, tabu seznam ipd. Pri genetskih algoritmih pa potrebuješ dovolj veliko populacijo in ne prestrogo kriterijsko funkcijo. Ker pa ima palica vedno dva konca, ti večja "sproščenost" kriterijev sprejemanja rešitve pomeni počasnejšo konvergenco (in se ponavadi rešuje tako, da počasi zateguješ kriterije oz. greš celo po kakšni N-krivulji - zateguješ, odtegneš, spet zategneš itd.).

Bi te pa jaz še enkrat pozval, k premisleku, kaj dobiš s takšnim "fittanjem" parametrov. Sedaj imaš nekakno ne preveč jasno mešanico analitičnega in black-box modela.
Tvojega področja sicer ne poznam, ampak pri vsakem modelu je zelo pomembna namembnost modela. Tvoj model kot tak, verjetno ne bo uporaben za analizo delovanja sistema (zato ker nekateri parametri oz. členi dif. enačb nimajo nobenega fizikalnega pomena), velja pa tudi za zelo omejeno def. območje.
Če rabiš samo black-box model, bi bilo smiselno razmisliti, zakaj ne bi uporabil raje npr. nevronske mreže ali fuzzy rojenje. Toolboxov za to je cel kup, dela bo manj (tudi z debugiranjem).

Thomas ::

Ja, če boš mene poslušal, boš imel milijon alf. In forkanje iz 1457. najboljše bo mogoče super.
Man muss immer generalisieren - Carl Jacobi

pietro ::

Receno, storjeno. Modelna krivulja se perfektno prilega eksperimentalni. Vendar pa sem v literaturi nasel se nekaj krivulj, kjer so avtorji za razliko od mene, ki sem spreminjanje prenosa proteinov v celicno jedro spremljal s casom, ta prenos spremaljali kot odvisnost zacetne hitrosti prenosa od koncentracije posameznih proteinskih komponent. Vsem tem krivuljam pa moj model ne ustreza vec, zato sem se odlocil integrirati se te nove podatke in jih uporabiti kot fitnes.

Kaj me tare? Novi eksperimentalni podatki so pridobljeni z vec zporednimi meritvami, zato imamo pri eni koncentraciji vec zacetnih hitrosti - rezultat je predstavljen kot povprecje vseh meritev s podano +- napako. Kako z algoritmom dopovedati, da ni tako zelo nujno zadeti povprecje meritev, temvec je se vedno v redu, ce se giblje v obmocju meritev? Logicno se mi zdi, da teh napak ne upostevam, saj bo tockovanje, ki bo ustrezalo povprecju, popolnoma zadosti.

Drugi problem. Pri samo prvih (odvisnost od casa) ekperimentalnih podatkih sem parametre selekcioniral glede na deviacijo od te krivulje. Sedaj imam vec krivulj, kjer bom prav tako evolvirane generacije izbiral glede na relativno (relativno glede na vrednost v tisti tocki in glede na stevilo tock na posamezno krivuljo) deviacijo. Ne vem, pa kako te posamezne deviacije zdruziti (sestevaje logaritmov vrednosti?) in kako jih obteziti.

rasta ::

1. Uporabiš drugo metriko za določitev odstopanja.
Tako namesto d(x,y) = |x-y| odstopanje izračunaš z esponentom kot d(x,y) = A*exp(|x-y|/ρ) ali s polinomom d(x,y) = A*(|x-y|/ρ)5 itd. Pač neka funkcija, ki se prelomi na robu intervala zaupanja; odtopanja znotraj intervala zaupanja so tako ovrednotena mizerno, takoj ko pa odstopanje pade ven pa zavzame zelo veliko vrednost.

2. To vprašanje mi je nekoliko nejasno. V splošnem se pogreški seštevajo s kvadratom: r = sqrt(r12 +
r12 + ... + rn2)
, tako da največje odstopanje dominira (-> sqrt(102 + 0.12)). Za obtežitev pa se uporabljajo občutljivosti.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Statistika interval zaupanja confidence level 95% komentar

Oddelek: Šola
51290 (658) bajsibajsi
»

Regulacija grelca

Oddelek: Elektrotehnika in elektronika
434784 (3208)    -S\/\/-  
»

Fizika - toplotni koeficient

Oddelek: Šola
162509 (2268) Yacked2
»

E (matematična konstanta) (strani: 1 2 3 4 )

Oddelek: Šola
15315795 (10259) Jst
»

Gaia - teorija ali dejstvo (strani: 1 2 )

Oddelek: Znanost in tehnologija
665785 (4689) Ramesses II

Več podobnih tem