Zero-Shot-Classification: multi_class or multi_label?
https://github.com/huggingface/transformers/blob/068df740bd73b95e9a1e233e47608df942fda9da/src/transformers/pipelines.py#L1048
Since we're allowing multiple labels to be true, shouldn't this be called `multi_label` instead of `multi_class`?
cc @joeddav <|||||>Yeah I think `multi_label` probably would have been better in retrospect given that many do seem to make this distinction between terms. Since it's already being widely used, though, I think we'll keep it as is for the moment. If it turns out to cause consistent confusion for people we can look at changing it later on.<|||||>Leaving a comment and hoping this to be reopened.

There are two major classification tasks (see for instance: https://towardsdatascience.com/journey-to-the-center-of-multi-label-classification-384c40229bff#:~:text=Difference%20between%20multi%2Dclass%20classification,the%20tasks%20are%20somehow%20related.):
A multiclass classification problem is a classification task with more than two classes, that makes the assumption that each sample is assigned to one and only one label: an animal can be wither a cat or a dog.

A multilabel classification assigns a set of target labels to each sample.  A text might have multiple categories, for instance politics, finance and education, or none of these.

The multi_class option here, works exactly opposite. You have to set it to multi_class=False to make it behave like multi class classification problem, and multi_class=True to make it multi label. It is really confusing.

Switching the behaviour would probably lead to even more confusion. My suggestion would be to depreciate "multi_class=True/False" and instead add the parameter "multi=label(default)/class. Probably not ideal, but less confusing.<|||||>@peregilk I think you're right, it's consistently been a little bit confusing. I don't think the parameter names need to **exactly** reflect the vernacular, but I do think we can deprecate `multi_class` and rename it to `multi_label` while keeping the behavior the same. I think that's the solution with the least confusion. I'll send a PR. The only case where it's not multi-class is when only a single label is passed, in which case the `multi_class` argument is treated as true since it doesn't make sense to softmax over a single label.<|||||>That sounds like a great solution. Thanks. 