Compositional perturbation autoencoder for single-cell response modeling