The Use Case: We are given three unique, 'ground truth' binary training patterns (not patterns with 'noise'). A machine is to be trained with these three vectors. The requirement is that once trained, the machine be used in a game, such that: players in advance don't know exactly what each of the 'true patterns' are, but will try to independently 'derive' at least one of them, and then give their attempt to the machine to judge. When the model receives the player's attempt, it will return to the player the closest matching 'true' pattern to what the player has input. The player may have input a partial section of a 'true' pattern, or a section with some additional bits (ie 'noise'), but either way the model will effectively say 'Ah, I see what you've done there, here is what your pattern should be'.
The Question: I have created a Restricted Boltzmann Machine with 9 binary inputs and 3 hidden units that achieves the objective of the use case. The machine converged to 0 error on the training vectors, and accurately provides the 'nearest match' to the player's inputs, which the machine has not seen before. So which of these statements is correct:
a) The machine IS overfitting, but nevertheless is providing a useful predictive/classification capability in the context of the use case
b) The machine is NOT overfitting, because if it was, it would not be accurately returning the nearest trained 'truth' matches to partial/incomplete/noisy input patterns it has not previously seen