A PyTorch implementation of "Graph Wavelet Neural Network" (ICLR 2019)
We present graph wavelet neural network (GWNN), a novel graph convolutional neural network (CNN), leveraging graph wavelet transform to address the shortcomings of previous spectral graph CNN methods that depend on graph Fourier transform. Different from graph Fourier transform, graph wavelet transform can be obtained via a fast algorithm without requiring matrix eigendecomposition with high computational cost. Moreover, graph wavelets are sparse and localized in vertex domain, offering high efficiency and good interpretability for graph convolution. The proposed GWNN significantly outperforms previous spectral graph CNNs in the task of graph-based semi-supervised classification on three benchmark datasets: Cora, Citeseer and Pubmed.READ FULL TEXT VIEW PDF
One of the key challenges in the area of signal processing on graphs is ...
We propose the Interferometric Graph Transform (IGT), which is a new cla...
Machine learning as a service has been widely deployed to utilize deep n...
We developed a convolution neural network (CNN) on semi-regular triangul...
Graph convolutional networks (GCN) have been recently applied to
For node level graph encoding, a recent important state-of-art method is...
Successful wavelet estimation is an essential step for seismic methods l...
A PyTorch implementation of "Graph Wavelet Neural Network" (ICLR 2019)
A TensorFlow implementation of Graph Wavelet Neural Network
Convolutional neural networks (CNNs) (LeCun et al., 1998)
have been successfully used in many machine learning problems, such as image classification(He et al., 2016) and speech recognition (Hinton et al., 2012), where there is an underlying Euclidean structure. The success of CNNs lies in their ability to leverage the statistical properties of Euclidean data, e.g., translation invariance. However, in many research areas, data are naturally located in a non-Euclidean space, with graph or network being one typical case. The non-Euclidean nature of graph is the main obstacle or challenge when we attempt to generalize CNNs to graph. For example, convolution is not well defined in graph, due to that the size of neighborhood for each node varies dramatically (Bronstein et al., 2017).
Existing methods attempting to generalize CNNs to graph data fall into two categories, spatial methods and spectral methods, according to the way that convolution is defined. Spatial methods define convolution directly on the vertex domain, following the practice of the conventional CNN. For each vertex, convolution is defined as a weighted average function over all vertices located in its neighborhood, with the weighting function characterizing the influence exerting to the target vertex by its neighbors (Monti et al., 2017). The main challenge is to define a convolution operator that can handle neighborhood with different sizes and maintain the weight sharing property of CNN. Although spatial methods gain some initial success and offer us a flexible framework to generalize CNNs to graph, it is still elusive to determine appropriate neighborhood.
Spectral methods define convolution via graph Fourier transform and convolution theorem. Spectral methods leverage graph Fourier transform to convert signals defined in vertex domain into spectral domain, e.g., the space spanned by the eigenvectors of the graph Laplacian matrix, and then filter is defined in spectral domain, maintaining the weight sharing property of CNN. As the pioneering work of spectral methods, spectral CNN(Bruna et al., 2014) exploited graph data with the graph Fourier transform to implement convolution operator using convolution theorem. Some subsequent works make spectral methods spectrum-free (Defferrard et al., 2016; Kipf & Welling, 2017; Khasanova & Frossard, 2017), achieving locality in spatial domain and avoiding high computational cost of the eigendecomposition of Laplacian matrix.
In this paper, we present graph wavelet neural network to implement efficient convolution on graph data. We take graph wavelets instead of the eigenvectors of graph Laplacian as a set of bases, and define the convolution operator via wavelet transform and convolution theorem. Graph wavelet neural network distinguishes itself from spectral CNN by its three desirable properties: (1) Graph wavelets can be obtained via a fast algorithm without requiring the eigendecomposition of Laplacian matrix, and thus is efficient; (2) Graph wavelets are sparse, while eigenvectors of Laplacian matrix are dense. As a result, graph wavelet transform is much more efficient than graph Fourier transform; (3) Graph wavelets are localized in vertex domain, reflecting the information diffusion centered at each node (Tremblay & Borgnat, 2014). This property eases the understanding of graph convolution defined by graph wavelets.
We develop an efficient implementation of the proposed graph wavelet neural network. Convolution in conventional CNN learns an individual convolution kernel for each pair of input feature and output feature, causing a huge number of parameters especially when the number of features is high. We detach the feature transformation from convolution and learn a sole convolution kernel among all features, substantially reducing the number of parameters. Finally, we validate the effectiveness of the proposed graph wavelet neural network by applying it to graph-based semi-supervised classification. Experimental results demonstrate that our method consistently outperforms previous spectral CNNs on three benchmark datasets, i.e., Cora, Citeseer, and Pubmed.
Let be an undirected graph, where is the set of nodes with , is the set of edges, and is adjacency matrix with to define the connection between node and node . The graph Laplacian matrix is defined as where is a diagonal degree matrix with , and the normalized Laplacian matrix is where
is the identity matrix. Sinceis a real symmetric matrix, it has a complete set of orthonormal eigenvectors
, known as Laplacian eigenvectors. These eigenvectors have associated real, non-negative eigenvalues, identified as the frequencies of graph. Eigenvectors associated with smaller eigenvalues carry slow varying signals, indicating that connected nodes share similar values. In contrast, eigenvectors associated with larger eigenvalues carry faster varying signals across connected nodes.
Taking the eigenvectors of normalized Laplacian matrix as a set of bases, graph Fourier transform of a signal on graph is defined as , and the inverse graph Fourier transform is (Shuman et al., 2013). Graph Fourier transform, according to convolution theorem, offers us a way to define the graph convolution operator, denoted as . Denoting with the convolution kernel, is defined as
is the element-wise Hadamard product. Replacing the vectorby a diagonal matrix , then Hadamard product can be written in the form of matrix multiplication. Filtering the signal by the filter , we can write Equation (1) as .
However, there are some limitations when using Fourier transform to implement graph convolution: (1) Eigendecomposition of Laplacian matrix to obtain Fourier basis is of high computational cost with ; (2) Graph Fourier transform is inefficient, since it involves the multiplication between a dense matrix and the signal ; (3) Graph convolution defined through Fourier transform is not localized in vertex domain, i.e., the influence to the signal on one node is not localized in its neighborhood. To address these limitations, ChebyNet (Defferrard et al., 2016) restricts convolution kernel to a polynomial expansion
where is a hyper-parameter to determine the range of node neighborhoods via the shortest path distance, is a vector of polynomial coefficients, and diag. However, such a polynomial approximation limits the flexibility to define appropriate convolution on graph, i.e., with a smaller , it’s hard to approximate the diagonal matrix with free parameters. While with a larger , locality is no longer guaranteed. Different from ChebyNet, we address the aforementioned three limitations through replacing graph Fourier transform with graph wavelet transform.
Similar to graph Fourier transform, graph wavelet transform projects graph signal from vertex domain into spectral domain. Graph wavelet transform employs a set of wavelets as bases, defined as , where each wavelet corresponds to a signal on graph diffused away from node and is a scaling parameter. Mathematically, can be written as
where is Laplacian eigenvectors, =diag is a scaling matrix and .
Using graph wavelets as bases, graph wavelet transform of a signal on graph is defined as and the inverse graph wavelet transform is . Note that can be obtained by simply replacing the in with corresponding to a heat kernel (Donnat et al., 2018). Replacing the graph Fourier transform in Equation (1) with graph wavelet transform, we obtain the graph convolution as
Compared to graph Fourier transform, graph wavelet transform has the following benefits when being used to define graph convolution:
1. High efficiency: graph wavelets can be obtained via a fast algorithm without requiring the eigendecomposition of Laplacian matrix. In Hammond et al. (2011), a method is proposed to use Chebyshev polynomials to efficiently approximate and , with the computational complexity , where is the number of edges and is the order of Chebyshev polynomials.
2. High spareness: the matrix and are both sparse for real world networks, given that these networks are usually sparse. Therefore, graph wavelet transform is much more computationally efficient than graph Fourier transform. For example, in the Cora dataset, more than elements in are zero while only less than elements in are zero (Table 4).
3. Localized convolution: each wavelet corresponds to a signal on graph diffused away from a centered node, highly localized in vertex domain. As a result, the graph convolution defined in Equation (4) is localized in vertex domain. We show the localization property of graph convolution in Appendix A
. It is the localization property that explains why graph wavelet transform outperforms Fourier transform in defining graph convolution and the associated tasks like graph-based semi-supervised learning.
4. Flexible neighborhood: graph wavelets are more flexible to adjust node’s neighborhoods. Different from previous methods which constrain neighborhoods by the discrete shortest path distance, our method leverages a continuous manner, i.e., varying the scaling parameter . A small value of generally corresponds to a smaller neighborhood. Figure 1 shows two wavelet bases at different scale on an example network, depicted using GSP toolbox (Perraudin et al., 2014).
Replacing Fourier transform with wavelet transform, graph wavelet neural network (GWNN) is a multi-layer convolutional neural network. The structure of the -th layer is
where is wavelet bases, is the graph wavelet transform matrix at scale which projects signal in vertex domain into spectral domain, with dimensions is the -th column of , is a diagonal filter matrix learned in spectral domain, andwith dimensions into an output tensor with dimensions .
In this paper, we consider a two-layer GWNN for semi-supervised node classification on graph. The formulation of our model is
where is the number of classes in node classification, of dimensions
is the prediction result. The loss function is the cross-entropy error over all labeled examples:
where is the labeled node set, if the label of node is , and otherwise. The weights are trained using gradient descent.
In Equation (5), the parameter complexity of each layer is , where is the number of nodes, is the number of features of each vertex in current layer, and is the number of features of each vertex in next layer. Conventional CNN methods learn convolution kernel for each pair of input feature and output feature. This results in a huge number of parameters and generally requires huge training data for parameter learning. This is prohibited for graph-based semi-supervised learning. To combat this issue, we detach the feature transformation from graph convolution. Each layer in GWNN is divided into two components: feature transformation and graph convolution. Spectially, we have
where is the parameter matrix for feature transformation, with dimensions is the feature matrix after feature transformation, is the diagonal matrix for graph convolution kernel, and is a non-linear activation function.
After detaching feature transformation from graph convolution, the parameter complexity is reduced from to . The reduction of parameters is particularly valuable fro graph-based semi-supervised learning where labels are quite limited.
Graph convolutional neural networks on graphs.
The success of CNNs when dealing with images, videos, and speeches motivates researchers to design graph convolutional neural network on graphs. The key of generalizing CNNs to graphs is defining convolution operator on graphs. Existing methods are classified into two categories, i.e., spectral methods and spatial methods.
Spectral methods define convolution via convolution theorem. Spectral CNN (Bruna et al., 2014) is the first attempt at implementing CNNs on graphs, leveraging graph Fourier transform and defining convolution kernel in spectral domain. Boscaini et al. (2015) developed a local spectral CNN approach based on the graph Windowed Fourier Transform. Defferrard et al. (2016) introduced a Chebyshev polynomial parametrization for spectral filter, offering us a fast localized spectral filtering method. Kipf & Welling (2017) provided a simplified version of ChebyNet, gaining success in graph-based semi-supervised learning task. Khasanova & Frossard (2017) represented images as signals on graph and learned their transformation invariant representations. They used Chebyshev approximations to implement graph convolution, avoiding matrix eigendecomposition. Levie et al. (2017) used rational functions instead of polynomials and created anisotropic spectral filters on manifolds.
Spatial methods define convolution as a weighted average function over neighborhood of target vertex. GraphSAGE takes one-hop neighbors as neighborhoods and defines the weighting function as various aggregators over neighborhood (Hamilton et al., 2017). Graph attention network (GAT) proposes to learn the weighting function via self-attention mechanism (Velickovic et al., 2017). MoNet offers us a general framework for design spatial methods, taking convolution as the weighted average of multiple weighting functions defined over neighborhood (Monti et al., 2017). Some works devote to making graph convolutional networks more powerful. Monti et al. (2018) alternated convolutions on vertices and edges, generalizing GAT and leading to better performance. GraphsGAN (Ding et al., 2018) generalizes GANs to graph, and generates fake samples in low-density areas between subgraphs to improve the performance on graph-based semi-supervised learning.
Graph wavelets. Sweldens (1998) presented a lifting scheme, a simple construction of wavelets that can be adapted to graphs without learning process. Hammond et al. (2011) proposed a method to construct wavelet transform on graphs. Moreover, they designed an efficient way to bypass the eigendecomposition of the Laplacian and approximated wavelets with Chebyshev polynomials. Tremblay & Borgnat (2014) leveraged graph wavelets for multi-scale community mining by modulating a scaling parameter. Owing to the property of describing information diffusion, Donnat et al. (2018) learned structural node embeddings via wavelets. All these works prove that graph wavelets are not only local and sparse but also valuable for signal processiong on graph.
To evaluate the proposed GWNN, we apply GWNN on semi-supervised node classification, and conduct experiments on three benchmark datasets, namely, Cora, Citeseer and Pubmed (Sen et al., 2008). In the three citation network datasets, nodes represent documents and edges are citation links. Details of these datasets are demonstrated in Table 1. Here, the label rate denotes the proportion of labeled nodes used for training. Following the experimental setup of GCN (Kipf & Welling, 2017), we fetch 20 labeled nodes per class in each dataset to train the model.
We compare with several traditional semi-supervised learning methods, including label propagation (LP) (Zhu et al., 2003), semi-supervised embedding (SemiEmb) (Weston et al., 2012), manifold regularization (ManiReg) (Belkin et al., 2006), graph embeddings (DeepWalk) (Perozzi et al., 2014), iterative classification algorithm (ICA) (Lu & Getoor, 2003) and Planetoid (Yang et al., 2016).
Furthermore, along with the development of deep learning on graph, graph convolutional networks are proved to be effective in semi-supervised learning. Since our method is a spectral method based on convolution theorem, we compare it with the Spectral CNN(Bruna et al., 2014). ChebyNet (Defferrard et al., 2016) and GCN (Kipf & Welling, 2017), two variants of the Spectral CNN, are also included as our baselines. Considering spatial methods, we take MoNet (Monti et al., 2017) as our baseline, which also depends on Laplacian matrix.
We train a two-layer graph wavelet neural network with 16 hidden units, and prediction accuracy is evaluated on a test set of 1000 labeled samples. The partition of datasets is the same as GCN (Kipf & Welling, 2017) with an additional validation set of 500 labeled samples to determine hyper-parameters.
Weights are initialized following Glorot & Bengio (2010). We adopt the Adam optimizer (Kingma & Ba, 2014) for parameter optimization with an initial learning rate . For computational efficiency, we set the elements of and smaller than a threshold to 0. We find the optimal hyper-parameters and through grid search, and the detailed discussion about the two hyper-parameters is introduced in Appendix B. For Cora, and . For Citeseer, and . For Pubmed, and . To avoid overfitting, dropout (Srivastava et al., 2014)
is applied. Meanwhile, we terminate the training if the validation loss does not decrease for 100 consecutive epochs.
Since the number of parameters for the undetached version of GWNN is , we can hardly implement this version in the case of networks with a large number of nodes and a huge number of input features. Here, we validate the effectiveness of detaching feature transformation form convolution on ChebyNet (introduced in Section 2.2), whose parameter complexity is . For ChebyNet of detaching feature transformation from graph convolution, the number of parameters is reduced to . Table 2 shows the performance and the number of parameters on three datasets. Here, the reported performance is the optimal performance varying the order .
|Number of Parameters||ChebyNet||46,080 (K=2)||178,032 (K=3)||24,144 (K=3)|
|Detaching-ChebyNet||23,048 (K=4)||59,348 (K=2)||8,054 (K=3)|
As demonstrated in Table 2, with fewer parameters, we improve the accuracy on Pubmed by a large margin. This is due to that the label rate of Pubmed is only . By detaching feature transformation from convolution, the parameter complexity is significantly reduced, alleviating overfitting in semi-supervised learning and thus remarkably improving prediction accuracy. On Citeseer, there is a little drop on the accuracy. One possible explanation is that reducing the number of parameters may restrict the modeling capacity to some degree.
We now validate the effectiveness of GWNN with detaching technique on node classification. Experimental results are reported in Table 3. GWNN improves the classification accuracy on all the three datasets. In particular, replacing Fourier transform with wavelet transform, the proposed GWNN is comfortably ahead of Spectral CNN, achieving improvement on Cora and Citeseer, and 5% improvement on Pubmed. The large improvement could be explained from two perspectives: (1) Convolution in Spectral CNN is non-local in vertex domain, and thus the range of feature diffusion is not restricted to neighboring nodes; (2) The scaling parameter
of wavelet transform is flexible to adjust the diffusion range to suit different applications and different networks. GWNN consistently outperforms ChebyNet, since it has enough degree of freedom to learn the convolution kernel, while ChebyNet is a kind of approximation with limited degree of freedom. Furthermore, our GWNN also performs better than GCN and MoNet, reflecting that it is promising to design appropriate bases for spectral methods to achieve good performance.
Besides the improvement on prediction accuracy, wavelet transform with localized and sparse transform matrix holds sparsity in both spatial domain and spectral domain. Here, we take Cora as an example to illustrate the sparsity of graph wavelet transform.
The sparsity of transform matrix. There are 2,708 nodes in Cora. Thus, the wavelet transform matrix and the Fourier transform matrix both belong to . The first two rows in Table 4 demonstrate that is much sparser than . Sparse wavelets not only accelerate the computation, but also well capture the neighboring topology centered at each node.
The sparsity of projected signal. As mentioned above, each node in Cora represents a document and has a sparse bag-of-words feature. The input feature is a binary matrix, and when the -th document contains the -th word in the bag of words, it equals 0 otherwise. Here, denotes the -th column of , and each column represents the feature vector of a word. Considering a specific signal , we project the spatial signal into spectral domain, and get its projected vector. Here, denotes the projected vector via wavelet transform, denotes the projected vector via Fourier transform, and . The last row in Table 4 lists the numbers of non-zero elements in and . As shown in Table 4, with wavelet transform, the projected signal is much sparser.
|Statistical Property||wavelet transform||Fourier transform|
|Number of Non-zero Elements||205,774||7,274,383|
|Number of Non-zero Elements||297||2,708|
Compare with graph convolution network using Fourier transform, GWNN provides good interpretability. Here, we show the interpretability with specific examples in Cora.
Each feature, i.e. word in the bag of words, has a projected vector, and each element in this vector is associated with a spectral wavelet basis. Here, each basis is centered at a node, corresponding to a document. The value can be regarded as the relation between the word and the document. Thus, each value in can be interpreted as the relation between and a document. In order to elaborate the interpretability of wavelet transform, we analyze the projected values of different feature as following.
Considering two features and , we select the top-10 active bases, which have the 10 largest projected values of each feature. As illustrated in Figure 2, for clarity, we magnify the local structure of corresponding nodes and marked them with bold rims. The central network in each subgraph denotes the dataset Cora, each node represents a document, and 7 different colors represent 7 classes. These nodes are clustered by OpenOrd (Martin et al., 2011) based on the adjacency matrix.
Figure (a)a shows the top- active bases of . In Cora, this word only appears 8 times, and all the documents containing belong to the class “ Case-Based ”. Consistently, all top- nodes activated by are concentrated and belong to the class “ Case-Based ”. And, the frequencies of appearing in different classes are similar, indicating that is a universal word. In concordance with our expectation, the top- active bases of are discrete and belong to different classes in Figure (b)b.
Owing to the properties of graph wavelets, which describe the neighboring topology centered at each node, the projected values of wavelet transform can be explained as the correlation between features and nodes. These properties provide an interpretable domain transformation and ease the understanding of graph convolution.
Replacing graph Fourier transform with graph wavelet transform, we proposed GWNN. Graph wavelet transform has three desirable properties: (1) Graph wavelets are local and sparse; (2) Graph wavelet transform is computationally efficient; (3) Convolution is localized in vertex domain. These advantages make the whole learning process interpretable and efficient. Moreover, to reduce the number of parameters and the dependence on huge training data, we detached the feature transformation from convolution. This practice makes GWNN applicable to large graphs, with remarkable performance improvement on graph-based semi-supervised learning.
This work is funded by the National Natural Science Foundation of China under grant numbers 61425016, 61433014, and 91746301. Huawei Shen is also funded by K.C. Wong Education Foundation and the Youth Innovation Promotion Association of the Chinese Academy of Sciences.
Proceedings of the thirteenth international conference on artificial intelligence and statistics, pp. 249–256, 2010.
The emerging field of signal processing on graphs: Extending high-dimensional data analysis to networks and other irregular domains.IEEE Signal Processing Magazine, 30(3):83–98, 2013.
We use a diagonal matrix to represent the learned kernel transformed by wavelets , and replace the Hadamard product with matrix muplication. Then Equation (4) is:
We set , , and . Equation (11) becomes :
As proved by Hammond et al. (2011), both and are local in small scale (). Figure 3 shows the locality of and , i.e., the first column in and when . Each column in and describes the neighboring topology of target node, which means that and are local. The locality of and leads to the locality of the resulting matrix of multiplication between the column vector and row vector . For convenience, we set , only when and . In other words, if , vertex and vertex can correlate with each other through vertex .
Since each is local, for any convolution kernel , is local, and it means that convolution is localized in vertex domain. By replacing with an identity matrix in Equation (12), we get . We define , and Figure 4 shows in different scaling, i.e., correlation between the first node and other nodes during convolution. The locality of suggests that graph convolution is localized in vertex domain. Moreover, as the scaling parameter becomes larger, the range of feature diffusion becomes larger.
GWNN leverages graph wavelets to implement graph convolution, where is used to modulate the range of neighborhoods. From Figure 5, as becomes larger starting from 0, the range of neighboring nodes becomes large, resulting the increase of accuracy on Cora. However when becomes too large, some irrelevant nodes are included, leading to decreasing of accuracy. The hyper-parameter only used for computational efficiency, has any slight influence on its performance.
For experiments on specific dataset, and are choosen via grid search using validation. Generally, a appropriate is in the range of , which can not only capture the graph structure but also guarantee the locality of convolution, and is less insensive to dataset.
We show the parameter complexity of node classification in Table 5. The high parameter complexity of Spectral CNN makes it difficult to generalize to real world networks. ChebyNet approximates the convolution kernel via polynomial function of the diagonal matrix of Laplacian eigenvalues, reducing parameter complexity to with being the order of polynomial function. GCN simplifies ChebyNet via setting =1. We detach feature transformation from graph convolution to implement GWNN and Spectral CNN in our experiments, which can reduce parameter to .
|Spectral CNN (detaching)||28,456||65,379||47,482|
|ChebyNet||46,080 (K=2)||178,032 (K=3)||24,144 (K=3)|
In Cora and Citeseer, with smaller parameter complexity, GWNN achieves better performance than ChebyNet, reflecting that it is promising to implement convolution via graph wavelet transform. As Pubmed has a large number of nodes, the parameter complexity of GWNN is larger than ChebyNet. As future work, it is an interesting attempt to select wavelets associated with a subset of nodes, further reducing parameter complexity with potential loss of performance.
Hammond et al. (2011) proposed a method, using Chebyshev polynomials to efficiently approximate and . The computational complexity is , where is the number of edges and is the order of Chebyshev polynomials. We give the details of the approximation proposed in Hammond et al. (2011).
With the stable recurrence relation , we can generate the Chebyshev polynomials . Here and . For sampled between -1 and 1, the trigonometric expression is satisfied. It shows that when . Through the Chebyshev polynomials, an orthogonal basis for the Hilbert space of square integrable functions is formed. For each in this Hilbert space, we have a uniformly convergent Chebyshev series , and the Chebyshev coefficients . A fixed scale is assumed. To approximate for , we can shift the domain through the transformation , where . denotes the shifted Chebyshev polynomials, with . Then we have , and , . we truncate the Chebyshev expansion to terms and achieve Polynomial approximation.
Here we give the example of the and , the graph signal is . Then we can give the fast approximation wavelets by . The efficient computation of determines the utility of this approach, where .
The sparsity of the graph wavelets depends on the sparsity of the Laplacian matrix and the hyper-parameter , We show the sparsity of spectral transform matrix and Laplacian matrix in Table 6.
|Density||Num of Non-zero Elements|
The sparsity of Laplacian matrix is sparser than graph wavelets, and this property limits our method, i.e., the higher time complexity than some methods depending on Laplacian matrix and identity matrix, e.g., GCN. Specifically, both our method and GCN aim to improve Spectral CNN via designing localized graph convolution. GCN, as a simplified version of ChebyNet, leverages Laplacian matrix as weighted matrix and expresses the spectral graph convolution in spatial domain, acting as spatial-like method (Monti et al., 2017). However, our method resorts to using graph wavelets as a new set of bases, directly designing localized spectral graph convolution. GWNN offers a localized graph convolution via replacing graph Fourier transform with graph wavelet transform, finding good spectral basis with localization property and good interpretability. This distinguishes GWNN from ChebyNet and GCN, which express the graph convolution defined via graph Fourier transform in vertex domain.