{'fraction_non_alphanumeric': 0.03645377661125693, 'fraction_numerical': 0.018761543695926898, 'mean_word_length': 4.778318666916308, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 2, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
High precision coding in mouse visual cortex

Single neurons in visual cortex provide unreliable measurements of visual features due to their high trial-to-trial variability. It is not known if this “noise” extends its effects over large neural populations to impair the global encoding of sensory stimuli. We recorded simultaneously from ∼20,000 neurons in mouse visual cortex and found that the neural population had discrimination thresholds of 0.3° in an orientation decoding task. These thresholds are ∼100 times smaller than those reported behaviorally in mice. The discrepancy between neural and behavioral discrimination could not be explained by the types of stimuli we used, by behavioral states or by the sequential nature of trial-by-trial perceptual learning tasks. These results imply that the limits of sensory perception in mice are not set by neural noise in sensory cortex, but by the limitations of downstream decoders.

However, it is not clear how variability measured from single neurons or from pairs of neurons scales to local circuits of tens of thousands of neurons [10]. Intuitively, one might expect the noise to be averaged out over large enough numbers of neurons. Theoretical studies have shown that most types of noise are indeed harmless at the population level [24][25][26][27]; only a special kind of correlated noise is detrimental to neural coding because it can limit the total amount of information available in the system. This "information-limiting" noise arises when the estimation errors of single neurons are correlated to each other at the level of the population [27].
In geometric terms, noise can only affect the encoding of a stimulus when it aligns to the same neural subspaces which the stimuli drive [28][29][30]. We now know that at least some of the neural noise is orthogonal to the stimulus subspace, and thus harmless. Specifically, we have shown orthogonality to the stimulus space for the neural variability induced by the animal's own behavior across its entire brain [31]. However, this behavior-related neural activity only accounted for ∼35% of the total coordinated variability, leaving the possibility that the rest is stimulus-related and thus potentially informationlimiting.
Estimating the impact of information-limiting noise on coding is difficult, because even small amounts of informationlimiting noise can put absolute bounds on the precision of stimulus encoding [27]. To detect the effects of such small noise, it is thus necessary to record from large numbers of neurons. This introduces a new problem: the information content of such recordings cannot be estimated directly and decoding approaches must be used instead. Previous studies in anesthetized macaques have decoded one-dimensional variables (i.e. the orientation of a grating) from populations of at most 100 simultaneously-recorded neurons and reported decoding errors in the 2-20 • range [32][33][34]. It is not known if these errors represent an absolute lower bound, or may decrease further for larger neural populations. Some studies have suggested that small subsets of neurons are as discriminative as the entire population [33,35], while others have shown consistent improvements in discrimination with increasing numbers of neurons [36].
Here we aimed to measure the absolute lower bound on decoding error for visual stimulus orientation by recording from populations of ∼20,000 neurons in mice. If informationlimiting noise exists, we reasoned that the decoding error must asymptote at some non-zero value as we increase the number of neurons we consider [27]. Instead, we found that we could decode the orientation of a grating with mean errors as low as 0.3 • , and this decoding error did not asymptote with the number of neurons or stimuli we presented. To achieve this decoding performance, it was important to take correlations into account, but these correlations were not of the information-limiting type. We also show that the low decoding errors can be achieved by a variety of biologically plausible learning strategies based on linear decoders. These results imply that the visual cortex encodes visual features to high precision on a trial-by-trial basis in mice, a species not known for high acuity vision, and which performs poorly in orientation discrimination tasks [37,38].

RESULTS
We recorded from primary visual cortex in awake, head-fixed mice that were free to run on an air floating ball. Each session lasted for 120-180 minutes during which we presented images to the left eye ( Figure 1A). Our main stimuli were static gratings, which lasted for 750ms and were rotated at a random orientation on each trial. We recorded neural activity from visual cortex using multi-plane two-photon calcium imaging, with 10-17 planes spaced 25 µm apart in depth, scanning the entire stack repeatedly at an average 3 Hz ( Figure 1B). We obtained 19,665 ± 3,062 (s.d., n=6) neurons per recording using the processing pipeline Suite2p [39] ( Figure 1C). All analyses were performed on deconvolved data, which localizes in time the extended fluorescence responses of the calcium indicator [40]. We have publicly shared the data and code for this paper [41].
To visualize the patterns of population activity in a raster plot, we sorted neurons by their preferred stimulus and binned their activity along this stimulus-sorted axis ( Figure 1D). As previously shown [42], single neurons had high trial-to-trial variability and sometimes failed to respond at all to their preferred stimulus ( Figure 1E). We quantified this variability by the signal-to-noise ratio (SNR) ( Figure 1F), and found a mean SNR of 0.11 for the example session, and 0.13± 0.01 (s.e.m., n=6) across recordings, similar to the single-trial SNR previously reported for natural image stimuli [36]. The aligned, population-averaged tuning curves had a mean half-width at half-max of 14.1 • ( Figure S1). The correlation between neural response vectors for different orientations decayed smoothly as a function of the difference in orientation ( Figure S2A,B). Using a manifold embedding algorithm in three dimensions (ISOMAP, [43]), we found a predominantly one-dimensional representation of the stimulus space, but nonetheless a representation corrupted with noise ( Figure S2C).
We distinguish between three types of potential neural variability that can affect coding ( Figure 1H). First, the decoding errors of single neurons might be uncorrelated across neurons, in which case averaging over single-neuron predictions would give an unbiased estimate of the true stimulus angle with a small error (Figure 1Hi). A second possibility is that decoding errors are partially-correlated over the population, for example if subsets of neurons have correlated errors (Figure 1Hii). The third and final possibility is that decoding errors are fully correlated over the population, so that averaging over the predictions of even infinitely many neurons would give a biased estimate of the true stimulus orientation (Figure 1Hiii). This situation would indicate the presence of "informationlimiting" correlations [27].

Independent neuron decoder: 2.4 • error
Consider the first possibility, that the stimulus-dependent variability is uncorrelated between neurons. If that was true in the data, we could decode from the neural population using the "Naive Bayes" classifier [44], in which every observed response R(n, θ) of a neuron n to a stimulus θ determines the probability P(θ |R(n, θ)) which that neuron gives to every possible stimulus θ (Figure 2A). Assuming independence, we can multiply these probabilities across neurons to obtain the likelihood P(θ |R(1, θ), R(2, θ), ...) that the entire population gives to every possible stimulus θ . Equivalently, we can sum the log-likelihoods across neurons (Figure 2A). We then select the stimulus with the highest likelihood as the decoded orientation, using interpolation to predict fractional stimulus values (see Methods). Finally, we can define P(θ |R(n, θ)) ∼ N (R(n, θ)| f n (θ ), σ n (θ )), where f n , σ n are means and variances optimized on the training data ( Figure 2A). This population decoder had a median decoding error of 2.39 • ± 0.13 • (s.e.m., n=6) ( Figure 2B,C). This error may be due to either: 1) single-neuron noise that was not fully averaged out, or 2) correlations in decoding errors between neurons. To test if the decoding errors were correlated, we split the neurons into two populations, decoded from each, and asked if the two decoding errors were in the same direction with respect to the true stimulus ( Figure 2D). We found that the errors were highly correlated (Spearman's R=0.65±0.11 (s.e.m, n=6)), which invalidated the independence assumption of the decoder, and suggests that the error may decrease further if correlations are taken into account ( Figure 2E).

Linear decoders ignore correlations: 1 • error
To account for correlations, a decoder must be able to appropriately weigh neurons, potentially discarding neurons that have too high correlations. This is most easily achieved by simple linear decoders, which we modify here to predict continuous functions of the stimulus angle ( Figure 2F), rather than the stimulus angle itself, which is a circular variable and thus not directly predictable by a linear method. We called these intermediate functions "super-neurons" and chose them to have von Mises tuning to orientation θ (Figure 2F): F(θ|θ pref ) = exp(cos(θ−θ pref )/σ), with σ = 0.1, with different super-neurons having different values of θ pref that tile the full range [0, 2π]. On test data, we computed the activations of the super-neurons and picked the preferred angle of the super-neuron with the highest activation as the decoded stimulus, using interpolation methods to decode fractional angles ( Figure 2F).
The error of the linear decoder was 1.03 • ± 0.04 • (s.e.m., n=6) compared to the 2.39 • for the independent decoder (Figure 2G,H). To achieve this decoding error, more than 256 principal components were needed ( Figure S3). The best decoding was achieved for horizontal gratings, and the worst for vertical gratings, although the differences were small (Figure S4). The decoder was not affected by the presence of spontaneous activity patterns [31], and performed equally well whether these patterns were subtracted off or not ( Figure S5).
To determine if the linear decoder achieved the minimum possible error, we analyzed the asymptotic behavior of the error as a function of the number of neurons and stimuli. As opposed to the independent decoder, which nearly achieved its saturating value of ∼2.12 • ( Figure S6A), the linear decoder's error continued to decrease with increasing numbers of neurons ( Figure S6B). We estimated that its error would plateau at 0.71 • in the limit of very many neurons. We performed a similar scaling analysis with the number of training set stimuli ( Figure S6C). Again we found that the error continued to decrease with increasing numbers of stimuli, presumably due to less overfitting. We estimated that the error would saturate at 0.38 • for very many training stimuli.
This asymptotic analysis suggested that the most effective way to further lower decoding errors would be to show more stimuli. To do this we restricted the range of presented angles to 43-47 • , and presented ∼4,000 stimuli in this range. This increased the stimulus density from 10 trials/deg to 1,000 trials/deg. To avoid boundary effects when decoding orientations in such a limited range, we switched to a decoding task in which we infer if the true stimulus is above or below the middle value of 45 • .

For this new decoding task we built structured decoders that
predicted a single function f of the presented stimulus θ and the threshold stimulus where F is the von Mises function defined above. We used the sign of the neural prediction on test trials as the predicted class label of the decoder which for convenience we refer to as "left" vs "right".
The neural discrimination threshold is defined as the angle at which the decoder achieves 75% correct performance. The discrimination threshold was 1.04 • ( Figure 3B) for the original stimulus set at 10 trials/deg, and 0.32 • for the new stimulus set of 1,000 trials/deg ( Figure 3C). An asymptotic analysis shows that the error might have decreased further with more neurons and more trials ( Figure 3D). As a sanity check, we performed control recordings with the laser path blocked (shutter on) and found no ability to decode from the very low bleedthrough of the screen into the microscope (see Figure S7).
In contrast to these low neural discrimination thresholds, behavioral discrimination thresholds in mice are >25 • [37,38] ( Figure 3B). We wondered if some of the difference between neural and behavioral discrimination could be related to behavioral states, because the mice in our experiments were free to run on an air-floating ball. To quantify running-related differences, we split test trials (but not training trials) in two groups based on locomotion. We found that passive trials had modestly increased discrimination thresholds of 1.25 • compared to 0.96 • on running trials ( Figure 3E). Thus, behavioral states cannot account for the discrepancy between behavioral and neural discrimination thresholds. We next asked if the discrepancy may be accounted for by stimulus properties, and used neural responses to new stimulus sets ( Figure 3F) to investigate this possibility. We varied the size (full field vs 30 • ) and duration (750ms vs 100ms) of the static grating stimuli. We also presented drifting gratings (2Hz), drifting gratings with low contrast (1 vs 0.05) and drifting gratings with low contrast and large added noise. Finally, we showed a complex stimulus without a well-defined absolute orientation, and rotated it around its center. These manipulations either did not increase discrimination thresholds or did so modestly, up to at most 1.87 • for the low-contrast, drifting gratings ( Figure 3F).
We also considered the possibility that the neural code might change over the duration of the recording, making decoders obtained from the first half of the recording ineffective on the second half. We therefore split train/test trials chronologically rather than randomly. We found a modest increase in discrimination threshold to 1.14 • compared to the original 1.04 • ( Figure S8). We did not observe a change in the discrimination threshold across cortical layers (L2/3 vs L4, Figure S9).
Thus, neither the stimulus properties nor the behavioral states can account for the discrepancy between behavioral and neural discrimination thresholds. We conclude that mice might not be using their available neural information efficiently in behavioral tasks. This may be a consequence of trial-bytrial learning limitations, which we investigate next in simulations.

Biologically-plausible learning by perceptrons
Our first hypothesis was that the sequential nature of trial-bytrial learning makes it difficult to learn optimal decoders without storing the neural responses to all previously presented stimuli, which might be unfeasible (but see hippocampal replay e.g. [45,46]). To construct an online decoder, which pro-  20 20 1.75 100ms 20 20 1.03 20 20 1.87 20 20 1.67 20 20 1.10 The discrimination threshold was computed as the angle difference for which 75% correct performance is achieved. Psychometric results reproduced from [38]. (C) In another set of recordings, we presented stimuli in the range 43-47 • , obtaining a higher density of training trials of 750 trials/degree. The analysis in B was repeated on this data. (D) Asymptotic behavior of the discrimination threshold as a function of the number of trials/deg (left) and the number of neurons (right). (E) Neurometric curves for subsets of trials divided into running and passive trials. (F) Neurometric curves for other stimulus types: localized, short, drifting, drifting + low-contrast, drifting + low-contrast + noise, and complex.
cesses trials sequentially, we used perceptrons [47][48][49][50][51] (Figure 4A). The perceptron sums the activities of its input neurons multiplied by a set of weights and then puts this output (y pred ) through a nonlinearity. In our case, the nonlinearity outputs the sign of the perceptron's output and we use that sign to predict the label (-1,+1 for left and right choices). The objective of learning in a perceptron is to change the weights as to minimize the mean-squared error of the prediction.
Simple forms of online learning in a perceptron can be biologically realistic if they only require global error signals in addition to information available locally at a synapse. We investigate three such versions here. First, we consider a "supervised Hebbian" learner, which changes the weight w k by ∆w k = y label · x k , with x k the response of neuron k (Figure 4A). We also consider a gradient descent learner, which changes the weights by ∆w k = (y label − y pred ) · x k , and a restricted form of gradient descent which uses the reinforcement feedback (correct/wrong) in place of the full prediction error: ∆w k = sign(y label − y pred ) · x k . We call this last one "reinforcement descent".
To test these online learning strategies, we designed two tasks, one easy and one hard. In the easy task, the learning agents used the neural responses to our first stimulus set with 10 trials/deg, restricted to angles between -30 and -5 degrees for the "left" choice, and 5 to 30 for the "right" choice ( Figure 4B). All three perceptron learners performed this task perfectly, using a small number of training trials ( Figure 4B). In the hard task, the learners had to discriminate between positive and negative stimulus angles of up to 2 • , using the neural data recorded at 1,000 trials/deg ( Figure 4C). The supervised Hebbian learner was unable to perform well in this task with an asymptotic performance of 66%. However, the learners based on gradient descent and reinforcement descent performed relatively well at 83% and 77% compared to 86% for the optimal linear decoder, which had instantaneous access to all trials in its history ( Figure 4C). Therefore, the perceptrons acquired task information nearly as efficiently as the optimal linear decoder did.
We conclude that these simple online decoders can learn the orientation discrimination task from neural data in a sample-efficient way. Therefore, the trial-by-trial limitation of animal perceptual learning experiments does not explain the discrepancy between neural and behavioral discrimination thresholds. It follows that animals use highly suboptimal learning strategies in psychophysical experiments, perhaps because those strategies are favorable in ecological contexts. We end this study by proposing examples of weak but potentially relevant decoders, and leave it to future work to test if any of these weak learners provide insight into animal behavior. The decoders we propose ( Figure 4D) are: 1) the "best neuron" learner, which finds the neuron most correlated with the correct choice on the training set and then uses this neuron to make predictions on the test set; 2) the "one-shot" learner, which uses neural responses from only one trial of each stimulus category and builds a linear decoder along the discriminant direction of these two trials; and 3) the "random projection" learner, which tests 100 different random projections in parallel and retains the one that maximizes training set performance. These decoders had test set performance on the easy task in the range of 65-90% ( Figure 4D), which is inline with mouse behavioral performance on similar tasks [37,38,52].

DISCUSSION
What sets the limits of sensory discrimination? Our analyses imply it is not neural noise. We have shown this by recording from very large populations of neurons in visual cortex and computing neural discrimination thresholds as low as 0.3 • in mice, a species thought to have poor visual acuity. Simple linear decoders were sufficient to achieve this performance, although it is possible that nonlinear decoders may achieve even higher performance ( [53]; but see Figure S10). The neural discrimination thresholds were ∼100x lower than behavioral discrimination thresholds, which we estimated at >25 • based on previous studies [38]. We were not able to explain this discrepancy by varying six different stimulus properties, by splitting trials according to behavioral states, or by learning the decoder in a biologically plausible way.
We suggest two potential explanations for the discrepancy between behavior and neurons. First, it might be that downstream decoders in the mouse brain are computationally limited, and cannot find the same discrimination directions in neural space that are found by an ideal external observer. Second, it might be that our methods for probing discrimination in mice are limited and better task designs may result in better training and better discrimination. To better train mice, more naturalistic tasks might be necessary, such as immersive virtual reality navigation [52,54,55]. Alternatively, it may be that mice do have latent task knowledge even if their behavior is poor [56], in which case future task improvements should target the expression of this latent knowledge.

Acknowledgments
We thank Dan Flickinger for assistance with the two-photon microscope, Salvatore DiLisio and Sarah Lindo for surgeries, and James Fitzgerald for useful discussions. This research was funded by the Howard Hughes Medical Institute. All

METHODS
All experimental procedures were conducted according to IACUC.

Animals and surgery
We performed experiments on three mice bred to express GCaMP6s in excitatory neurons: TetO-GCaMP6s x Emx1-IRES-Cre mice (available as JAX 024742 and JAX 005628).
We also performed experiments on three wild-type C57 mice in 17 recordings. In these mice, AAV-GCaMP6s-P2A-nls-dTomato (Addgene plasmid #51084) was expressed virally through injections into visual cortex. These mice were male and female, and ranged from 2 to 8 months of age.
Surgical methods were similar to those described elsewhere [31]. Briefly, surgeries were performed in adult mice (P35P125) under isoflurane anesthesia (5% for induction, 1-2% during the surgery) in a stereotaxic frame. Before surgery, buprenorphine was administered as a systemic analgesic and lidocaine was administered locally at the surgery site. During the surgery we implanted a head-plate for later head-fixation, and made a craniotomy of 4 mm in diameter with a cranial window implant for optical access. We targeted virus injections (50-200 nl, 1-3 x 1012 GC/ml) to monocular V1 (2.1-3.3 mm laterally and 3.5-4.0mm posteriorly from Bregma). To obtain large fields of view for imaging, we typically performed several injections at nearby locations, at multiple depths (∼500 µm and ∼200 µm).
Multi-plane acquisition was controlled by a resonance mirror, with planes spaced 25 µm apart in depth. 10-17 planes were acquired sequentially, scanning the entire stack repeatedly on average at 3 Hz. We synchronized stimulus presentation to the beginning of each frame for the first plane, and computed stimulus responses from the first three frames acquired after stimulus onset for each plane. We used a custom online Zcorrection module (now in ScanImage), to correct for Z and XY drift online during the recording.
The mice were free to run on an air-floating ball. For all static image presentations an LED tablet screen at a 45 • from the left eye (we recorded in right visual cortex). For drifting grating image presentations a custom circular screen made of LED arrays was placed around the head of the mouse [59]. We also repeated the static grating experiments with this screen and obtained comparable decoding errors.
For each mouse, recordings were made over multiple days, always returning to the same field of view. The field of view was selected on the first recording day such that large numbers of neurons could be observed, with clear calcium transients and a retinotopic location (identified by neuropil fluorescence) that was localized on the screen.

Visual stimuli
We showed various gratings and localized images. To present stimuli, we used PsychToolbox-3 in MATLAB [60]. The stimuli were presented for 750 ms (unless otherwise stated), alternating with a gray-screen inter-stimulus interval lasting on average 650 ms. After every 150 stimuli, the screen was left blank (gray screen) for 32 seconds. The activity during these non-stimulus periods was used to project out spontaneous dimensions from the neuronal population responses (see below).
All gratings were square and had a spatial frequency of 0.05 cycles / degree; drifting gratings had a temporal frequency of 2 Hz. We showed random orientations/directions of these stimuli on each trial.
The local stimulus was restricted to 30 • of visual space and used a lower frequency grating. The complex "minimouse" stimulus was also 30 • of visual space and was rotated around its center. Outside of these stimuli, the screen was gray.

Stimulus responses
We defined the stimulus response as the summed activity of the first three bins (∼1 second) following stimulus onset. We split the trials 75/25 into training and testing sets, with every 4th trial assigned to the test set.

Splitting cells into two populations
When looking at correlated decoding errors, we split the neurons into two populations. We first divided the XY plane into 8 non-overlapping strips of width 150 µm, and assigned the neurons in the even strips to one group, and the neurons in the odd strips to the other group, regardless of the neuron's depth. Thus, there did not exist neuron pairs in the two sets that had the same XY position but a different depth. This special division was performed to avoid contamination artifacts between overlapping cells or between consecutive planes.

Tuning curves and SNR
We fit the training trials with n basis = 10 cosine and sine basis functions, where θ is the angle of the stimulus shown in radians: . . . sin(n basis · θ) cos(n basis · θ) We performed linear regression from B to the neural responses and used the fitted function f n (θ) as the tuning curve.
To compute the signal-to-noise ratio, we defined the signal as the variance of the tuning curve and the noise as the variance of the residual noise after subtracting out the tuning curve value.

Independent decoder
For the independent decoder, we built generative models of the neural data by modelling the mean and standard deviation of each neuron. The mean was obtained as a function of stimulus angle using the tuning curve fits f n (θ) above. The standard deviation σ n (θ) was fit similarly, after subtracting the mean predictions on the training set, by squaring the residuals and fitting them in the same set of basis functions. With the mean and standard deviation defined for each neuron and each stimulus, we computed the probability that a novel neural pattern R(n) was produced by a putative stimulus orientation θ : P(θ |R(n)) ∼ N (R(n)| f n (θ ), σ n (θ )).
These probabilities were evaluated in log-space for a discrete set of θ (n=48 orientations) and summed across neurons. To decode orientations more finely, we upsampled the log-probability curves by a factor of 100 using kriging interpolation. The stimulus angle corresponding to the peak of the upsampled curve was used as the decoded orientation.

Linear decoder
To decode circular angles using locally linear decoders, we regressed the neural activity onto "super"-neurons (see We fit the transformation from neurons to super-neurons on training trials and then predicted the super-neuron responses on test trials. As for the independent decoder, we upsampled the super-neuron responses from 48 to 4,800 to decode stimulus angle more finely.

Removal of ongoing activity dimensions
Approximately half the variance of visual cortical population activity represents behavior-related fluctuations [31]. In Figure S5 we projected out the ongoing activity dimensions to show that they had no influence on sensory coding. To do this we computed the top 32 principal components of zscored and binned (3 frames = ∼ 1 second) ongoing activity. The spontaneous, ongoing neural activity was recorded during gray screen presentations, and these were presented after every 150 stimulus presentations for 32 seconds each time. To remove these dimensions from stimulus responses, the stimulus-driven activity was first z-scored (using the mean and variance of each neuron computed from ongoing activity), then the projection onto the 32 top spontaneous dimensions was subtracted.

Asymptotics
To fit the asymptotic error, we modeled the scaling of the median error with the parametrization α + β √ N , where N is the number of neurons or the number of stimuli ( Figure S6). The scaling of 1/ √ N was chosen because it corresponds to the decay of the standard deviation of an average of independent random variables with the same variance. We fit α and β to the last 12 points of each curve in Figure S6 using linear regression.

Linear decoder for discrimination
To perform the discrimination task with a linear decoder, we took a similar approach to the linear decoder described above. Instead of having super-neurons with von Mises tuning, the super-neurons for this task (n = 32) are differences of von Mises functions centered above and below the discrimination boundary:

Neural networks for decoding
We used PyTorch [69]) to train a neural network to perform the discrimination task in Figure 3 on the 10 trials/degree recordings. This network consisted of two rectified-linear layers and an output sigmoid. The input layer consisted of 256 units using the top principal components from the data (this reduced overfitting). The two hidden layers consisted of 100 units each. We trained the network for 50,000 iterations using stochastic gradient descent with momentum of 0.9 and a learning rate of 1e-3. The cost was a binary cross-entropy loss. We averaged over 5 random initializations of the neural network for each recording.

Random forests for decoding
We used scikit-learn [65] to train a random forest ensemble classifier to perform the discrimination task using the neural activity from the 10 trials/degree recordings. We used 1000 trees and averaged over 5 random initializations of the classifier for each recording.

Perceptron learners
The perceptrons used the learning rule w k = w k + η · err · x k , err ∈ {y label , y pred − y label , sign (y pred − y label )} where η is the learning rate and the three cases for "err" correspond to the supervised hebbian, the gradient descent and the reinforcement descent decoders. The gradient descent decoder has been derived from the error cost function: