The objective of the NN is to classify instances (tuples of $50$ real values) as either 'signal' or 'background' (labeled as '0' or '1'). After scaling the tuples to contain values from $0$ to $1$, I build the model as:
model = Sequential([
Dense(units=16, input_shape=(50,), activation='relu'),
Dense(units=32, activation='relu'),
Dense(units=2, activation='softmax')
])
I chose Adam with $0.0001$ learning rate and sparse categorical crossentropy as loss.
Then I fit the model with batch size $100$ and $30$ epochs (training and test set contain $36000$ instances each).
Then, the graphs of accuracy and loss are respectively:
Is my model underfitting and if so, what causes it? Should I use a different optimizer, activation function, loss function or number of epochs? Any suggestions for improving it are welcome.