E FFICIENT S ALIENCY M APS FOR E XPLAINABLE AI
Anonymous authors
Paper under double-blind review
A BSTRACT
We describe an explainable AI saliency map method for use with deep convolutional neural networks (CNN) that is much more efﬁcient than popular gradient methods.
It is also quantitatively similar and better in accuracy.
Our technique works by measuring information at the end of each network scale which is then combined into a single saliency map.
We describe how saliency measures can be made more efﬁcient by exploiting Saliency Map Order Equivalence.
Finally, we visualize individual scale/layer contributions by using a Layer Ordered Visualization of Information.
This provides an interesting comparison of scale information contributions within the network not provided by other saliency map methods.
Since our method only requires a single forward pass through a few of the layers in a network, it is at least 97x faster than Guided Backprop and much more accurate.
Using our method instead of Guided Backprop, class activation methods such as Grad-CAM, Grad-CAM++ and Smooth Grad-CAM++ will run several orders of magnitude faster, have a signiﬁcantly smaller memory footprint and be more accurate.
This will make such methods feasible on resource limited platforms such as robots, cell phones and low cost industrial devices.
This will also signiﬁcantly help them work in extremely data intensive applications such as satellite image processing.
All without sacriﬁcing accuracy. Our method is generally straight forward and should be applicable to the most commonly used CNNs 1 .
I NTRODUCTION
Deep neural networks (DNN) have provided a new burst of research in the machine learning community.
However, their complexity obfuscates the underlying processes that drive their inferences.
This has lead to a new ﬁeld of explainable AI (XAI).
A variety of tools are being developed to enable researchers to peer into the inner workings of DNNs.
One such tool is the XAI saliency map.
It is generally used with image or video processing applications and is supposed to show what parts of an image or video frame are most important to a network’s decisions.
The seemingly most popular methods derive a gradient saliency map by back-propagating a gradient from the end of the network and project it onto an image plane (Simonyan et al., 2014; Zeiler & Fergus, 2014; Springenberg et al., 2015; Sundararajan et al., 2017; Patro et al., 2019). The gradient can typically be from a loss function, layer activation or class activation.
Thus, it requires storage of the data necessary to compute a full backward pass on the input image.
Several newer methods attempt to iteratively augment the image or a mask in ways that affect the precision of the results (Fong & Vedaldi, 2017; Chang et al., 2018).
Additionally, saliency map encoders can be trained within the network itself (Dabkowski & Gal, 2017).
Both of these methods have a distinct advantage of being more self-evidently empirical when compared with gradient techniques.
Class Activation Map (CAM) methods (Selvaraju et al., 2017; Chattopadhyay et al., 2018;
Omeiza et al., 2019) efﬁciently map a speciﬁed class to a region in an image, but the saliency map is very coarse.
They generally use a method like Guided Backprop (Springenberg et al., 2015) to add ﬁner pixel level details.
This requires a full backwards pass through the network, and it adds significant memory and computational overhead to CAM solutions relative to just computing the CAM alone.
Several of the CAM methods compute gradients aside from the use of Guided Backprop, but we will differentiate them by referring to them as CAM methods.
Most saliency map methods require many passes through the network in order to generate results or train.
The gradient methods hypothetically would require just one backwards pass, but often require as many as 15 in order to give an accurate rendering (Hooker et al., 2018).
This is not always a problem in the lab when a person has a powerful GPU development box.
However, what if one would like to see the workings of the network at training time or even run time?
This can be a serious hurdle when running a network on mobile or embedded platforms. It is not uncommon for hardware to be barely fast enough to process each image from a video source. Running a full backward pass can lead to dropped frames.
Additionally, viewing or saving the saliency map for each frame is infeasible. Another problem is that some platforms may not have the memory capacity to save all the information required for a backward pass. Gradient based methods cannot work in these instances.
Sometimes this can even be the case with powerful hardware. Satellite images can be vary large and potentially exhaust generous resources. An efﬁcient method would enable developers in these areas to get feedback in the ﬁeld and aid in debugging or understanding the behavior of a network.
Here we show a method of computing an XAI saliency map which is highly efﬁcient.
The memory and processing overhead is several orders of magnitude lower than the commonly used gradient methods. This makes it feasible in any resource limited environment. Also, since we demonstrate empirically that our method is either similar or more accurate than the most commonly used gradient methods, it can be used it to speed up run-time in any situation. It is fast enough that we already use it automatically when training networks.
We notice very little degradation of training speed.
M ETHODS 2. S ALIENCY M AP D ERIVATION
We were looking for a method to compute saliency maps based on certain conditions and assumptions.
The method used needs to be relatively efﬁcient to support rapid analysis at both test time and during DNN training.
The method should have a reasonable information representation.
As a DNN processes data, the ﬂow of information should become localized to areas which are truly important.
The method should capture the intuition that the informativeness of a location is proportional to the overall activation level of all the ﬁlters as well their variance.
That is, informative activations should have a sparse pattern with strong peaks.
Our approach works by creating saliency maps for the output layer of each scale in a neural network and then combines them.
We can understand scale by noting that the most commonly used image processing DNNs work on images with ﬁlter groups at the same scale which down-sample the image and pass it to the group of ﬁlters at the next scale, and so on.
Given a network like ResNet-50 (He et al., 2015) with in input image size of 224 x 224, we would have ﬁve scale groups of size 112 x 112, 56 x 56, 28 x 28, 14 x 14 and 7 x 7.
It is at the end of these scale groups where we are interested in computing saliency.
In this way, our approach is efﬁcient and is computed during the standard forward pass through the network. No extra pass is needed.
To achieve localization of information, we measure statistics of activation values arising at different input locations.
Given an output activation tensor T ∈ R + ,p × q × r with spatial indices i, j ∈ p, q and depth index k ∈
r
from some layer T
= l ( X ) .
In our case l ( . ) is a ReLU (Nair & Hinton, 2010).
We apply a function to each column at i, j over all depths k .
This yields a 2D saliency map
S ∈ R
+ ,p × q where S
= ϕ ( T ) .
We process the tensor after it has been batch-normalized (Ioffe & Szegedy, 2015) and processed by the activation function.
When we compute Truncated Normal statistics as an alternative in later section, we take the tensor prior to the activation function.
Finally, to capture our intuition about the informativeness of an output activation tensor, we derived ϕ ( . ) by creating a special simpliﬁcation of the maximum likelihood estimation Gamma Scale parameter (Choi & Wette, 1969).
One way we can express it is:
[Equation]
To avoid log zero, we add 1 e − 06 to each x k .
How mean and variance relate seems readily apparent with the square bracketed part being the computational formula for the standard deviation with values taken to log 2 ( . ) rather than squared.
This is preceded by a typical mean estimate.
This meets the third requirement we mentioned.
This simpliﬁcation is Saliency Map Order Equivalent (SMOE) to the full iterative (and expensive) scale parameter estimation.
We deﬁne SMOE as follows.
Given saliency map S a ∈ R + ,p × q and S b ∈ R + ,p × q where we may have S a (cid:54) =
S b , if we sort the pixels by value, then S a will be sorted in exactly the same order as S b .
That means that the most salient location i, j is exactly the same in both S a and S b .
This also means that if we create a binary mask of the n % most salient pixels, the mask for both S a and S b will also be exactly the same.
SMOE is preserved if for instance, we apply independent monotonic functions to a saliency map.
As such, we may as well strip these away to save on computation.
Tie values may create an imperfect equivalence, but we assert that these should be very rare and not affect results by a measurable amount.
Using µ as the mean of each column r in T , we can see the information relation more clearly if we simplify Eq 1 further which gives us our SMOE Scale method:
[Equation]
The resemblance to conditional entropy is apparent.
However, since the values in Eq 2 are not probabilities, this does not ﬁt the precise deﬁnition of it.
On the other hand, the interpretation is fairly similar.
It is the mean activation multiplied by the information we would gain if we knew the individual values which formed the mean.
Put in traditional terms, it is the information in the mean conditioned on the individual values.
Numerical examples of this method at work can be seen in Appendix Table 3 along with more information on the derivation.
To create a 2D saliency map S ∈ R + ,p × q , we simply apply Eq 2 at each spatial location i, j ∈ p, q with column elements k ∈ r in the 3D activation tensor T for a given input image.
2. C OMBINED S ALIENCY M AP G ENERATION
For each input image, we derive ﬁve saliency maps.
For different networks, this number may vary.
Given a network such as a ResNet (He et al., 2015), AlexNet (Krizhevsky et al., 2013), VGG Net (Simonyan & Zisserman, 2015) or DenseNet (Huang et al., 2017) we compute saliency on the ﬁnal tensor computed at each spatial scale.
Recall that most image classiﬁcation networks process images in a pipeline that processes an image in consecutive groups of convolution layers where each group downsamples the image by 1/2x before passing it onto the next.
It is just prior to the downsampling that we compute each saliency map.
Computing saliency across image scales is a classical technique (Itti et al., 1998).
This is also similar to the method used in the XAI saliency technique described in (Dabkowski & Gal, 2017).
They possibly correspond to the most important features in the image.
Many more examples can be seen in Appendix Figures 11 and. To make our maps easier to visualize or combine together, we normalize them from 0 to 1 by squashing them with the normal cumulative distribution function γ ( s ; µ, σ ) .
Here mean and standard deviation are computed independently over each saliency map.
We then create a combined saliency map by taking the weighted average of the maps.
Since they are at different scales, they are upsampled via bilinear interpolation to match the dimensions of the input image.
Given r saliency maps that have been bilinear interpolated (upsampled) to the original input image size p, q , they are then combined as:
[Equation]
Note that technically, we compute γ ( s ; µ, σ ) before we upsample.
Weighting is very useful since we expect that saliency maps computed later in the network should be more accurate than saliency maps computed earlier as the network has reduced more irrelevant information in deeper layers, distilling relevant pixels from noise (Tishby et al., 2000).
Network activity should be more focused on relevant locations as information becomes more related to the message.
We observe this behavior which can be seen later in Figure 4.
A saliency map generation example can be seen in Figurewith many more examples in Appendix Figures 9 and 10.
The advantages of creating saliency maps this way when compared with most gradient methods are:
Pro : This is relatively efﬁcient, requiring processing of just ﬁve low cost layers during a standard forward pass.
Pro : We can easily visualize the network at different stages (layers).
• Con : The current method does not have a class speciﬁc activation map (CAM) (Selvaraju et al., 2017; Chattopadhyay et al., 2018; Omeiza et al., 2019), but we discuss how this can be done later.
2. V ISUALIZING M ULTIPLE S ALIENCY M APS
One advantage to computing multiple saliency maps at each scale is that we can get an idea of what is happening in the middle of the network.
However, with so many saliency maps, we are starting to be overloaded with information.
This could get even worse if we decided to insert saliency maps after each layer rather than just at the end of each scale.
One way to deal with this is to come up with a method of combining saliency maps into a single image that preserves useful information about each map.
Such a composite saliency map should communicate where the network is most active as well as which layers speciﬁcally are active.
We call our method Layer Ordered Visualization of
Information (LOVI) .
We do this by combining saliency maps using an HSV color scheme (Joblove & Greenberg, 1978) where hue corresponds to which layer is most active at a given location. That is, it shows the mean layer around which a pixels activity is centered. Saturation tells us the uniqueness of the activation.
This is the difference between the maximum value at a location and the others.
Value (intensity) corresponds to the maximal activation at that location.
Basically, this is a pixel’s importance. If only one layer is active at a location, the color will be very saturated (vivid colors).
On the other hand, if all layers are equally active at a given location, the pixel value will be unsaturated (white or gray). If most of the activation is towards the start of a network, a pixel will be violet or blue. If the activation mostly happens at the end, a pixel will be yellow or red. Green indicates a middle layer.
Thus, the color ordering by layer follows the standard order of the rainbow.
Examples can be seen in Figure 2.
Given k ∈ r saliency maps S (in this instance, we have r = 5 maps), we stack them into a tensor S ∈ R + ,p × q × r .
Note that all s ∈ [0 , 1] because of Eq 3 and they have been upsampled via bilinear interpolation to match the original input image size.
Given: [Equation]
Hue ∈ [0 , 360] is basically the center of mass of activation for column vector s at each location i, j ∈ p, q in S :
[Equation]
Saturation ∈ [0 , 1] is the inverse of the ratio of the values in s compared
to if they are all equal to the maximum value.
So for instance, if one value is large and all the other values are small, saturation is high.
On the other hand, if all values are about the same (equal to the maximum value), saturation is very small:
[Equation]
Value ∈ [0 , 1] is basically just the maximum value in vector s :
[Equation]
Once we have the HSV values for each location, we then convert the image to RGB color space in the usual manner.
2. Q UANTIFICATION V IA ROAR AND KAR
(Hooker et al., 2018) proposed a standardized method for comparing XAI saliency maps.
This extends on ideas proposed by (Dabkowski & Gal, 2017; Samek et al., 2017) and in general hearkens back to methods used to compare computational saliency maps to psychophysical observations (Itti & Koch, 2001).
The general idea is that if a saliency map is an accurate representation of what is important in an image, then if we block out salient regions, network performance should degrade.
Conversely, if we block out non-salient regions, we should see little degradation in performance.
The
ROAR/KAR metrics measure these degradations explicitly.
The KAR metric (Keep And Retrain) works by blanking out the least salient information/pixels in an input image, and the ROAR (Remove
And Retrain) metric uses the contrary strategy and removes the most salient pixels.
Figure 3 shows an example of ROAR and KAR masked image.
A key component to the ROAR/KAR method is that the network needs to be retrained with saliency masking in place.
This is because when we mask out regions in an input image, we unavoidably create artifacts.
By retraining the network on masked images, the network learns to ignore the new artifacts and focus on image information.
We will give a few examples to show why we need both metrics.
If a saliency map is good at deciding which parts of an image are least informative but gets the ranking of the most salient objects wrong,
ROAR scores will suggest the method is very good.
This is because it masks out the most salient locations in one large grouping.
However, ROAR will be unable to diagnose that the saliency map has erroneously ranked the most informative locations until we have removed 50% or more of the salient pixels.
As such, we get no differentiation between the top 1% and the top 10% most salient pixels.
On the other hand, KAR directly measures how well the saliency map has ranked the most informative locations.
By using both metrics, we can quantify the goodness of both the most and least salient locations in a map.
Q UANTITATIVE E XPERIMENTS 3. C OMPARING D IFFERENT E FFICIENT S TATISTICS
We tested our SMOE Scale saliency map method against several other statistical measures using three different datasets that have fairly different tasks and can be effectively trained from scratch.
The sets used are ImageNet (Deng et al., 2009), CSAIL Places (Zhou et al., 2014) and COWC (Mundhenk et al., 2016).
ImageNet as a task focuses on foreground identiﬁcation of objects in standard photographic images.
Places has more emphasis on background objects, so we would expect more spatial distribution of useful information.
COWC, Cars Overhead With Context is an overhead dataset for counting as many as 64 cars per image.
We might expect information to be spatially and discretely localized, but distributed over many locations.
In summary, these three datasets are expected to have fairly different distributions of important information within each image.
This should give us more insight into performance than if we used several task-similar datasets (e.g. Three photographic foreground object sets such as; ImageNet + CUB (birds) (Welinder et al., 2010)
+ CompCars (Yang et al., 2015)).
For compatibility with (Hooker et al., 2018), we used a ResNet-50 network (He et al., 2015).
We also show performance on a per layer basis in order to understand the accuracy at different levels of the network.
For comparison with our SMOE Scale method, we included any statistical measure which had at least a modicum of justiﬁcation and was within the realm of the efﬁciency we were aiming for.
These included parameter and entropy estimations from Normal, Truncated-normal,
Log-normal and Gamma Distribution models.
We also tested Shanon Entropy and Renyi Entropy .
To save compute time, we did a preliminary test on each method and did not continue using it if the results qualitatively appeared very poor and highly unlikely to yield good quantitative results.
Normal entropy was excluded because it is SMOE with the Normal standard deviation.
This left us with nine possible statistical models which we will discuss in further detail.
Saliency maps for each method are computed over each tensor column in the same way as we did with our SMOE Scale metric.
The only difference is with the truncated-normal statistic which computes parameters prior to the ReLU layer.
We should note that (Jeong & Shin, 2019) uses a truncated normal distribution to measure network information for network design.
Recall that we have ﬁve saliency map layers.
They are at the end of each of the ﬁve network spatial scales.
We test each one at a time.
This is done by setting the network with pre-trained weights for the speciﬁc dataset.
Then, all weights in the network which come after the saliency mask to be tested are allowed to ﬁne-tune over 25 epochs.
Otherwise, we used the same methodology as (He et al., 2015) for data augmentation etc.
This is necessary in order to adapt the network to mask related artifacts as speciﬁed in the ROAR/KAR protocol.
At the level where the saliency map is generated, we mask out pixels in the activation tensor by setting them to zero.
For this experiment, we computed the ROAR statistic for the 10% least salient pixels.
For KAR, we computed a map to only let through the top 2.5% most salient pixels.
This creates a more similar magnitude between ROAR and KAR measures.
Layer scores for the top ﬁve methods can be seen in Figure 4.
We combine layer scores two different ways since ROAR and KAR scores are not quite proportional.
These methods both yield very similar results.
The ﬁrst method takes the improvement difference between
[Table]
Trunc Normal Std 1.
Trunc Normal Mean 1.
Normal Mean 1. Log Normal Ent 1. Log Normal Mean 1. tested method’s score and a randomized mask score.
We have ﬁve κ ∈ [0 , 1] KAR scores for a method.
We have ﬁve ρ ∈ [0 , 1] ROAR scores for a method and ﬁve z ∈ [0 , 1] scores from a random mask condition.
This corresponds to each saliency map spatial scale which we tested.
We compute a simple difference score as:
[Equation]
The second method is an information gain score given by:
[Equation]
Table 1 shows the results.
3. C OMPARISON W ITH P OPULAR M ETHODS
We compare our method with three popular saliency map methods using the standard ROAR/KAR methodology.
These are Gradient Heatmaps (Simonyan et al., 2014), Guided Backprop (Springenberg et al., 2015) and Integrated Gradients (Sundararajan et al., 2017).
All methods use
SmoothGrad-Squared (Smilkov et al., 2017) which gives generally the best results.
We should note that without SmoothGrad or another augmentation, all three do not yield very good ROAR/KAR scores.
We compare three different weighting strategies when combining the saliency maps from all ﬁve scales.
In the ﬁrst strategy, we weight all ﬁve maps equal [1,1,1,1,1].
In the second, we use a ruleof-thumb like approach where we weight the ﬁrst layer the least since it should be less accurate.
Then each successive layer is weighted more.
For this we choose the weights to be [1,2,3,4,5].
The third method weights the maps based on the expected accuracy given our results when we computed
Table 1.
These prior weights are [0.18, 0.15, 0.37, 0.4, 0.72].
The reason for showing the rule-ofthumb results is to give an idea of performance given imperfect weights since one may not want to spend time computing optimal prior weights.
To fairly compare the three popular saliency map methods with our own, we adopt a methodology as close as possible to (Hooker et al., 2018).
We train a ResNet-50 from scratch on ImageNet with either ROAR or KAR masking (computed by each of the different saliency mapping approaches in turn) at the start of the network.
Otherwise, our training method is the same as (He et al., 2015).
The comparison results are shown in Figure 5.
We can try and reﬁne these results into fewer scores by subtracting the sum of the ROAR scores from the sum of the KAR scores.
The results can be seen in Table 2.
The KAR score for our method is superior to all three comparison methods.
The ROAR score is better than Guided Backpropagation and Integrated Gradients.
This suggests our method is superior at correctly determining which locations are most salient, but is not as good as Gradient Heatmaps for determining which parts of the image are least informative.
D ISCUSSION 4. M ETHOD E FFICIENCY
The method as proposed is much faster than the three baseline comparison methods.
Given a
ResNet-50 network, we only process ﬁve layers.
The other methods require a special back propagation step over all layers.
We can compute the cost in time by looking at operations that come from three sources. The ﬁrst is the computation of statistics on tensors in ﬁve layers. The second is
[Table] the normalization of each 2D saliency map. Third we account for the cost of combing the saliency maps. Ops for our solution ranges from 1.1 x 10 7 to 3.9 x 10 7 FLOPs (using terminology from (He et al., 2015)) for a ResNet-50.
The network itself has 3.8 x 10 9 FLOPs in total. The range in our count comes from how we measure Log and Error Function operations that are computationally expensive compared to more standard ops and whose implementations vary. We estimate the worst case from available software instantiations. Most of the work comes from the initial computation of statistics over activation tensors.
This ranges from 9.2 x 10 6 to 3.7 x 10 7 FLOPs. In total, this gives us an overhead of 0.3% to 1.0% relative to a ResNet-50 forward pass.
All gradient methods have a nominal overhead of at least 100%. A breakdown of the FLOPs per layer and component can be seen in Table 6 in the appendix . Compared to any method which requires a full backward pass, such as gradient methods, our solution is nominally between 97 x and 344 x faster for non-SmoothGrad techniques, which according to (Hooker et al., 2018) performs poorly on ROAR/KAR scores. We are between 1456 x and 5181 x faster than a 15-iteration SmoothGrad implementation that yields the competitive results in Table 2.
15 iterations as well as other parameters was chosen by (Hooker et al., 2018) who describe this selection in more detail. The memory footprint of our method is minuscule. Computation over tensors can be done inline which leaves the largest storage demand being the retention of 2D saliency maps. This is increased slightly by needing to store one extra 112 x 112 image during bilinear up-sampling.
Peak memory overhead related to data is about 117 kilobytes per 224 x 224 input image.
4. U SAGE WITH A C LASS A CTIVATION M AP
Our method does not have a class activation map (Selvaraju et al., 2017; Chattopadhyay et al., 2018; Omeiza et al., 2019) in the current implementation.
This is because what we have is more akin to Guided Backprop which Grad-CAM etc. combine with their class activation map to improve their pixel level accuracy. The overhead for the class activation map itself is not large since in practice, it involves computing gradients over the last few network layers only. This makes Guided Backprop the most expensive computational part.
By replacing it with our method, accuracy should increase as per Table 2 while dramatically reducing both computational and memory overhead. 4. SMOE S CALE IS T HE M OST R OBUST M EASURE SMOE Scale is the only metric without a failure case among all the statistics we tested. It is the only static that reliably scores in the top half of all the ones we tested.
For Image Net and Places, it is the only one always in the top three. All statistics except for SMOE Scale and Shannon Entropy have at least one layer where they have a difference score at or below zero. This means they are as accurate as a random saliency map for at least one condition. SMOE Scale is the most robust statistic to use in terms of expected accuracy.
The next highest scoring statistics, standard deviation and truncated normal entropy, are no better than a random on layer 1. Figure 6 shows why this may be. It is important to note that layer 1 contains the ﬁnest pixel details and should be expected to be important in rendering visual detail in the ﬁnal combined saliency map.
C ONCLUSION
We have created a method of XAI saliency which is extremely efﬁcent and is quantitatively comparable or better than several popular methods.
It can also be used to create a saliency map with interpretability of individual scale layers.
Future work includes creating a class speciﬁc activation map and expanding it to non-DNN architectures. We are currently testing our class activation map integration Fast-CAM and will introduce it in a future work.
A A PPENDIX A. D ERIVATION OF SMOE S CALE
The maximum likelihood estimator of scale in the Gamma probability distribution is given as:
[Equation]
This requires the additional iterative estimation of the shape parameter k starting with an estimate s :
[Equation]
Then we get to within 1.5% of the correct answer via:
[Equation]
Then we use the Newton-Ralphson update to ﬁnish:
[Equation]
But we can see application of Eqs 12 and 13 is monotonic.
This is also apparent from the example which we can see in Figure 7.
k is SMOE to 1 s , so we rewrite Eq 10 with the reciprocal of k and optionally use the more efﬁcient log 2 as:
[Equation]
This then simpliﬁes to:
[Equation]
We can see the results this gives with different kinds of data in Table
[Table]
[Figure]
ORE E XAMPLES OF KAR S ALIENCY M ASKS
[Figure]
[Figure]
A. C OMPARING D IFFERENT E FFICIENT S TATISTICS IN MORE D ETAIL
This subsection shows the raw scores for each statistic over each dataset.
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
Places
[Table]
[Table] [Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
A. C OMBINED K AR AND ROAR S CORES WITH MORE D ETAIL
This subsection shows the raw scores for each ROAR and KAR mask.
We also added the nonSmoothGrad methods so we can see how much of an improvement it makes [Table] A. O PERATIONS C OMPUTATION
[Table]