La plupart des bancs TinyML publiés sont faux de l'une de cinq façons précises, et nous en avons livré quatre sur cinq nous-mêmes. Voici la liste que nous appliquons avant qu'un chiffre ne sorte, écrite comme ce qui a mal tourné plutôt que comme des conseils.
1 · Choisir la meilleure époque sur le jeu de test
L'erreur la plus fréquente. Vous entraînez, vous évaluez chaque époque sur le test, vous gardez la meilleure. Le chiffre obtenu est réel au sens où le modèle l'a vraiment atteint, et non reproductible au sens où il ne le refera pas ailleurs. Vous avez utilisé le test comme validation ; il n'est plus mis de côté.
Nous avons livré 0,9223 ainsi. Le chiffre sans fuite pour le même réseau est 0,9095.
2 · Mélanger une série temporelle
Si les lignes consécutives sont corrélées — les données de capteur le sont toujours — une découpe aléatoire met l'échantillon t à l'entraînement et t+1 au test. Le modèle n'a pas à généraliser, il lui suffit de se souvenir.
Pour tout ce qui est porté, la découpe doit être par sujet. Pour tout ce qui est ordonné dans le temps, chronologique. Nous avons un tableau de têtes dont les gains apparents sont passés de quatre à un quand la découpe est passée de mélangée à chronologique.
3 · Une référence sous-entraînée
Une comparaison n'a de sens qu'à budget égal. Si votre modèle a 30 époques et la référence 15, vous avez mesuré votre patience, pas votre architecture. Sur notre page UCI HAR, l'adversaire est entraîné à budget égal. La configuration TFLite plus faible atteint 0,8958, ce qui nous aurait flattés de 1,4 point.
4 · Une référence codée en dur ou publiée
La pire, parce qu'elle ressemble à une mesure. Une constante dans un script —
tflm = 0.8945 — que personne n'a réexécutée. Nous avons trouvé huit cas de
cette classe dans notre propre code en un seul audit. La règle appliquée désormais : la
logique de verdict lit le chiffre adverse dans le fichier de résultat d'un run que
nous avons exécuté, et refuse de tourner si ce fichier est absent.
5 · Annoncer la meilleure graine
Entraînez cinq fois : la dispersion sur un petit modèle est grande. Annoncez le maximum et vous avez annoncé un tirage à pile ou face. Nous avons annoncé un gain ternaire de +0,7 point sur une graine et avons dû le retirer.
La barre : moyenne ± écart-type sur au moins cinq graines, et une différence revendiquée doit dépasser environ 2·SE et tenir sur la grande majorité des graines.
La liste
- Le test est-il noté exactement une fois, la sélection se faisant sur une validation extraite de l'entraînement ?
- La découpe est-elle par sujet ou chronologique, jamais mélangée ?
- La référence a-t-elle eu les mêmes époques, le même effort de réglage, les mêmes données ?
- Chaque chiffre vient-il d'un run que vous avez exécuté, avec l'artefact sur disque ?
- Le chiffre publié est-il une moyenne sur ≥5 graines avec son écart-type ?
- L'artefact mesuré est-il celui que vous déploieriez vraiment ?
Si une réponse est non, le mot honnête est égalité, perte ou non vérifié.