Comment expliquer intuitivement ce qu'est un noyau?

98

De nombreux classificateurs d'apprentissage machine (par exemple, les machines à vecteurs de support) permettent de spécifier un noyau. Quelle serait une manière intuitive d'expliquer ce qu'est un noyau?

Un aspect auquel j'ai pensé est la distinction entre les noyaux linéaires et non linéaires. En termes simples, je pourrais parler de «fonctions de décision linéaires» et de «fonctions de décision non linéaires». Cependant, je ne sais pas si appeler un noyau une "fonction de décision" est une bonne idée.

Suggestions?

touche dièse
la source

Réponses:

114

Le noyau est une manière de calculer le produit scalaire de deux vecteurs et dans un espace de fonctions (éventuellement de très grande dimension), raison pour laquelle les fonctions du noyau sont parfois appelées "produit scalaire généralisé".xy

Supposons que nous ayons un mappage qui amène nos vecteurs dans vers un espace de fonctions . Alors le produit scalaire de et dans cet espace est . Un noyau est une fonction qui correspond à ce produit scalaire, c'est-à-dire .φ:RnRmRnRmxyφ(x)Tφ(y)kk(x,y)=φ(x)Tφ(y)

Pourquoi est-ce utile? Les noyaux permettent de calculer les produits scalaires dans certains espaces sans même savoir ce qu'est cet espace et ce qu'est .φ

Par exemple, considérons un simple noyau polynomial avec . Cela ne semble pas correspondre à une fonction de mappage , c'est juste une fonction qui retourne un nombre réel. En supposant que et , développons cette expression:k(x,y)=(1+xTy)2x,yR2φx=(x1,x2)y=(y1,y2)

k(x,y)=(1+xTy)2=(1+x1y1+x2y2)2==1+x12y12+x22y22+2x1y1+2x2y2+2x1x2y1y2

Notez que ce n’est rien d’autre qu’un produit scalaire entre deux vecteurs et , et . Ainsi, le noyau calcule un produit scalaire dans Espace à 6 dimensions sans visiter explicitement cet espace.(1,x12,x22,2x1,2x2,2x1x2)(1,y12,y22,2y1,2y2,2y1y2)φ(x)=φ(x1,x2)=(1,x12,x22,2x1,2x2,2x1x2)k(x,y)=(1+xTy)2=φ(x)Tφ(y)

Un autre exemple est le noyau gaussien . Si nous développons cette fonction de Taylor, nous verrons qu'elle correspond à une codomaine de dimension infinie de .k(x,y)=exp(γxy2)φ

Enfin, je recommanderais un cours en ligne "Learning from Data" du professeur Yaser Abu-Mostafa, qui constitue une bonne introduction aux méthodes basées sur le noyau. En particulier, les conférences "Machines à vecteurs de support" , "Méthodes du noyau" et "Fonctions de base radiales" concernent les noyaux.

Alexey Grigorev
la source
2
Définition actuelle du tag: "Intuitif: questions qui cherchent une compréhension conceptuelle ou non mathématique de la statistique." Aucune indication claire si conceptuel est traité comme synonyme de non mathématique.
rolando2
40

Une façon très simple et intuitive de penser aux noyaux (du moins pour les SVM) est une fonction de similarité. Avec deux objets, le noyau génère un score de similarité. Les objets peuvent être n'importe quoi à partir de deux entiers, deux vecteurs à valeurs réelles, des arbres, à condition que la fonction du noyau sache les comparer.

L'exemple le plus simple sans doute est le noyau linéaire, également appelé produit à points. Étant donné deux vecteurs, la similarité est la longueur de la projection d'un vecteur sur un autre.

Un autre exemple de noyau intéressant est le noyau gaussien. Étant donné deux vecteurs, la similarité diminuera avec le rayon de . La distance entre deux objets est "repondérée" par ce paramètre de rayon.σ

Le succès de l'apprentissage avec les noyaux (encore une fois, du moins pour les SVM), dépend très fortement du choix du noyau. Vous pouvez voir un noyau comme une représentation compacte de la connaissance de votre problème de classification. C'est très souvent un problème spécifique.

Je n'appellerais pas un noyau une fonction de décision puisque le noyau est utilisé dans la fonction de décision. Si un point de données est à classer, la fonction de décision utilise le noyau en comparant ce point de données à un certain nombre de vecteurs de support pondérés par les paramètres appris . Les vecteurs de support sont dans le domaine de ce point de données et, le long des paramètres appris, est trouvé par l'algorithme d'apprentissage.αα

Vladislavs Dovgalecs
la source
Le produit ponctuel et la projection ne sont pas tout à fait identiques.
Mardi
Dans le cas de SVM, je pense que les noyaux sont des mesures de distance dans différents espaces. Cela correspond à l’idée selon laquelle un SVM généralise un classificateur de vecteur de support. En général, les noyaux peuvent être plus compliqués.
Aginensky
30

Un exemple visuel d'aide à l'intuition

Considérez le jeu de données suivant où les points jaune et bleu ne sont clairement pas séparables linéairement dans deux dimensions.

entrez la description de l'image ici

Si nous pouvions trouver un espace de dimension supérieure dans lequel ces points étaient séparables linéairement , nous pourrions alors procéder comme suit:

  • Mappez les entités d'origine sur l'espace supérieur du transformateur (mappage des entités)
  • Effectuer une SVM linéaire dans cet espace supérieur
  • Obtenir un ensemble de poids correspondant à l'hyperplan des limites de décision
  • Mappez cet hyperplan dans l'espace 2D d'origine pour obtenir une limite de décision non linéaire.

Il existe de nombreux espaces de dimension supérieure dans lesquels ces points sont séparables linéairement. Voici un exemple

x1,x2:→z1,z2,z3
z1=2x1x2  z2=x12  z3=x22

C'est ici que l'astuce du noyau entre en jeu. Citer les bonnes réponses ci-dessus

Supposons que nous ayons un mappage qui amène nos vecteurs dans vers un espace de fonctions . Alors le produit scalaire de et dans cet espace est . Un noyau est une fonction correspondant à ce produit scalaire, c’est-à-direφ:RnRmRnRmxyφ(x)Tφ(y)kk(x,y)=φ(x)Tφ(y)

Si nous pouvions trouver une fonction du noyau équivalente à la carte des fonctionnalités ci-dessus, nous pourrions alors brancher la fonction du noyau dans le SVM linéaire et effectuer les calculs de manière très efficace.

Noyau polynomial

Il s’avère que la carte de caractéristiques ci-dessus correspond au noyau polynomial bien connu : . Soit et on obtientK(x,x)=(xTx)dd=2x=(x1,x2)T

k((x1x2),(x1x2))=(x1x2+x2x2)2=2x1x1x2x2+(x1x1)2+(x2x2)2=(2x1x2 x12 x22) (2x1x2x12x22)

k((x1x2),(x1x2))=ϕ(x)Tϕ(x)

ϕ((x1x2))=(2x1x2x12x22)

Visualiser la carte de caractéristiques et la ligne de démarcation résultante

  • Le graphique de gauche montre les points tracés dans l'espace transformé ainsi que l'hyper plan de la limite linéaire du SVM.
  • Le graphique de droite montre le résultat dans l'espace 2D d'origine

entrez la description de l'image ici


La source

Xavier Bourret Sicotte
la source
4

Très simplement (mais avec précision) un noyau est un facteur de pondération entre deux séquences de données. Ce facteur de pondération peut affecter plus de poids à un " point de données " à un " moment donné " que l'autre " point de données ", ou attribuer un poids égal ou attribuer plus de poids à l'autre " point de données ", etc.

De cette façon, la corrélation ( produit scalaire ) peut attribuer plus "d'importance" à certains points que d'autres et ainsi gérer les non-linéarités (par exemple, les espaces non plats ), les informations supplémentaires, le lissage des données , etc.

Encore une autre manière, un noyau est un moyen de changer les dimensions relatives (ou unités de dimension ) de deux séquences de données afin de faire face aux choses mentionnées ci-dessus.

Troisièmement (apparenté aux deux précédents), un kernal est un moyen de mapper ou de projeter une séquence de données sur l’autre de manière individuelle en prenant en compte des informations ou des critères donnés (par exemple, espace courbe, données manquantes, etc.). ré-commande et ainsi de suite). Ainsi , par exemple un noyau donné peut étirer ou rétrécir ou culture ou plier une séquence de données afin d'adapter ou carte 1 à 1 sur l'autre.

Un noyau peut agir comme un Procrustes afin de " s'adapter au mieux "

Nikos M.
la source
Je pense que vous parlez peut-être de noyaux dans le sens de l’estimation de la densité de noyaux, et non des noyaux Mercide semi-finis utilisés dans les SVM et les méthodes associées.
Dougal
@Dougal, dans le sens de cette réponse, le noyau est une fonction ou une mesure de pesage utilisée pour corréler des données de manière spécifique ou pour exploiter certaines fonctionnalités de données, de sorte que les méthodes du noyau SVM sont également couvertes
Nikos M.