ajout fichiers modifiés knn, programmation et representation base chapitre 2
This commit is contained in:
@@ -114,6 +114,45 @@ Une fois ces données modélisées, on peut formuler notre algorithme:
|
||||
- Trouver la classification majoritaire parmi les voisins les plus proches
|
||||
- Renvoyer cette classification
|
||||
|
||||
### Application concrète : Google compresse ses modèles IA avec KNN
|
||||
|
||||
Vous venez d'apprendre à trouver le voisin le plus proche d'un point dans un espace de coordonnées. Google utilise exactement ce principe pour réduire la mémoire nécessaire à ses modèles d'IA (comme Gemini).
|
||||
|
||||
**Le problème :** un modèle d'IA contient des milliards de paramètres — des vecteurs de nombres décimaux très précis. Les stocker tels quels nécessite des dizaines de gigaoctets de RAM.
|
||||
|
||||
**La solution (quantification vectorielle) :**
|
||||
1. On construit un petit **dictionnaire** de vecteurs représentatifs (quelques milliers d'entrées)
|
||||
2. Pour chaque vecteur du modèle, on cherche lequel dans le dictionnaire est le **plus proche** — en calculant une distance, exactement comme en KNN
|
||||
3. On stocke uniquement **l'indice** de ce voisin le plus proche, au lieu du vecteur complet
|
||||
|
||||
C'est du KNN avec **K = 1**, appliqué non pas à une classification, mais à une **compression**. Le gain en mémoire peut atteindre un facteur 8.
|
||||
|
||||
```python
|
||||
import math
|
||||
|
||||
vecteur_du_modele = [0.83, -1.47, 0.21]
|
||||
|
||||
dictionnaire = [
|
||||
[1.0, -1.5, 0.0], # indice 0
|
||||
[0.8, -1.4, 0.2], # indice 1
|
||||
[-0.5, 0.3, 1.1], # indice 2
|
||||
]
|
||||
|
||||
def distance(a, b):
|
||||
return math.sqrt(sum((x - y) ** 2 for x, y in zip(a, b)))
|
||||
|
||||
# On cherche le plus proche voisin dans le dictionnaire (K=1)
|
||||
plus_proche = min(range(len(dictionnaire)),
|
||||
key=lambda i: distance(vecteur_du_modele, dictionnaire[i]))
|
||||
|
||||
print(f"On stocke juste l'indice {plus_proche} au lieu de {vecteur_du_modele}")
|
||||
# → On stocke juste l'indice 1 au lieu de [0.83, -1.47, 0.21]
|
||||
```
|
||||
|
||||
> L'algorithme KNN n'est donc pas réservé à la classification : dès qu'on cherche "le plus ressemblant" dans un ensemble connu, on fait du KNN.
|
||||
|
||||
--------------
|
||||
|
||||
### Pour résumer...
|
||||
|
||||
L'algorithme des k plus proches voisins a pour objectif d'identifier les voisins les plus proches d'un point de requête donné, afin d'attribuer une classe à ce point
|
||||
|
||||
Reference in New Issue
Block a user