The machine learning part is used to get a predictor. You operate the thing and train a model of what will happen for various inputs. The machine learning system is just an observer in this training phase; it doesn't control anything. You train from recorded data.
Then you use the trained model to tune the controller. The model lets you get an output for any set of inputs, so you can now choose input test sets which are suitable for tuning the model, like changing one input at a time and noting the output change.
Automatically generating the structure of the controller (how those blocks are connected) is a separate problem. That's called "system identification".
See [1].
[1] http://www.mpc.berkeley.edu/research/adaptive-and-learning-p...
I’ve been struggling to find where machine learning starts and what is just good old statistics (used in data mining for ages) and search algorithms like A*.
In control systems you need to do inference to predict feedback signals +- noise.
So you can use a neural network for that. Train it on input and feedback data from your samples.
Your control system still needs to account for predictability, smooth behaviour etc so you have the rest of your machinery to handle that.
This is not an end-to-end system though.
Anyone know if there are end-to-end deep learning controllers with guarantees on the output space?
It seems like our options for ML are currently: self-play, dataset fitting, or human feedback. It's possible to solve any problem that can fit into one of those molds.
(Unfortunately the opposite is true: if a problem doesn't fit into those categories, it seems very hard to solve with any form of ML.)
But, now that I think about it a bit more, the sentence "use a trained net as a tool for building a controller with known continuity properties" seems neither obvious nor straightforward to do. I'm decently well-versed in AI techniques at this point, and I can't really think how I'd sit down and write a program that would generate such a system. Anyone have any leads?
Basically, the goal is to make a neural net that helps you design a system that can be predictable. One way would be to write a loss function that penalizes unpredictability, and then let it run until it converges on a predictable control system. But that's a bit like saying "Just draw an owl." Not so easy to think of the actual code to do that.