【原创】实现GPT中Transformer模型之框架概念

 

作者:黑夜路人

时间:2023年7月

GPT是什么意思

GPT的全称是 Generative Pre-trained Transformer(生成型预训练变换模型),它是基于大量语料数据上训练,以生成类似于人类自然语言的文本。其名称中的“预训练”指的是在大型文本语料库上进行的初始训练过程,其中模型学习预测文章中下一个单词,它可以完成各种自然语言处理任务,例如文本生成、代码生成、视频生成、文本问答、图像生成、论文写作、影视创作、科学实验设计等等。

下面我们用大家容易理解的方式简单介绍一下GPT模型的整个工作原理。

上面讲了我们GPT的单词是:Generative Pre-trained Transformer ,简单这三个词语拆解下来就是:

Generative - 生成下一个词

Pre-trained - 文本预训练(互联网各种文字材料)

Transformer - 基于Transformer架构(无监督学习)

GPT用中概括描述就是:通过Transformer 架构进行文本预训练后能够按照给定的文本,生成合理文本延续的模型。(文本接龙)

其中无监督训练中,核心依赖的就是Transformer模型,这是一个优秀的模型,如果说到Transformer框架比较优秀,就需要大概了解一下神经网络在这个过得的迭代发展过程,了解为什么它是一个在AI问答(ChatGPT)中优秀的模型框架。

对于ChatGPT能够取得那么好的一个互动交流的效果,最核心的是GPT机制,GPT机制里面除了预训练( Pre-trained)和人工反馈强化学习(RLHF - Reinforcement Learning from Human Feedback),最基础的就是这个T(Transformer)机制了。

整个Transformer可以简单理解为一个“无监督学习”的“文字接龙”游戏,然后完成整个核心基础大模型的训练,然后通过 RLHF 强化训练让这个LLM(大模型)看起来越来越智能。

Transformer 介绍

Transformer是Google在2017年提出的一种革命性的神经网络结构,最早考虑用于机器翻译任务。它通过注意力机制来建模序列中的长期依赖关系,实现并行计算,解决了循环神经网络中的梯度消失问题,成为序列建模领域的一大突破。

Transformer通过注意力机制建模输入序列的依赖关系,实现高效的并行计算。与循环神经网络(RNN/LSTM)相比,它的训练过程更加稳定,参数量也更少。这使Transformer在各种序列建模任务上表现优异, 它引领了机器学习的很多前沿方向,在NLP和其他序列建模任务中都有广泛的应用,成为目前最为流行的神经网络结构之一。

因为Transformer的出现,也诞生了包括 GPT、LLaMa、Bert 等优秀的预训练

Transformer模型的主要优势包括:

1. 并行计算。Transformer可以并行计算所有时间步,计算速度很快,这是其相比RNN和LSTM的最大优势。

2. 学习长期依赖。Transformer通过Attention机制可以直接建模任意两个时间步之间的依赖关系,可以很好地学习长期依赖,不容易出现梯度消失问题。

3. 训练更稳定。Transformer的非循环结构使其训练过程更加稳定,不容易出现梯度爆炸问题,参数选择也更加灵活。

4. 参数更少。相比RNN和LSTM,Transformer需要的参数更少,尤其在更长序列的任务中参数量的差距更加明显。

5. 无需标定的输入输出。Transformer无需在序列两端添加特殊的开始和结束标记。

Transformer通过注意力机制和非循环网络结构,实现了并行计算和长期依赖学习,训练过程更加稳定,参数量也更少,这使其在很多序列建模任务中展现出强大的性能。

Transformer核心“自注意力机制”:

Le principal problème résolu par le mécanisme d'auto-attention est le problème d'apprentissage de dépendance à long terme dans la modélisation de séquence, qui est l'un des cœurs de Transformer.

Dans la tâche de modélisation de séquence, le modèle doit modéliser la dépendance entre deux éléments quelconques de la séquence, ce qui nécessite les informations de contexte de la séquence entière. Cependant, lorsque la séquence est plus longue et que la distance entre deux éléments est plus grande, la relation de dépendance sera plus difficile à modéliser, ce qui est le problème d'apprentissage de la dépendance à long terme.

Le gradient dans le réseau neuronal récurrent va disparaître ou exploser avec l'augmentation de la longueur de la séquence, il est difficile d'établir la connexion entre des éléments distants et il est impossible d'apprendre efficacement la dépendance à long terme.

Le mécanisme d'auto-attention résout ce problème. Il permet au modèle d'établir directement la connexion entre deux éléments quelconques de la séquence et d'obtenir les informations de contexte de la séquence entière. Grâce à la sommation pondérée, il peut se concentrer sur les éléments pertinents, ignorer les informations non pertinentes et modéliser de manière flexible les dépendances dans les séquences d'entrée.

Plus précisément, le mécanisme d'auto-attention attribue un vecteur de requête, un vecteur de clé et un vecteur de valeur à chaque élément de la séquence d'entrée. Ensuite, il calcule le produit interne du vecteur clé de chaque élément avec les vecteurs de requête de tous les autres éléments pour obtenir les poids d'attention. Enfin, tous les vecteurs de valeur sont pondérés et additionnés avec des poids d'attention pour obtenir le vecteur de contexte de l'élément.

Ce processus fournit à chaque élément les informations de contexte de la séquence entière, établit une connexion entre deux positions quelconques dans la séquence d'entrée et modélise efficacement les dépendances à long terme.

Ainsi, les principaux avantages du mécanisme d'auto-attention sont:

1. Les dépendances dans la séquence peuvent être calculées en parallèle et les informations contextuelles de la séquence entière peuvent être obtenues.

2. Modélisation flexible des dépendances à long terme dans les séquences, moins sujette aux problèmes de gradient de fuite.

3. Obtenez un apprentissage de séquence stable et efficace.

Grâce à la structure parallèle et à la modélisation flexible des dépendances, le mécanisme d'auto-attention résout le problème de l'apprentissage des dépendances à long terme, qui a toujours existé dans l'apprentissage des séquences, et permet à Transformer et à d'autres modèles d'attention de se comparer au RNN/LSTM traditionnel dans diverses tâches de modélisation de séquences. De bons résultats ont été obtenus.

(Pour plus de détails sur la composition interne, merci de vous référer à l'article précédent "Comprendre le principe de fonctionnement de Transformer de ChatGPT")

Logique en couches du transformateur

Besoin de comprendre l'ensemble du code, d'abord avoir une compréhension générale du schéma d'architecture de base de Transformer (traduit en chinois avec le modèle d'image papier)

Sous ce système d'architecture, il est principalement divisé en trois couches :

  • Processus des entrées : traitement des entrées
  • Transformer Block - Encoder : couche d'encodage
  • Transformer Block - Decoder : couche de décodage

Le transformateur apprend la représentation de la séquence d'entrée via l'encodeur, et le décodeur génère une sortie basée sur cela, réalisant un apprentissage de séquence de bout en bout.

Le cœur du modèle Transformer comprend principalement trois parties : Input Embedding, Encoder et Decoder, puis le Transformer se compose des parties suivantes :

Processus d'entrée 层:

  • Inputs Tokenize : Tokenize le contenu d'entrée en jetons
  • Incorporation d'entrée : convertissez les mots en vecteurs de mots et fournissez une représentation matricielle de l'ordre des mots pour la couche Transformer suivante.
  • Codage positionnel : ajoutez un codage positionnel pour coder les informations de position relatives et absolues pour chaque mot de la séquence.

Bloc transformateur - Encodeur (encodeur):

Des représentations de séquences d'entrée peuvent être apprises, qui contiennent des informations de caractéristique et de dépendance des séquences d'entrée. Pour traiter la séquence d'entrée, l'encodeur peut apprendre la représentation de la séquence d'entrée, y compris plusieurs couches identiques, chaque couche contient :

  • Attention à plusieurs têtes (couche d'attention à plusieurs têtes): Grâce à différentes fonctions d'attention et à la concaténation des résultats, la capacité d'expression du modèle est améliorée, et la corrélation entre les mots et les mots et la corrélation des temps à longue distance sont principalement calculées.
  • Couche de normalisation (couche de normalisation) : normalisez chaque neurone de la couche cachée de sorte que la valeur moyenne de sa valeur de caractéristique soit de 0 et que la variance soit de 1 pour résoudre le problème de l'explosion et de la disparition du gradient. Grâce à la normalisation, les données peuvent être compressées dans une plage appropriée, en évitant l'apparition de valeurs super grandes ou petites, ce qui est propice à la formation du modèle, et peut également améliorer la capacité de généralisation du modèle, accélérer la convergence du modèle et réduire la dépendance au paramètre quantités.
  • Réseau Feed Forward : transforme la sortie d'attention.
  • Une autre couche de normalisation (une autre couche de normalisation): la normalisation des poids est utilisée pour normaliser la matrice de poids entre les couches du modèle, et son objectif principal est de résoudre le problème de la disparition du gradient

Bloc transformateur - Décodeur (décodeur):

La séquence de sortie peut être générée en fonction de la représentation et du contexte de l'encodeur, y compris plusieurs couches de décodage, et chaque couche de décodage comprend une couche d'attention multi-tête masquée, une couche d'attention multi-tête et un réseau neuronal à anticipation. Le décodeur peut générer une séquence de sortie en fonction de l'entrée et du contexte. Le décodeur est en fait très similaire à l'encodeur. À l'exception de la partie de traitement du masque, chaque couche contient :

  • Masqué : Couvre les mots de sortie non générés pour empêcher le modèle de voir la sortie à l'avance.
  • Attention multi-tête (couche d'attention multi-tête) : concentrez-vous sur la sortie de l'encodeur et combinez-la avec la représentation intermédiaire du décodeur.
  • Réseau Feed Forward : transforme la sortie d'attention.
  • Couche de normalisation (couche de normalisation) : normalisez chaque neurone de la couche cachée de sorte que la valeur moyenne de sa valeur de caractéristique soit de 0 et que la variance soit de 1.

Suivons ces trois couches pour décrire le principe de description générale et l'implémentation de code spécifique de l'utilisation de Python.

Notez que le code suivant est juste pour la commodité de comprendre l'ensemble du mécanisme technique, cela ne signifie pas qu'il est cohérent avec le code d'implémentation de GPT tel que Open AI, c'est plus juste une référence d'apprentissage.

Introduction à quelques notions de base

Afin de faciliter la compréhension de la compréhension technique ultérieure, certains concepts de base sont d'abord brièvement synchronisés, de manière à faciliter la compréhension de contenus plus complexes.

Réseau neuronal et couches (couche réseau neuronal)

L'apprentissage en profondeur utilise principalement les réseaux de neurones pour mettre en œuvre l'apprentissage automatique.

Un réseau de neurones est un modèle mathématique qui simule l'interconnexion entre les neurones du cerveau humain. Il se compose de plusieurs couches de neurones, chaque couche contient plusieurs neurones et chaque neurone est connecté aux neurones de la couche précédente et de la couche suivante.

Le nombre de couches d'un réseau de neurones fait référence au nombre de couches dans lesquelles les neurones sont disposés dans un certain ordre, comprenant généralement une couche d'entrée, une couche cachée et une couche de sortie. La couche d'entrée reçoit des informations d'entrée externes, la couche de sortie produit le résultat final et la couche cachée effectue le traitement et la transmission des informations entre la couche d'entrée et la couche de sortie.

Différents modèles de réseaux de neurones ont des couches et des structures différentes. Par exemple, le réseau de neurones profond (DNN) contient généralement plusieurs couches cachées, tandis que le réseau de neurones convolutionnel (CNN) contient des couches convolutives et des couches de regroupement. Des structures hiérarchiques spéciales telles que des couches chimiques.

Pour un autre exemple, tel que le framework Transformer développé à partir de LSTM, dans lequel LSTM (Long Short-Term Memory) est un modèle de réseau de neurones couramment utilisé dans la modélisation de séquences, et comprend généralement plusieurs couches d'unités LSTM. Chaque couche du modèle LSTM multicouche contient plusieurs unités LSTM, et chaque unité LSTM contient des composants tels que des portes d'entrée, des portes d'oubli et des portes de sortie, qui peuvent modéliser des dépendances à long terme dans des séquences. Le modèle LSTM multicouche peut améliorer la capacité de représentation et la capacité de généralisation du modèle en augmentant la profondeur du réseau, mais il augmentera également la difficulté de formation et la complexité de calcul du modèle. Dans les applications pratiques, le nombre de couches du modèle LSTM multicouche est généralement compris entre 2 et 4 couches, qui peuvent être ajustées en fonction des caractéristiques de tâches et d'ensembles de données spécifiques.

Vecteur (Vecteur)

Dans l'apprentissage en profondeur, les vecteurs sont également appelés vecteurs ou vecteurs, qui sont généralement un ensemble de nombres représentés par int ou float. L'intégration dans l'apprentissage en profondeur fait référence au vecteur continu transformé à partir de variables discrètes (telles que des images, des vidéos, de l'audio, du langage naturel et d'autres données non structurées et du texte structuré) par l'intégration de la technologie. L'incorporation est généralement stockée au format vectoriel. En termes de représentation mathématique, l'incorporation est un vecteur à n dimensions composé de nombres à virgule flottante ou de données binaires (par exemple, 768 dimensions représentant des caractères).

Les vecteurs souvent mentionnés dans les réseaux de neurones comprennent principalement :

1. Vecteur de poids (vecteur de poids) : Le paramètre de poids reliant les deux couches de neurones, qui détermine comment la sortie de la couche précédente est mappée à l'entrée de la couche suivante.

2. Vecteur de biais : Le paramètre de biais du nœud neuronal, qui détermine la valeur d'activité de base du neurone.

3. Vecteur d'entrée : entrée de données dans le réseau neuronal, qui représente les caractéristiques d'un échantillon.

4. Vecteur de sortie : Le résultat de prédiction ou d'inférence du réseau neuronal, qui est utilisé pour les tâches de classification ou de régression.

5. Vecteur d'état caché : la sortie de la couche cachée du réseau neuronal sera continuellement mise à jour dans le réseau neuronal cyclique.

Tous ces vecteurs sont représentés sous la forme d'une liste ou d'un tableau de nombres, tels que [1, 2, 3]. Ils circulent pendant le processus d'inférence et d'apprentissage du réseau de neurones, et sont transformés et cartographiés selon les paramètres du modèle.

Grâce à des techniques modernes de transformation vectorielle, telles que divers modèles d'intelligence artificielle (IA) et d'apprentissage automatique (ML), les données non structurées peuvent être abstraites en vecteurs dans un espace vectoriel de caractéristiques à n dimensions. De cette manière, l'algorithme du plus proche voisin (ANN) peut être utilisé pour calculer la similarité entre des données non structurées.

La récupération de similarité vectorielle consiste à comparer l'objet cible avec les données de la base de données et à rappeler les résultats les plus similaires. De même, la récupération de similarité vectorielle renvoie les données vectorielles les plus similaires. L'algorithme Approximate Nearest Neighbor (ANN) peut calculer la distance entre les vecteurs, améliorant ainsi la vitesse de récupération de la similarité des vecteurs. Si deux vecteurs sont très similaires, cela signifie que les données source qu'ils représentent sont également très similaires.

Incorporation et incorporation de mots (incorporation/incorporation de mots)

L'intégration est une technique permettant de mapper des données éparses de grande dimension à des données denses de faible dimension. Son but est de produire une représentation des données plus fluide et plus pertinente, ce qui facilite le traitement du modèle.

L'intégration peut agir sur diverses données, telles que :

- Incorporation de mots : pour les données textuelles, les mots sont mappés sur des vecteurs.

- Incorporation d'articles : cartographie des articles dans le système de recommandation.

- Intégration d'utilisateurs : cartographie des fonctionnalités pour les utilisateurs.

- Vecteur de graphe de connaissances (KG Embedding) : mapper des entités et des relations dans le graphe de connaissances sur des vecteurs.

L'intégration est une technique de cartographie généralisée de haute dimension à basse dimension, qui peut produire des représentations de données plus fluides et plus pertinentes, améliorant ainsi l'effet d'apprentissage du modèle.

L'intégration de mots est une application spécifique de la technologie d'intégration, qui fait référence aux compétences d'apprentissage des vecteurs de mots. Grâce à l'incorporation de mots, nous pouvons mapper chaque mot du vocabulaire sur un vecteur sémantique dans un espace de faible dimension.

Ces vecteurs sémantiques peuvent capturer la relation sémantique entre les mots et réaliser les caractéristiques telles que "les incorporations de mots avec une sémantique proche sont également proches". Cela facilite le traitement et la compréhension des données textuelles par les modèles. Donc, en bref :

Incorporation : une technologie de cartographie généralisée de grande dimension à faible dimension qui peut être appliquée à diverses données.

Incorporation de mots : une application de la technologie d'intégration fait référence à la technique d'apprentissage des vecteurs de mots, qui peut apprendre un vecteur sémantique pour chaque mot.

Word Embedding是Embedding在自然语言处理的一种应用,而Embedding是更加广义和基础的概念。Word Embedding需要依赖于大量文本进行训练,而Embedding可以作用于任意类型的数据。

为了更好的理解Word Embedding,举个例子,我们有两个单词:“猫”和“狗”。如果我们要表达它们之间的相似性,可以将它们映射到二维空间中:

猫 -> (0.8, 0.2)

狗 -> (0.7, 0.4)

可以看到,这两个单词的向量很接近,这表示它们在语义上相似。

而对于“猫”和“车”:

猫 -> (0.8, 0.2)

车 -> (0.2, 0.8)

两个向量遥遥相反,表示这两个单词在语义上不太相似。

所以,Word Embedding允许我们以低维的向量表示高维的one-hot向量。这可以将向量空间的维度从几万维降到几百维,并且保留了单词之间的语义关系。

Word Embedding的作用主要有:

1. 降维:one-hot编码数据稀疏,无法有效训练模型。Word Embedding可以将高维的one-hot向量压缩为低维的密集向量。

2. 语义表达:语义相近的单词对应的嵌入向量也更加接近,这反映了单词之间的语义关系。

3. 平滑数据:one-hot编码的单词之间完全无关,Word Embedding可以将数据变得更加平滑,单词之间存在一定的关联。

4. 提高模型效果:Word Embedding可以作为神经网络的输入,这通常可以带来更好的训练效果。

所以,Word Embedding 是一种用于 Natural Language Processing 的技巧,它可以从大量文本中学习到单词的语义表达,并以低维嵌入向量的形式表示。这使得神经网络更易于处理文本数据,并可以产生更好的效果。

Softmax(Softmax函数/原始数据归一化)

En apprentissage profond, Softmax est une fonction d'activation utilisée pour normaliser la sortie du réseau. La fonction de Softmax est de convertir la sortie du réseau en une distribution de probabilité. Il peut compresser une liste de valeurs entre 0 et 1, et faire leur somme à 1. La formule de Softmax est : softmax(x) = exp(x) / Σexp(x)

Ici, x représente la sortie d'origine du réseau et exp(x) effectue une opération exponentielle sur chaque valeur, puis divise par la somme de toutes les valeurs pour obtenir une probabilité normalisée.

Par exemple, si le réseau a 3 sorties et que la valeur d'origine est [1, 2, 3], alors :

exp(1) = 2,718

exp(2) = 7,389

exp(3) = 20,085

somme = 2,718 + 7,389 + 20,085 = 30,192

softmax = [2,718/30,192, 7,389/30,192, 20,085/30,192]

= [0,09, 0,25, 0,66]

Nous pouvons voir que Softmax comprime la sortie d'origine dans la plage de 0 à 1 et fait leur somme à 1, ce qui représente la probabilité. Softmax est principalement utilisé pour la sortie de classification des réseaux de neurones. Parce qu'il peut convertir la valeur prédite d'origine en probabilité de chaque catégorie, ce qui est plus conforme aux exigences de classification. De plus, Softmax a un effet de normalisation, qui peut supprimer la valeur extrême dans la sortie du réseau et rendre la valeur de probabilité finale plus équilibrée, ce qui contribue à la stabilité du modèle. Donc, pour faire simple, Softmax est une fonction d'activation qui transforme la sortie du réseau de neurones en une distribution de probabilité pour chaque catégorie en la normalisant de manière exponentielle. Cela joue un rôle important dans les problèmes de classification.

Perte (fonction de perte)

Dans l'apprentissage en profondeur, la perte (perte) fait généralement référence à l'écart entre la valeur prédite du modèle et la valeur réelle, et est utilisée pour mesurer les performances du modèle. La fonction de perte est une fonction utilisée pour calculer la perte, et est généralement également appelée fonction objectif, fonction de coût ou fonction d'erreur. Une fonction de perte est une fonction utilisée pour évaluer la différence entre les prédictions du réseau de neurones et les véritables étiquettes. Il mesure l'ajustement et la précision du modèle.

L'objectif de la formation d'un réseau de neurones est de minimiser la valeur de la fonction de perte. Parce que plus la valeur de la fonction de perte est petite, plus la différence entre la prédiction du modèle et le résultat réel est petite, et plus la qualité du modèle est élevée.

Lors de la formation d'un modèle d'apprentissage en profondeur, nous entrons les données d'entrée dans le modèle pour obtenir la valeur prédite du modèle, puis comparons la valeur prédite avec la valeur réelle pour calculer la perte. Ensuite, nous utilisons l'algorithme de rétropropagation pour ajuster les paramètres du modèle afin de minimiser la perte, améliorant ainsi les performances du modèle.

Les fonctions de perte couramment utilisées incluent l'erreur quadratique moyenne (erreur quadratique moyenne, MSE), l'entropie croisée (entropie croisée), la perte de journal (perte de journal), etc. Différentes tâches et différents modèles doivent généralement choisir différentes fonctions de perte pour refléter au mieux les performances du modèle.

Descente de gradient et explosion de gradient (Descente de gradient/Explosion de gradient)

Le gradient est un concept très important dans les réseaux de neurones. Il fait référence à la mesure dans laquelle un paramètre du réseau affecte la fonction de perte.

En termes simples, le gradient représente le petit changement des paramètres dans le réseau, qui conduira au changement de la valeur de la fonction de perte. Il mesure l'influence des changements de paramètres sur la fonction de perte.

Prenons un exemple simple. Supposons que nous ayons un réseau de neurones avec un paramètre w = 0,5. A ce stade, la valeur de la fonction de perte L est de 0,3. Si nous augmentons w de 0,1, c'est-à-dire w = 0,6, la fonction de perte L devient 0,32. Alors le gradient de ce paramètre w à la fonction de perte est (0,32 - 0,3) / 0,1 = 0,2. Il dit que lorsque w augmente de 0,1, la fonction de perte L augmente de 0,2. Ce 0,2 est le gradient de w à la fonction de perte.

La descente de gradient signifie que le but de l'apprentissage du réseau de neurones est de trouver un ensemble de paramètres qui minimisent la fonction de perte. À cette fin, nous ajusterons constamment les paramètres et calculerons le gradient (taux de variation) de la fonction de perte pour déterminer comment ajuster les paramètres.

La méthode de descente de gradient consiste à ajuster progressivement les paramètres selon la direction du gradient, de manière à ce que la fonction de perte diminue et que le système soit minimisé. C'est comme une petite boule glissant lentement dans une vallée, trouvant son point le plus bas.

Cependant, si le taux d'apprentissage est trop grand, la plage de réglage de chaque paramètre sera grande. Cela entraînera une grande fluctuation de la valeur de la fonction de perte, même loin de la solution optimale. C'est comme si une balle dévalait soudainement une colline dans une certaine direction, et il est difficile de trouver la vallée. Lorsque la valeur de la fonction de perte change considérablement en raison d'ajustements de paramètres, et commence même à ne pas converger, on parle d'explosion de gradient. Cela fera échouer la formation et la solution optimale ne pourra pas être trouvée.

为了避免梯度爆炸的问题,通常可以采用一些技巧,如减小学习率、权重衰减、梯度裁剪(Gradient Clipping)等。梯度裁剪是一种常用的技巧,它通过限制梯度的范数,使得梯度的大小不会超过一个预定的阈值,从而避免梯度爆炸的问题。

归一化(Norm/Normalization)

归一化是深度学习中一个非常重要的概念。它指的是对数据或参数进行处理,使其分布更加均匀地落在一个范围内。

归一化的目标主要有两个:

1. 避免数据过大或过小,影响模型训练。如果数据范围太大,模型的参数更新会很小,收敛慢。如果数据范围太小,参数更新幅度太大,导致训练不稳定。

2. 避免某些特征由于数据范围太大,过于主导模型训练。如果不同特征的数据范围差异过大,那么范围更大的特征将更加影响训练结果。这使得模型难以捕捉到其他特征的信息。

所以,归一化的目的是 rescale 数据,使其分布在一个合适范围内,通常是0-1或-1-1之间。这可以解决上述两个问题,产生更加理想的训练效果。

具体而言,归一化可以作用在:

1. 输入数据:对输入特征进行归一化,使其均值为0,标准差为1。这样可以解决特征范围差异过大的问题。

2. 权重参数:对模型权重参数进行归一化,使其绝对值不会过大。这可以产生更加平稳的训练,避免梯度爆炸。

3. 梯度:在反向传播过程中,对梯度进行归一化,避免其变化过大。这也有助于稳定训练过程。

4. Batch Normalization:对批量数据在进入下一层神经网之前进行归一化。这可以加速训练,使模型更加健壮。

归一化技巧在深度学习中广泛使用,它使得模型更加稳定高效。简单来说,归一化的目的就是控制数据在合适的范围内,避免极值出现,产生更加理想的训练效果。

Softmax 和归一化都是深度学习中常用的技巧,Softmax和归一化相同的地方:

1. 都可以将数据映射到0-1范围内。Softmax通过指数运算和除法实现,归一化通过减去均值和除以标准差实现。

2. 都具有归一化的效果。可以抑制数据中的极值,使结果更加均衡。

Softmax和归一化不同同的地方:

1. 目标不同,Softmax用于产生概率分布,常用于分类问题的输出层。归一化更加广义,可以作用于输入、参数、梯度等,目的是产生更加稳定的训练。

2. Softmax依赖于数据本身,并不改变数据的分布。它只在输出时根据数据计算概率。而归一化则在数据上进行运算,直接改变了数据的均值和方差。

3. Softmax只能用于分类任务,不能产生连续的值。归一化的结果可以是一个连续范围内的值。

4. Softmax通过rival sum使得输出总和为1。归一化没有这个约束,输出的总和不一定为1。

举例描述二者的不同:

Softmax 输入: [1, 2, 3]

输出: [0.09, 0.24, 0.67]

归一化 输入: [1, 2, 3]

输出: [-1, 0, 1] (假设归一化到-1到1区间)

我们可以看到,Softmax 产生的输出是概率,总和为1。而归一化的输出是一个连续范围的值,总和不为1。

取代你的不是AI,而是比你更了解AI和更会使用AI的人!

##End##

Guess you like

Origin blog.csdn.net/heiyeshuwu/article/details/131770577