## 5 Half Convolutional Autoencoder
### Utilizing HCAE in Recommendation Systems  
In our experiments, the number of filters and the kernel size of the Convolution layer are firstly configured at 4 and 5, respectively. However, we later show that the overall performance of the HCAE is almost not affected by the values of these settings. The pooling size and the stride size are set equal to the number of filters so that the output of the Flatten layer has the same dimension as the HCAE input. Comprehensive experiments show that the dropout rate of 0.2 between the Compression and the Output layer is effective in preventing overfitting. The optimization algorithm used in this work is _Adam_ due to little hyperparameter-tuning requirement, computational efficiency and faster convergence [47]. Activation of the decoder is _Sigmoid_ function which returns the value between 0 and 1 to match the range of the genome scores. To find the optimal activations for the Convolution and Compression layers, a variety of functions, including _Identity_, _ReLU_ and _Sigmoid_, are examined. Baseline model kNN-Content in Section 4.3 is used to assess the quality of the compressed genome scores. In more detail, 1128 genome scores of each movie are fed into the HCAE in order to extract its most fundamental features which are employed to calculate PCCgenome similarity between movies in kNN-Content model using Equation (7) with \(k=10\). Table 3 illustrates the performance of various activations in the case of compressing Tag Genome to \(N=600\) features, where only RMSE are shown for brevity. Experiments with different values of \(N\) provide the same results: a combination of \((Identity,ReLU)\) provides the lowest error rate and is chosen for the Half Convolutional encoder thereafter. To thoroughly evaluate the capability of the HCAE against other AE architectures, both versions of genome tags, 1128 original and 1044 combined ones using NLP [39], are chosen as their inputs. Specifically, a vanilla AE and its two popular variants are implemented as follows:  
* **AE**: a 3-hidden layer AE that uses _ReLU_ activation function at all hidden layers and _Sigmoid_ activation function at the output layer; the number of units at hidden layers #1 and #3 is fixed at 900;
* **DAE**: a 1-hidden layer DAE with _noise_factor_\(=0.1\) that uses _ReLU_ activation function at the hidden layer and _Sigmoid_ activation function at the output layer; \begin{table}
\begin{tabular}{c c c c} \hline \hline \multicolumn{2}{c}{**Activation Function**} & \multirow{2}{*}{**RMSE**} & \multirow{2}{*}{**Time [s]**} \\ \hline
**Convolution Layer** & & & \\ \hline Identity & Identity & 0.7856 & 295 \\
**Identity** & & **ReLU** & **0.7608** & **297** \\ \hline Identity & Sigmoid & 0.7638 & 298 \\ \hline ReLU & Identity & 0.7854 & 296 \\ ReLU & ReLU & 0.7739 & 297 \\ ReLU & Sigmoid & 0.7641 & 300 \\ \hline Sigmoid & Identity & 0.7976 & 298 \\ Sigmoid & ReLU & 0.7932 & 299 \\ Sigmoid & Sigmoid & 0.7678 & 302 \\ \hline \hline \end{tabular}
\end{table} 
Table 3: Performance of kNN-Content model with different activation functions of the Convolution and Compression layers in the HCAE. * **VAE**: a 4-hidden layer VAE is configured as follows: 900-unit hidden layers #1 and #4 use _ReLU_ activation function; Compression layer constructed from _Mean_ layer and _Var_ layer use _Linear_ activation function; _Sigmoid_ activation function is used for output layer. In our experiments, the proposed HCAE and its counterparts are deployed with different sizes of Compression layer to find the optimal configuration for each model. All models are trained until saturation using Adam optimization algorithm and the learning rate of 0.001. Figure 4 shows that although all AE architectures achieve the highest quality with the Compression layer of 600 units, they perform differently for two types of inputs: whilst the classic AE and its two well-known variants do not work well with the original tags, the proposed architecture operates almost equivalently regardless of whether the inputs are preprocessed or not.