Comment by Buttons840
4 years ago
Are there any general purpose models that are good at learning math? I mainly know basic feed-forward neural nets, but I don't think they do well outside their training region. Math, of course, has an infinite training region.
From my (limited) experience with the advanced ML models, they can "do basic math", but they make amateur mistakes with basic things - which indicates they don't actually know addition, but they are good at looking at patterns in existing language.
I would assume that state-of-the-art ML models could "convert a word problem into an equation", then feed that equation into a 30 year-old graphing calculator to "do the math"
The fact that no one has done this is an indicator that "there are more important things to work on", and it is just a matter of time that someone connects the two together
This seems so much like humans that it makes me think lots of people are learning math with an ML-like approach instead of… whatever the heck people like engineers and mathematicians are doing.
Anyone can do higher level math, the problem is that math education is generally done by people who see math as a tool for computation, rather than a study of deep connections bordering on philosophy, and beautiful insights resembling poetry. I've been in arguments before where someone didn't believe me that the underpinnings of modern philosophy are essentially the same as math!
If the teachers don't love math, how can we expect students to?
I wonder how these language models would do if we tried to teach them maths the way schools do: Feed them explanations first, then endless sequences of toy problems, see which they got wrong and feed them corrected examples back in.
I'm not at all surprised they don't do well at maths, because while there are maths texts online, I doubt there is enough material to give these models the same experience of repetition and reinforcement to help sufficiently generalise an understanding of the underlying rules.
2 replies →
> "convert a word problem into an equation"
Isn't this a huge step? It's not a minor detail remaining to be solved, but possibly the largest step!
What you describe is exactly what state of the art has done. They even lied and said it was "solving math problems" by calling numpy methods.
I attempted to create a general purpose model for the exact version of the "what comes next problem." It enumerated primitive recursive functions, trying them out as it went. The limitation to primitive recursive functions was convenient because they always terminate. I didn't have to filter out the functions that ran for too long. (or do I?)
The enumeration inherently includes functions of several variables, so I wasn't restricted to examples such as 1->1, 2->4, 3->9, 4->16 etc.
I could try it out on examples such as (1,2)->3 (2,1)->3 (0,2)->2, etc. Perhaps with enough it would "learn to add" = find a primitive recursive function that did addition.
I got as far as finding the first problem. The enumeration technique that I used was effectively doing a tree recursion, like that function for computing Fibonacci numbers that bogs down because Fib(10) is computing Fib(5) lots of times. I had a lot of numbers that coded for the identity function, lots of numbers that coded for the first few functions, making the whole thing bog down, trying the same few functions over and over under different numerical disguises.
I thought that I could see my way to fixing this first problem. Have some way of recognizing numbers that give forms that give the same function. I guessed that I could approximate this by saying that if two functions give the same value on a variety of arguments they are probably the same. Then I parameterise this criterion and tune. That opens the way to creating a consolidated enumeration, analogous to fixing the tree recursive fibonacci function by memoization, except trickier.
But my health is poor and I ran out of energy.
Also, I have a guess for the second problem. What happens if I fix the first problem and my enumeration reaches decently complicated primitive recursive functions. While they will all terminate, some might run for far too long, causing the process to bog down. Rejecting them on the basis of limiting the run time might work well. We are happy to only learn reasonably effect functions for doing maths.
It is a fun idea and I encourage others to have a go.
There is "LODA", which uses genetic algorithms, that continuously mutates existing math programs until discovering something new. It uses OEIS as training data, around 350k known integer sequences, such as primes/fibonacci. Around 100k programs have been mined so far.
https://loda-lang.org/
I'm a contributer to LODA.
LODA runs on CPU. It doesn't use GPU. If you have spare computer, then please consider contributing with the mining. Your contribution helps.
https://boinc.loda-lang.org/loda/