Instance-wise Linearization of Neural Network for Model Interpretation
Neural network have achieved remarkable successes in many scientific fields.
However, the interpretability of the neural network model is still a major
bottlenecks to deploy such technique into our daily life. The challenge can
dive into the non-linear behavior of the neural network, which rises a critical
question that how a model use input feature to make a decision. The classical
approach to address this challenge is feature attribution, which assigns an
important score to each input feature and reveal its importance of current
prediction. However, current feature attribution approaches often indicate the
importance of each input feature without detail of how they are actually
processed by a model internally. These attribution approaches often raise a
concern that whether they highlight correct features for a model prediction.
  For a neural network model, the non-linear behavior is often caused by
non-linear activation units of a model. However, the computation behavior of a
prediction from a neural network model is locally linear, because one
prediction has only one activation pattern. Base on the observation, we propose
an instance-wise linearization approach to reformulates the forward computation
process of a neural network prediction. This approach reformulates different
layers of convolution neural networks into linear matrix multiplication.
Aggregating all layers' computation, a prediction complex convolution neural
network operations can be described as a linear matrix multiplication $F(x) = W
\cdot x + b$. This equation can not only provides a feature attribution map
that highlights the important of the input features but also tells how each
input feature contributes to a prediction exactly. Furthermore, we discuss the
application of this technique in both supervise classification and unsupervised
neural network learning parametric t-SNE dimension reduction.
Zhimin Li, Shusen Liu, Kailkhura Bhavya, Timo Bremer, Valerio Pascucci
# Instance-wise Linearization of Neural Network for Model Interpretation

###### Abstract

Neural network have achieved remarkable successes in many scientific fields. However, the interpretability of the neural network model is still a major bottlenecks to deploy such technique into our daily life. The challenge can dive into the non-linear behavior of the neural network, which rises a critical question that how a model use input feature to make a decision. The classical approach to address this challenge is feature attribution, which assigns an important score to each input feature and reveal its importance of current prediction. However, current feature attribution approaches often indicate the importance of each input feature without detail of how they are actually processed by a model internally. These attribution approaches often raise a concern that whether they highlight correct features for a model prediction.

For a neural network model, the non-linear behavior is often caused by non-linear activation units of a model. However, the computation behavior of a prediction from a neural network model is locally linear, because one prediction has only one activation pattern. Base on the observation, we propose an instance-wise linearization approach to reformulates the forward computation process of a neural network prediction. This approach reformulates different layers of convolution neural networks into linear matrix multiplication. Aggregating all layers' computation, a prediction complex convolution neural network operations can be described as a linear matrix multiplication \(F(x)=W\cdot x+b\). This equation can not only provides a feature attribution map that highlights the important of the input features but also tells how each input feature contributes to a prediction exactly. Furthermore, we discuss the application of this technique in both supervise classification and unsupervised neural network learning parametric t-SNE dimension reduction.

## 1 Introduction

Neural network techniques have achieved remarkable success across many scientific fields [13, 26, 30, 6]. Furthermore, many applications (e.g., autopilot, debt loan, cancer detection, criminal justice,...) which utilize this technology, starts to involve into our daily life and even more in the expected future. However, the uninterpretable behavior of the neural network prediction causes many concerns. For example, recently, a few countries' governments have published AI act [1, 38] to regulate AI systems and require automate systems must provide an explanation for why it makes such a decision. Meanwhile, improving the interpretability of the neural network can also benefit scientific fields for knowledge discover, such as drug discover [36, 2]

A key challenge of the neural network interpretability is the non-linear behavior of the neural network model. These non-linear behaviors are caused by different activation patterns which are triggered by different inputs, and these diverse activation patterns lead to an uninterpretable behavior. A classical approach to explain neural network prediction is the feature attribution method [16, 22], which assigns an important score to each input feature and highlight the most important features. However, different feature attribution approaches may end up with different feature maps, and how input features are processed by the neural network model internally is mysterious [41].

For a single neural network prediction, the neural network model has only single activation pattern. The input
features which are processed by the neural network layer by layer during the prediction is linear. It raises a question that whether the computation process of a neural network can generate an answer of how each input feature contributes to the prediction. In this study, we propose an approach to reformulate the decision process of a neural network prediction and reformulate the forward computation process of a neural network prediction. Our approach is based on an observation that a neural network prediction has only one activation pattern. As the Figure 1 shows, the non-linear ReLU activation components of a neural network prediction can be consider as linear components. Therefore, the non-linear matrix multiplication of a neural network performs on a single prediction is linear process. The whole computation process can be reformulated and aggregated into a linear equation \(F(x)=W\cdot x+b\).

We find that this linear equation can be used to explain how the input feature is used by the neural network model to make prediction. In this paper, we discuss how to reformulate the forward propagation of a neural network layer by layer and discuss the potential challenge of this computation. We propose an efficient approach to calculate \(W^{*}\), \(b^{*}\), and discuss the role of \(W^{*}\) and \(b^{*}\) during model prediction. Our approach is much more flexible and can be applied to supervise learning task or unsupervised learning task.

At the end, we demonstrate a use case of how neural network models capture input feature in different layer of network models and how researchers can use our technique to understand the behavior of neural network models.

## 2 Relative Work

Because of the black-box nature of the neural network model, understanding how it makes prediction is an important but challenge topic. In this section, we discuss previous techniques that have been proposed in the literature to address this challenge.

### Feature Attribution

Feature attribution is a classical approach, which generates a heat map to highlight the importance of input feature for a model prediction. Different methodology has been designed to calculate the heat map. Gradient base approaches [31, 34, 25, 33] calculate the model gradient of an input with respect to the target label and use or accumulate the gradient values to highlight the importance of each input feature. Perturbation base approaches [20, 7, 8, 39, 22] ablate or modify a part of the input and observe the output variation to understand the contribution of each input feature to the prediction. Other approach like SHAP [16], Deep-Lift [29], and LRP [3] provide a feature attribution map from different angle. However, because of the lacking of ground truth, whether a feature attribution approach highlights the real important regions of an input is still under exploration.

Understanding features that captured by a neuron of neural network can also improve the interpretability of neural network. Feature visualization [19] optimizes an input image by maximizing a neuron's activation value. The output of the optimization provides information about what features are captured by the neuron. Previous researchers [4, 40] have also measured the alignment between individual neuron unit and semantic concepts. Fong et al. [7] applies input perturbation to measure the reaction of a neuron to these perturbation and capture the input regions that contribute most to these activation.

### Local Linearity of Neural Network

Researchers have investigated the local linearity of ReLU network, which mainly focus on the complexity of the model such as approximating the number of linear regions [23, 28, 9, 17, 21, 27]. Previous researches have also aligned local linearity with input perturbation to understand a model's prediction robustness and generalization. Novak, et al [18] performs a large scale experiments on different neural network models to show that input-output Jacobian norm of samples is correlated with model generalization. Lee, et al. [15] design algorithm to expand the local linear region of neural network model.

## 3 Instance-wise Linearization

In this section, we discuss how to transform different layers of neural network into linear operation under this condition. After transforming all layers, we demonstrate how to aggregate all linear operations into a linear matrix multiplication (1). In this study, we mainly focus our discussion on convolution neural network, which is the de-faco setting for many computer vision tasks.

\[F(x)=W\cdot x+b \tag{1}\]

A series operations of a neural network can be represented as a nest function \(F(x)=f_{n}\cdot f_{n-1}....f_{2}\cdot f_{1}\) and n is the number of layers in neural network. The detail operation of each layer can be generalized as \(f_{i}=\sigma(W_{i}\cdot x_{i}+b_{i})\)

Figure 1: A prediction of neural network model has only one activation pattern and the complex prediction operation can be simplified as a linear matrix multiplication.
\(W_{i}\), \(x_{i}\) and \(b_{i}\) are the weight, feature representation and bias of i-th layer. \(\sigma\) is the activation function of neural network model.

### Fully Connected Layer

To explain above statement, we use a fully connected layer as an example. Our discussion mainly focus on the activation functions such as ReLU, GELU, SELU and ELU.

\[y=\sigma(W_{i}\cdot x_{i}+b_{i}) \tag{2}\]

\(W_{i}\cdot x_{i}\) is the dot product operation. \(x_{i}\) is the feature vector, and \(\sigma\) is the activation function that changes the computation output. For each activation function, the computation can be transformed to linear matrix multiplication case by case, and the equation (2) is rephrased as \(y=\lambda(W_{i}\cdot x_{i}+b_{i})\). Here, the variable \(\lambda\) is a re-scale factor which represents the impact of activation function on the computation result.

### Convolution Layer

The convolution layer can be considered as a sparse fully connected layer and transformed into the linear matrix multiplication. Assume the kernel size is (c, k, k), the stride size is s, and the input tensor with a size \(channel\times width\times height\) can be flatten as a channel * width * height dimension vector \(x\). Each output element of a convolution operation can be considered as a dot product of vector multiplication \(w_{i}\cdot x+b_{i}\). Here, \(w_{i}\) is the same size as the vector \(X\) and most of elements are zero except elements which are operated by the kernel operation. The overall convolution operation can be converted into \(W\cdot x+b\). In the equation, \(W\) is the toeplitz matrix which is consisted of \(w_{i}\), and \(b\) is consisted of \(b_{i}\). The convolution operation also comes with the activation function, so overall equation is \(ReLU(W\cdot x+b)\). Similar to equation (1) and (2), can be rephrase above equation as \(W^{{}^{\prime}}\cdot x+b^{{}^{\prime}}\).

In Figure 2, we demonstrate how to transform a 2x2 convolution kernel with stride 2 on a 4x4 matrix input into a dot product between a matrix and a vector. The bias term is set to zero. The original 4x4 matrix can be flatten into a 16 dimension vector \(a\). The first convolution kernel operation on the matrix x can be converted into a vector \(w_{1}\) and the overall convolution operation is converted into a matrix \(W\).

### Pooling Layer

The pooling operation in the neural network can be describe as matrix multiplication \(W\cdot x\). Assume the pooling kernel size is (c, k, k), the stride size is s, and the input tensor with a size \(channel\times height\times width\) can be flatten as a channel*height*width dimension vector \(x\). We use the maximum pooling as an example to discuss transformation process and the other pooling (e.g., average pooling) operations should be similar. An element of output tensor is a dot product of indicator vector \(W_{(i,j,k)}\) (i,j,k is the index of the output tensor) indicates the elements of input \(x\) that are selected by the maximum pool operation. Therefore, the pooling operation can be rephrased as \(W\cdot x\).

In Figure 3 demonstrate a case which transforms a 2x2 maximum pooling operation with stride 2 on a 4x4 matrix into a dot product between a matrix and a vector. The original 4x4 matrix can be flatten into a 16 dimension vector **x**. The first maximum pooling operation on the matrix X can be convert into a vector \(w_{1}\) and the overall maximum pooling operation is converted into a matrix \(W\),

Figure 3: A maximum pooling operation can be rephrased as a matrix vector multiplication. Performing a 2x2 maximum pooling operation with stride size 2 on a 4x4 input matrix can be rephrased as \(W\cdot a\)

Figure 2: A convolution operation can be rephrased as a matrix vector multiplication. Performing a 2x2 convolution operation with stride size 2 on a 4x4 input matrix can be rephrased as a dot product between matrix and input vector \(W\cdot x+b\).
### Skip Connection

Skip connection is a critical component in the ResNet [10] architecture. In Fig. 4 is an example of the skip connection and the equation can be representation as \(F(x)+x\). In the equation, \(F(x)\) is often consisted of convolution layer, batch normalization, ReLU activation and Full connected layers. As we discuss in previous section, these layers can be simplified as a linear matrix multiplication \(F(x)=W_{skip}\cdot x+b_{skip}\). The overall equation can be rephrase as

\[(W_{skip}+I)\cdot x+b_{skip}\]

Merging the identify matrix \(I\) into \(W_{skip}\) and the equation can be simplified into \(W^{{}^{\prime}}_{skip}\cdot x+b_{skip}\).

### Batch Normalization Layer

Batch normalization [12] is a critical component in neural network model which makes the training easy and efficient. The inference process of the batch normalization layer is an element-wise linear transformation in equation 3. The equation that used to perform batch normalization on a single value is described as following:

\[y=\frac{x_{i}-\mu}{\sqrt{\sigma^{2}+\epsilon}}*\gamma+\beta=\frac{\gamma}{ \sqrt{\sigma^{2}+\epsilon}}*x_{i}+\frac{-\mu\gamma}{\sqrt{\sigma^{2}+\epsilon }}+\beta \tag{3}\]

In the equation, \(\mu\), \(\sigma^{2}\), \(\gamma\), and \(\beta\) are calculated during the training process. These variables are available during the network inference. This equation can be rephrased as \(y=w_{i}^{norm}*x_{i}+b_{i}^{norm}\) and \(w_{i}^{norm}=\frac{\gamma}{\sqrt{\sigma^{2}+\epsilon}}\), \(b_{i}^{norm}=\frac{-\mu\gamma}{\sqrt{\sigma^{2}+\epsilon}}+\beta\). The batch layer operation can be represented as:

\[W^{norm}\odot x+b\]

### Layer Aggregation

We have mentioned that a neural network can be defined as a nest function \(F(x)=f_{n}\cdot f_{n-1}....f_{2}\cdot f_{1}\) and each layer's function can be generalized as following:

\[f_{i}=\sigma(W_{i}\cdot x_{i}+b_{i})\]

With our previous description, for a single prediction, each layer can be replaced as a linear matrix multiplication

\[f_{i}=W^{{}^{\prime}}_{i}\cdot x_{i}+b^{{}^{\prime}}_{i}\]

and the overall equation can be rephrased as

\[F(x)=W^{{}^{\prime}}_{n}\cdot W^{{}^{\prime}}_{n-1}...W^{{}^{\prime}}_{2}\cdot W ^{{}^{\prime}}_{1}\cdot x+\sum_{i=1}^{n-1}(W^{{}^{\prime}}_{n}...W^{{}^{\prime }}_{i+1}\cdot b_{i})+b_{n}\]

After linearization of a neural network prediction, the prediction is represented as \(F(x)=W\cdot x+b\). In the equation, \(W=W^{{}^{\prime}}_{n}\cdot W^{{}^{\prime}}_{n-1}\cdot...W^{{}^{\prime}}_{2} \cdot W^{{}^{\prime}}_{1}\) and \(b=\sum_{i=1}^{n-1}(W^{{}^{\prime}}_{n}...W^{{}^{\prime}}_{i+1}\cdot b_{i})+b_ {n}\). For piece-wise linear activation function, the inference behavior of neural network model is locally linear. In a local region, the behavior of neural network on input x is equal to \(F(x)=W\cdot x+b\).

**Lemma 1**: _For a network with piece-wise linear activation function, for \(x\in R^{m}\), there is a maximum \(|\delta|\in R^{m}\) such that \(\forall\theta,|\theta|<|\delta|\) and \(x+\theta\) has the same activation pattern as \(x\). The matrix \(W\) can be used to explain the prediction of \(x+\theta\) and \(x\)._

Under this condition, the feature attribution \(W\) is equal to input-output Jacobian matrix \(J_{F}(x)\), and \(W\) not only tells the sensitivity of input with respect to the model prediction but also represents how neural network use input to make prediction exactly. ReLU networks split the input space into linear regions [17]. In each linear region, these samples share the same explainable matrix \(W\).

\[J_{F}(x)=[\frac{\partial F(x)_{1}}{\partial x},\frac{\partial F(x)_{2}}{ \partial x},...,\frac{\partial F(x)_{n}}{\partial x}]^{T}=W\]

For piece-wise linear activation function, a prediction of neural network has an equivalent input and output linear mapping \(y=W\cdot x+b\). However, activation function such as GELU, SELU and ELU can not use Jacobian matrix to calculate \(W\). Therefore, the equation for \(y=W\cdot x+b\) need to be calculated layer by layer.

### Ensemble Model

A prediction of ensemble neural network model can be represented as

\[F(x)=\sum_{i=1}^{n}a_{i}F_{1}(X)\]

. \(F_{i}\) is the individual neural network and the \(a_{i}\) is the share assigned to the prediction of the \(i_{th}\) neural network. As we discuss in section 3.8, the equation can be rephrased as

\[F(x)=\sum_{i=1}^{n}a_{i}(W^{*}_{i}\cdot x+b^{*}_{i})=(\sum_{i=1}^{n}a_{i}W^{*}_ {i})\cdot x+\sum_{i=1}^{n}a_{i}b^{*}_{i}\]

Figure 4: A skip connection component in ResNet architecture.
## 4 Experiment

The neural network prediction can be represented as a linear matrix multiplication \(F(x)=W\cdot x+b\). How do \(W\cdot x\) and \(b\) impact the decision of the neural network prediction is important to interpreted the decision of the network model. To evaluate the impact of these two terms in a network prediction, we perform experiments on multiple neural network architectures that trained with MNIST, cifar10, cifar100, and Imagenet datasets.

### Decompose the Model Prediction

Previous section has mentioned that a prediction is described as \(F(X)=W\cdot x+b\). To evaluate the impact of these two terms, we compare the original prediction accuracy of neural network \(F(x)\) with the prediction of \(W\cdot x\) and \(b\). During the experiment, we use label flip rate (LFR) to track the prediction difference between the select term and the original prediction. The label flip rate is defined as the number of prediction change during the decision process. A smaller LFR value indicates a similar prediction result with the original model. In the experiment, we use stochastic gradient decent(SGD) to train the neural network model. For the MNIST dataset, each model is trained with 50 epochs. The neural network models used for cifar10 and cifar100 are trained with 200 epochs. We use the pre-train models from Pytorch to evaluate the ImageNet dataset.

LeNet300 and LeNet5 are the classical models that used to train MNIST dataset. Both models are trained without batch normalization layer. In Table 1, we compare two models' prediction results with \(b\) and \(W\cdot x\). The \(W\cdot x\) is model accuracy without bias term and \(W\cdot x_{LFR}\) is the label flip rate compared with _accuracy_ which is the original accuracy of the model. From the evaluation result, we can tell that after removing the bias term, the label flip rates \(W\cdot x_{LFR}\) are 0.0082 and 0.0012. The \(W\cdot x\) accuracy and original accuracy is similar. In the other hand, the impact of \(b\) is an insignificant part of the prediction and the \(b_{LFR}\) is large.

However, the observation from MNIST dataset does not generalize to large models and complex datasets. In cifar10, and cifar100 dataset, we use popular convolution architectures (VGG [32], ResNet [10], and DeseNet [11]) to compare the performance of \(W\cdot x\) and \(b\). From the results of Table 2 and Table 4, we can tell that bias term \(b\) dominates the prediction behavior of a neural network model. Except the network such as LeNet5 and AlexNet, which have relative large impact in both \(b\) and \(W\cdot x\), the rest of model shows that \(b\) has the dominant impact during the model prediction. Using the information from \(b\) can determine the majority prediction of the model. In the other hand, the impact of \(W\cdot x\) along is not enough to determine the model prediction.
comes from the batch normalization layers. For each value of \(b_{i}\), its value is constant and determined once the model is trained. In the equation, the variance that updated is \(W^{\prime}_{i}\) which is triggered by the activation of the different input. \(W=W^{{}^{\prime}}_{n}\cdot W^{{}^{\prime}}_{n-1}...W^{{}^{\prime}}_{2}\cdot W^{{}^ {\prime}}_{1}\) contains the unique footprint of a model's reaction to a prediction.

An alternative approach to improve the sufficient of \(W\) is to train a neural network without batch normalization layer. Since the prediction of these networks can be represented as \(F(x)=W\cdot x+b_{n}\) and \(b_{n}\) is the bias term in the last layer of neural network. We can use the \(W\) to explain the network behavior directly. A potential approach to improve the performance of such models include techniques such as weight normalization [24], initialization and other batch normalization free techniques. Previous researches have demonstrate that network training without batch normalization can still achieve state-of-art performance [5]

## 5 Applications

In this section, we discuss the application of our proposed approach in supervise task, unsupervised task, and ensemble neural network model prediction.

### Supervised Learning - Image Prediction

For MNIST dataset, we use our method to understand the decision of LeNet5, which the encoder layer does not include bias term. The accuracy of the model is 0.9904. For MNIST dataset, \(W\) for the final prediction is a \((10,784)\) matrix and for each digit outcome, \(W\) will give an explanation. Each row of \(W\) tells how a neural network use input feature to tell the prediction score for that digit. Our feature attribution has natural semantic meaning. The value, which assigned to the input pixel, multiplied with input pixel value is the value of current pixel contribute to the prediction. A positive value has a positive contribution to the prediction and a negative value has a negative contribution.

Figure 6 demonstrates how LeNet5 processes input digits image 1 and 7 for different label decision. In the heat map visualization, the red color indicates the positive contribution and the blue color tells the negative contribution. From the result, we can tell that both digits are recognized by the neural network model in the right shape. It property of our approach is that compute the our feature attribution, it needs to compute the contribution of input to each neuron in the neural network first. The final feature attribution is a summary of all previous' neuron's contribution. This property brings the convenient to not only understand how neural network use input feature for decision but also provides how each network neuron use input feature to produce activation output. In Figure 7, we display our feature attribution of digits 7 and how top 5 most activate neurons in different layers of LeNet5 use input features.

### Unsupervised Learning - Parametric Dimension Reduction

Dimension reduction such as t-SNE is a popular approach to understand the structure of neural network model. However, the classical t-SNE algorithm is non-parametric. Therefore, how the input is mapped into two dimensional space is unknown. The uninterpretable process of t-SNE dimension reduction cause confusion and misleading during the analysis. Comparing with t-SNE algorithm, parametric t-SNE perform similar operations by training a neural network model to perform the dimension reduction. In this work, we mainly discuss the neural network architecture in Figure 5 to perform the dimension reduction. Many works [37, 35, 14] have developed to implement parametric t-SNE.

The loss function (equation (1)) that used to train parametric t-SNE try to minimize the probability distribution difference between the original high dimension data and the projected low dimension data.

\[L(\theta)=\sum_{i\neq j}p_{ij}log\frac{p_{ij}}{q_{ij}} \tag{4}\]

\[p_{j|i}=\frac{exp(-||x_{i}-x_{j}||^{2}/2\sigma_{i}^{2})}{\sum_{k\neq i}exp(-||x _{i}-x_{k}||^{2}/2\sigma_{i}^{2})} \tag{5}\]

\[p_{ij}=\frac{p_{j|i}+p_{i|j}}{2N} \tag{6}\]

\[q_{ij}=\frac{exp(-||f_{\theta}(x_{i})-f_{\theta}(x_{j})||^{2}/2\sigma_{i}^{2}) }{\sum_{k\neq i}exp(-||f_{\theta}(x_{i})-f_{\theta}(x_{k})||^{2}/2\sigma_{i}^{ 2})} \tag{7}\]

Because of the non-linear properties of the neural network model. Understanding the relationship between input and output of these networks trained with different loss function is difficult. In the literature, limited work focus on understanding how input contribute to the final two dimension output. Gradient is the common approach to perform feature attribution of the neural network model. However, it is difficult to generate gradient for a single sample with

Figure 5: The neural network architecture that used to perform auto encoder training and parametric t-sne dimension reduction.
the loss function that used to train neural network for parametric t-SNE. Furthermore, parametric t-SNE [37] may use neural network with an encoder with unsupervised approach to pretrain a network model, then use the neural network to perform the dimension reduction. The overall process involve two neural network model which make the interpretability of the parametric t-SNE difficult. Our approach is flexible enough to fill this gap by concatenate two network's matrix multiplication to understand the process of the parametric dimension reduction and the final projection can still be phased as \(y=Wx+b\) for each sample's behavior.

What features are used during dimension reduction process is important to interpret the dimension reduction result. In Fig. 8, we apply parametric t-SNE dimension reduction approach on iris dataset and use our proposed method to generate the feature attribution for dimension reduction result. t-SNE dimension reduction often projects samples that are similar to each other to the nearby location. From visualization, samples include (d), (e), (f) are nearby and the feature attribution result over these samples are similar. However, samples (a), (b), (c) are nearby with very different feature attribution result.

## 6 Conclusion

In this work, we propose an approach to reformulating the forward propagation computation to understand a neural network prediction. Our study find that a prediction of neural network can be rephrased as a series of matrix multiplication. For each input instance, its output have a straight forward mapping which can be phrased as \(y=W\cdot x+b\). At the end, we demonstrate the flexibility of our approach on

Figure 8: iris flower dataset is projected into two dimensional space with parametric t-SNE. With our feature attribution, it highlights the critical features that are used for dimension reduction.

Figure 6: How neural network use input features to make a prediction in MNIST dataset with LeNet5.

Figure 7: Displaying the features that captured by top 5 positive neurons and 5 negative neurons with their contribution to a model’s final prediction in different layers of the LeNet5 model.
how this approach can help use to understand the supervise classification task, and unsupervised dimension reduction task.

## Acknowledgement

Utah funding support, This work was performed under the auspices of the U.S. Department of Energy by Lawrence Livermore National Laboratory under Contract DE-AC52-07NA27344. The work is partially supported by Laboratory Directed Research and Development Program under tracking code 23-ERD-029.
