{'fraction_non_alphanumeric': 0.028977930467903954, 'fraction_numerical': 0.007095111841368237, 'mean_word_length': 4.821739130434783, 'pattern_counts': {'":': 0, '<': 1, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
A Historical Review of Forty Years of Research on CMAC

The Cerebellar Model Articulation Controller (CMAC) is an influential brain-inspired computing model in many relevant fields. Since its inception in the 1970s, the model has been intensively studied and many variants of the prototype, such as Kernel-CMAC, Self-Organizing Map CMAC, and Linguistic CMAC, have been proposed. This review article focus on how the CMAC model is gradually developed and refined to meet the demand of fast, adaptive, and robust control. Two perspective, CMAC as a neural network and CMAC as a table look-up technique are presented. Three aspects of the model: the architecture, learning algorithms and applications are discussed. In the end, some potential future research directions on this model are suggested.


I. INTRODUCTION
The Cerebellar Model Articulation Controller (CMAC) was proposed by J. S. Albus in 1975 [2]. Parallel at this time in the history, the concept of perceptron [23] had already been popular, whereas effective learning schemes to tune perceptrons [24] were not on the stage yet. In 1969, Minsky and Papert also pointed out the limitations that the exclusive disjunction logic cannot be solved by the perceptron model in their book Perceptrons: An Introduction to Computational Geometry. These facts made it less promising to consider CMAC as a neural network form. Consequently, although the name of CMAC appears bio-inspired enough, and the theory that the cerebellum is analogous to a perceptron has been proposed earlier [1], CMAC was emphasized to be understood as a table referring technique that can adaptive to real-time control system. Nevertheless, the underlying bioscience mechanism was addressed again in 1979 by Albus [3], which always gives the CMAC model two different ways of interpretation.
The structure of CMAC was originally described as two inter-layer mappings illustrated in Fig. 1. The control functions are represented in the weighted look-up table, rather than by solution of analytic equations or by analog [2]. If we use S to denote sensory input vectors, and let A and P stand for association cells and response output vectors respectively, both CMAC and multilayer percptrons (MLP) model can be formalized as: f : S → A g : A → P the final output can be calculated as: where the asterisk denotes a link or activation between certain association cell and the output. The nuance between MLP and CMAC model is that, for mapping f , MLP model is fully connected but CMAC restricts the association in a certain neighboring range. This property of mapping significantly accelerates the learning process of CMAC, which is considered a main advantage of it comparing to other neural network models.
It is notable that CMAC may not represent accurately how the human cerebellum works, even at a most simplified level. For instance, recent biological evidence from eyelid conditioning experiments suggests that the cerebellum is capable of computing exclusive disjunction [34]. However, CMAC is still an important computational model, because the restriction on mapping function effectively decreased the chance of been trapped in a local minimum during learning process.
Despite the advantage aforementioned, CMAC has the following disadvantages as well [25]: • many more weight parameters are needed comparing to normal MLP model • local generalization mechanism may cause some training data to be incorrectly interpolated, especially when data is sparse considering the size of CMAC • CMAC is a discrete model, analytical derivatives do not exist As a response to these problems, modified or high order CMAC, storage space compressing, and fast convergent learning algorithms are continuously studied. These discov-eries will be elaborated in the following sections. Recent advances in Big Data and computing power seem to have watered down these problems. But in many physical scenarios, the computing power are still restricted and high speed responses are required. This serves for the reason to further study CMAC-like models, though it has been in and out of fashion for several times.
Although there has been few other pioneer review works on CMAC, for instance by Mohajeri et al. in 2009 [20], this article is inventive for its chronological perspective. rather than emphasizing on detailed techniques. The remainder of the article is organized as follows: Section II provides the evolution trajectory of CMAC structure and efficient storage techniques. Section III discusses the learning algorithms. Section IV presents various circumstances that CMAC model has been applied. Section V summarizes the paper, and instigates discussions about potential improvements that can be made on CMAC model.

II. ARCHITECTURE A. Basic Architectures
Before the CMAC was proposed in the 1970s, the anatomy and physiology of cerebellum has been studied for a long time. It is widely agreed that many different type of nerve cells are involved in cerebellar functioning. Fig. 2 shows the computational model proposed by Mauk and Donegan [18]. A more simple and implementable model proposed by Albus [3] is exhibited in Fig. 3. Based on the computational model of cerebellum (Fig. 3), the primary CMAC structure as shown in Fig. 1 is conceived. While it is obvious that high dimensional proximity of association rules cannot be captured in this primary form, because the nodes are arranged into one dimensional array. A simple solution to this problem is to introduce some nonlinearity to the first mapping. As a result, another layer called "conceptual memory" was soon added to the CMAC structure, which involves one additional mapping to the primary structure. The function of conceptual memory is illustrated in Fig. 4. Albus' model [1] of cerebellum resembles a forward feed perceptron. It assumes climbing fiber activity would cause parallel fiber synapses to be weakened. S stands for stellate b cells, B stands for basket cells If we use A to represent the actual memory (Association Cells), M is the conceptual memory to encode S. Then the conceptual mapping f is more sparse and constrained within a certain range, but mapping g could be random.
When it comes to implementation, the connectivism perspective to recognize CMAC as a neural network and the table referring perspective are equivalent. Fig. 5 illustrates the difference at a conceptual level [25]. To the upper part is a two input one output neural network structure, to the lower part is a two input one output table look-up structure.
An intuitive observation from both Fig. 4 and Fig. 5 is that the number of weights will increase exponentially with the number of input variables. This problem brings out two challenges: 1) The storage of weights become space consuming; 2) The training process becomes difficult to converge and waiting time before termination will lengthen.  A previously used technique to solve the first challenge is called tile coding, which latter was developed to an adaptive version as well [36]. The advantage of tile coding is that we can strictly control the number of features through tile split. Another commonly employed trick is called hashing. This technique is applied to CMAC in the 1990s, and maps a large virtual space A to a smaller physical address A . Many common hashing function f h can be used, for instance from MD5 or DES, which are fundamental methods in cryptography. However, how to reduce the collision for specific problems according to the data property is still considered an art.
Literature [25] introduced a hardware implementation which uses selected binary bits of indexes as the hashing code. Whereas other research, e. g. [35], claims that due to the learning rate diminishing and slower convergence, hashing is not effective for enhancing the capability of approximation by CMAC. Therefore, many other attempts have been made, such as neighbor sequential, CMAC with general basis functions, and adaptive coding [7], which is a similar idea to hashing in the sense of weight space compression.

B. Modified Architectures
Since simply increasing the CMAC size gives diminishing returns, two directions of modification are undertaken to push forward the research on CMAC. The first consideration is to combine multiple low dimensional CMACs. The second consideration is to introduce other properties, for example spline neurons, fuzzy coding or cooperative PID controller.
Cascade CMAC architecture was firstly proposed in 1997 for the purpose of printer calibration [10] (Fig. 6). Input variables are sequentially added to keep each of the CMAC component two dimensional. Another method to combine multiple CMACs can be realized by voting technique. If we regard the Cascade CMAC model as a fusion of input information at a feature level, then the voting CMACs can be reckoned as a fusion at decision level. Each small CMAC just accept a subset of the whole input space. In this case an important antecedent is that input data is well partitioned. The reason to this requirement is that voting lift can only be achieved by heterogeneous expert networks. Taken this into account, some prior knowledge of input data or unsupervised clustering techniques can be applied in this stage.
If we make more efforts for dimension reduction, multiple levels of voting can be used. Then the architecture can be reckoned as a Hierarchical CMAC (H-CMAC), which is described by Tham [32] in 1996. H-CMAC has several advantages, such as less storage space and fast adaptation for learning non-linear functions. In Fig. 7, a two level H-CMAC is illustrated. It is noticeable that each conventional CMAC components in different layers plays different role. The gating network works at a higher level. Fig. 7. Hierarchical CMAC architecture, adapted from [32] These architectures can be employed at the same time with more fundamental modifications for the second consideration. In 1992, Lane et al. [11] descried high order CMAC as CMAC with binary neuron output replaced by spline functions. This modification brings about more parameters of splines, but makes the output derivable, which sometimes gives a better performance because the learning phase goes deeper. Sharing the idea to allow more meticulous transfer function, a similar modification can be made by introducing linguistic rules and fuzzy logic.
Linguistic CMAC (LCMAC) was proposed by He and Lawry based on label semantics, rather than mapping functions in 2009. A cascade of LCMAC series was further developed in 2015 [8]. Borrowing the terminology of "focal element" from evidence theory, the properties used to activate it is represented as membership function (usually trapezoidal) of several attributes. Therefore, for each input tuple, the excited neurons form a hypercube in the matrix of all the weights as memory. The responsive output can be distributionally depicted as: where P is the probability of some memory unit a been activated given the input vector x. F denotes focal element. d i is the index of linguistic attributes. m is the hidden weights for F called "mass assignment".
Fuzzy CMAC (FCMAC) is yet another form of fuzzy coding. The intuition to use fuzzy representation is similar to using spline function. For most well defined problems, the nature of CMAC approximation is using multiple steps to emulate a smooth surface. Proper selection of fuzzy membership function would obviously relief the pressure of weight storage and training. From my understanding, FCMAC is an inverse structure of many established Neuro-Fuzzy Inference Systems. Usually, two extra fuzzy/defuzzy layers are added next to the association layer, the consequents can be Mamdani type, TSK type, weights, or a hybrid of them, e. g. Parametric-FCMAC (PFCMAC) [21]. More advanced FCMAC models, maybe inspired by spline methods, use interpolation to solve the discrete inference problem. In 2015, Zhou and Quek proposed FIE-FCMAC [39], which adds fuzzy interpolation and extrapolation to a rigid CMAC structure.
Recently, CMAC applications to more specific scenarios are studied. For example, for control of time-varying nonlinear system, a combination of Radial Basis Function network and the local learning feature of CMAC is proposed (RBFCMAC). It is reported that using RBFs can prevent parameter drift and accelerate synchronization speed to the changing system [17]. For this type of combination, beside RBF, Wavelet Neural Network (WNN), fuzzy rule neuron and recurrent mechanism [15] or a mingle of them can also be employed with CMAC model simultaneously. Previous works, such as [38], have provided evidence that these features are effective for modeling complicated dynamic systems.
In a broader scenario, CMAC can be applied with other control systems as well (Fig. 8). Traditionally, the role of CMAC at the primary stage is to assist the output of a main controller. As the training proceed, error between CMAC and the actual model decays. CMAC takes charge of the main controller. Back-forward signal acceptor or conjugated CMACs are often used to accelerate this process [13]. More precisely, this arrangement is a change of information flow but not a change of architecture. Similarly, CMAC structures that modifies the storage optimizing methods, for example quantization [16] and multiresolution [19], will only result in architectural difference from a hardware implementation sense. According to my personal understanding, they are the same thing regarding the conceptual structure, though these techniques are of sufficient interests to be discussed in Section III.

III. LEARNING ALGORITHM
The original form of learning proposed Albus is based on backward propagation of errors. The fast convergence of this algorithm is proved mathematically by succeeding researches. Specifically, the convergence rate is only governed by the size of receptive fields for association cells [37]. Some study [25] suggests that it would be useful to distinguish between target training and error training, despite they share the same mathematical form. In the weights updating rule, x i k is the epoch times, α ∈ [0, 1] is the learning rate, x i is a state indicator of activation. The learning process is theoretically faster with a larger α, while overshooting may occur. If the difference between output and the desired value ∆y = y −ŷ can well define the error, target training and error training will be equivalent. In certain cases, is a popular cost function as well.
Based on the original learning algorithm, many developments are further derived. Most of them can be categorized into two directions of improvement. The first relies on extra supervisory signals or value assignment mechanism based on statistics. The second endeavors to optimize the use of memory. From a more practical sense, the dichotomy can be understood as learning to adjust value of weights, and learning to adjust number or size of weights.

A. Adjusting value of weights
Facing the trade off between speed of convergence and learning stability, it is intuitive to consider using a relatively large α at the beginning, and slow down the weight adjustment near the optimum point. This improvement is called adaptive learning rate [14]. It can be achieved by using two CMAC components, one as main controller, another as supervisory controller or compensated controller. Another way to achieve this adaption is by imposing a resistant term to the weight updating rule: In the above rule, α 0 and c are constants, α i denotes the average activation times of the memory units that have been activated by training sample i. For both fixed learning rate and adaptive learning rate, weights adjustment start from a randomized set of parameters. Experiments suggest that for sparse data, even if the training samples are within the local generalization range, perfect linear interpolation may not be achieved [25]. As a result, the approximation may appears to have many small zigzag patterns. Therefore, the weight smoothing technique is proposed. After each iteration, the weights are globally adjusted according to: where δ is the proportional coefficient measuring the share of the weight with index j that needs to be replaced by the average of all activated weights A * .
While the weight smoothing technique tries to affect as much memory as possible in one iteration, repeated activation of the same units may not be a good thing. In 2003, research [26] pointed out that equally assign the error to each weight is not a meticulous method. During the learning process, if an associative memory is activated many times, which means many relevant samples are already learned, the weight should be more close to the desired value. In other words, the weight value is more "credible". In this situation, less error should be assigned to it so that other memory units can learn faster. This rule is called learning based on credit assignment: where g is a parameter regarding the degree of local generalization, f (i) records the times memory unit i has been activated. Further research has proved that the convergence is guaranteed with learning rate α < 2.
The hardware implementation of CMAC memory enables other interpretations of the associative architecture. If we recognize it as a self-organizing feature map (SOFM), competitive learning algorithm can be realized. With input variables x x x = {x 1 , x 2 , ..., x n }, the output can directly be the weight of the winning neuron. The weights updating rule can be formalized according to Hebbian theory: Note that the index of x x x can be time dependent.
A modified version of the aforementioned rule involves not only inputs, but also errors as feedback: w x x x,e e e (k + 1) = w x x x,e e e (k) + α (y(k) − w x x x,e e e (k)) Using this learning mechanism, the SOFM-like CMAC is named MCMAC. In 2000, Ang and Quek [5] proposed learning with momentum, neighborhood, and averaged fuzzy output for both CMAC and MCMAC. For CMAC and MCMAC with momentum, the weights updating rules can be written as: where the first term represents a momentum, the second term is a back propagation term with learning rate η and local gradient δ j . j is the index for activated weights.
Therefore, given a sequential learning process, the aggregational weights adjustment can be derived from the above rules: When the sign of ∂ Error ∂ w j keeps unchanged, ∆w j is accelerating; while if the sign is reversing, ∆w j will slow down to stabilize the learning process.
The neighborhood learning rule proposed by Ang and Quek [5] serves the same purpose as weight smoothing technique. However, they used the Gaussian function to put more attention to those neurons surrounding the winning neuron instead of evenly adjusting each weight regardless of the distance. Weights updating rule for MCMAC with momentum and neighborhood in singular form is: is the distance metric between neuron j and the winning neuron i. Beside using additional terms such as momentum and neighborhood, kernel method can also be applied to CMAC learning. In 2007, Kernel CMAC (KCMAC) was proposed [9], [11] to reduce the CMAC dimension which usually hazard the training speed and convergence. KCMAC treats the association memory as the feature space of a kernel machine, thus weights can be determined by solving an optimization problem. The supervised learning using error e e e as slack variables is to achieve: where w w w denotes weights, coefficient β serves as penalty parameter, φ (·) is the mapping function and K(u u u, w w w) = φ (u u u) · φ (w w w) is the kernel function.
The standard procedure to this problem is to solve the maxima-minima of Lagrangian function. Though other learning method can be employed as well, for instance, using Bayesian Ying-Yang (BYY) learning as proposed in 2013 by Tian et al [33]. The key idea behind BYY learning can be represented by harmonizing the joint probability with different product form of Bayesian components. In this specific KCMAC case, u u u and output z z z are observable, while w w w is a hidden variable. The joint distribution can either be written as ying form or yang form.
p ying (u u u, z z z, w w w) = p(w w w)p(u u u|w w w)p(z z z|u u u, w w w) p yang (u u u, z z z, w w w) = p(u u u)p(z z z|u u u)p(w w w|u u u, z z z) Our goal is to maximize H(p ying , p yang ), H(p ying , p yang ) = p ying ln p yang du u u dz z z dw w w In practice, ∆H is frequently calculated depending on how the conditional probabilities are estimated and maximum of H is achieved by searching heuristically.

B. Adjusting number of weights
Adjusting number of weights is chiefly realized by introducing multi-resolution and dynamic quantization techniques. As Section I has explained, CMAC was firstly used for real time control system. Consequently, the structural design fits the hardware implementation well. Many CMAC variants, such as LCMAC and FCMAC, inherit the memory units division with a lattice-based manner. Inputs are generally built on grids with equal space. This characteristic adds local constraints to the value of adjacent units.
If we consider this problem from a function approximation perspective, it is also rather intuitive that local complex shape needs a larger number of low-order elements to approach. Naturally, multi-resolution lattice techniques [19] were proposed in the 1990s.
With our prior knowledge, some metrics can be used to determine the resolution, for example, the variation of output in certain memory unit areas, which can be formalized as following: where N is the number of output samples, v is the variance.
Other attempts use a tree structure to manage the resolution hierarchically. New high resolution lattice is generated only if the threshold of variance is exceeded.
The concept of quantization is almost identical to resolution. The nuance may be that the terminology quantization puts more emphasis on the discretion of continuous signal. Furthermore, increasing resolution will also cause the number of weights to grow. Quantization deals with a given memory capacity problem.
To the best of my knowledge, the idea of adaptive quantization was initially proposed in 2006 [16]. The algorithm used to interpolate points looks on change of slopes, which is also similar to the variance metric discussed above. The input space is initialized with uniform quantization. For each point x i , the slopes are calculated by neighbor points.
Here f stands for the mapping function between input vector and association cells. The change of sign for corresponding directions indicates finer local structure, or fluctuation in other words, thus a new critical point is added to split the interval. The termination condition is that, within all intervals, the difference of output values should not exceed an experimental constant C [28]. The adaptive quantization technique is later developed to the Pseudo Self Evolving CMAC (PSECMAC) model [30], which further introduced neighborhood activation mechanism.

IV. APPLICATION
Though CMAC was firstly proposed for manipulator control, during the past decades it has been proved effective in robotic arm control, fractionator control, piezoelectric actuator control [22], mechanic system, signal processing, intelligent driver warning system, fuel injection, canal control automation, printer color reproduction, ATM cash demand [31], and many other fields [7]. This can be attributed to the fast learning and stable performance of CMAC models. Moreover, engineering-oriented software and toolkit also help to promote the application of CAMC. In the following part, CMAC application to two emerging engineering fields are elaborated.

A. Financial Engineering
The practice side of financial engineering has employed various instruments to model the price and risk of bond, stock, option, future and other derivatives. In most cases, historic data can be partitioned into chunks of selected time span to enable a supervised learning process. In 2008, Teddy et al [29] proposed an improved CMAC variant (PSECMAC) to model the price of currency exchange American call option. Three variables are taken into consideration: difference between strike price and current price, time of maturity, and pricing volatility. Thus the pricing function is formulated as: The article reported PSECMAC as the best-performing model among several CMAC-like systems. It is also reported that most of the CMAC models produce better result than using Black-Scholes model in sense of RMSE. Though for American option, Black-Scholes model is not a good benchmark because it is sensitive to details of calculation.
This work further constructed an arbitrage system based on the pricing model. Positions are adjusted according to the Delta hedging ratio. Experiments suggested the model has a marginal positive ROI, omitting transaction costs.

B. Adaptive Control
The application of CMAC on commercial devices may be more advantageous. The pressure to reduce cost and demand of embedded controller make CMAC-like models a good choice. Recently, studies have been carried on adaptive control of disabled wheelchair and seatless unicycle [12]. This type of problems can be formalized as controlling a set of variables in certain range (e. g. speed and balance angle) with a set of unknown and varying variables (e. g. friction to the ground and weight of the rider).
The performance of FCMAC is benchmarked with a linear-quadratic regulator for differential equations to describe the state of the motor. Simulations suggest that LQR is not able to converge speed and angle of balance, while FCMAC provides satisfactory result.

V. DISCUSSIONS
Referring to Section IV, CMAC was proved to be effective in many classic control problem and has been applied to emerging engineering problems. However, this model seems have encountered a bottleneck because of the lack of fundamental breakthrough during the past decade. Nowadays, issues discussed are mainly focused on trivial modification on memory structure and learning algorithm. The framework of error propagation or minimization of loss function is kept unchanged.
According to my understanding, the limitation of current CMAC models can be ascribe to its over simplification of the cerebellum structure. Therefore, the next generation cerebellar model may adopt new discoveries from neuroscience. For example, the associative memory cells may take different roles rather than been treated identically. In fact, anatomical models usually feature several types of elementary cerebellar processing units. Meanwhile, the theory of Spike Timing Dependent Plasticity (STDP) suggests that the learning process of firing neurons may be ordered [6]. This feature can introduce far more complexity to the current learning algorithm.