API AI Turbo-George

Techniques pour améliorer la fiabilité


Lorsque GPT-3 échoue sur une tâche, que devez-vous faire?
Rechercher une meilleure invite qui suscite des réponses plus fiables?
Investir dans des milliers d'exemples pour affiner un modèle personnalisé?
Supposons que le modèle soit incapable de la tâche et passez à autre chose?
Il n'y a pas de réponse simple - cela dépend. Cependant, si votre tâche implique un raisonnement logique ou de la complexité, envisagez d'essayer les techniques de cet article pour créer des invites plus fiables et performantes.

Pourquoi GPT-3 échoue sur des tâches complexes

Si on vous demandait de multiplier 13 par 17, la réponse vous viendrait-elle immédiatement à l'esprit? Pour la plupart d'entre nous, probablement pas. Pourtant, cela ne signifie pas que les humains sont incapables de multiplier à deux chiffres. Avec quelques secondes, et un stylo et du papier, ce n'est pas trop éprouvant de comprendre que 13 x 17 = 130 + 70 + 21 = 221.
De même, si vous donnez à GPT-3 une tâche trop complexe à faire dans le temps nécessaire pour calculer son prochain jeton, il peut confabuler une supposition incorrecte. Pourtant, comme pour les humains, cela ne signifie pas nécessairement que le modèle est incapable de la tâche. Avec un peu de temps et d'espace pour raisonner les choses, le modèle peut toujours être en mesure de répondre de manière fiable.
Par exemple, si vous demandez text-davinci-002 le problème mathématique suivant concernant les balles de jonglage, il ne répond pas:
Est-ce à dire que GPT-3 ne peut pas faire de simples problèmes mathématiques? Non; en fait, il s'avère qu'en incitant le modèle à Let's think step by step, le modèle résout le problème de manière fiable:
Bien sûr, il est difficile de dire à partir d'un seul exemple si cela Let's think step by step l'astuce fonctionne en général ou a juste eu de la chance sur ce problème particulier. Mais ça marche vraiment. Sur une référence de problèmes de mathématiques de mots, le Let's think step by step astuce augmentée le taux de résolution du GPT-3 massivement, d'un 18% sans valeur à un 79% décent%!

Les capacités du modèle dépendent du contexte

Lorsque vous apprenez à travailler avec GPT-3, une erreur conceptuelle courante est de croire que ses capacités sont réparées dans tous les contextes. Par exemple, si GPT-3 se trompe sur une simple question logique, il doit être incapable de logique simple.
Mais comme le Let's think step by step par exemple, les défaillances apparentes du GPT-3 peuvent parfois être corrigées avec une meilleure invite qui aide le modèle à se diriger vers la sortie correcte.

Comment améliorer la fiabilité des tâches complexes

Le reste de cet article partage des techniques pour améliorer la fiabilité des grands modèles linguistiques sur des tâches complexes. Bien que certaines techniques soient spécifiques à certains types de problèmes, beaucoup d'entre elles reposent sur des principes généraux qui peuvent être appliqués à un large éventail de tâches, par exemple.:
Donnez des instructions plus claires
Divisez des tâches complexes en sous-tâches plus simples
Structurez l'instruction de garder le modèle sur la tâche
Invitez le modèle à expliquer avant de répondre
Demandez des justifications de nombreuses réponses possibles, puis synthétisez
Générez de nombreuses sorties, puis utilisez le modèle pour choisir le meilleur
Ajustez les modèles personnalisés pour maximiser les performances

Divisez des tâches complexes en tâches plus simples

Une façon de donner à un modèle plus de temps et d'espace pour réfléchir est de diviser les tâches en morceaux plus simples.
Par exemple, considérons une tâche où nous posons au modèle une question à choix multiple sur un texte - dans ce cas, un jeu de Clue. Lorsqu'on lui a demandé directement, text-davinci-002 n'est pas en mesure de rassembler les indices 3 et 5 et ne répond pas correctement:
Bien que les indices 3 et 5 établissent que le colonel Mustard était la seule personne dans l'observatoire et que la personne dans l'observatoire avait le chandelier, les modèles ne parviennent pas à les combiner dans une réponse correcte de ( a ) Oui.
Cependant, au lieu de demander la réponse directement, nous pouvons diviser la tâche en trois morceaux:
Tout d'abord, passez les indices un par un et examinez si l'indice est potentiellement pertinent
Deuxièmement, combinez les indices pertinents pour raisonner la réponse à la question
Troisièmement, écrivez la réponse finale: soit ( a ), ( b ), soit ( c )
En donnant au modèle plus de temps et d'espace pour réfléchir et en le guidant dans un plan de raisonnement, il est capable de trouver la bonne réponse de ( a ) Oui.
Un autre avantage de diviser des instructions complexes en sous-tâches plus petites est qu'il peut aider à garder le modèle concentré sur chaque sous-tâche.
Par exemple, si nous demandons text-davinci-002 pour résumer un texte dans sa langue d'origine, le modèle peut redevenir anglais:
Cependant, si nous demandons d'abord au modèle d'identifier la langue du texte, puis de résumer le texte, il devient plus fiable:

Invitez le modèle à expliquer avant de répondre

Une autre technique puissante pour améliorer la fiabilité des réponses consiste à inciter le modèle à raisonner progressivement la réponse plutôt que de sauter immédiatement à la réponse finale. En «pensant à haute voix», le modèle peut être beaucoup plus susceptible d'arriver à la bonne réponse.

Zéro coup

Méthode

Publié par , le moyen le plus simple d'inciter un modèle à raisonner la réponse est simplement de préparer des réponses avec Let's think step by step. La figure 2 illustre un exemple:

Résultats

En appliquant cette astuce simple à l'ensemble de données mathématiques MultiArith, les auteurs ont trouvé Let's think step by step quadruplé la précision, de 18% à 79%!

Implications

Bien que le Let's think step by step l'astuce fonctionne bien sur les problèmes mathématiques, elle n'est pas efficace sur toutes les tâches. Les auteurs ont constaté qu'il était très utile pour les problèmes arithmétiques en plusieurs étapes, les problèmes de raisonnement symbolique, les problèmes de stratégie et d'autres problèmes de raisonnement. Cela n'a pas aidé avec de simples problèmes mathématiques ou des questions de bon sens, et n'aiderait probablement pas non plus à de nombreuses autres tâches non raisonnantes.
Pour en savoir plus, lisez le .
Si vous appliquez cette technique à vos propres tâches, n'ayez pas peur d'expérimenter la personnalisation de l'instruction. Let's think step by step est plutôt générique, vous pouvez donc trouver de meilleures performances avec des instructions qui sont adaptées à un format plus strict personnalisé dans votre cas d'utilisation. Par exemple, si vous l'étiez, vous pouvez essayer des variantes plus structurées comme First, think step by step about why X might be true. Second, think step by step about why Y might be true. Third, think step by step about whether X or Y makes more sense.. Et vous pouvez même donner au modèle un exemple de format pour l'aider à garder le cap, par exemple.:

Exemples à quelques coups

Méthode

Demander au modèle de raisonner ses réponses peut être fait de plusieurs façons. Une façon consiste à démontrer avec quelques exemples ( 'few-shot' ), comme étudié par . Voici un exemple d'invite de chaîne de pensée à quelques coups:
Plus de démonstrations de chaînes de raisonnement écrites par des étiqueteurs humains:

Résultats

En testant les problèmes mathématiques des écoles primaires, les auteurs ont constaté que la chaîne de pensée incitant a triplé le taux de résolution, de 18% à 57%.
En plus des problèmes mathématiques, l'incitation à la chaîne de pensée a également permis de recueillir des performances sur des questions liées à la compréhension sportive, au suivi des lancers de pièces et à la concaténation de la dernière lettre. Dans la plupart des cas, peu d'exemples étaient nécessaires pour saturer les gains de performance ( moins de 8 environ ).
Pour en savoir plus, lisez le .

Implications

Un avantage de l'approche par exemple à quelques coups par rapport à la Let's think step by step la technique est que vous pouvez plus facilement spécifier le format, la longueur et le style de raisonnement que vous souhaitez que le modèle effectue avant d'atterrir sur sa réponse finale. Cela peut être particulièrement utile dans les cas où le modèle ne raisonne pas initialement de la bonne manière ou de la bonne profondeur.

Réglé

Réglé

Méthode
En général, pour obtenir des performances maximales sur une tâche, vous devrez affiner un modèle personnalisé. Cependant, le réglage fin d'un modèle à l'aide d'explications peut prendre des milliers d'exemples d'explications, qui sont coûteux à écrire.
En 2022, Eric Zelikman et Yuhuai Wu et al. a publié une procédure intelligente pour utiliser une invite à quelques clichés pour générer un ensemble de données d'explications qui pourrait être utilisé pour affiner un modèle. L'idée est d'utiliser une invite à quelques coups pour générer des explications candidates et de ne conserver que les explications qui produisent la bonne réponse. Ensuite, pour obtenir des explications supplémentaires sur certaines des réponses incorrectes, réessayez l'invite de quelques coups mais avec des réponses correctes données dans le cadre de la question. Les auteurs ont appelé leur procédure STaR ( Raisonneur autodidacte ):
Avec cette technique, vous pouvez combiner les avantages du réglage fin avec les avantages de l'incitation à la chaîne de pensée sans avoir à écrire des milliers d'explications d'exemple.
Résultats
Lorsque les auteurs ont appliqué cette technique à un ensemble de données de questions et réponses de bon sens, ils ont constaté que le STaR surpassait à la fois l'incitation à la chaîne de pensée seule ( 73% > 37% ) et le réglage fin seul ( 73% > 60% ):
Pour en savoir plus, lisez le .
Implications
L'utilisation d'une invite à quelques clichés pour étendre ou modifier un ensemble de données de réglage fin est une idée qui peut être généralisée au-delà de l'écriture d'explications. Par exemple, si vous avez de grandes quantités de texte non structuré sur lesquelles vous souhaitez vous entraîner, vous pouvez trouver des opportunités d'utiliser une invite pour extraire un ensemble de données structuré à partir de votre texte non structuré, puis affinez un modèle personnalisé sur cet ensemble de données structuré.


Extensions à l'invite de la chaîne de pensée

Un certain nombre d'extensions de l'incitation à la chaîne de pensée ont également été publiées.

Indication de l'inférence de sélection

Méthode

Publié par Antonia Creswell et al., Une extension de la technique de la chaîne de pensée consiste à diviser l'invite unique pour générer des explications et des réponses en parties plus petites. Tout d'abord, une invite sélectionne un sous-ensemble de faits pertinent dans le texte ( 'invite de sélection' ). Ensuite, une deuxième invite déduit une conclusion des faits sélectionnés ( 'invite d'inférence' ). Ces invites sont ensuite alternées en boucle pour générer plusieurs étapes de raisonnement et éventuellement atterrir sur une réponse finale. Les auteurs illustrent l'idée dans la figure suivante:

Résultats

Lorsqu'il est appliqué à un modèle de paramètre 7B, les auteurs ont constaté que l'inférence de sélection incitant à des performances sensiblement améliorées par rapport à l'invite de chaîne de pensée sur les tâches de référence bAbi et Proof Writer ( qui nécessitent toutes deux des séquences plus longues d'étapes de raisonnement ). Les meilleures performances qu'ils ont obtenues ont combiné à la fois l'invite de sélection et l'affinement.

Implications

Bien que les gains sur ces repères soient importants, ces repères ont été spécifiquement choisis car ils nécessitaient des séquences de raisonnement plus longues. Sur les problèmes qui ne nécessitent pas de raisonnement avec de nombreuses étapes, les gains sont probablement plus faibles.
Les résultats mettent en évidence quelques leçons générales pour travailler avec de grands modèles linguistiques. Premièrement, diviser des tâches complexes en tâches plus petites est un excellent moyen d'améliorer la fiabilité et les performances; plus la tâche est atomique, moins il y a de place pour que le modèle se trompe. Deuxièmement, obtenir des performances maximales signifie souvent combiner un réglage fin avec l'approche que vous avez choisie.
Pour en savoir plus, lisez le .

Architecture de raisonnement fidèle

Quelques mois après la publication de la technique d'incitation à la sélection-inférence, les auteurs ont étendu la technique dans un document de suivi, avec des idées pour:
déterminer quand le cycle d'inférence de sélection doit s'arrêter ou continuer
ajouter une fonction de valeur pour aider à rechercher plusieurs chemins de raisonnement
réduire l'hallucination de faux faits en affinant un modèle pour raisonner sur les étiquettes de phrase ( par exemple, sen1 ) plutôt que d'écrire les phrases elles-mêmes

Méthode

Dans la technique d'origine de sélection-inférence, les invites spécialisées de «sélection» et d'inférence sont alternées pour sélectionner des faits et faire des inférences à partir de ces faits, en combinant pour générer une séquence d'étapes de raisonnement.
Les auteurs étendent cette technique avec deux composants supplémentaires.
Premièrement, les auteurs ajoutent un modèle «modifié» qui, après chaque étape d'inférence, est demandé si les inférences jusqu'à présent sont suffisantes pour répondre à la question. Si oui, le modèle génère une réponse finale.
Les modèles licou apportent quelques avantages:
il peut indiquer au processus d'inférence de sélection d'arrêter ou de continuer, si nécessaire.
si le processus ne s'arrête jamais, vous n'obtiendrez aucune réponse, ce qui est souvent préférable à une supposition hallucinée
Deuxièmement, les auteurs ajoutent une fonction de valeur, qui est utilisée pour évaluer la qualité des étapes de raisonnement et rechercher sur plusieurs trajectoires de raisonnement. Cela fait écho à un thème commun pour augmenter la fiabilité; au lieu de générer une réponse unique à partir du modèle, générez un ensemble de réponses, puis utilisez un certain type de fonction de valeur / discriminateur / modèle de vérificateur pour choisir le meilleur.
En plus de ces deux extensions, les auteurs utilisent également une astuce pour réduire l'hallucination de faux faits. Plutôt que de demander au modèle d'écrire des phrases factuelles, ils affinent un modèle pour travailler avec des étiquettes de phrase ( par exemple, sen1 ) à la place. Cela aide à empêcher le modèle d'halluciner de faux faits non mentionnés dans le contexte rapide.

Résultats

Les auteurs ont évalué leur technique sur deux repères: la tâche ProofWriter ( non illustrée ) et ( montré ). La technique a considérablement augmenté la précision, en particulier en ce qui concerne les problèmes de raisonnement plus difficiles.
image.png failed to upload
Source: Raisonnement fidèle à l'aide de grands modèles linguistiques par Antonia Creswell et al. ( 2022 ) ] ()
De plus, leur tour de manipulation d'étiquettes de phrases a essentiellement éliminé l'hallucination!
image.png failed to upload
Source: Raisonnement fidèle à l'aide de grands modèles linguistiques par Antonia Creswell et al. ( 2022 ) ] ()

Implications

Cet article illustre un certain nombre de leçons utiles pour améliorer la fiabilité des grands modèles linguistiques:
Divisez des tâches complexes en sous-tâches plus petites et plus fiables
Générez votre réponse étape par étape, en l'évaluant en cours de route
Générez de nombreuses réponses possibles et utilisez un autre modèle ou fonction pour choisir celles qui semblent les plus belles
Réduisez l'hallucination en limitant ce que le modèle peut dire ( par exemple, en utilisant des étiquettes de phrase au lieu de phrases )
Maximisez les performances des modèles en les affinant sur des tâches spécialisées
Pour en savoir plus, lisez le .

Indication la moins à la plus élevée

En plus de mal faire sur les longues chaînes de raisonnement ( où la sélection-inférence brille ), l'incitation à la chaîne de pensée peut particulièrement lutter lorsque les exemples sont courts mais que la tâche est longue.

Méthode

L'invite la moins à la plus est une autre technique qui divise les tâches de raisonnement en sous-tâches plus petites et plus fiables. L'idée est d'obtenir une sous-tâche du modèle en l'incitant avec quelque chose comme To solve {question}, we need to first solve: ". Ensuite, avec cette sous-tâche en main, le modèle peut générer une solution. La solution est annexée à la question d'origine et le processus est répété jusqu'à ce qu'une réponse finale soit produite.

Résultats

Lorsqu'il est appliqué à des repères impliquant de longues chaînes de raisonnement utilisant code-davinci-002 ( qui est optimisé pour le code mais peut toujours comprendre le texte ), les auteurs ont mesuré des gains aussi importants que 16% - > 99,7%!

Implications

Bien que les gains ci-dessus de l'incitation la moins à la plus sont impressionnants, ils sont mesurés sur un ensemble très étroit de tâches qui nécessitent de longues chaînes de raisonnement.
Pourtant, ils illustrent un thème commun: augmenter la fiabilité en ( a ) brisant des tâches complexes en sous-tâches plus petites et ( b ) donnant au modèle plus de temps et d'espace pour trouver la réponse.
Pour en savoir plus, lisez le .

Idées connexes

Indication maïeutique

Méthode

Contrairement aux techniques précédentes, qui tentent de maximiser la probabilité de réponses correctes, une autre approche consiste à utiliser GPT-3 pour générer un arbre d'explications possibles ( les deux correctes et incorrect), puis analysez leurs relations pour deviner quel ensemble est correct. Cette technique a été inventée comme une indication maïeutique par ( maieutic signifie lié à la méthode socratique de poser des questions pour susciter des idées ).
La méthode est compliquée et fonctionne comme suit:
Tout d'abord, construisez un arbre maïeutique, où chaque nœud est une déclaration qui pourrait être vraie ou fausse:
Commencez par une question à choix multiple ou une déclaration vraie / fausse ( par ex. War cannot have a tie)
Pour chaque réponse possible à la question, utilisez le modèle pour générer une explication correspondante ( avec une invite comme War cannot have a tie? True, because)
Ensuite, incitez le modèle avec la question et l'explication générée, et demandez-lui de produire la réponse. Si vous inversez l'explication ( avec un préfixe comme It is wrong to say that {explanation}) inverse la réponse, puis l'explication est considérée comme «logiquement intégrale».'
Si une explication n'est pas logiquement intégrale, répétez le processus ci-dessus de manière récursive, chaque explication étant transformée en une question vraie ou fausse, et générez plus d'explications pour chaque nouvelle question.
Une fois toutes les explications récursives terminées, vous vous retrouvez avec un arbre d'explications, où chaque feuille sur l'arbre a la propriété que l'inversion de l'explication inverse la réponse du modèle.
Deuxièmement, convertissez l'arbre en un graphique des relations:
Pour chaque nœud de l'arbre, calculez la croyance relative du modèle dans chaque nœud ( déduit de la probabilité d'obtenir une réponse de True à une explication )
Pour chaque paire de nœuds dans l'arbre, utilisez le modèle pour identifier s'ils sont impliqués ( implicite ) ou contredit
Troisièmement, trouvez l'ensemble de croyances le plus cohérent et considérez que celles-ci sont vraies:
Plus précisément, en utilisant la force de la croyance en chaque nœud et les relations logiques entre eux, formulez le problème comme un problème de satisfaction maximal pondéré ( MAX-SAT )
Utilisez un solveur pour trouver l'ensemble de croyances le plus cohérent, et prenez-les comme vraies

Résultats

Implications

Au-delà de la complexité, une limitation de cette méthode est qu'elle semble ne s'appliquer qu'aux questions qui peuvent être posées comme à choix multiple.
Pour en savoir plus, lisez le .

Extensions

Auto-cohérence

Méthode
Pour les tâches avec un ensemble discret de réponses, un moyen simple d'améliorer la fiabilité consiste à échantillonner plusieurs explications et & réponses du modèle ( en utilisant une température positive ) puis choisissez la réponse finale qui apparaît le plus souvent.
Résultats
Cette technique a soulevé des précisions de 1 à 24 points de pourcentage sur une suite de repères mathématiques et de raisonnement. ( Les résultats ci-dessous sont tirés du modèle LaMDA de Google; en utilisant le plus grand modèle PaLM de Google, les niveaux de référence étaient plus élevés mais les gains étaient un peu plus faibles. )
Implications
Bien que cette technique soit simple à mettre en œuvre, elle peut être coûteuse. La génération d'un ensemble de 10 réponses augmentera vos coûts de 10x.
De plus, comme pour bon nombre de ces techniques, il ne s'applique qu'aux tâches avec un ensemble limité de réponses. Pour les tâches ouvertes où chaque réponse est unique ( comme l'écriture d'un poème ), il n'est pas évident ce que cela signifierait de choisir la réponse la plus courante.
Enfin, cette technique devrait être plus bénéfique lorsqu'il existe plusieurs chemins ou phrasings pour obtenir une réponse; s'il n'y a qu'un seul chemin, la technique peut ne pas aider du tout. Un exemple extrême: si la tâche devait générer une seule réponse symbolique, prendre le jeton le plus courant à partir de 100 générations ne serait pas différent de prendre le jeton avec les logprobs les plus élevés ( que vous pouvez obtenir avec une seule génération à température = 0 ).

Vérificateurs

Une autre technique clé pour améliorer les performances des tâches consiste à former un modèle de vérificateur ou de discriminateur pour évaluer les sorties du modèle générateur principal. Si le discriminateur rejette la sortie, vous pouvez rééchantillonner le modèle génératif jusqu'à ce que vous obteniez une sortie acceptable. Dans de nombreux cas, il est plus facile de juger une réponse que de créer une réponse, ce qui explique le pouvoir de cette méthode.
Méthode
En 2021, les chercheurs de l'OpenAI ont appliqué cette technique aux problèmes mathématiques des écoles primaires, en utilisant la procédure suivante:
Tout d'abord, ils ont affiné un modèle sur les questions et les solutions
Pour chaque problème de l'ensemble de formation, ils ont généré 100 solutions
Chacune de ces 100 solutions a été automatiquement étiquetée comme correcte ou incorrecte, selon que la réponse finale était correcte
En utilisant ces solutions, certaines étiquetées correctement et certaines étiquetées incorrectes, ils ont affiné un modèle de vérificateur pour classer si une solution de question et de candidat était correcte ou incorrecte
Enfin, au moment du test, le modèle génératif crée 100 solutions à chaque problème, et celui avec le score le plus élevé selon le modèle de vérificateur est choisi comme réponse finale
Résultats
Avec un modèle 175B GPT-3 et 8 000 exemples de formation, cette technique a considérablement augmenté la précision des mathématiques au primaire de ~ 33% à ~ 55%.
Implications
Semblable à la technique d'autoconsistance, cette méthode peut coûter cher, car générer, par exemple, 100 solutions par tâche augmentera vos coûts d'environ ~ 100x.

Théories de la fiabilité

Bien que les techniques ci-dessus varient dans leur approche, elles partagent toutes l'objectif d'améliorer la fiabilité des tâches complexes. Ils le font principalement en:
décomposer les opérations non fiables en opérations plus petites et plus fiables ( par exemple, incitation à la sélection )
en utilisant plusieurs étapes ou plusieurs relations pour rendre la fiabilité du système supérieure à tout composant individuel ( par exemple, l'invite maïeutique )

Modèles graphiques probabilistes

Ce paradigme consistant à essayer de construire un système fiable à partir de composants moins fiables rappelle la programmation probabiliste, et de nombreuses techniques d'analyse de ce domaine peuvent être appliquées à celui-ci.
Dans le papier Modèle de langue Cascades, David Dohan et al. interpréter les techniques ci-dessus dans le paradigme des modèles graphiques probabilistes:
Chaîne de pensée incitant
Chaîne de pensée affinée / Raisonnement autodidacte
Indication de l'inférence de sélection
Vérificateurs
Implications
Bien que la formulation de ces techniques en tant que modèles graphiques probabilistes puisse ne pas être immédiatement utile pour résoudre un problème particulier, le cadre peut être utile pour sélectionner, combiner et découvrir de nouvelles techniques.

Pensées de clôture

La recherche de grands modèles linguistiques est très active et évolue rapidement. Non seulement les chercheurs continuent d'améliorer les modèles, mais ils continuent également d'améliorer notre compréhension de la meilleure façon d'utiliser les modèles. Pour souligner le rythme de ces développements, notez que tous les articles partagés ci-dessus ont été publiés au cours des 12 derniers mois ( comme je l'écris en septembre 2022 ).
À l'avenir, attendez-vous à ce que de meilleurs modèles et de meilleures techniques soient publiés. Même si les techniques spécifiques ici sont éclipsées par les meilleures pratiques futures, les principes généraux qui les sous-tendent resteront probablement un élément clé de la boîte à outils de tout utilisateur expert.


Bibliography

Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.