Konstruera en syntetisk neurala nätverk (1 / 8 steg)
Steg 1: Systemarkitektur
Core systemkomponenter:
FPGA
Kaos klocka
Connectome-styrenheten
Universum-styrenheten
Perifera stöd systemkomponenter:
FT232H USB-to-serial bridge
Spänningsregulator
AVR dragon (AVR ISP)
USB-blaster (FPGA JTAG)
USB-hubb
Här hela röran började eftersom jag tänkte på hur fri vilja hos människor kan hävda for.* argumentet slutade med kontinuitet i tiden.
Om detta argument innehar vatten (det inte: inga argument gör: endast empiriska test data passerar uppbåda för mig), det fick mig att undra om en artificiella neurala nätverk kan göras för att fortlöpande i tid. Mest neurala nätverk har implementerats i programvara i discretized-tid system (även om memristors, PAAs och deras likar möjliggöra några neuromorphic arkitektur i kontinuerlig tid) och jag är nyfiken om någon intressant kaotiska effekter uppstår när neurala nätverk tillåts vara asynkron.
Enskilda asynchronous digital neuron utvecklades en Altera EP4CE6E22C8N. Efter att ha lagt upptar krävs multiplexering logiken, nätverket av 36 nervceller ungefär 4000 logikelement, 65% av chipet. Men det är bara för 36 nervceller och tillhörande synaps multiplexorer, dvs, en tom nätverk som kan vara nya ledningar men baserad på externa kommandon, med I/O rader som mappas direkt till synaps ingående linjer (t.ex. nerve_splice_into_layer_0_axon_in_0) och axon utdatarader (t.ex. nerve_tap_from_layer_5_axon_out_3). Det finns 6 utdatarader, 1 DTACK (dataöverföring erkänna) linje och 18 ingående linjer. "Låter som snygg hårdvara" du säger. Faktiskt är det, imaginär läsare! Men för att faktiskt använda det jag behöver ha något sätt att gränssnittet med sak (jag heter det Xenolux!), och så vår saga börjar...
Vad är nödvändigt att använda syntetiska neurala nätverk? Till att börja med, en enhet för Connectome. Det måste finnas en extern registerförare som berättar nätverket hur tråd. Varje neuron har 6 synapser; Det finns en retande och en hämmande synaps av varje av följande vikter: 0.17, 0,5 och 1,0. Varje synaps har en liten bit (4 bitar, så en nibble, faktiskt) ram. Bitcode i Synapsens RAM kontroller synapsen 's multiplexer, som beslutar var den är ansluten. Varje synaps kan anslutas till ingenting (null, marken, ingen signal), till någon av de 6 axoner som kommer in från det föregående lagret av syntetiska neuroner eller till en "stim_line", som levererar en konstant stimulerande signal (typ av motsatsen till en null-anslutning).
Synapser nås individuellt av inställning 9 adress bitar som är formaterade som följer: 3 bitar att välja vilket lager 6 nervceller, 3 bitar att välja vilka NEURON av 6 inom det markerade lagret och 3 bitar att välja vilka SYNAPS av 6 inom neuron. Raden "mux_write_enable" data (som gör exakt vad den säger om tenn) påstås lite efter Synapsens adress och önskat synaps bitcode tillämpas.
* baserat på nondeterminism som orsakas av avsaknad av lokala dolda variabler
så att de exakta ögonblicken i vilka vågfunktioner kollaps skulle vara verkligen är slumpmässig och att denna förändring i tid skulle göra ändring av nätdrift i en kaotisk ickelinjära mode.