Search code examples
neural-networkartificial-intelligenceoeis

can a neural network be trained to recognize abstract pattern forms?


i'm curious as to the kind of limitations even an expertly designed network might have. this one in particular is what i could use some insight on:

given:

a set of random integers of non-trivial size (say at least 500)

an expertly created/trained neural network.

task:

number anagram: create the largest representation of an infinite sequence of integers possible in a given time frame where the sequence either can be represented in closed form (ie - n^2, 2x+5, etc) or is registered in OEIS (http://oeis.org/). the numbers used to create the sequence can be taken from the input set in any order. so if the network is fed (3, 5, 1, 7...), returning (1, 3, 5, 7 ...) would be an acceptable result.

it's my understanding that an ANN can be trained to look for a particular sequence pattern (again - n^2, 2x+5, etc). what I'm wondering is if it can be made to recognize a more general pattern like n^y or xy+z. my thinking is that it won't be able to, because n^y can produce sequences that look different enough from one another that a stable 'base pattern' can't be established. that is - intrinsic to the way ANNs work (taking sets of input and doing fuzzy-matching against a static pattern it's been trained to look for) is that they are limited in terms of scope of what it is they can be trained to look for.

have i got this right?


Solution

  • Continuing from the conversation I had with you in the comments:

    Neural networks still might be useful. Instead of training a neural net to search for a single pattern, the neural net can be trained to predict the data. If the data contains a predictable pattern, the NN can learn it, and the weights of the NN will represent the pattern it has learned. I think that may be what you were intending to do.

    Some things that might be helpful for you if you do this:

    Autoencoders do unsupervised learning and can learn the structure of individual datapoints.

    Recurrent Neural Networks can model sequences of data rather than just individual datapoints. This sounds more like what you are looking for.

    A Compositional Pattern-Producing Network (CPPNs) is a really fancy word for a neural network with mathematical functions as activation functions. This would allow you to model functions that aren't easily approximated by NNs with simple activation functions like sigmoids or ReLU. But usually this isn't necessary, so don't worry to much about it until after you have a simple NN working.

    Dropout is a simple technique where you remove half of the hidden units every iteration. This seems to seriously reduce overfitting. It prevents complicated relationships between neurons from forming, which should make the models more interpretable, which seems like your goal.