WCCI 2010 IEEE World Congress on Computational Intelligence
July, 18-23, 2010 - CCIB, Barcelona, Spain

IJCNN

Learning Process of Affordable Neural Network
for Backpropagation Algorithm
Yoko Uwate, Member, IEEE and Yoshifumi Nishio, Member, IEEE

Abstract— We have recently proposed a novel neural network
structure called an “Affordable Neural Network” (AfNN), in
which affordable neurons of the hidden layer are consideredas the elements responsible for the robustness property as isobserved in human brain function. We have confirmed that the
AfNN gains good performance both of the generalization ability
and the learning ability. Furthermore, the AfNN has durability,
because the AfNN still performs well even if some of neurons
in the hidden layer are damaged after learning process. In
this study, we study the characteristics of weights of the AfNN
during the learning process to make clear the reason of that
the AfNNs can perform well for learning and generalization
abilities and operate as usually against damaging neurons.

I. I NTRODUCTION
The mechanisms of many kinds of higher brain functions
become clear with the advances in neuroscience technology. Therefore, the studies of bio-inspired artificial neuralnetworks have been extensively reported to realize suchintelligence systems applying for the future engineering
applications. However, the performance of artificial neuralnetworks still lags behind that of biological networks in many
respects. In order to fill the gap between biological neuralsystems and artificial neural systems, it is important to apply
these high functional mechanisms of the human brain tonovel artificial neural networks.
In our previous work, we have proposed a new network
structure of the feedforward neural network with affordable
neurons in the hidden layer for Backpropagation (BP) learning [1]. We named this network “Affordable Neural Network(AfNN).” The AfNN was inspired by cell assembly [2]-[5].
which is one of explanations of multiple information processing in the brain and an information is represented by a firing
space pattern of a group of plural neurons. In the AfNN, we
prepare some extra neurons more than requires in the hidden
layer. When the AfNN executes operating, all of the neurons
in the hidden layer are not used at every updating. Namely,
the AfNN is able to operate with high function by using
different neuron patterns in the hidden layer. By computer
simulations, the AfNN has been confirmed to gain better
performance for the BP learning on both learning ability andgeneralization ability.
On the other hand, am important issue is the understanding
how the mammalian brain is affected in its performanceby the omnipresent death of their elements in the field of
Yoko Uwate is with the Dept. of Electrical and Electronic Engineering,
Tokushima University, 2-1 Minami-Josanjima, Tokushima, Japan (email:uwate@ee.tokushima-u.ac.jp).
Yoshifumi Nishio is with the Dept. of Electrical and Electronic Engineering, Tokushima University, 2-1 Minami-Josanjima, Tokushima, Japan(email: nishio@ee.tokushima-u.ac.jp).

978-1-4244-8126-2/10/$26.00 c 2010 IEEE

Neuroscience. It is also important to investigate the performance of the artificial neural network when some neurons aredamaged. Several research groups have reported the studies
of fault tolerance in the artificial neural networks [6]-[8].
In Ref. [6], they have proposed the learning algorithm of
the multi-layer perceptron to create robustness. The units
in the hidden layer are randomly disabled for some patternpresentations during a standard BP training phase. Thislearning algorithm seems similar as the learning process of
the AfNN. Actually, there are completely difference learning
processes. Because, in this learning algorithm of Ref. [6], thedisable neurons in the hidden layer are selected “for eachpattern.” The network learns by using specific neurons in
the hidden layer for each input pattern. While, in the caseof the AfNN, the affordable neurons are selected “at every
updating time.” The AfNN learns by using all neurons in thehidden layer with different pattern for every input patterns.
Therefore, the learning process of the AfNN is more complex
and it has a possibility to create the high functions suchas durability and flexibility. In order to confirm that the
AfNN can generate a kind of fault tolerance, we also haveinvestigated the durability of the AfNN when some of theneurons in the hidden layer are damaged after the learning
process [9]. We have confirmed that the AfNN can operates
with keeping its efficiency against damaging neurons.
However, the reason of what property of learning processof the AfNN affect good performance for the learning ability
and durability has not yet understood in detail. In this study,
we study the characteristics of the weights between thehidden and the output layer of the AfNN during the learning
process. First, we investigate an amount of weight change ofneurons in the hidden layer during the learning process forthe learning ability. Second, we discuss the characteristics of
the weight vectors by applying Cosine similarity for the durability. By computer simulations, we observe that the weightvectors of the AfNN and the conventional network havedifferent characteristics. From these results, we conclude thataffordable neurons are an important element for the learning
ability and the durability against damaging neurons.
II. A FFORDABLE N EURAL N ETWORK (A F NN)
We have proposed a network with affordable neurons in
the hidden layer of the three-layered feedforward neuralnetwork (one input layer, one hidden layer and one output
layer) for the BP learning. The output characteristics of theneurons are implemented by a sigmoid function. We introduced the affordable neurons to reflect important propertiesof the brain. During the BP learning, all of neurons in the2593

hidden layer are not used at every updating. Namely, some of
the neurons are selected for the learning and the rest of theneurons are deactivated. The affordable neurons are selectedby random at every updating time. The network model ofthe AfNN is shown in Fig. 1.

Affordable
Neurons
Hidden layer

Affordable neural network.

The standard BP learning algorithm was introduced in[10]. The BP is the most common learning algorithm for thefeedforward neural networks. In this study, we use the batch
BP learning algorithm. The batch BP learning algorithm isexpressed by a formula similar to the standard BP learningalgorithm. The difference lies in the timing of the weight.
The update of the standard BP is performed after each single
input data, while for the bath BP the update is performed
after all input data has been processed. The total error E of
the network is defined as
 N

P
P


1
2
Ep =
(tpi − opi ) ,
(1)
E=
2 i=1
p=1
p=1
where P is the number of the input data, N is the numberof the neurons in the output layer, tpi denotes the value ofthe desired target data for the pth input data, and opi denotes
the value of the output data for the pth input data. The goalof the learning is to set the weights between the neurons so
as to minimize the total error E. In order to minimize E, theweights are adjusted according to:
k−1,k
k−1,k
(m + 1) = wi,j
(m) +
wi,j

k−1,k
(m) = −ηΔp wi,j

∂Ep

k−1,k
∂wi,j

P

p=1

where P denotes the number of input data (P = 200).
In this study, we focus on simulations using hidden layers
consisting of 8 neurons with the number of the affordable
neurons ranging between 1 and 4. To give an example: If thenumber of neurons in the hidden layer is 8 and the number of
the affordable neurons is set to 2, only 6 neurons operate at
all times. Such a network will be denoted as “AfNN (8−2).”
Below we will compare the performance of an AfNN of type(nh − naf f ) with a conventional neural network (nh − 0)without the affordable neurons.
Figure 2 shows the simulation result of the error curves
when the number of the affordable neurons is changed from
1 to 4. When the number of the affordable neurons is set
to 1 to 3, the AfNNs gain the better performance than theconventional neural network. While, the case of the numberof the affordable neurons is set to 4, the AfNN does notconverge to small error. We can see that the AfNNs havegood learning ability and the appropriate number of theaffordable neuron is exist for given problems.
0.1

k−1,k
Δp wi,j
(m),

(2)

,

∂Ep

k−1,k
+ ζΔp wi,j(m − 1),
k−1,k
∂wi,j

(3)

0.001

0.0001k−1,kis the weight between the ith neuron of the layer
were wi,jk − 1 and the jth neuron of the layer k. m is the learning
time, and η is a proportionality factor known as the learning
rate. In this study, to the third line of Eq.(2) an inertia term
was added, which leads tok−1,k(m) = −ηΔp wi,j

AfNN (8-1)
AfNN (8-2)
AfNN (8-3)
AfNN (8-4)
Conventional NN (8-0)

0.01
E ave

Fig. 1.

III. L EARNING A BILITY OF A F NN
First, we investigate the reason of that the AfNN gains thegood learning ability by calculating the amount of weightchange between the hidden and the output layers during thelearning process.
A. Simulation of Learning Ability for y = x2
We consider the task to learn the function y(x) = x2 asa simple learning example. The sampling range of the input
data is [−1.0, 1.0] and the step size of the input data is set tobe 0.01. Our BP learning used fixed learning and inertia ratesof η = 0.1 and ζ = 0.01, respectively; the initial values of
the weights were chosen uniformly random from the interval[−1, 1] and the learning time is M = 20000.
In order to measure the learning ability, we define “Average Error Eave ” by the following equation:

P 
1  1
(tp − op )2
Eave =(4)
P p=1 2

Output layer

Input layer

where ζ denotes the inertia rate. The inertia term is introduced for efficient learning convergence.

0.00001
0

10000

20000
30000
Iteration time

40000

50000

Fig. 2. Typical simulation result of the error curves by using several
network types.

2594

TABLE I
T OTAL AMOUNT OF WEIGHT CHANGE AND Eave ( AVERAGE : 100).

B. Amount of Weight Change of AfNN for y = x2
In order to make clear the reason that the AfNN gains
better learning ability than the conventional neural network,
the characteristics of an amount of weight change during
the learning process is investigated. In this study, we focus
on the weights between the hidden and the output layers of
the AfNN. The equation of the amount of weight change isdefined as follows,
k−1,k
=
Ci,j

M
P
1  
k−1,k
|
Δp wi,j(m) |M m=1 p=1

Network type
AfNN (8-1)
AfNN (8-2)
AfNN (8-3)
AfNN (8-4)
Conv. NN (8-0)(5)(k = 3).

P8

h=1 Ci,j0.16305
0.142370.129160.13918
0.11161Eave
0.624e-3
0.562e-30.586e-30.679e-30.626e-3

IV. D URABILITY OF A F NN S
A. Damaging Neurons

Figure 3 shows the simulation result of the amount of
the weight change by using several types of the AfNNs andthe conventional neural network. In this simulation result,in order to understand the characteristics of the weightchange easily the obtained weight changes are sorted inascending order after the computer simulation. The resultsin Fig. 3 are the average of simulations for 100 times byusing the different initial conditions of the weight vectors.
Form this figure, we can see that the amount of weightchange of the AfNNs and the conventional neural network
have similar curves when the neuron number is smaller than
4. By increasing the neuron number, their curves become
difference and the amount of weight change of the AfNNs
show larger value than the conventional neural network.
Table I is summarized the sum of the amount of weightchange of the neurons in the hidden layer by using several
types of AfNNs. To comparison between the amount ofweight change and the network performance, the Eave ofeach AfNN is also described in Tab. I. The sum of theamount of weight change of the AfNNs are larger than theconventional neural network. The best learning ability (Eave )is obtained by using the AfNN (8-2).
We assume that in the case of the AfNNs the selectedaffordable neurons does not operate at every updating time,then other operating neurons update their weights a lot. We
consider that this characteristics of the learning process is
one of good reason of the AfNN.

1) Zero output: In order to investigate influence of damaging neurons, we consider that the connections of the damaged
neurons to the output layer are temporally cut off (see.
Fig. 4). Namely, the damaged neurons do not operate. In
this situation, we investigate the performance of the network
when the learned data are inputted to the network.
Output of damaged neuron: Zero
DamagedneuronOutput layer

Input layer

DamagedneuronHidden layer

Fig. 4.

Conceptual network model for damaging neurons (output: zero).

2) Random output: Next, the connections to output layerof the damaged neurons produce random values from 0.0 to
1.0. The diagram of this network model is shown in Fig. 5.
This situation is corresponding to that some neurons areoperate randomly without any oder or control.

0.05

AfNN (8-1)
AfNN (8-2)
AfNN (8-3)
AfNN (8-4)
Conventional NN (8-0)

amount of weight change

0.045
0.04
0.035

Output of damaged neuron: Random
Damagedneuron

0.03
0.025
0.02
0.015

Output layer

Input layer

0.01
0.005

1

2

3

4

5

6

7

Damagedneuron8

Hidden layer

neuron number of hidden layer
Fig. 3. The amount of weight change by using several types of the AfNNs.

Fig. 5. Conceptual network model for damaging neurons (output: random).

2595

B. Simulation Results of Durability for y = x2
We investigate how after learning damaged neurons affectthe total error between the output and the desired target.
The learning example is y = x2 and the same parametersof the AfNN are used as above section. The comparison
between the AfNN with the conventional network yields
the results displayed in Figs. 6, 7. These figures show theaveraged results for 8 neurons in the hidden layer, for 100
computer simulations using different random initial conditionof the network. When increasing the number of the damaged
neurons, Eave of both the AfNN and the conventional BP
network worsen. From the comparison of the performanceof the two networks, the AfNNs achieve a clearly superior
performance to the conventional neural network. From theseresults, we can see that AfNNs provide an important elementof reliability in cases where neurons are affected by damage.

for learning y = x2 , then the weight vector of ith neuron in
the hidden layer is composed of two scalar.
2,3
2,3
2,3
= {wi,1, wi,b},wi,j2,3means the weight between the ith neuron of thewhere, wi,1hidden layer (2nd layer) and the 1st neuron of the output
2,3
denotes the basis of ith neuron
layer (3rd layer), and wi,bin the hidden layer. Figure 8 shows one typical example of
the weight vectors of the AfNN and the conventional NN.
In the case of the AfNN (Fig. 8 (a)), each vector spreads
in the vector space. While, in the case of the conventional
NN (Fig. 8 (b)), obtained weight vectors shows almost samevalues.

0.1

15

0

10

-0.5
-1

5

0.08

Eave

0.07

-1.5

0

wi,b

wi,b

0.09
-5

0.06

-10

0.05

-15

0.04

-20
-12 -10 -8 -6 -4 -2 0 2

0.03
0.01
0

0

1
2
3
Number of damaged neurons

-2
-2.5
-3
-3.5

4

6

8 10

-4
-1 0

1

2 3

wi,j

AfNN (8-1)
AfNN (8-2)
AfNN (8-3)
Conventional NN (8-0)

0.02

(6)

4 5

6 7

8 9 10wi,j(a) AfNN (8-4).

(b) Conventional NN (8-0).

Fig. 8. Weight vectors after learning process (Hidden layer: 8). horizontal
axis: the weights between the hidden and the output layers. vertical axis:
the bias vectors of the neurons in the hidden layer.

4Fig. 6. Eave dependence on the number of damaged neurons (Zero output).

We compare the characteristics of weight vectors between
the hidden layer and the output layer by using Cosine
similarity defined as following equation (e.g. ath and bth
neurons in the hidden layer).

0.12
0.1

Ws(a,b) = cos(θ) =

Eave

0.08

wa,j · wb,j
wa,j wb,j 

(7)

0.06
0.04
0.02
0

The resulting similarity ranges from -1 meaning exactly
opposite, to 1 meaning exactly same, with 0 indicating
independence.
The 100 averaged results of similarities of the AfNN
(8-4) and the conventional network (8-0) are described asfollowing matrices.

AfNN (8-1)
AfNN (8-2)
AfNN (8-3)
Conventional NN (8-0)
0123Number of damaged neurons

4Fig. 7. Eave dependence on the number of damaged neurons (Random
output).

C. Characteristics of Weight Vectors for y = x2
In order to make clear the reason that the AfNN gains
the better performance than the conventional NN against forthe damaging neurons, we focus on the characteristics of
the weight vectors between the hidden an the output layers
after learning process. We use the three-layered feedforward
neural network and there is one neuron in the output layer

Weight vector similarity of the AfNN (8-4):
1
2
3
4
5
6
7
8
1 0 1.00 0.24 0.18 0.12 0.26 0.24 0.15 0.21 1
2 B 0.24 1.00 0.25 0.26 0.40 0.34 0.28 0.40 CC
3 B
B 0.18 0.25 1.00 0.20 0.35 0.32 0.23 0.33 C
C
4 B
0.12
0.26
0.20
1.00
0.31
0.20
0.07
0.18
C
Ws = BC
5 B
B 0.26 0.40 0.35 0.31 1.00 0.48 0.34 0.36 CB
6
0.24 0.34 0.32 0.20 0.48 1.00 0.24 0.29 C@A
7
0.15 0.28 0.23 0.07 0.34 0.24 1.00 0.26
8
0.21 0.40 0.33 0.18 0.36 0.29 0.26 1.00

2596

Norm of similarity matrix: 3.526

Weight vector similarity of the conventional NN (8-0):

A. Performance of AfNN against Damaging Neurons

1
2
3
4
5
6
7
8
1 0 1.00 0.43 0.38 0.43 0.51 0.40 0.38 0.45 1
2 B 0.43 1.00 0.40 0.51 0.49 0.42 0.42 0.46 C
C
3 B
B 0.38 0.40 1.00 0.49 0.59 0.55 0.47 0.44 C
4 B
0.43 0.51 0.49 1.00 0.62 0.42 0.34 0.39 CC
B
Ws = B
5 B 0.51 0.49 0.59 0.62 1.00 0.56 0.44 0.45 CC
6 B 0.40 0.42 0.55 0.42 0.56 1.00 0.50 0.40 CA@
7
0.38 0.42 0.47 0.34 0.44 0.50 1.00 0.40
80.45 0.46 0.44 0.39 0.45 0.40 0.40 1.00

Figures 10, 11 display the recognition rate for the AfNNs(16 − 2), (16 − 10), (16 − 12), (16 − 14) and conventional
BP networks (16 − 0), (4 − 0). From these figures, we inferthat for this task, the recognition rates of the AfNNs and theconventional networks are similar, if only one neuron is damaged. Upon increasing the number of damaged neurons, thedifference between the recognition rates, however, increases,
leading to a noticeable higher recognition rate of the AfNNs(16 − 10), (16 − 12), where the difference of recognition
rate between the both networks is larger than 10 percent.
From these results, we can see that the number of affordable
neurons has important role for the network performance.

In these matrices, the element shows the similarity Ws in
all combinations and the index number is corresponding to
the neuron number in the hidden layer. We can see that thesimilarity of the conventional NN has large value (e.g. larger
than 0.5). Namely, each weight vector of the conventional
network has similar value. In order to evaluate these matrices,
we calculate the norm and the value of norm are describedunder the matrices. The norm value of the AfNN is smaller
than the conventional network.
From these results, in the case of the AfNN, each weightvector becomes difference charactor. Because the networkleans by using different neuron pattern at every updatingtime. We consider that this is one of the reason of the AfNN
to obtain good performance against the damaging neurons.

100

Recognition rate [%]Norm of similarity matrix: 4.447

80
60
40
20
0

V. S IMULATED R ESULTS FOR PATTERN R ECOGNITION

Fig. 10.

012
3
Number of damaged neurons

4

Recognition rate against damaging neurons (Zero output).

AfNN (16-10)
AfNN (16-12)
Conventional NN (16-0)
AfNN (16-2)
AfNN (16-14)
Conventional NN (4-0)

80
60
40
20
0

Fig. 11.

01

2
3
Number of damaged neurons

4

pattern 2
Fig. 9.

pattern 3

Pattern recognition.

pattern 4

5

Recognition rate against damaging neurons (Random output).

B. Characteristics of Weight Vectors for Pattern Recognition
For learning this pattern recognition, 4 neurons are prepared in the output layer. The weight vector of ith neuron
in the hidden layer is composed of five scalar as following
equation.
2,3
2,3
2,3
2,3
2,3
2,3
= {wi,1, wi,2, wi,3, wi,4, wi,b},wi,jpattern 1

5100

Recognition rate [%]As more demanding example for the BP learning, we
consider a pattern recognition task, where 4 alphabeticalletters (B, U, C, S) are fed into the neural network forrecognition (see Fig. 9).
In this case, the number of neurons in the input layer is 35
The number of neurons in output layer is fixed to 4, and wechoose 16 hidden layer neurons. For recognition, a set of 25
patterns shifted 1 bit from each original pattern was prepared,
leading a set of 100 patterns to be recognized. The learning
rate and the inertia rate were set to η = 1.0 and ζ = 0.8,
respectively, and the initial weights were uniformly randomly
chosen from the interval [−1, 1]. The learning time was set
to m = 10000 steps. By using 100 different network initialconditions, we obtained reliable averages characterizing the
network performance in terms of the recognition rate R
defined as
N umber of success× 100[%]. (8)R=
T otal number of input patterns

AfNN (16-10)
AfNN (16-12)
Conventional NN (16-0)
AfNN (16-2)
AfNN (16-14)
Conventional NN (4-0)

(9)

2,3
2,3
2,3
2,3
where, wi,1
, wi,2, wi,3and wi,4
mean the weight between
the ith neuron of the hidden layer (2nd layer) and the 1st,
2nd, 3rd and 4th neurons of the output layer (3rd layer),2,3
denotes the basis of ith neuron in therespectively, and wi,bhidden layer.

2597

(a) Matrix of similarity for the AfNN (16-10).

(b) Matrix of similarity for the conventional NN (16-0).
Fig. 12.

Matrices of weight vector similarity for pattern recognition (hidden:16).

120

The 100 average results of similarity of the AfNN (1610) and the conventional network (16-0) are described in thematrices of Fig. 12. The many similarity value of the AfNN
are smaller than the conventional network.
Table II is summarized the norm of weight vector
similarity which is obtained from 100 average simulations
by calculating similarity of each weight vector between thehidden and the output layers after learning process. We cansee that norm value of the AfNNs are smaller than theconventional NN. This results show the same as previous
task which is function approximation problem (y = x2 ).

5.4

Recognition rate (before damage)
5.2

Recognition rate [%]Recognition rate
(after 2 neurons damaged:
zero output)

80

5

4.8

60
4.6
40

Recognition rate
(after 2 neurons damaged:
random output)

20

4.4

4.2

Norm vallue of similarity matrix
0

0

2

4

6

8

10

12

14

Norm value of similarity matrix

100

4

Number of affordable neurons

TABLE IIN ORM OF SIMILARITY MATRIX .
Network type
AfNN (16-2)
AfNN (16-4)
AfNN (16-6)
AfNN (16-8)
AfNN (16-10)
Conventional NN (16-0)

Fig. 13.
Relationship between norm of similarity matrix and several
recognition rates.

Norm
5.151
4.823
4.505
4.273
4.108
5.253

Finally, we investigate the relationship between norm ofsimilarity matrix and several recognition rate. The simulation
result by changing the number of affordable neuron is shownin Fig. 13. The recognition rate before damage is almost
same, however, norm value decreases by increasing thenumber of the affordable neuron. The recognition rates after
2 neurons are damaged (zero output and random output)
gain good performance when the number of the affordable
neurons ranges from 10 to 12.

2598

VI. C ONCLUSIONSIn this study, we have investigated the characteristics of
the weight vectors between the hidden and the output layer
after the learning process by using the amount of weightchange and the weight vector similarity. We confirmed thatthe property of the weights of the AfNN and the conventional
network have different characteristics. We conclude that suchweight vector property obtained from learning process is oneof the reason that the AfNN performs well for learning ability
and durability against damaging neurons.
For the future works, we apply the theoretical or systematic approaches to analyze the characteristics of the AfNNs
and use more practical task as the learning example.
R EFERENCES[1] Y. Uwate and Y. Nishio, “Performance of Affordable Neural Network
for Back Propagation Learning,” IEICE Transactions on Fundamentals, vol. E89-A, no. 9, pp. 473-478, Nov. 2005.
[2] Y. Sakurai, “Dependence of Functional Synaptic Connections of
Hippocampal and Neocortical Neurons on Types of Memory,” Neuroscience Letters, vol. 158, pp. 181-184, 1993.
[3] E. Vaadia, I. Haalman, M. Abeles, H. Bergman, Y. Prut, H. Slovinand A. Aertsen, “Dynamics of Neural Interactions in Monkey Cortex
in Relation to Behavioral Events,” Nature, vol. 373, pp. 515-518, Feb.
1995.
[4] Y. Sakurai, “Hippocampal and Neocortical Cell Assemblies Encode
Memory Processes for Different Types of Stimuli in the Rat,” Journalof Neuroscience, vol. 16, pp. 2809-2819, 1996.
[5] Y. Sakurai, “How Do Cell Assemblies Encode Information in the
Brain?,” Neuroscience and Biobehavioral Reviews, vol. 23, pp.785796. 1999.
[6] C. H. Sequin and R. Clay, “Fault Tolerance in Artificial Neural
Networks,” Proc. IEEE-INNS’90, pp. 703-708, June. 1990.
[7] W. Hsieh and B. Sher, “Fault Tolerant Capability of Multi-Layer
Perceptron Neural Network,” EUROMICRO’94, pp. 644-650, 1994.
[8] V. Piuri, “Analysis of Fault Tolerance in Artificial Neural Networks,”
Journal of Parallel and Distributed Computing, vol. 61, pp. 18-48,
Jan. 2001.
[9] Y. Uwate, Y. Nishio and R. Stoop, “Durability of Affordable Neural
Networks against Damaging Neurons,” IEICE Transactions on Fundamentals, vol. E92-A, no. 2, pp. 585-593, Feb. 2009.
[10] D.E. Rumelhart, G.E. Hinton and R.J. Williams, “Learning Internal
Representations by Error Propagation,” Parallel Distributed Processing, vol. 1, MIT Press, MA, pp. 318-362, 1986.

2599