Deepjazz: AI-generated 'jazz'
This is really neat! But I think it's a stretch to call it AI-generated jazz music.As I understand it, the author has trained an LSTM on a single MIDI file -- "And Then I Knew" by Pat Metheny. The network is then asked to generate MIDI notes in sequence.What this network has been asked to do is to produce an output stream that is statistically similar to the single MIDI input file it has been trained on. It would be more accurate to call this an "And Then I Knew" generator. Its "cost function" -- the function the network is trying to minimize during training -- is exactly how well it reproduced the target song.Neural networks are "universal function approximators". It's not surprising that given a single input, a network can produce outputs that are statistically similar to it.A network that could compose novel MIDI jazz would look like this:* Train a network on a corpus of thousands to hundreds of thousands of MIDI jazz files.* Add significant regularization and model capacity limits to prevent the network from "memorizing" its inputs.* Generate music somehow -- the char-RNN approach described here is fine. There are other methods.You want the network to build representations that capture the patterns of jazz music necessary to pastiche them but not high-level enough representations that the network is exactly humming the tune "And Then I Knew". This is so much of a problem that any paper presenting a novel result in generative modeling pretty much must include a section presenting evidence their model is not memorizing its inputs.I can hum a few classic jazz tunes from memory but that mental process is not jazz music composition -- it's reproducing something from memory. If we're going to call a model "AI-generated jazz" you need some way to tell the network to not hum a tune it knows and instead compose a new tune with the principles/patterns it knows. Since we can't speak to our models and tell them to think one way and not the other, part of the trick in this field is to come up with models that can only do one thing and not the other.