A sequence modelling approach to event classification in particle physics, which naturally supports events with variable numbers of particles in the decay chain. This is designed to be used in conjunction with traditional approaches to background suppression based on high-level engineered features. workshop.pdf
can be consulted for further details.
The code depends on Tensorflow 1.8
# Check command line arguments
$ python3 train.py -h
# Run
$ python3 train.py -opt momentum --name my_network
To enable adversarial training mode based on a variant of the method proposed in Louppe et. al., use adv_train.py
in place of train.py
and enable use_adverary = True
in the config
file.
The network architecture is kept modular from the remainder of the computational graph. For ease of experimentation, the codebase will support any arbitrary architecture that yields logits in the context of binary classification. In addition, the adversarial training procedure can interface with any arbitrary network architecture. To swap out the network for your custom one, create a @staticmethod
under the Network
class in network.py
:
@staticmethod
def my_network(x, config, **kwargs):
"""
Inputs:
x: example data
config: class defining hyperparameter values
Returns:
network logits
"""
# To prevent overfitting, we don't even look at the inputs!
return tf.random_normal([x.shape[0], config.n_classes], seed=42)
Now open model.py and edit the first line under the Model init:
class Model():
def __init__(self, **kwargs):
arch = Network.my_network
# Define the computational graph
Tensorboard summaries are written periodically to tensorboard/
and checkpoints are saved every 10 epochs.
Experiments run over 1 ab-1 of simulated Belle II data with signal events defined as rare electroweak penguin decays and obscured by standard background processes.
graph showing convergence on high-multiplicity decay chain vs. standard dense nets
- Python 3.6
- Pandas
- TensorFlow 1.8
- Convolutional/recurrent networks for sequence modelling
- Convolutional seq2seq learning
- Learning to pivot with adversarial networks
- Add embedding layer
- Experiment with 1D convolutions / TCNs
- Port to Pytorch
Feel free to open an issue or contact me at justin.tan@coepp.org.au for access to the dataset or questions about the model.