Qaranlıq bir ekranın üzərinə bir neçə “yem” qoyub, balaca virtual qurdun qıvrıla-qıvrıla onlara tərəf hərəkət etdiyini izləmək qəribə dərəcədə maraqlıdır.
Amma worm-sim layihəsini adi animasiyadan daha maraqlı edən şey ekranda gördüyümüz qurdun özü deyil. Əsas maraqlı hissə arxa planda işləyən sistemdir.
Layihə neyroelm dünyasında ən çox öyrənilmiş kiçik canlılardan biri olan Caenorhabditis elegansın sinir sistemindən ilhamlanan sadələşdirilmiş hesablama modelindən istifadə edir.
C. elegans təxminən bir millimetr uzunluğundadır. Buna baxmayaraq onun sinir sistemi inanılmaz dərəcədə detallı şəkildə xəritələnib. Yetkin hermafrodit fərdin sinir sistemi klassik olaraq 302 neyrondan ibarət hesab olunur və onilliklər ərzində aparılan elektron mikroskopiya işləri sayəsində bu neyronların bir-biri ilə necə əlaqə qurduğu kifayət qədər ətraflı məlumdur.
Bunu eşidəndə insanın ağlına təbii olaraq belə bir sual gəlir:
Əgər bütün əlaqə xəritəsini bilirikdirsə, onu JavaScript-ə köçürüb işləyən bir qurd beyni yarada bilmərik?
Qısa cavab:
Tam olaraq yox.
Amma worm-sim-i maraqlı edən məsələ də elə budur.
Hər Şey Əlaqə Xəritəsindən Başlayır
Layihənin mərkəzində weights adlı böyük bir JavaScript obyekti dayanır.
Məntiq təxminən belədir:
var weights = {
ADAL: {
ADAR: 2,
ADFL: 1,
AIBL: 1,
AVBR: 7,
RIML: 3,
// ...
},
// ...
};Buradakı hər açar bir neyronu və ya əzələ ilə əlaqəli düyünü təmsil edir. Qarşısındakı dəyərlər isə həmin düyünün digər düyünlərlə əlaqəsini və bu əlaqələrin çəkisini göstərir.
Simulyasiya başladıqda BRAIN.setup() bu cədvəli gəzir, mövcud düyünləri tapır və şəbəkənin ilkin vəziyyətini dinamik şəkildə qurur.
Əsas axın təəccüblü dərəcədə sadədir:
sensor giriş → neyron fəaliyyəti → çəkili əlaqələr → əzələ aktivləşməsi → bədən fizikası
Əslində bütün sistem bu zəncirin ətrafında işləyir.
Kod daha əvvəl hazırlanmış GoPiGo Connectome işlərindən törəyib. Connectome məlumatları sonradan JavaScript-ə daşınıb və worm-sim layihəsinə daxil edilib.
Amma burada “simulyasiya” sözündən bir qədər ehtiyatla istifadə etmək lazımdır.
Layihə bioloji əlaqələri hesablama strukturu kimi istifadə edir, amma real qurdun elektrik, kimyəvi, molekulyar və biomexaniki xüsusiyyətlərinin hamısını yenidən yaratmır.
Koda baxdıqca bu fərq daha aydın görünür.
Buradakı Neyronlar Kiçik Toplayıcılar Kimi İşləyir
connectome.js faylındakı virtual neyronlar məqsədli şəkildə sadə qurulub.
Hər düyün öz aktivlik səviyyəsini saxlayır. Gələn əlaqələr də öz çəkilərinə uyğun olaraq bu dəyərə əlavə olunur.
Sistemdə atəşlənmə həddi belə təyin edilib:
BRAIN.fireThreshold = 30;Əzələ olmayan bir neyronun aktivliyi bu həddi keçdikdə, həmin neyron çıxış əlaqələri vasitəsilə aktivliyi digər düyünlərə ötürə bilir.
Hər neyron yenilənməsindən sonra qalan aktivlik isə azaldılır:
BRAIN.postSynaptic[ps][BRAIN.nextState] *= 0.85;Yəni aktivlik şəbəkənin içində sonsuza qədər qalmır. Zaman keçdikcə zəifləyir.
Ortaya sadə, diskret zamanlı neyron dinamikası çıxır:
Bəzi neyronları stimullaşdır.
Gələn çəkili siqnalları topla.
Həddi keçən neyronları aktivləşdir.
Aktivliyi əlaqələr vasitəsilə yay.
Əzələ aktivliyini oxu.
Qalan aktivliyi zəiflət.
Prosesi təkrarla.
Burada real biologiyadakı kimi detallı membran potensialları, ion kanalları, neyrotransmitter kinetikası, təsadüfi vezikul buraxılması və ya bioloji cəhətdən dəqiq impuls dinamikası yoxdur.
Və açığı, olması da şərt deyil.
Buradakı daha maraqlı sual budur:
Bütün bu bioloji mürəkkəbliyi əlavə etmədən nə qədər davranış əldə etmək olar?
Qurda Hiss Edə Biləcəyi Bir Dünya Vermək
Boşluqda təkbaşına işləyən sinir sistemi o qədər də maraqlı deyil.
Ona bir mühit lazımdır.
worm-sim-də bu mühit brauzerin özüdür.
Hazırkı versiya qurda bir neçə fərqli süni sensor siqnal verir.
Aclıq
Simulyasiya işlədiyi müddətdə bəzi neyronlar davamlı stimullaşdırılır:
RIML
RIMR
RICL
RICRBu, şəbəkənin daxilində daimi bir daxili impuls yaradır.
Bunu real bioloji aclığın dəqiq modeli kimi başa düşmək düzgün olmaz.
Daha çox sistemin davranış yaratmağa davam etməsi üçün verilən hesablama əsaslı aclıq siqnalı kimi düşünmək olar.
Toxunma
Qurdun baş hissəsi brauzer pəncərəsinin kənarına çatanda toqquşma mexanizmi işə düşür.
FLP, ASH, IL1 və OLQ qruplarındakı bəzi sensor neyronlar aktivləşir.
Beləliklə ekranın kənarı görünməz bir divar kimi davranır.
Qurd divara toxunur, sensor siqnal şəbəkəyə daxil olur və yaranan yeni neyron vəziyyəti hərəkətə təsir edir.
Sadədir, amma kifayət qədər gözəl işləyən bir geri əlaqə dövrəsidir.
Yem və Kemotaksis
Ekrana klik etdikdə yem yerləşdirmək mümkündür.
Simulyasiya qurdun bütün yem mənbələrinə olan məsafəsinə əsasən sadə bir “qoxu” dəyəri hesablayır:
currentSmell += 200 / (dist + 1);Amma kod sadəcə bunu soruşmur:
Qoxu nə qədər güclüdür?
Daha maraqlı bir şeyi ölçür:
Qoxu artır, yoxsa azalır?
BRAIN.foodGradient = currentSmell - lastSmell;Bu dəyişimin müsbət və ya mənfi olmasından asılı olaraq ASEL və ya ASER neyronu stimullaşdırılır.
Bunun biologiyada da müəyyən əsası var. C. elegans daxilində ASE neyronları kimyəvi siqnalların hiss edilməsində mühüm rol oynayan sağ-sol sensor neyron cütüdür və onların iki tərəfi kimyəvi istiqamətlənmədə fərqli xüsusiyyətlərə malikdir.
Burada da real kemotaksisin tam modeli qurulmayıb.
Amma gözəl bir dövrə ortaya çıxır:
hərəkət et → mühiti ölç → dəyişimi hiss et → sinir sistemini dəyiş → yenidən hərəkət et
Məhz bu nöqtədə sistem adi animasiyadan çıxaraq həqiqi mənada bədənə sahib bir sistem təsiri yaratmağa başlayır.
Əlaqə Xəritəsi Təkbaşına Qurda Sürünməyi Öyrətmir
Layihəni araşdırarkən məncə ən vacib məqamlardan biri də budur.
Ekranda qıvrıla-qıvrıla hərəkət edən qurdu görəndə bu hərəkətin birbaşa connectome-dan ortaya çıxdığını düşünmək çox asandır.
Amma kod bir az daha mürəkkəbdir.
Simulyasiya bədən boyunca yayılan ayrıca bir ritmik siqnal yaradır.
Başdan quyruğa doğru yerləşən segmentlər sinus dalğasına əsasən növbə ilə dorsal və ventral əzələ stimullaşdırılması alır:
if (Math.sin(phase) > 0) {
// dorsal əzələləri stimullaşdır
} else {
// ventral əzələləri stimullaşdır
}Beləliklə bədən boyunca hərəkət edən qıvrılma dalğası yaranır.
Bunu sadələşdirilmiş central pattern generator, yəni ritmik hərəkət yaradan mərkəzi mexanizm kimi düşünmək olar.
Kod bundan əlavə iki sinus dalğasından ibarət ayrıca gəzişmə siqnalı yaradır və onu əsasən baş hissəsinə tətbiq edir.
Deməli sistem sadəcə belə işləmir:
connectome daxil olur → qurd davranışı yaranır
Daha çox belədir:
connectome + sensor geri əlaqə + proprioseptiv geri əlaqə + süni ritm + istiqamətləndirmə + bədən fizikası → davranış
İlk baxışda bu, bir qədər az “sehrli” görünə bilər.
Amma elmi baxımdan əslində daha maraqlıdır.
Çünki real canlıların hərəkəti də yalnız beyindən gələn əmrlərdən ibarət deyil. Sinir sistemi, əzələlər, bədən və mühit daim bir-birinə təsir edən qapalı dövrə yaradır.
C. elegans üzərində aparılmış tədqiqatlarda da bədən hissələri ilə motor neyronlar arasındakı proprioseptiv geri əlaqənin qıvrılma hərəkətinin başdan quyruğa ötürülməsində mühüm rol oynadığı göstərilib.
Ona görə worm-sim daxilindəki sinus mexanizmini “qurd hərəkətinin bioloji sirri tapılıb” kimi qəbul etmək düzgün olmaz.
Bu, daha çox yaxşı düşünülmüş bir mühəndislik həllidir.
Neyron Aktivliyi Fiziki Bədənə Necə Çevrilir?
Virtual qurdun bədəni bir-birinə bağlanmış 35 fiziki düyündən ibarətdir.
Sinir sistemindən gələn motor çıxışları isə 17 segmentlik aktivlik qrupuna çevrilir.
Hər segment üçün bir neçə əsas siqnal izlənir:
dorsal: bədənin bir istiqamətə əyilməsinə kömək edirventral: əks istiqamətə əyilməyə təsir edirleft/right: yan əzələ aktivliyini toplayırturn: məhdudlaşdırılmış istiqamət dəyişmə siqnalı verir
Hər bədən hissəsində dorsal və ventral aktivlik müqayisə edilir və lazım olan əyilmə səviyyəsi hesablanır.
Daha sonra qonşu fiziki düyünlərə qüvvələr tətbiq edilir və bədən həmin əyriliyi almağa çalışır.
Amma sadəcə qıvrılmaq irəli getmək üçün kifayət deyil.
Buzun üstünə ilan formasında bir ip qoyub onu dalğalandırdığınızı düşünün.
İp çox gözəl qıvrıla bilər, amma demək olar ki, yerindən tərpənməz.
worm-sim bunu anizotropik sürtünmə ilə həll edir.
Bədənin istiqamətinə paralel olan hərəkət yalnız az miqdarda zəiflədilir, yan tərəfə sürüşmə isə daha güclü şəkildə azaldılır.
Bu fərq sayəsində bədən boyunca yayılan dalğa real irəli hərəkətə çevrilir.
Sistemdə həmçinin:
qonşu nöqtələri bir yerdə saxlayan yayabənzər qüvvələr,
həddindən artıq əyilməyə mane olan sərtlik,
bədənin uzaq hissələrinin bir-birinin içindən keçməsinin qarşısını alan itələmə qüvvələri
mövcuddur.
Burada çox asanlıqla gözümüzdən qaça biləcək vacib bir fikir var:
Davranış yalnız sinir sistemindən yaranmır.
Davranış sinir sisteminin bir bədən vasitəsilə, konkret bir mühitin içində işləməsi nəticəsində ortaya çıxır.
Bədəndən Beyinə Geri Qayıdan Sadə Bir Siqnal da Var
Layihədə xüsusilə xoşuma gələn başqa bir detal da budur.
Simulyasiya yalnız beyindən bədənə siqnal göndərmir.
Bədənin hazırkı əyilmə vəziyyətinin müəyyən hissəsini yenidən sinir sisteminə ötürür.
Bir segment müəyyən istiqamətə kifayət qədər əyildikdə, uyğun dorsal və ya ventral əzələ düyünlərinə əlavə aktivlik verilir.
Yəni sistem artıq yalnız belə deyil:
beyin
↓
əzələlər
↓
bədənTəxminən belə işləməyə başlayır:
beyin
↓
əzələlər
↓
bədən
↓
proprioseptiv geri əlaqə
└──────────────→ beyinBu, konseptual baxımdan vacib məsələdir.
Əgər sinir sistemi öz bədəninin bir az əvvəl nə etdiyini heç vaxt bilmirsə, onu düzgün idarə etmək də çətinləşir.
Real C. elegans üzərində aparılan araşdırmalarda proprioseptiv geri əlaqənin bədən boyunca yayılan qıvrılma dalğalarının koordinasiyasında mühüm rol oynadığı məlumdur.
Bu səbəbdən worm-sim sadə neyron şəbəkə vizuallaşdırmasından daha maraqlı bir təcrübə platformasına çevrilir.
Bəs Bu, Rəqəmsal C. elegans Beynidir?
Xeyr.
Ən azından “real qurd beyninin rəqəmsal surəti” mənasında deyil.
Connectome bizə əsasən bunu göstərir:
Kim kimə bağlıdır?
Amma əlaqə xəritəsini bilmək həmin əlaqələrin necə işlədiyini tam olaraq bildiyimiz demək deyil.
Teorik olaraq iki sinir sistemi eyni əlaqə qrafikinə sahib ola bilər, amma aşağıdakılara görə tam fərqli davranış göstərə bilər:
fərqli neyrotransmitterlər,
fərqli reseptor paylanması,
fərqli əlaqə gücləri,
neyromodulyatorlar,
hüceyrə dinamikası,
plastiklik,
sensor vəziyyət,
inkişaf tarixi,
bədən mexanikası.
Connectomics sahəsinin həm gözəl, həm də adamı düşündürən tərəflərindən biri məhz budur:
Naqillərin necə çəkildiyini bilmək, algoritmi bilmək demək deyil.
worm-sim-in hazırkı versiyasında hərəkətin yaranmasına kömək edən açıq şəkildə proqramlaşdırılmış başqa elementlər də var.
Məsələn:
bədən boyunca gedən süni ritm,
prosedur əsaslı gəzişmə siqnalı,
fizika sabitləri,
irəli hərəkət mexanizmi,
toqquşma sistemi,
süni qoxu qradiyenti,
sadələşdirilmiş neyron hədd modeli.
Ona görə də bu layihəni “qurd beyninin dəqiq rəqəmsal rekonstruksiyası” adlandırmaq bir qədər şişirtmə olar.
Daha düzgün ifadə belədir:
Connectome-dan ilhamlanan, bədənləşdirilmiş sinir sistemi simulyasiyası.
Və açığı, bu formada belə olduqca maraqlıdır.
Əsl Maraqlı Hissə: Bunu Təcrübə Platformasına Çevirmək
Sistemin kiçik və başa düşülən olması böyük üstünlükdür.
Çünki istədiyimiz hissəni dəyişib nəticəsini izləmək nisbətən asandır.
Məsələn, ayrı-ayrı neyronları söndürüb qurdun hərəkət trayektoriyasının necə dəyişdiyinə baxmaq olar.
Əlaqə çəkilərini dəyişib yem tapmaq qabiliyyətinin yaxşılaşıb-yaxşılaşmadığını ölçmək mümkündür.
Proprioseptiv geri əlaqəni tamamilə söndürmək olar.
Hazırkı süni ritm mexanizmini çıxarıb başqa bir idarəedicinin hərəkəti yenidən öyrənib-öyrənə bilməyəcəyini yoxlamaq mümkündür.
Minlərlə sınaq ərzində neyron aktivliyini qeydə almaq olar.
Fərqli mühitlər qurmaq mümkündür.
Hətta bəzi parametrləri əl ilə tənzimləmək əvəzinə onları təkamül alqoritmləri ilə optimallaşdırmaq olar.
Məncə xüsusilə maraqlı bir təcrübə sistemi üç ayrı təbəqəyə bölmək olardı:
CONNECTOME
neyron əlaqələri və aktivlik
↓
CONTROLLER
öyrənən və ya təkamül edən dinamika
↓
BODY + WORLD
fizika, yem, toxunma və sensor geri əlaqəBundan sonra hərəkət qaydalarının hamısını birbaşa proqramlaşdırmaq əvəzinə yalnız müəyyən parametrlərin dəyişməsinə icazə verilə bilər.
Sistem də göstərdiyi davranışa görə mükafat ala bilər:
yemə çatmaq,
sərhədlərdən uzaq qalmaq,
daha az hərəkətlə eyni nəticəni əldə etmək,
simulyasiya olunmuş neyron zədəsindən sonra yenidən uyğunlaşmaq.
Bu nöqtədə verdiyimiz sual da dəyişir.
Artıq:
“Connectome-u hərəkət etdirə bilərikmi?”
deyə soruşmuruq.
Əvəzində belə soruşuruq:
“Bu strukturun bəzi dinamikalarının öyrənməsinə imkan versək, nə qədər faydalı və mürəkkəb davranış ortaya çıxa bilər?”
Məncə əsl maraqlı təcrübə məhz burada başlayır.
Başa Düşüləcək Qədər Kiçik, Sındırılıb Yenidən Qurulacaq Qədər Açıq
worm-sim-in gözəl tərəflərindən biri də nəhəng framework-lərin altında itib-batmamasıdır.
Əsasən bunlardan ibarətdir:
JavaScript,
Canvas renderingi,
neyron əlaqə məlumatları,
xüsusi fizika sistemi.
Sensor girişdən başlayaraq neyron aktivliyinə, oradan əzələ aktivləşməsinə və sonda ekranda gördüyümüz fiziki hərəkətə qədər bütün prosesi mənbə kodunda izləmək mümkündür.
Bunun üçün böyük GPU klasterinə və ya nəhəng süni intellekt infrastrukturuna ehtiyac yoxdur.
Layihə həmçinin MIT License ilə yayımlanır.
Bu o deməkdir ki, müəllif hüquqları və lisenziya bildirişləri qorunduğu müddətdə proqram təminatından istifadə etmək, onu kopyalamaq, dəyişdirmək, yayımlamaq və digər layihələrin daxilinə əlavə etmək mümkündür.
Eksperimental bir layihə üçün bu, kifayət qədər vacib üstünlükdür.
Layihəni fork edə bilərsiniz.
Sındıra bilərsiniz.
Neyron modelini tamamilə dəyişə bilərsiniz.
Reinforcement learning əlavə edə bilərsiniz.
Neyron zədələnməsi təcrübələri qura bilərsiniz.
Hər bir virtual neyronun aktivliyini qeyd edə bilərsiniz.
Hətta bütün sistemi ilkin müəllifin heç düşünmədiyi tam başqa istiqamətə apara bilərsiniz.
Bəlkə də bu balaca virtual qurdun ən dəyərli tərəfi elə budur.
O, neyroelm ilə proqram mühəndisliyinin çox maraqlı bir kəsişməsində dayanır.
Bioloji əlaqə xəritəsi icra edilə bilən məlumata çevrilir.
Məlumat aktivliyə çevrilir.
Aktivlik əzələ komandalarına çevrilir.
Əzələ komandaları fizikaya çevrilir.
Fizika isə yenidən sinir sisteminə məlumat göndərir.
Bu sistem tam rəqəmsal canlı olmaqdan hələ çox uzaqdır.
Amma real suallar vermək üçün kifayət qədər mürəkkəbdir.
Eyni zamanda mənbə kodunu açıb sistemin niyə məhz belə davrandığını görə biləcəyimiz qədər də sadədir.
Məncə onu maraqlı edən əsas şey də məhz budur.
← ELM