Comment fonctionne un LLM (4/6) : du neurone artificiel aux réseaux
Qui a écrit cette série ?
Cette série a été pilotée, critiquée et validée par Alex, qui en a fixé le plan, les règles de sources et le ton. Les textes ont été rédigés en co-écriture avec Claude (Anthropic) : Claude a proposé des plans, des calculs, des sources et des formulations, qu’Alex a relus, corrigés ou refusés. Alex est responsable du contenu publié.
Le mot « neurone » revient partout dès qu’on parle d’intelligence artificielle. Dans cet épisode, il est pris pour ce qu’il est : une métaphore. Un neurone artificiel est un petit calcul, et nous allons le faire à la main, nombre par nombre.
L’épisode 3, « L’attention », a montré comment un vecteur change selon ses voisins. Il s’est terminé sur une question : qui règle les matrices du calcul, puisque personne ne les écrit à la main ? Cet épisode y répond en changeant de niveau : la brique de calcul elle-même, son empilement en réseau, et la façon dont le réseau apprend, par petites corrections successives. Les exemples sont inventés, refaisables à la main.
Prenons la phrase « le chat dort ». Le modèle la transforme en vecteurs, comme à l’épisode 2, puis les fait passer dans des couches de calcul. Que fait, à chaque étape, un nombre placé dans un neurone ?
Ce que vous saurez à la fin
- Calculer la sortie d’un neurone : somme pondérée des entrées, plus un biais, puis une fonction d’activation.
- Expliquer pourquoi l’activation doit être non linéaire, et ce qui se passe si on l’omet.
- Lire un réseau par couches : une couche transforme un vecteur en un autre vecteur.
- Décrire l’apprentissage comme une descente de pente sur la perte, avec un taux d’apprentissage, et voir ce qui arrive quand le pas est trop grand.
- Dire ce qu’est le mot « neurone » comme métaphore, et où l’analogie avec le cerveau s’arrête.
1. Un neurone, c’est une somme pondérée
Un neurone reçoit une liste de nombres, x₁, x₂, et chaque entrée est multipliée par un poids. On ajoute ensuite un biais. Le résultat, noté z, est la somme pondérée. Le neurone ne fait rien d’autre avant d’appliquer une fonction, dite d’activation.
Exemple inventé : entrées x = (2 ; 1), poids w = (0,5 ; 0,25), biais b = 0,1. Alors z = 0,5 × 2 + 0,25 × 1 + 0,1 = 1 + 0,25 + 0,1 = 1,35.
Les poids et le biais sont les paramètres du neurone : des nombres réglés pendant l’entraînement, comme ceux de l’épisode 1. Les entrées, elles, sont des données, qui changent d’une phrase à l’autre. Le neurone de l’exemple a donc 3 paramètres : deux poids et un biais.
Le calcul de z est un produit scalaire, celui de l’épisode 2 : (2 ; 1) · (0,5 ; 0,25) = 1 + 0,25 = 1,25. On ajoute le biais 0,1 et l’on obtient 1,35. Le neurone compare donc son entrée à son vecteur de poids, puis décale le résultat du biais.
Une image pour la somme pondérée (exemple imaginaire). Vous décidez si vous prenez un parapluie. Le ciel gris compte pour 2 et le vent pour 1. Vous accordez plus de poids au ciel (0,5) qu’au vent (0,25), et votre prudence habituelle ajoute 0,1. Le total, 1,35, c’est la somme pondérée. Le neurone fait la même pesée. Limite : ici, c’est vous qui fixez les poids ; dans un réseau, ils sont appris.
2. L’activation, et pourquoi elle doit être non linéaire
z est un nombre. On lui applique une fonction d’activation. Deux à connaître : la ReLU, max(0 ; z), qui garde z s’il est positif et met 0 sinon ; et la sigmoïde, 1 / (1 + e^(−z)), qui ramène toute valeur entre 0 et 1.
Pour z = 1,35, la ReLU donne 1,35 et la sigmoïde donne environ 0,79. Pour z = −0,65 (entrées x = (−2 ; 1), mêmes poids et biais), la ReLU donne 0 : le neurone est « éteint ».
Une image pour la ReLU (exemple imaginaire). Une prime de vente est versée selon l’écart entre vos ventes et l’objectif. Si l’écart est négatif (−0,65), la prime est nulle. S’il est positif, elle grandit comme l’écart : 1,35 donne 1,35. La ReLU fait exactement cela : elle coupe les valeurs négatives et laisse passer les autres. Limite : la prime est une règle écrite à l’avance, et un neurone réel n’envoie pas une valeur proportionnelle, mais des impulsions dont la fréquence varie.
Pourquoi l’activation n’est pas facultative
Sans activation, empiler des couches ne sert à rien. Prenons deux fonctions linéaires, exemples inventés : f(x) = 2x + 1, puis g(y) = 3y − 1. Appliquer f puis g donne g(f(x)) = 3(2x + 1) − 1 = 6x + 2. C’est encore une fonction linéaire : une seule étape suffirait.
Une droite ne peut pas dessiner un coude. La non-linéarité, apportée par l’activation, est ce qui permet à l’empilement de faire plus qu’un calcul unique.
D’autres fonctions d’activation existent, et les modèles en choisissent selon leur architecture : la ReLU sert d’exemple, pas de règle. Glorot, Bordes et Bengio (2011) ont étudié les unités ReLU et montré qu’elles facilitent l’entraînement de réseaux profonds.
3. Une couche, puis un réseau
Une couche est un ensemble de neurones qui lisent le même vecteur d’entrée. Chaque neurone a ses propres poids et son propre biais. Sa sortie est un nouveau vecteur, dont la longueur est le nombre de neurones de la couche. Un réseau enchaîne les couches : la sortie de l’une devient l’entrée de la suivante.
C’est le lien avec l’épisode 2 : une couche transforme un vecteur en un autre. Les poids d’une couche peuvent se ranger dans un tableau de nombres, une matrice. C’est une manière de les ranger, pas un objet nouveau.
Reprenons l’entrée (2 ; 1) avec une couche de deux neurones. Le premier a les paramètres de la section 1 : sortie 1,35. Le second a les poids (−1 ; 2) et le biais −0,5 : z = −1 × 2 + 2 × 1 − 0,5 = −0,5, et la ReLU donne 0. La sortie de la couche est le vecteur (1,35 ; 0). Une couche de dimension 2 a donc transformé un vecteur à 2 coordonnées en un autre vecteur à 2 coordonnées.
Ajoutons un neurone de sortie, de poids (1 ; −1) et de biais 0,5 (exemple inventé) : 1 × 1,35 + (−1) × 0 + 0,5 = 1,85, et la ReLU laisse 1,85. Le réseau a 2 entrées, 2 neurones cachés et 1 sortie : c’est un réseau « 2-2-1 », avec 9 paramètres (4 poids et 2 biais dans la couche cachée, 2 poids et 1 biais en sortie).
La couche cachée n’est ni l’entrée ni la sortie. Ses valeurs, (1,35 ; 0), sont des calculs intermédiaires : c’est elle qui fait le travail entre l’entrée et la sortie.
Un LLM n’a pas 9 paramètres, mais des milliards. GPT-3 en compte 175 milliards (publié, arXiv 2005.14165), et Llama 3 405B en compte 405 milliards (publié, arXiv 2407.21783).
4. Mesurer l’erreur : la perte
Pour apprendre, il faut un nombre qui mesure l’écart entre ce que le modèle produit et ce qu’il devrait produire : la perte. Dans l’épisode 1, elle est définie par le logarithme de la probabilité donnée au token qui figurait réellement dans le texte : la perte vaut −ln(p). Plus p est petit, plus la perte est grande.
Les chiffres de l’épisode 1 restent valables : si le bon token reçoit 0,10, la perte vaut −ln(0,10) ≈ 2,30 ; avec 0,38, elle tombe à −ln(0,38) ≈ 0,97.
Pour relier cela au neurone, supposons (exemple fictif et simplifié) que la sortie sigmoïde soit la probabilité donnée au bon token. Pour z = 1,35, cette probabilité vaut 0,7941 et la perte vaut −ln(0,7941) ≈ 0,23.
Attention, deux pertes dans cette série
Dans la section 5, la perte est une parabole simplifiée, (w − 3)², et non −ln(p). Elle permet de faire les calculs à la main. C’est une simplification explicite : la perte réelle d’un LLM est celle de l’épisode 1, −ln(probabilité).
5. Apprendre : descendre la pente
Imaginez une douche. L’eau sort à 30 °C, et vous voulez 38 °C. Vous tournez le robinet d’un petit cran vers le chaud, vous attendez, et vous sentez la température. Elle est encore trop froide : vous tournez encore. Si vous passez à 44 °C, vous revenez en arrière, d’un cran plus petit. (Exemple imaginaire.)
Vous venez de faire une descente de gradient sans le savoir. Vous mesurez l’écart entre ce que vous avez et ce que vous voulez, puis vous corrigez dans le bon sens, d’une quantité proportionnelle à l’écart. Le « petit cran » a un nom : c’est le taux d’apprentissage. Il peut être trop petit, ou trop grand :
- Cran trop petit : on finit par atteindre 38 °C, mais très lentement.
- Cran trop grand : on passe du froid au brûlant, on revient, et on oscille sans jamais s’arrêter sur la bonne température.
Le même geste, pour un calcul
Un réseau n’a pas de thermomètre qui lui donne la bonne réponse. Il a une perte : un nombre qui dit à quel point il s’est trompé (épisode 1). Imaginez une vallée en forme de bol. La hauteur du bol, c’est la perte. La position sur le fond, c’est la valeur d’un réglage, noté w. Le but est d’atteindre le fond, là où la perte est la plus basse.
Exemple fictif et simplifié : la perte est f(w) = (w − 3)², une parabole dont le fond est en w = 3, où la perte vaut 0. Pour savoir où aller, on regarde la pente : de combien la perte change quand on bouge w d’un tout petit peu. En w = 0, la pente vaut −6. Elle est négative : la perte baisse quand w augmente. Il faut donc aller vers la droite.
La règle de mise à jour est : nouveau w = ancien w − taux × pente. La pente étant négative, on retranche un nombre négatif, donc w augmente. Avec un taux de 0,1 : w = 0 − 0,1 × (−6) = 0,6. Le tableau suit ces pas, un par un.
| Pas | w avant | pente 2(w − 3) | w après | perte après le pas |
|---|---|---|---|---|
| 1 | 0 | −6 | 0,6 | 5,76 |
| 2 | 0,6 | −4,8 | 1,08 | 3,6864 |
| 3 | 1,08 | −3,84 | 1,464 | 2,3593 |
| 4 | 1,464 | −3,072 | 1,7712 | 1,5099 |
Après deux pas, w = 1,08 et la perte vaut (1,08 − 3)² = 3,6864 : elle est passée de 9 à 3,69 en deux pas. Trois tailles de pas se comparent :
- Taux 0,1 : les pas se rapprochent du fond, en w = 3, et la perte baisse à chaque pas.
- Taux 1,0 : w passe de 0 à 6, puis revient à 0. La perte vaut 9 à chaque pas : le pas est trop grand, et le calcul oscille.
- Taux 1,1 : w passe à 6,6, puis à −1,32, puis à 8,184, puis à −3,2208. La perte augmente à chaque pas (de 12,96 à 38,70) : le calcul diverge.
« Plus grand » ne veut donc pas dire « plus rapide ». Un pas trop grand dépasse le fond du bol, et le calcul peut s’en éloigner au lieu de converger.
Ce calcul ne porte que sur un seul réglage. Un LLM en a des milliards, et chacun a sa propre pente. Ces pentes sont estimées sur des lots d’exemples, et non sur une parabole aussi simple : c’est une des raisons pour lesquelles l’entraînement est si coûteux, comme le montre l’épisode 1.
En une phrase
Apprendre, c’est bouger chaque réglage d’un petit pas dans le sens qui fait baisser l’erreur. Le taux d’apprentissage règle la taille du pas, et un pas trop grand fait osciller le calcul.
Rétropropagation : l’idée, sans la formule
Dans un réseau à plusieurs couches, il faut la pente de la perte par rapport à chaque poids. La rétropropagation est le calcul qui les obtient : il part de la sortie et remonte couche par couche. Rumelhart, Hinton et Williams l’ont popularisée en 1986 (voir les références).
Cet épisode ne détaille pas la règle de la chaîne qui la rend possible. Retenez l’essentiel, déjà vu à l’épisode 1 : c’est un calcul qui indique, pour chaque paramètre, dans quel sens le modifier pour réduire la perte.
6. Le neurone, une métaphore
Le mot vient de la biologie. Il faut dire ce qui a été gardé de ce modèle, et ce qui a été jeté.
Qu’est-ce qui a été gardé, et qu’est-ce qui a été jeté ?
Gardé : l’idée de combiner des signaux reçus, chacun avec une force différente, puis de produire une réponse par une fonction d’activation.
Jeté : presque tout le reste. Un neurone biologique reçoit des signaux de nombreuses autres cellules, produit des impulsions électriques dans le temps, et son fonctionnement dépend de nombreux mécanismes chimiques. Le neurone artificiel de cet épisode n’émet pas d’impulsion et ne traite pas de signal dans le temps.
Les chiffres du cerveau : pour un homme adulte, environ 86 milliards de neurones (86,1 ± 8,1 milliards, publié : Azevedo et al., 2009), et à peu près autant de cellules non neuronales (84,6 ± 9,8 milliards, publié). Le chiffre de « 100 milliards », souvent cité, n’est pas celui de cette étude.
La correction des poids : la rétropropagation n’est pas un processus établi dans le cerveau. Le réseau de cet épisode n’a pas non plus de boucles : chaque couche ne lit que la précédente.
Une métaphore utile, à condition de savoir où elle s’arrête.
Ce que la biologie apporte, en images
Le sentier dans l’herbe (image pour la plasticité, exemple imaginaire). Dans un parc, les gens passent toujours au même endroit. Au fil des semaines, l’herbe disparaît et un chemin se creuse : plus le passage est fréquent, plus le chemin est marqué. Dans le cerveau, les connexions entre neurones se renforcent de façon comparable avec l’usage. C’est la plasticité synaptique, décrite par Donald Hebb en 1949 (paraphrase : les connexions qui participent souvent à faire décharger un neurone se renforcent).
Limite importante : le sentier ne se corrige pas selon une erreur, et il ne peut pas devenir négatif. Les poids de l’exemple, eux, peuvent l’être.
Des impulsions, pas une valeur. Un neurone réel émet des impulsions électriques. Une fois le seuil atteint, chaque impulsion a la même taille : l’intensité est codée par la fréquence des impulsions. Le neurone artificiel, lui, transmet un nombre.
Plus complexe qu’une somme. Une étude de 2021 a montré qu’un neurone pyramidal modélisé en détail demande un réseau profond de 5 à 8 couches pour reproduire son comportement. Il s’agit d’un modèle simulé, publié (Beniaguev, Segev et London, 2021). Le neurone artificiel est donc une version très simplifiée.
L’énergie. Le cerveau humain consomme environ 20 W, valeur souvent citée ; Levy et Calvert (2021) retiennent 17 W. Ce chiffre concerne tout le cerveau, pas seulement le calcul : la comparaison avec les GPU est faite plus bas.
- Azevedo et al., Journal of Comparative Neurology, 2009 (PMID 19226510, PubMed) : nombre de neurones et de cellules non neuronales.
- Donald Hebb, The Organization of Behavior, 1949 : plasticité synaptique (paraphrase, en anglais).
- Beniaguev, Segev et London, « Single cortical neurons as deep artificial neural networks », Neuron, 2021 (preprint bioRxiv 10.1101/613141) : modèle simulé, en anglais.
- Levy et Calvert, PNAS, 2021 (PMC8106317) : estimation de la consommation du cerveau, en anglais.
Cerveau et IA : vitesse, énergie, latence, rendement
Comparer un cerveau et une carte graphique (GPU) demande des précautions : ils ne font pas le même travail. Le tableau pose les chiffres côte à côte, avec leur statut.
| Cerveau humain | IA sur GPU (une carte H100) | |
|---|---|---|
| Délai de réaction ou de réponse | Environ 231 ms pour réagir à un signal visuel simple (moyenne sur 1 469 personnes, publié : Woods et al., 2015) | Non chiffré ici : le délai dépend du matériel, du modèle et de la charge du serveur |
| Puissance | Environ 20 W, valeur souvent citée ; 17 W selon Levy et Calvert, 2021 (publié) | Jusqu’à 700 W pour une carte (publié, NVIDIA) ; environ 10 kW pour un serveur de 8 cartes (publié) |
| Opérations par seconde | Entre 10¹⁵ et 10¹⁸ selon la méthode d’estimation (ordre de grandeur, pas une mesure) | Environ 10¹⁵ en calcul FP16 dense (calcul en demi-précision, sur 16 bits, sans accélération par parcimonie ; fiche NVIDIA, ordre de grandeur) |
| Énergie par réponse | Non chiffrée : aucune tâche commune aux deux | Google publie une médiane de 0,24 Wh pour un prompt de texte (publié par l’entreprise, périmètre large, non revu par des pairs) |
Exemple imaginaire, pour fixer les idées. Une seconde de cerveau au repos consomme 20 W × 1 s = 20 J : c’est l’énergie d’une ampoule LED de 10 W allumée pendant 2 secondes. Une carte H100 à pleine puissance consomme 700 J en une seconde, soit 35 secondes de cerveau. Pendant une minute : 42 000 J contre 1 200 J.
Cela ne dit pas qui est le plus efficace. La carte consomme davantage, mais elle ne produit pas une réponse à elle seule : elle fait partie d’un serveur, d’un centre de données et de logiciels. Le cerveau, lui, gère tout le corps en même temps.
Le rendement, c’est quoi ?
Le rendement est la quantité utile produite, divisée par l’énergie dépensée. Pour une machine, on compte souvent des opérations. Pour un cerveau, il n’existe pas de compte équivalent.
Les estimations pour le cerveau varient de 10¹⁵ à 10¹⁸ opérations par seconde selon la définition retenue. Le rapport avec une carte varie donc d’un facteur allant jusqu’à mille (calcul estimé, avec ces hypothèses). Un rapport sans définition ne veut rien dire.
Le rendement mesure le coût, pas la justesse : une réponse fausse peut coûter autant d’énergie qu’une réponse juste.
Trois précautions avant de comparer :
- Une impulsion nerveuse et une multiplication ne sont pas la même unité de travail.
- Vitesse de signal et vitesse de calcul ne sont pas la même chose : un signal nerveux voyage à quelques dizaines de mètres par seconde, sans dire à quelle vitesse le cerveau calcule.
- Une réponse de machine n’est pas une réaction humaine de 231 ms : ce sont deux tâches différentes. Une machine plus économe n’est pas, pour autant, plus intelligente.
Le coût de l’architecture elle-même est repris à l’épisode 5, et la justesse des réponses à l’épisode 6.
- Woods et al., Frontiers in Human Neuroscience, 2015 (doi 10.3389/fnhum.2015.00131) : temps de réaction visuel simple, en anglais.
- Google, « Measuring the environmental impact of delivering AI at Google Scale », arXiv 2508.15734, août 2025 (annonce de l’entreprise, non revue par des pairs) : consommation médiane d’un prompt, en anglais.
- NVIDIA, fiche technique de la H100 (page « data center » de NVIDIA) : puissance et calcul, en anglais.
- Carlsmith, « How much computational power does it take to match the human brain? », Open Philanthropy, 2020 : ordre de grandeur des opérations du cerveau, en anglais.
7. Exercices, avec corrigés
Exercice 1 (neurone). Entrées (−2 ; 1), poids (0,5 ; 0,25), biais 0,1, activation ReLU. Calculez z puis la sortie. Corrigé : z = 0,5 × (−2) + 0,25 × 1 + 0,1 = −1 + 0,25 + 0,1 = −0,65. ReLU(−0,65) = 0. Le neurone est éteint.
Exercice 2 (linéarité). f(x) = 2x + 1, puis g(y) = 3y − 1. Calculez g(f(x)) et montrez qu’il n’y a pas besoin de deux étapes. Corrigé : g(f(x)) = 3(2x + 1) − 1 = 6x + 2, une seule fonction linéaire. Pour x = 1 : f(1) = 3, g(3) = 8, et 6 × 1 + 2 = 8. Sans activation non linéaire, l’enchaînement ne produit pas plus qu’une couche.
Exercice 3 (descente). f(w) = (w − 3)², départ w = 0, taux 0,1. Calculez les deux premiers pas, puis la perte après deux pas. Que se passe-t-il avec un taux de 1,1 ? Corrigé : pente −6, w = 0,6 ; pente −4,8, w = 1,08 ; perte (1,08 − 3)² = 3,6864. Avec 1,1, w passe à 6,6 puis −1,32 : la perte augmente (12,96 puis 18,66), le pas est trop grand.
Exercice 4 (perte). Le token attendu reçoit la probabilité 0,5. Calculez la perte −ln(0,5). Corrigé : −ln(0,5) = ln 2 ≈ 0,69. Avec une probabilité de 0,10, la perte vaut 2,30 : plus la probabilité baisse, plus la perte monte.
8. À retenir, et la suite
- Un neurone calcule z = somme pondérée + biais, puis applique une activation. La métaphore ne doit pas faire oublier qu’il s’agit d’un calcul.
- L’activation doit être non linéaire : sans elle, empiler des couches ne sert à rien.
- Une couche transforme un vecteur en un autre ; un réseau enchaîne les couches.
- Apprendre, c’est descendre la pente de la perte : le taux d’apprentissage règle la taille du pas, et un pas trop grand fait diverger le calcul.
Un réseau sait ajuster ses poids pour réduire une perte. Mais la somme pondérée est simple : pourquoi les modèles actuels sont-ils si grands, et comment leurs couches s’organisent-elles ? C’est la question de l’épisode 5, « Le Transformer en entier », à lire dans la suite de la série.
Dans cette série
- 1/6 : C’est quoi, au juste ?
- 2/6 : Les vecteurs, quand le sens devient géométrie
- 3/6 : L’attention
- 4/6 : Du neurone artificiel aux réseaux (vous êtes ici)
- 5/6 : Le Transformer en entier
- 6/6 : De la prédiction à la conversation
- Bonus 1 : La chaîne de raisonnement
- Bonus 2 : Le mélange d’experts
- Bonus 3 : Pourquoi des petits modèles
- Bonus 4 : La distillation, ou apprendre d’un professeur
- Bonus 5 : Et demain ?
- Bonus 6 : Pourquoi les LLM sont si bons avec le code informatique ?
- Bonus 7 : La carte comme langage ?
Mini-glossaire
- Neurone artificiel : fonction qui calcule une somme pondérée de ses entrées, plus un biais, puis applique une fonction d’activation. C’est une métaphore : voir la section 6.
- Poids et biais : paramètres du neurone, réglés pendant l’entraînement.
- Fonction d’activation : fonction appliquée au résultat z ; elle doit être non linéaire.
- ReLU : max(0 ; z). Elle garde z s’il est positif, et met 0 sinon.
- Sigmoïde : 1 / (1 + e^(−z)). Elle ramène toute valeur entre 0 et 1.
- Couche : ensemble de neurones qui lisent le même vecteur d’entrée. Sa sortie est un vecteur.
- Couche cachée : couche qui n’est ni l’entrée ni la sortie du réseau.
- Réseau : enchaînement de couches, la sortie de l’une alimentant la suivante.
- Perte : mesure de l’écart entre la sortie du modèle et ce qu’il devrait produire.
- Taux d’apprentissage : taille du pas de la descente de gradient.
- Rappels : épisode 1, perte, descente de gradient, rétropropagation ; épisode 2, vecteur, produit scalaire.
Pour aller plus loin
- Azevedo et al., Journal of Comparative Neurology, 513(5), 2009 (doi:10.1002/cne.21974), en anglais. Publié : 86,1 ± 8,1 milliards de neurones et 84,6 ± 9,8 milliards de cellules non neuronales (chiffres du résumé de l’article, pour le cerveau d’un homme adulte).
- Glorot, Bordes et Bengio, « Deep Sparse Rectifier Neural Networks », AISTATS 2011, PMLR 15, p. 315-323 (proceedings.mlr.press/v15/glorot11a), en anglais.
- Rumelhart, Hinton et Williams, « Learning representations by back-propagating errors », Nature 323, p. 533-536, 1986 (doi:10.1038/323533a0), en anglais.
- Brown et al., « Language Models are Few-Shot Learners », 2020 (arXiv 2005.14165), en anglais : 175 milliards de paramètres pour GPT-3.
- Meta, « The Llama 3 Herd of Models », 2024 (arXiv 2407.21783), en anglais : 405 milliards de paramètres pour Llama 3 405B.
- Michael Nielsen, « Neural Networks and Deep Learning », livre en ligne (neuralnetworksanddeeplearning.com), en anglais.
- Grant Sanderson (3Blue1Brown), « But what is a neural network? », vidéo en anglais (youtube.com/watch?v=aircAruvnKk).