Tilelli  /  Tilelli Med  /  Méthodes

méthodes techniques

Comment le modèle est construit.

Une description technique brève et honnête. Ce que nous avons fait, comment nous l'avons évalué, et ce que nous n'avons pas fait.

Modèle de base

Nous utilisons ComplEx (Trouillon et al., 2016) : une fonction de score par factorisation tensorielle à valeurs complexes sur des triplets (tête, relation, queue). Pour un triplet (h, r, t), le score est la partie réelle de <h, r, conj(t)> sur des plongements complexes.

Nous ajoutons le régularisateur N3 (Lacroix et al., 2018), une régularisation de puissance tensorielle L3 qui domine systématiquement L2/Frobenius pour les modèles de la famille ComplEx, et les relations réciproques : chaque triplet d'entraînement (h, r, t) est augmenté avec (t, r⁻¹, h). La recette combinée (« ComplEx-N3 ») est le niveau de référence publié sur les benchmarks standards de graphes de connaissances.

Entraînement

Compression ternaire

Les tables réelle et imaginaire de chaque entité sont quantifiées indépendamment dans {−1, 0, +1} avec une petite échelle flottante par bloc. La taille de bloc B est le bouton : B=1 signifie une échelle unique par ligne (compression maximale), B=512 une échelle par dimension (pas de compression). À B=128, on obtient 5,3× de compression des tables d'entités et le modèle dépasse encore le classement TransE d'OGBL.

Évaluation

Nous utilisons le protocole filtré officiel d'OGB : chaque triplet de test est livré avec 500 négatifs contraints par type, déjà filtrés contre les splits train + valid + test. Nous classons l'or contre (or + 500 négatifs) côté tête et queue, et rapportons le rang réciproque moyen.

Reproductibilité multi-graines

Nous avons entraîné 3 modèles ComplEx-N3 indépendants avec graines 1, 2, 3 :

GraineMRR ValidationHits@1Hits@10
10,83780,7740,946
20,84270,7860,945
30,84360,7850,949
Moyenne ± écart0,8414 ± 0,0030,782 ± 0,0050,947 ± 0,002

Un écart de 0,003 entre graines signifie que le résultat est stable.

Balayage de compression (test)

BlocMRRHits@1Hits@10Compression
Maître flottant0,8470,7900,949
B=2560,7940,7170,9393,2×
B=1280,7520,6670,9235,3×
B=640,7300,6370,9148,0×
B=1 (par ligne)0,6960,5920,90115,8×

Repères du classement : TransE 0,745, RotatE 0,799, ComplEx 0,810. Notre ternaire B=128 dépasse TransE ; B=256 se situe entre TransE et RotatE.

Tête d'accord (confiance par requête)

Nous avons entraîné un petit MLP qui prend les plongements flottants (h, r) et prédit si l'élève ternaire sera d'accord avec le maître flottant sur le top-1 queue pour cette requête. Cela donne un signal de confiance par requête — cliniquement utile, car « est-ce que le modèle bon marché est fiable pour ce cas ? » est la vraie question.

C'est l'analogue médical de la métacognition de style NEO que nous mesurons sur les modèles de chat de pointe — exposée non comme un signal de boîte noire mais comme un petit prédicteur auditable dont l'AUC et le Brier sont rapportés à chaque version.

Pipeline de prédiction de candidats

Pour une maladie cible D (UMLS CUI) :

  1. Localiser l'ID d'entité de D dans l'espace maladie d'OGBL-biokg.
  2. Pour chaque médicament, calculer le score du triplet (médicament, drug-disease, D) avec chaque maître par graine ; moyenner sur les graines.
  3. Filtrer les médicaments qui apparaissent déjà dans un triplet (médicament, drug-disease, D) des splits train, valid ou test d'OGBL-biokg.
  4. Retourner les 20 meilleurs par score moyen, avec l'écart-type entre graines comme colonne de stabilité.
  5. Pour chaque candidat, consulter les indications via l'API ChEMBL drug-indication (avec UniChem pour mapper PubChem CID → ChEMBL ID) et l'API GraphQL Open Targets. Marquer les candidats ayant au moins une indication pour D.

Ce que nous n'avons pas fait

Références