Interpreting MLP output
This looks like a case of the model outputting the probability of being in category 1. It then is up to you to decide on the cutoff. 

You give an example of an output of $(0.43, 0.56, 0.1, 0.8)$. If your cutoff is $0.5$, you’d get classifications of $(0, 1, 0, 1)$. If you set your cutoff at $0.2$, which you’re allowed to do, you get classifications of $(1,1,1,0)$. There should be a way to do this in whatever software you’re using. If all else fails, you can loop through your vector of probability values and produce a new vector with some conditional statements about if the value exceeds the threshold and if the value does not. I’ll give some pseudo-code.

for value...
  if value&gt;threshold
    new value =1
  else
    new value =0


This leads to ROC curves and area under the curve, where the model has its accuracy assessed at all cutoffs. Perhaps even better is to use a strictly proper scoring rule. You can read more about this on the Cross Validated Stack, stats.stackexchange.com. Look out for posts on this topic by Frank Harrell. Shamelessly, I will mention a post of mine where I somewhat challenge this idea: https://stats.stackexchange.com/questions/464636/proper-scoring-rule-when-there-is-a-decision-to-make-e-g-spam-vs-ham-email.

Loosely speaking, a strictly proper scoring rule penalizes a model for lacking confidence in its prediction. Outputting a probability of being in class 1 of $0.56$ is not as good of a prediction as $0.99$. Think of the first as, “Sure, I guess it’s category 1,” while the second is, “Oh heck yes it’s category 1!”