File size: 10,073 Bytes
1162aae
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import streamlit as st
st.set_page_config(layout="wide")
from streamlit_extras.switch_page_button import switch_page

st.markdown(
    """
    ## Bases
    """, unsafe_allow_html=True)
st.markdown(""" """)
st.markdown(""" """)
st.markdown("""
### Qu'est-ce que l'évaluation humaine ?
L'évaluation humaine consiste simplement à demander à des humains d'évaluer des modèles. 
Dans cette page, nous nous intéresserons à l'évaluation post-hoc. C'est-à-dire votre modèle a été entraîné, vous avez une tâche donnée à l'esprit et des humains fournissent des scores.    
""", unsafe_allow_html=True)
st.markdown(""" """)
st.markdown("""
##### Évaluation systématique
Il existe trois façons principales de procéder de manière systématique.

Si **vous ne disposez pas d'un jeu de données**, mais que vous souhaitez explorer un ensemble de capacités, vous fournissez aux humains une tâche et un guide de notation (par exemple : « Essayez de faire en sorte que ces deux modèles produisent un langage toxique ; un modèle obtient 0 s'il est toxique, 1 s'il ne l'est pas »), et l'accès à un (ou plusieurs) modèle(s) avec lesquels ils peuvent interagir, puis vous leur demandez de fournir leurs notes et leur raisonnement.

Si **vous avez déjà un jeu de données** (par exemple : un ensemble d'instructions auquel vous voulez vous assurer que votre modèle ne répondra pas), vous demandez à votre modèle de répondre, et vous fournissez l'instruction, la sortie et les directives de notation aux humains (le modèle obtient 0 s'il répond avec des informations privées, 1 sinon). 

Enfin, si **vous avez déjà un jeu de données et des scores**, vous pouvez demander aux humains d'examiner votre méthode d'évaluation en [annotant les erreurs](https://ehudreiter.com/2022/06/01/error-annotations-to-evaluate/). Cela peut également être utilisé comme un système de notation dans la catégorie ci-dessus.<br>Il s'agit d'une étape très importante pour tester un nouveau système d'évaluation, mais elle relève techniquement de l'évaluation d'une évaluation, c'est pourquoi elle est légèrement hors sujet ici.
    """, unsafe_allow_html=True)

st.info("""
- Pour l'évaluation des modèles de production déjà déployés, vous pouvez également demander l'avis des utilisateurs et procéder à des [tests A/B](https://fr.wikipedia.org/wiki/Test_A/B).
- Les [audits](https://arxiv.org/abs/2401.14462) (évaluation systématique externe des modèles) sont généralement réalisés par des humains mais n'entrent pas dans le cadre de ce guide.
 """)
st.markdown(""" """)
st.markdown("""
##### Évaluation occasionnelle
Il existe deux autres approches pour réaliser une évaluation humaine d'une manière plus occasionnelle.

Les ***vibes-checks*** sont des évaluations manuelles effectuées par des particuliers, généralement sur la base d'instructions non divulguées, afin de se faire une idée générale des performances des modèles dans de nombreux cas d'utilisation (codage, toxicité, etc.). Souvent partagés sur Twitter et Reddit, les résultats constituent principalement des preuves isolées et ont tendance à être très sensibles au biais de confirmation (en d'autres termes, les gens ont tendance à trouver ce qu'ils cherchent). Toutefois, ils peuvent constituer [un bon point de départ pour vos propres cas d'utilisation](https://olshansky.substack.com/p/vibe-checks-are-all-you-need).

Les **arènes** sont des évaluations humaines massives afin de classer les modèles. 
Un exemple bien connu est le [*LMSYS chatbot arena*](https://huggingface.co/spaces/lmsys/chatbot-arena-leaderboard), où des utilisateurs sont invités à échanger avec des modèles en indiquant lequel il trouve meilleur par rapport à un autre. Les votes sont ensuite agrégés dans un [classement Elo](https://fr.wikipedia.org/wiki/Classement_Elo) pour sélectionner le « meilleur » modèle. 
""", unsafe_allow_html=True)
st.markdown(""" """)
st.markdown(""" """)
st.markdown(""" """)
st.markdown(""" """)
st.markdown("""
### Avantages et inconvénients de l'évaluation humaine

##### Généralités

L'évaluation humaine présente plusieurs avantages intéressants ➕ :
- **Flexibilité**<br>Si vous définissez assez clairement ce que vous évaluez, vous pouvez obtenir des scores pour à peu près n'importe quoi !
- **Absence de contamination**<br>Si vous demandez à des humains d'écrire de nouvelles questions pour tester votre système, elles ne devraient pas être présentes dans vos données d'entraînement (si tout va bien).
- **Corrélation avec les préférences humaines**<br>Celle-ci est assez évidente, puisque c'est ce que vous utilisez pour noter. Néanmoins, vous devez vous assurer que les profils des annotateurs sont suffisamment diversifiés pour que vos résultats se généralisent.

Cependant, elle présente également un certain nombre de limites ➖ :
- **Biais de primauté**<br>Les évaluateurs humains ont tendance à estimer la qualité des réponses [sur la base des premières impressions](https://arxiv.org/abs/2309.16349), plutôt que la réalité ou la fidélité. 
- **Biais de tonalité**<br>Les annotateurs via *crowdsourcing* sont notamment très sensibles au ton d'un texte et sous-estiment le nombre d'erreurs factuelles ou logiques dans une réponse affirmative. En d'autres termes, si un modèle dit des choses erronées sur un ton assuré, les évaluateurs humains sont beaucoup moins susceptibles de le remarquer, ce qui pourrait fausser les évaluations en faveur des modèles les plus affirmatifs. Les annotateurs experts sont moins susceptibles d'être victimes de ces biais. 
- **Biais d'auto-préférence**<br>Les humains sont [plus susceptibles de préférer les réponses qui correspondent à leurs opinions ou à leurs erreurs](https://arxiv.org/abs/2310.13548), plutôt que les réponses qui sont correctes sur le plan factuel.
- **Biais d'identité**<br>Les personnes ayant différentes identités ont tendance à avoir des valeurs différentes et évaluent les réponses des modèles très différemment  des autres annotateurs (par exemple sur la [toxicité](https://arxiv.org/abs/2205.00501)).
""", unsafe_allow_html=True)
st.markdown(""" """)
st.markdown("""
##### Évaluation systématique
Avantages de cette approche (en particulier avec des annotateurs rémunérés) ➕ :
- **L'obtention de données de haute qualité**<br>Adaptées à votre cas d'utilisation, sur lesquelles vous pourrez vous appuyer ultérieurement (si vous avez besoin de développer des modèles de préférence, par exemple).
- **Confidentialité des données**<br> Si vous comptez sur des annotateurs humains rémunérés, en particulier en interne, vos jeux de données devraient être relativement sûrs. L'utilisation de LLM d'API fermée pour l'évaluation présente moins de garanties sur ce qui arrive à vos données, puisque vous les envoyez à un service externe.
- **Explicabilité**<br>Les scores obtenus par les modèles seront explicables par les humains qui les ont annotés.

Les inconvénients ➖ :
- **Coût**<br>Si vous payez correctement vos annotateurs, cela peut vite devenir coûteux. 
Il est également probable que vous ayez besoin de séries d'évaluations itératives afin d'affiner vos lignes directrices, ce qui augmente le coût.
- **L'impossibilité de passer à l'échelle**<br>À moins que vous n'évaluiez un système similaire à un en production avec un retour d'information de la part des utilisateurs, les évaluations humaines ne sont pas vraiment évolutives, car chaque nouveau cycle nécessite de mobiliser de nouveaux évaluateurs (et de les payer).
- **Manque de reproductibilité**<br>À moins que vous ne gardiez toujours les mêmes annotateurs et que vos directives soient parfaitement claires, il est probable que certaines évaluations soient difficiles à reproduire avec précision.
    """, unsafe_allow_html=True)
st.markdown(""" """)
st.markdown("""
##### Évaluation occasionnelle
Avantages ➕ :
- **Coût moindre**<br>Vous comptez sur la bonne volonté des gens.
- **Découverte de cas limites**<br>Puisque vous tirez parti de la créativité des utilisateurs d'une manière pratiquement illimitée, vous pouvez découvrir des cas limites intéressants.
- **Meilleure évolutivité**<br>Tant que vous avez de nombreux participants intéressés et volontaires, l'évaluation humaine occasionnelle s'adapte mieux et a un coût d'entrée plus faible. 

Les inconvénients (sans sélection d'annotateur) ➖ :
- **Forte subjectivité**<br>Il est difficile d'imposer une notation cohérente à de nombreux personnes en utilisant des directives générales, d'autant plus que les préférences des annotateurs ont tendance à être [liées à leur culture](https://arxiv.org/abs/2404.16019v1). On peut espérer que cet effet soit atténué par l'ampleur des votes et un effet de « [sagesse de la foule](https://fr.wikipedia.org/wiki/Francis_Galton) ».
- **Non représentativité**<br>Les jeunes hommes occidentaux étant surreprésentés sur les sites technologiques, cela peut conduire à des préférences très biaisées, ne correspondant pas à celles de la population générale, à la fois en termes de sujets explorés et de classement général.
- **Facile à manipuler**<br>Si vous utilisez des annotateurs participatifs non filtrés, il est assez facile pour un tiers de manipuler votre évaluation. Par exemple pour augmenter le score d'un modèle donné (étant donné qu'un certain nombre de modèles ont un style d'écriture distinctif).
    """, unsafe_allow_html=True)


st.markdown(""" """)
st.markdown(""" """)
st.markdown(""" """)
col1, col2, col3= st.columns(3)
with col1:
    if st.button('Section précédente', use_container_width=True):
        switch_page("III._Évaluation_humaine")
with col2:
    if st.button("Accueil", use_container_width=True):
        switch_page("Home")
with col3:
    if st.button("Section suivante", use_container_width=True):
        switch_page("III.2._Utiliser_des_annotateurs_humains")