"$d_Qndfs""MindCode/1_MindCode summary notes.txt"
www.BillHowell.ca 24Feb2020 initial - from link d_QNial_mine 'MindCode/0_MindCode notes.txt'
*************
30Apr2020 How to use MindCode
1. loaddefs link d_QMindCode 'MindCode basics.ndf'
this loads (example) :
loaddefs link d_QNial_mine 'MindCode/globals initialize.ndf' ;
loaddefs link d_QNial_mine 'MindCode/data types.ndf' ;
loaddefs link d_QNial_mine 'MindCode/trigger patterns.ndf' ;
loaddefs link d_QNial_mine 'MindCode/bits to-from [intg, real].ndf' ;
#loaddefs link d_QNial_mine 'MindCode/net constructors.ndf' ;
2. loaddefs example net from d_QMindCode
arith, trig examples.ndf
MLP - multi-layered perceptron.ndf
3. loaddefs test nets - each net file has a set of tests to run, which can be launched on load
see 'MindCode/code test', choose one of :
$ ls -1 "$d_Qndfs""MindCode/code test"
bits to-from [intg, real] tests.ndf
fire tests.ndf
index tests.ndf
MLP tests.ndf
trigger [now, cum, seq, tim, mix] tests.ndf
4. [Compare, update] test results as collected in :
0_tests collected results log.txt
48************************************************48
08********08
#] *** ToDos and issues - long-term rather than operational
#] ToDos
# should change to more biologically-plausible code!!!
#] Issues
# preNetIDs can call multiple netIDs, but processing is allows ONLY when the target netID isn't refractory
# 24Feb2020 temporary "variables" (netIDs) to be dealt with later ;
# conventional NNs assume that synapses add to the membrane potential, so they don't need such an operator ;
#] Biological plausibility
# [concept, mirror] neurons apparently are high-level representations?
# Problem : how does a cell (neuron may not differ much) do physiological functions etc? DNA, RNA, etc - biomolecule [transport, reaction] etc.
# ANN often sum wij*xj (continuous) - but how would that actually occur? Cell membrane potential cannot do that alone?!?
# this is NOT biologically realistic!!? - computations at cell level!
# but could [build, evolve] complex net!!! like McCulloch&Pitts
# what functions can the following structures easily provide? :
- 6-layer cortex column
-?4?layer neocortex column
- hippocampus
- thalamus
- other?
#] net types
# 25Feb2020 nets Must connect with preNetIDs of the proper type! (eg Z80) - checked during data initiation
#] MindCode- assumptions :
"data-latches" many available, but each captures ONLY one neuron output per time window
"time window" to complete data input (or is reset)
"refractory period" to do computation & spike
"spike result" onward
"open for business" period
# My job isn't to [decide, propose] mechanisms, but to list conjectures and provide a tool with "multiple conflicting hypothesis", as speculative as they might be
#] *** Control structures
# possibly [mRNA, epi]-based? - it may REQUIRE this, and in any case is a goal of this project!
# chains of signal proteins on microtubulo nucleus, only molecules don't travel the whole distance
# immediate throughput like fire-bucket brigade
08********08
#] *** Global [variable, list]s
# LOCAL variables convention - simply drop the "List" part for the local variable name
# neurons are nets of "shape = 1" (list), so their [firing, netID, etc] Lists must be solitaries!!!
#] netTypes - [boolean, integer, real] types are supported so far (27Feb2020)
#] net global lists (structure) - view with :
transpose mix netIDs inNetList typeList optrList firingList stateList wghtList
#] other globals
write transpose mix
("int_loww "int_high "real_loww "real_high "realBase_max "bitCnt_intBase
"bits_sign "bits_base "bits_expt "bitCnt_sign "bitCnt_base "bitCnt_expt "realCode )
( int_loww int_high real_loww real_high realBase_max bitCnt_intBase
bits_sign bits_base bits_expt bitCnt_sign bitCnt_base bitCnt_expt realCode )
write nowFireList
#] netIDList - ALL netIDs must be <= shape netIDList!!!
eg OR ((link netIDList) < (gage shape netIDList))
statList is a series of boolean lists :
bits are :
***********
21Feb2020 thinking of programs :
- make programs easily-adaptable to vastly different [number, concept, architecture, etc] bases
- initial work basically an 8-bicroprocessor! (Z-80 like in my case)
- QNial basis - see "QNial the Language Definition" Michael Jenkins, 01 August 2015
also "The Nial Dictionary" Version 6.3, August 2005, Q'Nial Systems Limited
"MindCode neuron - QNial basis.ndf" :
arithmetic operations - [+, -, *, /, ^, trigonometric, NN-specific]
comparison operations
control structures
logic operations
measurement operation
construction operation
apply-by-partition transformer
NN-specific basics - sigmoidal, counter, timer, concept neuron
- MatLab basis
- Izhikevich-like neuron - with [DNA-mRNA-epi, addressable synapses]
- Architectures :
- null
- [hyperbolic tanjent, sigmoidal] neurons - direct translation of MLPs
- memory
- [concept, grandmother] cells
- random [LSM, Echo State, Extreme Learning Machine]
- variables [boolean, integer, real, complex, etc]
- [data, spiking] structures
- scalars [1-2-3-dimensional (eg distance, area, volume), ...]
- time [scalar, spectral, wave, ...]
- fractal, fractional order calculus
- operators [+-*/, derivative, integral, etc]
- [search, patterns, classification, ]
- conciousness [John Taylor, ...]
- processes [learn, evolve, ...]
- noise
- [existence, uniqueness, stability, convergence, ...]
08********08
24Feb2020 QNial basis
- see "QNial the Language Definition" Michael Jenkins, 01 August 2015
also "The Nial Dictionary" Version 6.3, August 2005, Q'Nial Systems Limited
"MindCode neuron - QNial basis.ndf" :
# arithmetic operations
abs, floor, mod, ceiling
+, plus, sum
The operation plus is the same as sum except that plus enforces the rule that it must be applied to a pair. Sum is multi pervasive and can add up any number of items. The symbol + is a synonym for sum.
-, minus, opposite
*, product, times
The symbol * and prod are synonyms for product. The operation times is product restricted to use on pairs.
/, divide, quotient, reciprocal
The operation quotient is used in place of divide in situations where the result must be an integer.
^, power 149
exp, ln, log
sin , cos , tan
sinh, cosh, tanh
arcsin , arccos , arctan
arcsinh, arccosh, arctanh
# comparison operations
>, gt 92
>=, gte 93
<, lt 118
<=, lte 119
match 120
mate 120
max 121
min 122
up 231
# control structures
case-expr 29
for-loop 85
if-expr 95
repeat-loop 180
while-loop 237
# logic operations
and 17
diverse 55
equal 67
not 129
or 135
unequal 230
# measurement operation
allbools
allchars
allints
allnumeric
allreals
axes 17
depth
isboolean 102
ischar 102
isfault 102
isinteger 103
isphrase 103
isreal 104
isstring 204
# construction operation
append 10
cart 28
catenate 30
hitch 94
laminate 107
link 111
pair 137
single 202
solitary 204
# apply-by-partition transformer
bycols 24
byrows 25
partition 139
rank 162
reducecols 172
reducerows 172
08********08
#] General thoughts to consider :
# neuron-specific read from file :
synapses_inn - list of input neurons, + normal, - inhibitory
synapses_out - list of output neurons
neuromods - neuro-modulator states Kenji Doja [dopamine, seratonin, nor-adrenaline, acetocholine]
rules_fire - list of rules
rules_clear - list of rules
spike_inn - recent firing timestamps (stack?)
spike_out - recent firing timestamps (stack?)
# multiple synapses for each [input, output] neuron?
# [maintenance, noise]-firing
# all spikes same magnitude (pulse) at synapses
# neurons should be event-driven for efficiency?
# redundancy and wandering computations
# mathematical theory of functions
# refractory periods - [neuron, net, system]
# memory - keep state somehow, bursting neuron repeats
# as determined by DNA-mRNA-epi :
# fires with "coherent input" when active,
# extinction of inputs
# with time
# when fires
# random & noise
# otherwise
# sequence of inputs is important
# I would like to use Nvidia CUDA for GPU
# 22Feb2020 neuron names - not so simple to do
# With massive redundancy, and multi-level specialised [functional, modular, regional, whole-brain] networks, there needs to be a way of naming neurons simply for local calculations, but that maps them for the global system.
# For now, just go with a global list of neuronIDs.
08********08
NN-specific - sigmoidal, counter, timer
# enddoc