-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
214 lines (194 loc) · 9.22 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport">
<title>Neural Cellular Automata</title>
<link rel="stylesheet" href="./CAs/Shared/style.css"> <!-- Link to the CSS file -->
<link rel="icon" type="image/x-icon" href="./Images/favicon.ico">
</head>
<body>
<div class="navbar">
<a href="https://www.deepneuron.org/">
<img src="./CAs/Shared/mdn_logo.png" alt="Logo" style="height: 20px; vertical-align: middle;">
</a>
<a href="/">Home</a>
<a href="/about.html">About</a>
<a href="https://www.deepneuron.org/contact-us">Contact Us</a>
</div>
<div class="text-column">
<h1>Neural Cellular Automata Simulator</h1>
</div>
<div class="warning centre"> <!-- TODO: Would be great if this was dismissable -->
<p>
Warning: This website contains content that may
<u>flash at high frequencies</u>. If you or someone viewing this with
you is sensitive to this type of content, please use discretion when
choosing frame-rates.
</p>
</div>
<div class="controlPanel">
<h3>Select a model:</h3>
<div class="panelRow controlGroup">
<a href="./CAs/ConwaysLife/life.html" class="button" id="classic_conway">Classic Conway</a>
<a href="./CAs/LifeLike/life.html" class="button" id="life_like">Life Like</a>
<a href="./CAs/Larger/life.html" class="button" id="larger">Larger</a>
</div>
<div class="panelRow controlGroup">
<a href="./CAs/Continuous/life.html" class="button" id="continuous">Continuous</a>
<a href="./CAs/GCA/life.html" class="button" id="Growing Neural Cellular Automata">G-NCA</a>
</div>
</div>
<div class = "centre">
<img src="./gca_demo.gif">
</div>
<div class="centre">
<h1>
What are Cellular Automata?
</h1>
<p>
Cellular automata are a generalisation of John Conway’s Game of Life.
Cells existing in a grid each have a state. Observing only the states of
the cells immediately around it, each cell updates its value based on a
given rule. The same rule is applied to all cells in the grid.
</p>
<p>
Different forms of cellular automata arise by changing the rule format,
resulting in drastically different (and complex) behaviours. We’ve
implemented some famous examples here.
</p>
<p>
Using a neural network and more complex states, the cells can be trained
to exhibit specific behaviours, and this when it becomes <i>Neural Cellular Automata</i> (NCA).
Our project is interested in investigating how we can leverage NCA to make CAs
that exhibit organism-like behaviour.
</p>
<h2>
Terminology
</h2>
<p>
<i>Cell</i>: Cellular automata exist on a grid of cells. Each square of
the grid represents is termed a cell, and each cell has its own value
representing its state.
</p>
<p>
<i>Neighbourhood</i>: These are the cells immediately surrounding the
target cell that this cell can ‘see’ and use the values from in its
decision making. What is included in the neighbourhood can vary from CA
to CA (see Larger than Life) however in most models this is usually the
cells that are ‘touching’ the cell.
</p>
<p>
<i>Update cycle</i>: This is when we go through an update all the values
of all the cells based on their previous values.
</p>
<p>
<i>Update rule</i>: This is the rule/decision making process that each
cell uses to determine its new value in the next update cycle. Every
cell in the grid uses the same rule.
</p>
<h1>Models</h1>
<h2>Neural Cellular Automata</h2>
<a href="./CAs/GCA/life.html" class="button" id="Growing Neural Cellular Automata">G-NCA</a>
<p>
Neural Cellular Automata (NCA) are a category of cellular automata that
involves using a neural network as the cell’s update rule. The neural
network can be trained to figure out how to update the cell’s value in
co-ordination with other cells operating on the same rule to produce a
target behaviour.
</p>
<p>
One of the best examples of NCA is
<i><a href="https://distill.pub/2020/growing-ca/">Growing Neural Cellular Automata</a></i>
(A. Mordvintsev et. al, 2020) where they trained a Neural Cellular Automata to ‘grow’ into
a target image from a single seed cell. (Highly recommend looking at the
paper, they have an interactive version of the result that’s really cool!).
</p>
<p>
Neural Cellular Automata is displays properties that can be likened to how cells
communicate and co-ordinate within living organisms. The model from Growing
Neural Cellular Automata also naturally showed regenerative properties, i.e.
when the pattern was disturbed during development, so long as the disturbance
was not too drastic, the model was able to recover.
</p>
<h2>John Conway’s Game of Life / THE Game of Life</h2>
<a href="./CAs/ConwaysLife/life.html" class="button" id="classic_conway">Classic Conway</a>
<div class="sideBySide">
<div>
<p>
This is probably the most famous example of cellular automata there is.
</p>
<p>
The Game of Life operates on these very simple rules:
</p>
<ul>
<li>All cells are either alive or dead (1 or 0).</li>
<li>When a cell that is living has 2 or 3 neighbours, it gets to live (the cell survives). </li>
<li>When a cell that is dead has 3 neighbours, it comes to life (a cell is born). </li>
<li>In all other circumstances, the cell dies/remains dead.</li>
</ul>
<p>
Even this simple rule can produce some very complex and interesting
behaviours, and many patterns have been discovered that are
self-sustaining. A more sophisticated version of the Game of Life
can be found <a href="https://playgameoflife.com/">here</a>.
</p>
<h2>Life Like Cellular Automata</h2>
<a href="./CAs/LifeLike/life.html" class="button" id="life_like">Life Like</a>
<p>
Life like CA operate very similarly to the Game of Life in that all cells
are either alive or dead. However, Life Like gives you the freedom to
choose how many cells must be alive in the neighbourhood to either
survive or be born. This is specified by a <b>rule string</b>.
</p>
<p>
The rule string format we have used is <b>survival/birth notation.</b> In
this notation, the original Game of Life would be expressed as <b>23/3</b> (we
don’t worry about spacing between numbers because they can only be the
numbers 0-8), where 2 or 3 cells in the neighbourhood are required for
survival of a living cell, and 3 cells in the neighbourhood are required
for a dead cell to come to life/be born.
</p>
<h2>Larger than Life</h2>
<a href="./CAs/Larger/life.html" class="button" id="larger">Larger</a>
<p>
Larger than Life builds on Life Like CA by introducing even more flexibility.
This means the following are now specifieable in the rule string:
</p>
<ul>
<li>The neighbourhood radius to encompass cells that are further than one
cell away.</li>
<li>Neighbourhood shape.</li>
<li>Minimum lifespan of living cells (basically living cells have HP that
is deducted from every time it’s exposed to death conditions)</li>
</ul>
</div>
<div class="sideDiagramContainer">
<img src="./Images/GoL neighbourhood.png" class="sideDiagram"
alt="The neighbourhood of each cell consists of the cells in contact with it.">
<p class="figureCaption">The neighbourhood of each cell consists of
the cells in contact with it.</p>
<img src="./Images/LargerRadius2.png" class="sideDiagram"
alt="The neighbourhood in larger than life also contains all the
cells within a specified distance from the target cell">
<p class="figureCaption">Neighbourhood of a target cell in Larger
than Life when the neighbourhood radius is set to 2 cells</p>
<img src="./Images/LargerNeighbourhoodTypes.png" class="sideDiagram">
<p class="figureCaption">Different neighbourhood shapes/different
ways of determining a cell's distance from the target cell</p>
</div>
</div>
<h2>Continuous Cellular Automata</h2>
<a href="./CAs/Continuous/life.html" class="button" id="continuous">Continuous</a>
<p>
Continuous CA also builds on Life Like CA. Continuous CA can display
behaviours similar to basic organisms and population level behaviours of
bacteria etc. that have simple behavioural patterns. The main difference
is that instead of using the binary dead or alive as states, we use a
continuous range of values. The new cell state value is calculated in
the following way:
</p>
<img src="./Images/Continuous.png" class="centreDiagram" alt="Calculating continuous CA" >
</div>
</body>
</html>