I'm pretty new to ML and most of the supervised techniques I've discovered so far are along the lines of
- Pass model training set inputs and get it to generate predictions
- evaluate predictions (predicted 'y') against real results (actual 'y') for the training set
- Perform some kind of gradient descent to tweak the model parameters to give outputs that are closer to the real results
The precise method of training can vary, but the common theme in the examples I've seen so far is that the outputs of the model are the actual things that we want to get out of the system. For example, we might be trying to predict house prices - in this case, an output of the model would actually be a predicted price, and it's that that I would care about as part of my cost function and as a user of the system.
I'm imagining a scenario where we have a robot that's able to hold and use a palette and paintbrush, and we want it to copy existing paintings. (Strictly theoretical - I'm not trying to forge anything here!).
What I imagine I'd want is to
- present robot with example input (existing paintings)
- have the robot run a model where the output is some brush motions
- evaluate the painting resulting from the brush strokes against the original painting
The difference here is that the output of my model is 'brush strokes', but that output (from the model) isn't ultimately what I care about - it's what's rendered by those brush strokes. I don't mind if the robot makes the same strokes that the original artist made, but I do mind about the similarity of what's rendered by those strokes to the original.
So I am wondering what areas of ML I need to look into to find something that works this way, where our cost or fitness is evaluated based on some transform of the model output, rather than the model output itself. I tried searching for examples of where a transform of the model output was incorporated into the cost function, but I couldn't see that it was a common technique.