Deep symbolic regression for recurrent sequences
recur-env.eba-rm3fchmn.us-east-2.elasticbeanstalk.com
recur-env.eba-rm3fchmn.us-east-2.elasticbeanstalk.com
This is not dissimilar from e.g. DALL-E where they model images as NLP-style tokens and use a transformer to predict image tokens (operations, respectively) from text tokens (list of ints/floats, respectively).
This demo lets you interact with the model. Pretty cool stuff. Refreshing to see symbolic problems being tackled with deep learning.
Yannic Kilcher video with one of the authors: https://youtu.be/1HEdXwEYrGM
https://seminars.math.binghamton.edu/ComboSem/worm-chiu.pge_...
It is a deterministic algo for SR that I've always thought would benefit from RL.
The biggest problem is SR research has been and still is the lack of a widely used dataset and reproducible results. There is a researcher who beats everyone's results within a year by publishing to Springer without code or data...
`1,1,2,3,5` gets the result "No Solution" whereas `1,1,2,3,5,8` correctly guesses the pattern. Its just a linear recurrence with j=2 which means you get 2 data points to guess the relation and 1 to confirm.
An equation is available here: https://en.wikipedia.org/wiki/Damping
Pretty neat otherwise!! I especially love the interface. I wonder if there is a plug and play framework for deploying pytorch models on a website.
EDIT: They seem to be using https://streamlit.io . Seems like a neat tool.
I think in this case the attention operation bounds the runtime by the longest possible sequence that can go in at once. Since you have a positional embedding, you can add arbitrarily many more functions without incurring a runtime penalty, although it may begin to interfere with the model's ability to effectively generalize as well, particularly when used with very long sequence lengths (so chains of operations, lists of ints).
Since each operation is mapped to an integer, the maximum number of tokens is bound by the precision of the system.
They could have at least compared to them. They barely mention the standard method and leave out an entire class of top tier solutions, the more recent deterministic stratgeies. Shows they did not do their background reading and know the history. More like someone with a tool looking for an interesting application than someone deeply interested in a problem and finding all of the tools which can be used.
They go on to leave out all of the common test problems used in the field. Makes one wonder if the tests were too difficult for neural nets to produce publishable results with, or if they are just ignorant of the research and test problems. They almost state as much in the next paragraph. They don't even .mention how the other algos are capable where they are not.
It's also worth thinking about the environmental cost of the, now three, methods.
"One may ask to what extent our model can be used for real-world applications, such as time-series forecasting. Although the robustness to noise is an encouraging step in this direction, we believe our model is not directly adapted to such applications, for two reasons. First, because real-world data generally cannot be described by neat mathematical equations, in which case numeric approaches will outperform symbolic approaches. Second, even in cases where the sequence is described by a formula, this formula will often con- tain complex prefactors. While our method is capable of approximating prefactors rather remarkably, this adds a layer of difficulty to the original problem, as the model sometimes needs to use many operators to approximate a single prefactor (see Table 2). However, one easy way to solve this issue is to extend the vocabulary of the decoder, enabling it to build prefactors more easily, or use a separate solver to fit the prefactors as done in approaches. We leave this for future work."
It added the term "quotient(u_{n-1} , n)" to the Fibonacci recursion, and claimed the resulting formula fit the data perfectly.
What?
EDIT: since people seem to be confused about why this is wrong... according to the graph, the sequence starts at n = 0. So the modified Fibonacci sequence I created is:
n | 0 1 2 3 4 5 6
u | 1 1 2 3 5 8 14
The computer says this formula fits it perfectly: u[n] = u[n-1] + u[n-2] + u[n-1]/n
Let n = 5: 8 = 5 + 3 + 5/5
8 = 9
EDIT 2: hmm, contrary to the graph, the engine seems to assume the sequence starts at 1. So then we have n | 1 2 3 4 5 6 7
u | 1 1 2 3 5 8 14
I guess the formula works if "quotient" is defined as integer division?but alas ...
In hexadecimal, it also didn't work, though there is this formula: