# Finding optimal parameters for an unknown function - (learning with an unknown loss function)

I am working on a project where my objective is to find a set of parameters for a synthesizer which makes the synthesizer replicate an input sound. I do not know exactly what goes on inside of the synthesizer.

More formally, the objective is to given an input x, find the set of parameters p which minimize the distance between g(p) and x.

Problem

Since I do not know g(p), I can not differentiate it hence I can not compute the gradient of the loss function. So although I can measure the distance between between g(p) and x, I do not know in which direction to update my model to produce a better p.

Naive approach

The naive approach would be to generate a bunch of data with known p, and learn the mapping x --> p that way. However, g(p)is high dimensional and non-linear. It can not be assumed that two set of parameters p1 and p2 which are similar will make g(p) yield similar outputs.

Another approach would be to use some Evolutionary Algorithm to brute force a set of presets. This has been tested and works pretty well, but at the price of very computationally expensive predictions.

Suggestions? I suspect the problem of finding optimal parameters for a more or less unknown system without the possibility to use brute force. Other real world problems I can think of would be finding parameters for some cloud infrastructure or smart temperature system to optimize for energy consumption.

Any suggestions? Any ideas as well as resources on related problems are welcome!