1
$\begingroup$

I am trying to predict pseudo-random numbers using the past numbers with a multiplayer perceptron. The error while training is very low. However, as soon as I test it with a test set, the model overfits and returns very bad results. The correlation coefficient and error metrics are both not performing well.

What would be some of the ways to solve this issue?

For example, if I train it with 5000 rows of data and test it with 1000, I get:

Correlation coefficient                  0.0742
Mean absolute error                      0.742 
Root mean squared error                  0.9407
Relative absolute error                146.2462 %
Root relative squared error            160.1116 %
Total Number of Instances             1000     

As mentioned, I can train it with as many training samples as I want and still have the model overfits. If anyone is interested, I can provide/generate some data and post it online.

$\endgroup$
  • 1
    $\begingroup$ Did you mention your data is pseudo-random? If that is the case the network must overfits as currently we cannot predict pseudo random numbers using neural network, or this will break all current cryptography in our society $\endgroup$ – Clement Hui Jan 5 at 22:24
  • $\begingroup$ Also what is the output you are going to predict? $\endgroup$ – Clement Hui Jan 5 at 22:26
  • $\begingroup$ @ClementHui excellent point and you guessed the topic in question too, the output is just a single number from -1 to 1. Regardless, I would like to learn if there are any solutions that might even slightly suggest improved results. $\endgroup$ – Damir Olejar Jan 5 at 22:32
  • $\begingroup$ So you are trying to predict pseudo random numbers $\endgroup$ – Clement Hui Jan 5 at 22:34
  • 1
    $\begingroup$ Please refer to this ai.stackexchange.com/q/3850/23713 $\endgroup$ – Clement Hui Jan 5 at 22:37
1
$\begingroup$

Simply said, predicting pseudo random number is just not possible for now. Pseudo random numbers generated now have a high enough "randomness" so that it cannot be predicted. Pseudo random numbers is the basis of modern cryptography which is widely used in the world wide web and more. It may be possible in the future through faster computers and stronger AI, but for now it is not possible. If you train a model to fit on pseudo random numbers, the model will just overfit and thus creating a scenario as shown in the question. The training loss will be very low while test loss will be extremely high. The model will just "remember" the training data instead of generalising to all pseudo random numbers, thus the high test loss.

Also, as a side note, loss is not represented by %, instead it is just a raw numeric value.

See this stack exchange answer for details.

| improve this answer | |
$\endgroup$
  • $\begingroup$ >"Also, as a side note, loss is not represented by %, instead it is just a raw numeric value." Thanks, but that came as a default with the software :-) $\endgroup$ – Damir Olejar Jan 6 at 4:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.