bthtsang / DeepClassifierNoveltyDetection

Code accompanying the paper "Deep Neural Network Classifier for Variable Stars with Novelty Detection Capability" (submitted)
MIT License
5 stars 2 forks source link

Neural network classifier and novelty detector for unevenly sampled light curves of variable stars

DOI

This is the official implementation accompanying the paper "Deep Neural Network Classifier for Variable Stars with Novelty Detection Capability" (arXiv: https://arxiv.org/abs/1905.05767). Our motivation was to explore the application of deep neural networks for more than one single task beyond variable classification.

The code for the recurrent neural network-based autoencoder was taken from the official implementation by B. Naul et al (2018) [View Code, Read Paper]. There is no publicly available official implementation of the Deep Autoencoding Gaussian Mixture Model (DAGMM) by B. Zong et al. (2018) [Read Paper]. Our estimation network and Gaussian Mixture Model (GMM) implementation have benefited tremendously from the unofficial implementations by danieltan07, Newcomer520, and in particular tnakae.

Requirements

We have trained the models with the following packages:

Dataset

We have made extensive use of the All-Sky Automated Survey for Supernova (ASAS-SN) Variable Stars Database [Visit database, Read Paper]. An example dataset of ASAS-SN variable star light curves is included under ./data/asassn/sample.pkl.

File descriptions

How to train?

Example slurm scripts to launch the joint and sequential training can be found in train_joint.slurm and train_sequential.slurm. On a local machine, joint training can be launched by:

$ python survey_rnngmm_classifier.py --batch_size 500 --nb_epoch 250 --model_type gru --size 96 --num_layers 2 --embedding 16 --period_fold --drop_frac 0.25 --gmm_on --estnet_size 16 --num_classes 8 --estnet_drop_frac 0.5 --lambda1 0.001 --lr 2.0e-4 --ss_resid 0.7 --class_prob 0.9 --sim_type asassn --survey_files data/asassn/sample.pkl

Descriptions of runtime/training parameters

At first sight the above command may look overwhelming, here's a list explaining what each parameter controls.