# Phonocardiography Signals Compression with Deep Convolutional Autoencoder for Telecare Applications
## 2 Related Work
### Convolutional Neural Networks  
Because audio signals can be stored as one-dimensional (1D) signals, 1D convolutional neural networks (1D CNNs) have been applied to solve many practical problems that traditional signal processing approaches hardly tackle, such as ventricular heartbeats detection [22], speaker recognition [23], speech emotion [24], and environmental sound classification [25]. Other than the audio signals, 1D CNN has been applied to various scenarios, such as human respiration pattern recognition [26], abnormal detection for industrial control systems [27], and contact-less paraparesis detection [28]. In [29], the authors proposed combining the conventional 2D CNN with an autoencoder for the electroencephalogram (EEG) signal compression problems. The autoencoder aims to reconstruct its input based on the neural network in an unsupervised learning manner [30].  
Let \(\mathbf{x}\) be the input to convolution layer of length \(N\) and \(\mathbf{h}\) be the kernel of size \(K\). Let \(\mathbf{y}\) be the output of the non-causal 1D convolution between \(\mathbf{x}\) and \(\mathbf{h}\). We can express the \(n\)-th element of \(\mathbf{y}\) as follows [31]:  
\[y(n)=\sum_{k=0}^{K}x\left(n+k+\left(s-1\right)\right)h(k) \tag{3}\]  
where \(x(n)\) and \(h(n)\) represent the \(n\)-th element of \(\mathbf{x}\) and \(\mathbf{h}\), respectively; \(s\) denotes the stride for shifting the kernel window. Note that the length of output vector \(\mathbf{y}\) is not equal to the length of output vector \(\mathbf{x}\), and this can be avoided by zero-padding operation for the input vector. In each CNN layer, 1D forward propagation can be expressed, as follows:  
\[x_{k}^{\ell}=\sum_{i=1}^{N_{\ell-1}}conv1D\left(w_{ik}^{\ell-1},s_{i}^{\ell-1} \right)+b_{k}^{\ell} \tag{4}\]  
where \(x_{k}^{\ell}\) denotes the input of the \(k\)-th neuron at the \(\ell\)-th layer of the CNN; \(b_{k}^{\ell}\) represents the corresponding bias; \(s_{i}^{\ell-1}\) is the output of the \(i\)-th neuron at the \((\ell-1)\)-th layer; \(w_{ik}^{\ell-1}\) is the kernel from the \(i\)-th neuron at the \((\ell-1)\)-th layer to the \(k\)-th neuron at the \(\ell\)-th layer; \(conv1D\left(\cdot,\cdot\right)\) is used to perform 1D convolution operation, as described in (3). The output of the \(k\)-th neuron at the \(\ell\)-th layer \(y_{k}^{\ell}\) can be expressed, as follows:  
\[y_{k}^{\ell}=f\left(x_{k}^{\ell}\right) \tag{5}\]  
where \(f\left(\cdot\right)\) is the non-linear activation function. Possible activation functions could be sigmoid function, hyperbolic tangent, and rectified linear unit (ReLU). Note that \(y_{k}^{\ell}\) may be further processed by pooling operation to create downsampled or pooled feature maps, a summarized version of the features detected in the input. Two standard functions used in the pooling operation are average pooling and maximum pooling (MaxPool). The average and MaxPool operations calculate the average and maximum values for each patch on the feature map. For example, the MaxPool with a factor of \(P\) can be expressed, as follows:  
\[s_{k}^{\ell}(n)=Max\left\{y_{k}^{\ell}(n),y_{k}^{\ell}(n-1),\ldots,y_{k}^{ \ell}(n-P+1)\right\}. \tag{6}\]