MLWave / extremely-simple-one-shot-learning

Extremely simple one-shot learning in Python
183 stars 50 forks source link

The title is wrong? it's zero shot learning? #2

Open Bigwode opened 6 years ago

MLWave commented 5 years ago

Zero-shot and one-shot learning is rather ill-defined (multiple authors take it to mean different things).

Some consider any model that is able to do inference on classes it has not seen during training to be zero-shot learning. Under that definition this qualifies as zero-shot learning. I take a harder view on zero-shot learning: You are not allowed to provide any labeled new classes. If you are allowed to: Just give it 5000+ labeled examples of the new unseen class and calculate the new weight matrix. It will be nearly as accurate as a KNN classifier trained on these classes. But it does not feel like zero-shot/zero-data learning to me, eventhough the model was not trained on these classes, but repurposed as a general feature extractor.

In a perfect world, a model is able to acquire new classes just by unsupervised observation. You would be able to say: "A donkey looks like a horse, but smaller" and the model will automatically create a new class for it, and recognize donkeys as being part of that class.

Feel free to describe this as zero-shot learning. To me, it fits better with few shot learning, since the amount of unseen samples you provide, decides how accurate the model will be (give 10 labeled samples of unseen class and it will do better than providing 1 labeled sample).