Accéder au contenu principal

Classification zero-shot : fonctionnement et cas d'usage

Découvrez ce qu'est la classification zero-shot, son fonctionnement avec des modèles NLI, sa comparaison au few-shot et à l'affinage, et comment l'appliquer avec Hugging Face Transformers.
Actualisé 11 juin 2026  · 15 min lire

Explorer avec l’IA

Ouvrir dans ChatGPTOuvrir dans ClaudeOuvrir dans Perplexity

Que faire lorsqu'il faut classer un texte dans une nouvelle catégorie alors que vous n'avez pas le moindre exemple étiqueté pour l'entraîner ?

Oubliez les classifieurs traditionnels. Ils exigent des exemples étiquetés pour chaque catégorie à prédire : comptez des semaines d'annotation avant même de pouvoir lancer l'entraînement. Et dès qu'une nouvelle catégorie arrive, il faut recommencer à l'étiqueter.

La classification zero-shot est l'approche à envisager. Elle fait l'impasse sur toute la phase d'étiquetage en laissant un modèle attribuer des étiquettes qu'il n'a jamais vues à l'entraînement. Concrètement, vous pouvez par exemple trier les retours clients en catégories comme "billing complaint" ou "feature request" sans préparer le moindre exemple d'entraînement pour l'une ou l'autre.

Dans cet article, je vous explique le fonctionnement de la classification zero-shot, sa comparaison avec les approches traditionnelles et few-shot, et comment l'appliquer à des tâches NLP réelles avec Hugging Face Transformers.

Qu'est-ce que Hugging Face, au juste ? Inscrivez-vous à notre parcours Hugging Face Fundamentals pour créer des agents d'IA et affiner des LLM.

Qu'est-ce que la classification zero-shot ?

La classification zero-shot est une approche d'apprentissage automatique où un modèle attribue des étiquettes à des données sans avoir été spécifiquement entraîné sur ces étiquettes.

Le point clé, c'est le "zero-shot". Le modèle ne voit aucun exemple d'entraînement pour les catégories à prédire. Vous lui fournissez un texte et une liste d'étiquettes possibles, et il retient la meilleure correspondance en s'appuyant sur ses connaissances préalables.

Ces connaissances viennent du pré-entraînement. Les grands modèles acquièrent une compréhension large du langage et des concepts sur d'immenses corpus, et c'est ce socle général qui leur permet de classer des éléments inédits.

Comment fonctionne la classification zero-shot

Le flux de travail est simple lorsqu'on le décompose. Il tient en quatre étapes :

  1. Fournir le texte ou les données : tout ce que vous souhaitez classer : un avis client, un ticket de support, un titre d'actualité, un extrait de documentation.

  2. Proposer les étiquettes candidates : vous donnez au modèle une liste de catégories possibles. Ce sont de simples mots ou courtes expressions, comme "product question", "refund request", "technical issue" ou "general inquiry".

  3. Le modèle évalue le lien entre l'entrée et les étiquettes : il examine chaque étiquette et lui attribue un score d'adéquation en s'appuyant sur sa compréhension pré-entraînée du langage.

  4. Sélection de l'étiquette la plus probable : l'étiquette au score le plus élevé est renvoyée en prédiction, généralement avec un niveau de confiance pour chacune.

L'intérêt, c'est que vous pouvez modifier à tout moment la liste d'étiquettes candidates sans réentraînement. Besoin d'ajouter une catégorie demain ? Ajoutez-la simplement à la liste. Quand on vient de l'apprentissage supervisé, c'est déroutant… dans le bon sens.

Classification zero-shot vs classification traditionnelle

Les deux approches visent le même objectif (attribuer des étiquettes à des données), mais y arrivent différemment.

Classification traditionnelle

Les classifieurs traditionnels apprennent à partir d'exemples étiquetés. Vous constituez un jeu de données où chaque élément est associé à la bonne catégorie, vous entraînez un modèle, et celui-ci apprend les motifs qui distinguent les classes.

Cette approche a fait ses preuves depuis des décennies, mais comporte deux contraintes majeures :

  • Il faut des données d'entraînement étiquetées : souvent beaucoup. Les collecter et les annoter prend du temps et de l'argent, des ressources précieuses et limitées.
  • L'ensemble d'étiquettes est figé : une fois le modèle entraîné, il ne prédit que les catégories vues à l'entraînement. Ajouter une classe impose de repartir en entraînement.

Classification zero-shot

Le zero-shot fonctionne à l'inverse. Aucun entraînement spécifique à la tâche. Le modèle mobilise ce qu'il a appris au pré-entraînement pour évaluer n'importe quelle étiquette.

Deux avantages en découlent :

  • Pas d'entraînement spécifique : vous faites l'économie de la collecte, de l'annotation et de l'entraînement.
  • Jeu d'étiquettes flexible : vous pouvez faire évoluer les catégories à la volée. En ajouter, en retirer, les renommer : le modèle gère sans réentraînement.

Les compromis

Cette flexibilité a un coût. Un classifieur traditionnel entraîné sur un bon jeu étiqueté surperformera généralement un modèle zero-shot sur cette tâche précise. Il a vu exactement les exemples qui vous intéressent et s'y est ajusté.

Les modèles zero-shot sont des généralistes. Bons à beaucoup de choses, rarement les meilleurs sur une chose. Le choix dépend donc de vos besoins.

Si vous avez des données étiquetées et visez une précision maximale sur un jeu de catégories stable, entraînez un classifieur traditionnel. Si vous n'en avez pas, ou si vos catégories changent souvent, le zero-shot est la voie la plus rapide vers une solution opérationnelle.

Le rôle des foundation models et des LLM

La classification zero-shot s'est imposée car les grands modèles pré-entraînés sont devenus assez performants pour la supporter.

Avant les foundation models, on ne pouvait pas simplement fournir des étiquettes jamais vues à un modèle et espérer des prédictions raisonnables. Il ne connaissait pas assez le langage pour faire le lien. Le pré-entraînement sur d'énormes corpus a changé la donne. Un modèle qui a "lu" une bonne partie du web a déjà rencontré des mots comme "refund" ou "complaint" dans d'innombrables contextes, ce qui rend l'appariement possible.

Quelques familles de modèles propulsent la plupart des workflows zero-shot actuels :

  • BERT et ses variantes : les modèles de type BERT apprennent des représentations profondes du texte au pré-entraînement. Des déclinaisons comme RoBERTa et DeBERTa vont plus loin avec de meilleurs schémas d'entraînement et des jeux plus vastes.
  • Modèles basés sur la NLI : des modèles affinés sur des tâches d'inférence en langage naturel. Ils sont derrière la plupart des pipelines zero-shot prêts à l'emploi ; je vous explique pourquoi dans la section suivante.
  • LLM modernes : des modèles de langage comme la famille GPT ou Claude gèrent la classification zero-shot par simple prompting. Vous décrivez la tâche en langage naturel, listez les catégories et le modèle choisit.

Le point commun : l'échelle et la généralité. Un modèle entraîné sur une tâche étroite ne sait faire que cela. Un modèle entraîné sur un large corpus peut être redirigé vers de nombreuses tâches sans voir d'exemples étiquetés.

Inférence en langage naturel (NLI) et classification zero-shot

La plupart des classifieurs zero-shot utilisés en pratique reposent sur des modèles NLI. C'est souvent surprenant, donc prenons le temps.

La NLI est une tâche à part. Étant donné deux phrases (une prémisse et une hypothèse), le modèle décide de leur relation. La sortie est l'une des trois étiquettes :

  • Entailment (implication) : l'hypothèse découle de la prémisse.
  • Contradiction : l'hypothèse contredit la prémisse.
  • Neutre : les phrases sont sans lien, ou l'information manque pour trancher.

Par exemple, si la prémisse est "The team finished the project two weeks early" et l'hypothèse "The team delivered on time", un modèle NLI devrait prédire une implication. Si l'hypothèse est "The team missed the deadline", il devrait prédire une contradiction.

Cette configuration s'avère idéale pour la classification zero-shot. En traitant votre entrée comme la prémisse, vous transformez chaque étiquette candidate en hypothèse.

Supposons que vous vouliez classer la phrase "My package never arrived" en l'une de trois catégories : problème de livraison, problème de facturation ou question sur le produit. Le modèle ne les voit pas comme des étiquettes, mais comme des hypothèses, généralement insérées dans un gabarit du type "This text is about {label}" :

  • Prémisse : "My package never arrived" | Hypothèse : "This text is about a shipping issue"

  • Prémisse : "My package never arrived" | Hypothèse : "This text is about a billing issue"

  • Prémisse : "My package never arrived" | Hypothèse : "This text is about a product question"

Le modèle NLI score chaque paire. L'hypothèse au score d'implication le plus élevé l'emporte, et l'étiquette correspondante devient la prédiction.

Le modèle n'a jamais eu besoin d'apprendre ce que signifie "shipping issue" ou "billing issue" comme étiquettes. Il lui suffisait d'apprendre à reconnaître l'implication en général, grâce à l'affinage NLI.

C'est pour cela que le zero-shot basé sur la NLI fonctionne si bien : le modèle fait ce pour quoi il a été entraîné (évaluer l'implication) et vous reformulez votre problème de classification en une série de questions d'implication.

Zero-shot vs few-shot vs modèles affinés

Le zero-shot n'est pas la seule façon de faire réaliser une tâche de classification à un modèle sans entraînement complet. Comparons aux alternatives.

Zero-shot

Zero-shot signifie aucun exemple. Vous fournissez une entrée et une liste d'étiquettes candidates, et le modèle prédit à partir de ses connaissances préalables.

Le modèle n'a jamais vu de données étiquetées pour votre tâche : il s'appuie entièrement sur son savoir général.

Few-shot

Few-shot fournit quelques exemples, généralement dans le prompt. Vous montrez deux, cinq, dix exemples d'entrées avec les bonnes étiquettes, puis demandez de classer une nouvelle entrée de la même manière.

Le modèle n'est pas réentraîné : il utilise toujours ses poids pré-entraînés. Les exemples servent de référence rapide : "voici ce que j'entends par ces catégories" avant la prédiction.

Affinage (fine-tuning)

L'affinage est un entraînement dédié. Vous prenez un modèle pré-entraîné, lui fournissez un jeu étiqueté pour votre tâche, et mettez à jour ses poids jusqu'à ce qu'il maîtrise vos catégories.

C'est l'approche la plus lourde des trois. Il faut des données étiquetées, de l'infrastructure d'entraînement et du temps. En retour, le modèle se spécialise sur votre tâche.

Comparer les trois

Elles diffèrent sur trois critères essentiels en pratique : précision, flexibilité et coût.

  Précision Flexibilité Coût
Zero-shot La plus basse des trois, mais suffisante pour des usages généraux La plus élevée : vous pouvez changer les étiquettes à tout moment Le plus faible : pas de données ni d'entraînement
Few-shot Meilleure que le zero-shot, surtout avec de bons exemples Elevée : on peut changer exemples et étiquettes dans le prompt Faible : quelques exemples suffisent
Affinage La plus élevée sur la tâche d'entraînement La plus faible : réentraînement nécessaire pour de nouvelles catégories Le plus élevé : collecte, annotation et entraînement

Comparaison du zero-shot avec les alternatives

Quelques points méritent d'être soulignés.

La précision ne se résume pas à un classement. L'affinage l'emporte si vous avez assez de données étiquetées et une tâche stable. Mais sur une nouvelle tâche sans exemple, l'affinage n'est même pas une option : le zero-shot est alors le seul choix réaliste.

La flexibilité évolue à l'inverse. Le zero-shot vous laisse changer de catégories à volonté. Les modèles affinés sont verrouillés sur leur ensemble d'étiquettes.

Le coût est le plus évident. Le zero-shot coûte presque rien à mettre en place. Le few-shot ajoute une petite étape d'annotation. L'affinage est un projet à part entière qui nécessite une infrastructure dédiée.

Le parcours adopté par la plupart des équipes : démarrer en zero-shot pour jauger la faisabilité. Si la précision ne suffit pas, passer au few-shot. Et si cela reste insuffisant sur une tâche critique, affiner.

Classification zero-shot en NLP

La classification zero-shot intervient dans de nombreux workflows NLP, en particulier lorsque les données étiquetées manquent ou que les catégories évoluent. Voici les cas d'usage les plus courants.

Analyse de sentiment

Le point de départ classique. Vous donnez au modèle un texte et lui demandez de choisir parmi des étiquettes comme "positive", "negative" et "neutral".

L'intéressant, c'est la facilité à dépasser ces trois étiquettes standards. Un classifieur de sentiment traditionnel est figé sur ce qu'il a appris. En zero-shot, vous pouvez utiliser des étiquettes plus fines comme "frustrated", "satisfied", "confused" ou "excited", et le modèle s'adapte sans réentraînement. Idéal pour les retours produit ou la veille sociale, où les nuances émotionnelles dépendent du contexte.

Classification thématique

Il s'agit de ranger des documents par sujet. Des articles d'actualité en "politics", "sports", "technology", "finance". Des tickets de support en "billing", "shipping", "account access", "feature request".

Le zero-shot rend la mise en place triviale. Pas besoin d'un jeu étiqueté pour chaque nouveau thème. Si votre produit lance une fonctionnalité et que vous voulez suivre les tickets la concernant, ajoutez simplement "new feature feedback" à votre liste d'étiquettes candidates et c'est fait.

Détection d'intention

Identifier ce que l'utilisateur cherche à faire. C'est le moteur des chatbots et assistants vocaux. Quand quelqu'un tape "I need to change my password", le modèle doit reconnaître l'intention "password reset" plutôt que, par exemple, "general security question".

C'est là que le zero-shot excelle. Les produits réels ajoutent sans cesse de nouvelles intentions, et réentraîner un classifieur à chaque nouveauté représente une lourde charge. Le zero-shot permet de tenir la liste d'intentions à jour sans toucher au modèle.

Modération de contenu

La modération repère les contenus problématiques : "hate speech", "spam", "harassment" ou "misinformation". Les politiques doivent évoluer, et les catégories aussi, au fil des nouveaux abus.

Le zero-shot s'y prête très bien. Les équipes de modération ajustent définitions ou ajoutent des catégories selon les politiques, sans réentraînement côté ingénierie. Souvent couplé à des classifieurs traditionnels pour les volumes élevés, le zero-shot gère la longue traîne de catégories sans assez d'exemples pour entraîner.

Classification zero-shot avec Hugging Face Transformers

La bibliothèque transformers de Hugging Face est le moyen le plus simple de tester la classification zero-shot en Python. L'API pipeline masque presque toute la gestion des modèles : vous passez de zéro à la prédiction en quelques lignes.

Au premier lancement, le modèle sera téléchargé : prévoyez un peu de temps.

Voici un exemple complet exécutable :

from transformers import pipeline
from pprint import pprint

# Load a zero-shot classification pipeline
classifier = pipeline(
    "zero-shot-classification",
    model="facebook/bart-large-mnli"
)

# The text you want to classify
text = "My package never arrived and customer support hasn't responded in three days."

# The labels you want the model to choose from
candidate_labels = [
    "shipping issue",
    "billing issue",
    "product question",
    "general inquiry"
]

# Run the classification
result = classifier(text, candidate_labels)

pprint(result)

La sortie est un dictionnaire avec trois champs : l'entrée d'origine, les étiquettes candidates triées de la plus à la moins probable, et un score de confiance pour chacune.

Pipeline output

Sortie du pipeline

"shipping issue" arrive en tête avec une confiance de 0,82. Le modèle n'a jamais vu d'exemples étiquetés de plaintes de livraison, mais il a déduit la réponse grâce au modèle pré-entraîné bart-large-mnli, affuté sur des données NLI, comme expliqué plus haut.

Quelques points à noter sur ce workflow :

  • Le modèle est un modèle NLI : bart-large-mnli est un BART affiné sur MultiNLI. La pipeline convertit vos étiquettes en hypothèses en coulisses et les envoie au modèle.

  • Vous pouvez changer les étiquettes à tout moment : rien ne change côté modèle. Remplacez la liste candidate_labels et vous classez dans d'autres catégories.

  • Le multi-étiquetage tient à un paramètre : passez multi_label=True à l'appel : les étiquettes ne sont plus en compétition. Chacune reçoit une probabilité indépendante, et une même entrée peut relever de plusieurs catégories.

result = classifier(text, candidate_labels, multi_label=True)
pprint(result)

Multi label output

Sortie multi-étiquettes

Et voilà pour l'essentiel : charger la pipeline, définir vos étiquettes, appeler le classifieur. Bien plus rapide et simple que de bâtir un modèle de classification from scratch.

Erreurs fréquentes avec la classification zero-shot

La classification zero-shot est facile à mettre en place — et c'est précisément pour cela qu'on la détourne facilement. Voici les erreurs les plus courantes en pratique.

Choisir des étiquettes vagues

Les étiquettes sont votre moyen de décrire la tâche au modèle. Des étiquettes vagues donnent des prédictions vagues.

"good" et "bad" n'apprennent pas grand-chose au modèle. "customer is happy with the product" et "customer is reporting a problem with the product" lui donnent de la matière. Plus vos étiquettes ressemblent à des expressions porteuses de sens, mieux le modèle les évaluera face à vos entrées.

Évitez aussi les étiquettes qui se recouvrent. Si "complaint" et "negative feedback" cohabitent dans votre liste, le modèle partagera sa confiance entre elles et aucune ne s'imposera clairement.

Penser que le zero-shot égale l'affinage

C'est l'erreur la plus fréquente. Le zero-shot est performant, mais pas magique.

Un modèle affiné sur quelques milliers d'exemples étiquetés pour votre tâche le battra presque toujours sur cette tâche. Si vous obtenez 85 % de précision en zero-shot et visez 95 % en production, aucun raffinement d'étiquettes ne comblera l'écart. Il faut alors affiner.

Utilisez le zero-shot quand vous manquez de données étiquetées, lorsque vos catégories évoluent, ou quand "assez bon" suffit vraiment. Ne le choisissez pas juste parce que c'est plus rapide, pour ensuite vous étonner des contre-performances sur une tâche critique.

Évaluer sur des jeux trop étroits

Le scénario typique : vous bâtissez un classifieur zero-shot, le testez sur 50 exemples rédigés par vos soins, il a tout bon. Vous le déployez, puis en production tout le monde se plaint de sa faiblesse.

Vos 50 exemples ne représentent pas ce que les utilisateurs enverront. Ils sont plus propres, plus évidents, plus proches de votre grille de lecture. Évaluez sur des données ressemblant à la réalité : texte généré par des utilisateurs, fautes, argot, cas limites. Si vous ne les avez pas encore, échantillonnez quelques centaines d'entrées réelles et étiquetez-les à la main avant de faire confiance aux chiffres.

Ignorer le langage spécifique au domaine

Les modèles zero-shot généralistes connaissent le langage généraliste. Pas votre jargon métier.

Terminologie médicale, juridique, sigles financiers, spécifs d'ingénierie : ces vocabulaires sont étroits. Les modèles pré-entraînés les ont vus, mais pas en profondeur. Si vous leur faites classer une phrase remplie de codes CIM-10 ou de messages d'erreur SQL, attendez-vous à des résultats mitigés.

Deux options : reformuler vos étiquettes en langage courant, plus accessible au modèle, ou passer à un modèle entraîné sur votre domaine. BioBERT pour le médical, FinBERT pour la finance, etc., surpassent souvent les généralistes sur les tâches spécialisées.

Pourquoi la classification zero-shot compte dans l'IA moderne

La classification zero-shot illustre parfaitement comment les foundation models ont changé le champ des possibles en IA.

Il y a dix ans, toute tâche de classification débutait par la même question : avons-nous des données étiquetées ? Sinon, comment les obtenir ? Les projets d'annotation prenaient des mois, du budget, des prestataires et du contrôle qualité. Impossible de construire le modèle avant d'avoir les données.

Ce n'est plus une fatalité.

Un foundation model entraîné sur de larges corpus sait déjà suffisamment de choses sur le langage pour gérer une nouvelle tâche de classification dès que vous la décrivez. La seule chose à définir, c'est la liste d'étiquettes.

Ce changement est important pour plusieurs raisons, reliées à des tendances de fond en IA :

  • Il montre l'utilité réelle des foundation models : le pré-entraînement à grande échelle vise à créer un modèle assez général pour être redirigé vers de multiples tâches sans réentraînement. Le zero-shot en est une démonstration limpide.
  • Il réduit la dépendance aux jeux supervisés : les données étiquetées restent utiles, mais ne sont plus indispensables pour déployer un classifieur opérationnel. Même sans budget d'annotation, des fonctionnalités d'IA créatrices de valeur deviennent accessibles.
  • Il accélère les déploiements : une fonctionnalité de classification qui prenait un trimestre à livrer peut être prototypée en une après-midi. Cela influence les feuilles de route, car le coût d'expérimenter chute quasiment à zéro.

La tendance de fond, c'est le passage de modèles spécifiques à des modèles généralistes. L'affinage garde toute sa pertinence, tout comme l'entraînement from scratch quand la tâche l'exige. Mais le point de départ par défaut a changé : on commence par un modèle pré-entraîné, puis on spécialise si les données le justifient.

Devenez un scientifique ML

Améliorez vos connaissances en Python pour devenir un scientifique spécialisé dans l'apprentissage automatique.
Commencez À Apprendre Gratuitement

Conclusion

La classification zero-shot rappelle qu'un problème de machine learning n'exige plus nécessairement son propre entraînement. Un modèle qui comprend déjà le langage peut être redirigé vers une nouvelle tâche en changeant simplement les étiquettes fournies. Pas besoin d'exemples ni d'affinage.

Cette flexibilité fait toute la différence. Les catégories qui comptent aujourd'hui ne seront peut-être plus celles de demain, et les modèles zero-shot vous laissent changer d'avis.

Avant de lancer un projet d'annotation, établissez un baseline zero-shot. En une après-midi, vous saurez si la tâche est résolue, partiellement résolue, ou si elle nécessite une approche plus lourde. Rien de plus.

Si vous débutez avec les LLM, inscrivez-vous à notre Large Language Models (LLMs) Concepts course. Ce cours couvre tout ce qu'il faut savoir sur les applications LLM, les méthodologies d'entraînement et les dernières avancées de la recherche.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Scientifique de données senior basé en Croatie. Rédacteur technique de premier plan avec plus de 700 articles publiés, générant plus de 10 millions de vues. Auteur du livre Machine Learning Automation with TPOT.

FAQs

What is zero-shot classification in simple terms?

La classification zero-shot consiste à attribuer des étiquettes à un texte sans entraîner un modèle sur ces étiquettes spécifiques. Vous fournissez une entrée et une liste de catégories possibles, et le modèle choisit la meilleure correspondance d'après ce qu'il a appris au pré-entraînement. Le "zéro" renvoie au nombre d'exemples d'entraînement requis par catégorie : aucun.

When should I use zero-shot classification instead of training my own model?

Optez pour le zero-shot lorsque vous explorez, que vous n'avez pas de données étiquetées, que vos catégories changent souvent ou que vous devez livrer un prototype rapidement. C'est également le bon choix pour l'exploration, quand la définition des catégories reste à affiner. Si votre jeu d'étiquettes est stable et que vous disposez d'assez d'exemples étiquetés, l'affinage d'un classifieur traditionnel offrira généralement une meilleure précision.

How accurate is zero-shot classification?

La précision dépend du modèle, de la clarté des étiquettes et de l'adéquation de la tâche avec la compréhension générale du langage. Sur une tâche bien définie, un modèle zero-shot peut donner des résultats solides, parfois suffisants pour la production, mais il sera presque toujours battu par un modèle affiné sur des données étiquetées pour la même tâche. Considérez le zero-shot comme un excellent point de référence.

What's the difference between zero-shot classification and NLI?

L'inférence en langage naturel (NLI) demande à un modèle de décider si une phrase implique, contredit ou est neutre vis-à-vis d'une autre. En zero-shot, les modèles NLI servent de moteur : votre entrée devient la prémisse et chaque étiquette candidate est transformée en hypothèse. L'étiquette dont l'hypothèse obtient le score d'implication le plus élevé l'emporte.

Can I use zero-shot classification for non-English text?

Oui, à condition d'utiliser un modèle multilingue. Des modèles comme xlm-roberta-large-xnli sont entraînés sur des données NLI multilingues et gèrent la classification zero-shot dans des dizaines de langues. Conservez bart-large-mnli et les modèles anglais pour les textes en anglais, et passez à un modèle multilingue lorsque vos entrées ne sont pas en anglais.

Sujets

Learn with DataCamp

Cursus

Chercheur en apprentissage automatique en Python

85 h
Découvrez l'apprentissage automatique avec Python et engagez-vous dans une carrière de scientifique spécialisé dans l'apprentissage automatique. Découvrez l'apprentissage supervisé, non supervisé et profond.
Afficher les détailsRight Arrow
Commencer Le Cours
Voir plusRight Arrow