0. Construire un ensemble de données pour économiser du temps et de l'argent : Étiquetage des données avec ChatGPT
Pour entraîner un modèle d'intelligence artificielle, vous avez besoin d'un ensemble de données composé de paires de "questions" et de "réponses" (selon le critère de l'apprentissage supervisé).
Étiqueter les données avec la réponse, c'est ce qu'on appelle "l'étiquetage".
1. L'importance des données de qualité, qu'est-ce qu'une bonne qualité de données ?
Ceux qui développent directement des modèles d'IA ressentent souvent qu'ils ont "fait le tour" des données.
Bien sûr, pour un bon modèle d'IA, des éléments importants tels que les algorithmes de pointe, le calcul haute performance, etc., sont divers.
Cependant, si vous êtes un junior dans le domaine de l'IA et des données, je pense qu'il est judicieux de prêter attention à la valeur des données en premier lieu. Comme des données de haute qualité.
Qu'est-ce que des données de "bonne qualité" ? Pourquoi est-ce important ?
La plupart des technologies d'IA de pointe reposent sur des modèles d'apprentissage profond basés sur les réseaux neuronaux.
Ces réseaux neuronaux imitent la façon dont les humains apprennent.
J'ai vu de nombreuses fois un nouveau-né dire "maman"
Appeler sa mère "maman" -> données de qualité (étiquetage précis)
Vous avez probablement été témoin de cela de nombreuses fois. -> beaucoup de données
Si un bébé appelle sa mère "papa" -> données de mauvaise qualité (étiquetage incorrect)
Le bébé sera très confus.
Avec le temps, le bébé apprendra à appeler "maman" la personne qui l'a mise au monde, qui s'occupe de lui et le porte. -> apprentissage de motifs
Apprendre des motifs significatifs à partir des données, c'est là l'essence de l'apprentissage des modèles d'intelligence artificielle.
Ce qui facilite cela, ce sont des données de qualité.
Des données de qualité sont de bons enseignants pour les modèles d'IA.
2. Pourquoi confier l'étiquetage à ChatGPT
Comme mentionné précédemment, la quantité et la qualité des données sont importantes.
Cependant, attribuer de bonnes étiquettes à une grande quantité de données est une tâche répétitive qui nécessite une attention constante, ce qui la rend monotone et fastidieuse.
C'est pourquoi de nombreux organismes gouvernementaux et entreprises externalisent souvent le travail d'étiquetage des données à des sous-traitants ou des travailleurs temporaires.
Cependant, comme l'a découvert HashiScrapper, vous êtes inévitablement confronté à divers problèmes.
**Premièrement, il est impossible de garantir des données de qualité.
**Le développeur du modèle d'IA a une direction pour le modèle d'IA qu'il dessine,
et il y a des critères pour l'étiquetage des données en fonction de cette direction.
Même si ces critères sont clairement communiqués aux étiqueteurs, il peut y avoir des variations entre les étiqueteurs
et même un étiqueteur seul peut perdre en concentration pendant des tâches répétitives.
En tant qu'êtres humains, il est difficile d'avoir une parfaite cohérence. (*Erreur humaine)
**Deuxièmement, cela coûte cher.
**Plus il y a de données à traiter, et plus il faut construire rapidement l'ensemble de données, plus il faut de compétences et de main-d'œuvre expérimentée.
Confier l'étiquetage des données à ChatGPT n'est pas parfait non plus, et plus le problème est complexe, plus il peut être difficile de rédiger des instructions pour les prompts.
Cependant, en termes d'économie de coûts, de gain de temps et de cohérence, tout le monde conviendra que c'est très efficace.
De plus, si vous travaillez dans un domaine connexe, vous devez absolument vous familiariser avec les grands modèles linguistiques et apprendre à interagir avec ces modèles.
Je prédis hardiment que l'ingénierie des prompts deviendra une compétence de base pour améliorer l'efficacité au travail à l'avenir.
3. Étiquetage des données avec ChatGPT
Supposons que nous créons un ensemble de données pour l'analyse des sentiments.
3.1 Obtenir une clé API d'OpenAI
Dans ce post, nous n'allons pas étiqueter en ligne, mais utiliser l'API de ChatGPT.
Tout d'abord, connectez-vous à OpenAI via le lien ci-dessous et enregistrez un moyen de paiement pour les appels API.
https://platform.openai.com/
Ensuite, vous devez télécharger la clé API.
Après avoir généré la clé API, assurez-vous de la stocker correctement.
Comme elle n'est exposée qu'une seule fois, si vous l'oubliez, vous devrez la recréer, alors faites attention.
3.2 Rédaction du prompt
text = '맛있는 거 먹어서 기분이 너무 좋다.' # 감정 분석 대상 텍스트
prompt = f'''You're an assistant, labeling data on a consistent basis.
Label the given text with one of the following sentiments: Positive, Negative, or Neutral.
If you can't determine a sentiment, label the text as Neutral.
Do not enclose your output in double or single quotes, just the label.
Follow the example to analyze the sentiment.
given text: 나 너무 우울해
sentiment: Negative
given text: 오늘 아침 일찍 출근했다.
sentiment: Neutral
given text: {text}
sentiment: '''
Il y a quelques conseils pour rédiger le prompt ici,
- Écrit en anglais
En août 2023, les modèles linguistiques ont une limite de tokens.
Vous ne pouvez pas poser des questions infiniment longues, et plus les tokens sont longs, plus cela coûte cher.
ChatGPT est très efficace en termes de tokens pour l'anglais.
En d'autres termes, poser la même question en anglais coûte moins cher.
De plus, en comparant les résultats, ChatGPT s'est avéré être le meilleur en anglais.
- Attribuer un rôle à ChatGPT
Attribuer un rôle avant de rédiger les instructions que ChatGPT doit suivre
- Fournir des exemples
Fournir des directives sur le format et la manière dont les réponses doivent être données
Cela s'appelle également l'apprentissage à quelques exemples.
- Rédiger de manière détaillée mais claire
Cela vise à l'efficacité des tokens et à induire des réponses précises,
expliquer en détail mais de manière aussi simple et claire que possible.
Référez-vous à ces conseils pour rédiger le prompt.
3.3 Demande de réponse API (Paramètres)
response = openai.ChatCompletion.create(
model='gpt-3.5-turbo',
temperature=0,
messages=[
{"role": "user", "content": prompt}
]
)
sentiment = response.choices[0].message['content']
print(f'문장: {text}\n감정: {sentiment}')
문장: 맛있는 거 먹어서 기분이 너무 좋다.
감정: Positive
Si vous exécutez le code tel quel, vous devriez obtenir le même résultat.
Il est bon de consulter les explications suivantes pour certains paramètres.
- température
Le paramètre le plus important.
Ce paramètre contrôle la diversité des réponses du modèle.
Plus la température est élevée, plus les réponses sont diverses et créatives, et plus la température est basse, plus les réponses sont cohérentes.
Comme nous faisons de "l'étiquetage des données", nous allons le régler sur 0 (la valeur la plus basse).
Lorsque le modèle linguistique génère une réponse, il calcule des probabilités pour plusieurs réponses.
Avec 'temperature=0', cela signifie qu'il choisit la réponse la plus probable parmi les réponses générées. Vous le comprendrez en posant des questions plus complexes. Si 'temperature=0', il répétera la même réponse.
De plus, voici pourquoi nous n'avons pas effectué "l'étiquetage des données" en ligne.
1) Pour étiqueter une quantité énorme de données, il faut coder pour les actions répétitives.
2) Le ChatGPT que nous utilisons en ligne a une température spécifique et ne peut pas être ajusté.
- rôle des messages : utilisateur, assistant, système
Dans le code ci-dessus, seuls les messages 'utilisateur' ont été rédigés, mais en réalité, il y a trois types de messages : 'utilisateur', 'assistant' et 'système'.
Le message 'utilisateur' contient les questions ou instructions que l'utilisateur souhaite donner à ChatGPT.
Le message 'assistant' est un message permettant à ChatGPT de se référer aux conversations précédentes.
Si vous discutez avec ChatGPT en ligne, vous verrez que ChatGPT se souvient des conversations précédentes. Cela est possible car lorsque l'utilisateur pose une question, les conversations précédentes sont également transmises à ChatGPT. Cela n'est pas nécessaire pour les tâches simples d'étiquetage.
Le message 'système' spécifie le comportement de ChatGPT.
Nous avons attribué le rôle de ChatGPT dans le message 'utilisateur', mais vous pouvez également le faire dans le message 'système'. Cependant, pour des tâches simples d'étiquetage comme celle-ci, il n'est pas nécessaire de rédiger un message système séparé.
3.4 Et si vous deviez étiqueter une grande quantité de données ?
Jusqu'à présent, nous avons montré l'étiquetage d'une seule donnée. Si vous avez des compétences en développement, étiqueter une grande quantité de données de manière répétée ne devrait pas être trop difficile.
Cependant, il est important de gérer les erreurs générées lors des appels API.
En raison d'un grand nombre d'appels en peu de temps, d'une mauvaise connexion réseau, etc., des erreurs surviennent souvent, et en les gérant, vous pouvez assurer un étiquetage stable.
def sentiment_analyze(text):
prompt = f'''You're an assistant, labeling data on a consistent basis.
Label the given text with one of the following sentiments: Positive, Negative, or Neutral.
If you can't determine a sentiment, label the text as Neutral.
Do not enclose your output in double or single quotes, just the label.
Follow the example to analyze the sentiment.
given text: 나 너무 우울해
sentiment: Negative
given text: 오늘 아침 일찍 출근했다.
sentiment: Neutral
given text: {text}
sentiment: '''
try:
response = openai.ChatCompletion.create(
model='gpt-3.5-turbo',
temperature=0,
messages=[
{"role": "user", "content": prompt}
]
)
sentiment = response.choices[0].message['content']
return sentiment
except:
sentiment = 'error'
return sentiment
df['label'] = df['text'].apply(sentiment_analyze)
4. Combien cela coûte-t-il ?
En août 2023, les modèles les plus utilisés sont 'gpt-3.5-turbo' et 'gpt-4'.
Pour des ensembles de données simples comme l'analyse des sentiments que nous avons utilisée en exemple, le modèle 3.5 est suffisant.
Pour le modèle 'gpt-3.5-turbo', le coût est de 0,0015 $ par tranche de 1 000 tokens pour les questions de l'utilisateur,
et de 0,002 $ par tranche de 1 000 tokens pour les réponses de GPT.
Le prompt utilisé dans l'exemple ne contient que environ 200 tokens.
En calculant simplement, avec 3 $, vous pouvez étiqueter environ 10 000 ensembles de données d'analyse des sentiments.
Cependant, pour des problèmes plus complexes, la rédaction des prompts devient plus détaillée et complexe, et l'utilisation du modèle 3.5 peut atteindre ses limites.
Dans ce cas, il y a beaucoup de choses que vous pouvez résoudre en utilisant le modèle gpt4, mais compte tenu du coût, une décision réfléchie est nécessaire.
5. Conclusion
Si vous avez simplement des tâches d'étiquetage répétitives, il n'est pas nécessaire de hésiter à utiliser ChatGPT en termes de coût et de performances. Cependant, si vous devez confier des tâches complexes nécessitant l'utilisation du modèle GPT4, une réflexion approfondie sur les coûts est nécessaire.
Il y a aussi des inconvénients tels que le fait que cela se limite aux données textuelles, qu'il dépend de la politique de prix d'OpenAI, et qu'il est difficile de créer un modèle d'IA dépassant les performances du modèle GPT avec des données étiquetées.
Cependant, le domaine de l'open source progresse rapidement, et je prédis que ces inconvénients seront résolus dans un avenir proche.
Lors de la construction d'ensembles de données textuelles, je pense qu'il est maintenant prioritaire de considérer cette méthode avant les étiqueteurs humains.
ChatGPT est un assistant peu coûteux qui travaille sans relâche pour vous aider dans votre travail.
J'espère que vous pourrez l'utiliser efficacement pour obtenir ce que vous voulez.




