GPT基础知识学习以及总结

ChatGPT 自学和解释

(全名:Chat Generative Pre-trained Transformer)

自从ChatGPT出现后, 虽然大致上有个初步的认知,但是并没有详细学习这个词到底代表的是什么

生成式预训练变换器(Generative Pre-trained Transformer,GPT)

是一种先进的人工智能语言模型,它通过深度学习技术,特别是Transformer架构理解和生成自然语言文本。GPT通过在大量文本数据上的预训练 ,学习语言的模式和结构,使其能够预测和生成连贯、有意义的文本内容。GPT模型可以广泛应用于文本生成、对话系统、自动摘要等多种自然语言处理任务。

  1. 其实在2012年就接触过神经网络相关的应用,但是这种应用落地到每个人都能接触的情况,还是在2022年

  2. 这里就涉及到了Transformer架构了

Transformer 架构的由来

2017 年,Google 在论文 Attentions is All you need 中提出了Transformer模型架构。

Transformer模型架构使用 Self-Attention 结构取代了在 NLP 任务中常用的 RNN 网络结构。相比 RNN 网络结构,其最大的优点是可以并行计算。

    Self-Attention(自注意力机制)

在了解Transformer前 必须先了解RNN

1.RNN(Recurrent Neural Network)

    循环神经网络(Recurrent Neural Network, RNN)是一类以[序列](sequence)数据为输入,在序列的演进方向进行[递归](recursion)且所有节点(循环单元)按链式连接的[递归神经网络](recursive neural network)

翻译成人话就是:

  1. 登山地图
    • 想象你正在绘制一张复杂的登山地图,地图上有很多山峰和谷地,代表了不同的状态和信息。
  2. 从a到b的最优路径
    • 在这个比喻中,从任意地方 a 到任意地方 b的最优路径可以代表RNN在处理序列数据时,从一个时间步到下一个时间步的状态转移。
    • RNN的目标是找到一种方式来有效地从一个输入(比如一个单词或一个数值)转移到下一个输入,同时保持对之前输入的记忆(上下文)。
  3. 上下文信息
    • 就像在攀登过程中,你需要记住之前的路径和环境来找到最优路径,RNN也会在每个时间步更新其隐藏状态,以保留对之前输入的记忆。这使得模型能够理解序列数据的上下文。

1. 输入和隐藏状态更新

在 RNN 中,每个时间步 ( t ) 的计算过程可以用以下公式表示:

h_t = f(W_h h_{t-1} + W_x x_t + b)

  • 输入 ( x_t ):这是当前时间步的输入,例如一句话中的一个单词。
  • 隐藏状态 ( h_t ):这是当前时间步的“记忆”,它包含了之前所有时间步的信息。
  • ( W_h ):这是隐藏状态的权重矩阵,用于将前一个隐藏状态 ( h_{t-1} ) 转换为当前时间步的状态。“调节器”,它们帮助决定之前的记忆和当前输入对当前状态的影响有多大
  • ( W_x ):这是输入的权重矩阵,将当前输入 ( x_t ) 转换为对当前状态的影响。“调节器”,它们帮助决定之前的记忆和当前输入对当前状态的影响有多大
  • ( b ):这是偏置项,帮助调整模型的输出。
  • ( f ):这是激活函数,通常使用 tanh 或 ReLU,它让模型能够处理复杂的情况,而不仅仅是简单的加法

解释:这个公式的意思是,当前的隐藏状态 ( h_t ) 是通过结合前一个隐藏状态 ( h_{t-1} ) 和当前输入 ( x_t ) 计算得出的。这样,RNN 就能够“记住”之前的信息,并将其与当前输入结合。

2. 输出计算

接下来,RNN 会生成当前时间步的输出 ( y_t ):

y_t = W_y h_t + b_y

  • 输出 ( y_t ):这是模型对当前输入的预测,比如预测下一个单词。
  • ( W_y ):这是从隐藏状态到输出的权重矩阵。
  • ( b_y ):这是输出的偏置项。

解释:这个公式表示,输出 ( y_t ) 是通过当前的隐藏状态 ( h_t ) 计算得出的。它将隐藏状态的信息转化为具体的预测结果。

3. 损失计算和学习

在训练过程中,RNN 会计算损失函数 ( L ) 来评估模型的预测与实际结果之间的差异。通过反向传播算法,RNN 会根据损失来调整权重 ( W_h )、( W_x ) 和 ( W_y ),以提高模型的性能。

梯度

  1. 梯度的定义
    • 在登山地图上,梯度可以被视为你在某个位置上坡的陡峭程度。它指示了你需要向哪个方向移动才能最快地到达山顶(最优解)。
  2. 梯度的作用
    • 当你在攀登时,梯度告诉你当前的位置(损失函数的值)和最佳的移动方向(更新参数的方向)。在机器学习中,梯度是损失函数对模型参数的导数,指示了如何调整参数以减少误差。

梯度消失

  1. 梯度消失的比喻
    • 想象你在一条非常平缓的山坡上攀爬,坡度几乎为零。这就像在训练深层神经网络时,随着层数的增加,梯度变得越来越小,几乎无法推动你向上移动。
  2. 影响
    • 当梯度消失时,模型在更新参数时几乎没有变化,导致训练过程变得缓慢,甚至停滞。就像你在平缓的山坡上努力攀爬,却几乎没有上升的感觉。

梯度爆炸

  1. 梯度爆炸的比喻
    • 现在想象你在一段非常陡峭的坡道上攀爬,坡度非常大,导致你每一步都向上跳得太高。这就像在训练过程中,梯度突然变得非常大,导致参数更新过度。
  2. 影响
    • 当梯度爆炸时,模型的参数更新会变得极其不稳定,可能导致损失函数的值变得非常大,甚至导致训练失败。就像在陡峭的坡道上,你可能会失去平衡,跌回山下。

解决梯度消失

  1. 使用合适的激活函数

    • ReLU(Rectified Linear Unit):ReLU及其变种(如Leaky ReLU、Parametric ReLU)在正区间内具有线性特性,能有效减少梯度消失的问题。
    • Swish:另一种激活函数,通常在深层网络中表现良好。

    选择一条更陡的登山路径(ReLU等激活函数),使得你在攀登时能获得更多的动力,不再在平缓的地方停滞。

  2. 权重初始化

    • 使用适当的权重初始化方法,如He初始化(适用于ReLU)或Xavier初始化(适用于Sigmoid和Tanh),可以帮助缓解梯度消失。

    在登山前准备好合适的装备(如登山鞋、登山杖),确保你在开始时就能以最佳状态出发,避免在一开始就陷入困难。

  3. 使用残差连接(Residual Connections)

    • 在深层网络中引入残差连接(如ResNet),使得信息可以更容易地通过网络传播,从而减少梯度消失的风险。

    在山中设置一些休息站(残差连接),让你在攀登过程中可以回到之前的高度,避免因为疲惫而停滞不前。

  4. Batch Normalization

    • 在每一层使用Batch Normalization可以使得网络在训练过程中保持更稳定的分布,从而减轻梯度消失的问题。

    在攀登过程中定期补充水分和食物(Batch Normalization),保持体力和状态的稳定,确保你能持续前进而不至于疲惫。

  5. 使用LSTM或GRU

    • 这些特殊的RNN结构设计用于保留长期记忆,能有效处理梯度消失问题。

    使用更高级的登山技巧(LSTM、GRU),使得你在攀登时能更好地应对复杂的地形,保持对路径的记忆

解决梯度爆炸

  1. 梯度裁剪(Gradient Clipping)

    • 在训练过程中监控梯度的大小,当梯度超过某个阈值时进行裁剪,确保更新的幅度不会过大。这是解决梯度爆炸的常用方法。

    在登山时设定一个安全高度(梯度阈值),当你攀登过快时,及时停下来调整步伐,避免跌落。

  2. 调整学习率

    • 使用自适应学习率优化算法,如AdamRMSprop等,可以根据梯度的历史信息动态调整学习率,从而减少爆炸的可能性。

    根据山势的变化(自适应学习率),灵活调整你的攀登速度,确保在陡峭的地方不至于摔倒。

  3. 权重正则化

    • 使用L2正则化等方法可以防止权重过大,从而间接降低梯度爆炸的风险。

    在登山时,不要背负过多的装备(权重正则化),以免影响你的平衡和稳定性。

  4. 使用合适的初始化方法

    • 同样,合理的权重初始化可以减少梯度爆炸的可能性。

    选择合适的登山路线(权重初始化),让你在开始时就能走在更稳妥的路径上。

  5. 监控训练过程

    • 定期检查损失值和梯度的变化,及时调整训练参数或策略。

    在攀登过程中定期查看地图和指南针,确保你不会偏离路线,及时调整策略。

2.LSTM(Long Short-Term Memory)

是一种改进的循环神经网络(RNN)架构,旨在解决传统 RNN 中的梯度消失和梯度爆炸问题,以及增强对长期依赖关系的建模能力。

  1. 记忆单元(Cell State)
    • 类比:想象你在攀登一座山,登山地图上有一条清晰的路线,这条路线就是你的记忆单元。它记录了你在攀登过程中所经历的关键点和高度变化。你可以随时查看这条路线,以便决定下一步的行动。
  2. 输入门(Input Gate)
    • 类比:在每到一个重要的岔路口,你需要决定是否要在地图上添加新的信息(新的高度或标记)。输入门就像这个决定的过程,帮助你选择哪些新信息需要加入到记忆单元中。
  3. 遗忘门(Forget Gate)
    • 类比:在攀登过程中,有时你会发现某些信息不再重要,比如之前的路线或标记。遗忘门就像是一个过滤器,帮助你决定哪些信息需要被删除,确保你的地图保持简洁和相关。
  4. 输出门(Output Gate)
    • 类比:当你到达一个新的高点,准备继续攀登时,你需要决定要将哪些当前的状态信息(比如当前的高度或环境)发送到下一个岔路口。输出门就像这个决定,让你选择哪些信息是你下一步行动所需的。
  • 攀登过程
    • 当你沿着山路攀登时(时间步的迭代),你会不断更新你的地图(记忆单元)。在每个岔路口,你会使用输入门来添加新信息,使用遗忘门来删除不再需要的信息,最后使用输出门来决定下一步该如何行动。
  • 长短期记忆
    • LSTM的设计使得它能够有效地保留长期记忆(重要的高度和路径信息)而不被短期的信息(如临时的障碍或天气变化)所干扰。这就像在登山时,你能记住整个旅程的关键点,而不是仅仅关注眼前的细节。

3.GRU(Gated Recurrent Unit)

GRU(Gated Recurrent Unit)是一种对 LSTM 稍微改进的循环神经网络,由 Cho 等人(2014年)提出。它将遗忘门和输入门合并成一个单一的“更新门”,同时将 cell state 和隐藏状态合并,并进行了其他一些改动。GRU模型相对于标准的 LSTM 模型来说更加简单,并且越来越受到广泛关注和应用。

  1. 隐藏状态(Hidden State)
    • 类比:在攀登过程中,你的登山地图上会记录你当前的位置和状态,这就是隐藏状态。它反映了你在攀登过程中所积累的所有信息,帮助你决定下一步的行动。
  2. 重置门(Reset Gate)
    • 类比:当你到达一个新的岔路口时,你需要决定是否要忘记之前的一些信息,以便更好地适应新的环境。重置门就像这个决定,让你选择是否要“重置”部分之前的状态,以便更好地处理当前的情况。
  3. 更新门(Update Gate)
    • 类比:在每个岔路口,你还需要决定是否要将新的信息添加到你的地图上。更新门就像这个决定,帮助你选择哪些新的信息需要被整合到当前的状态中。
  4. 攀登过程
    • 当你沿着山路攀登时(时间步的迭代),你会不断更新你的地图(隐藏状态)。在每个岔路口,你使用重置门来决定是否需要忘记某些信息,而使用更新门来决定如何将新信息与现有信息结合。
  5. 简化的门控机制
    • GRU的设计使得它在处理序列数据时更为高效,因为它只使用两个门(重置门和更新门),而不是LSTM的三个门(输入门、遗忘门和输出门)。这就像在攀登时,你只需关注两个关键决策,而不必分心于更多的选择
  • 有效的记忆管理
    • GRU能够有效地管理长期和短期的记忆,类似于在攀登过程中,你能够记住整个旅程的重要信息,同时又能灵活应对当前环境的变化。

4.Transformer

Transformer 是一种基于[注意力机制]的神经网络架构,用于处理序列数据。它引入了[自注意力机制],允许模型在不同位置对输入序列的各个元素进行加权关注。由于 Transformer 需要计算全连接的注意力矩阵,它的计算量较大。

在用登山地图类比Transformer的工作原理时,可以将Transformer视为一种高级的、动态的地图绘制工具,它能够实时更新和优化路径,以应对复杂的地形和变化的环境。以下是一些关键点,帮助理解Transformer是如何“绘制”这张登山地图的:

Transformer 机制

1. 自注意力机制 (Self-Attention)

类比:想象你在一座山上,想要找到最佳的路径到达另一座山。你需要查看周围的每个点(其他山峰),判断它们与目标山峰的距离和方向。

  • 查询(Query):你的位置,表示你当前的需求。
  • 键(Key):其他山峰的位置,表示它们的特征。
  • 值(Value):每个山峰的高度,表示它们的“价值”。

公式
Q = XW^Q,
K = XW^K,
V = XW^V

在这里,X 就像是你在地图上的所有山峰的位置,W^Q, W^K, W^V 是你用来转换位置的工具(权重矩阵)。

权重矩阵就像是一种特殊的导航工具,它帮助你在地图上识别哪些山峰(输入元素)是最重要的

权重矩阵的不同组合(不同的 W 矩阵)就像是从不同的角度观察地图。每个矩阵提供了一个新的视角,帮助你更全面地理解地形

计算注意力权重
Attention(Q, K, V) = softmax(QK^T / sqrt(d_k))V

你计算查询与键之间的距离(点积),然后通过softmax函数决定哪些山峰最重要(注意力权重),最后选择的路径(输出)是基于你所关注的山峰的高度(值)。

2. 多头注意力 (Multi-Head Attention)

类比:想象你有多个视角(头),每个视角都能从不同的角度观察周围的山峰。

公式
MultiHead(Q, K, V) = Concat(head_1, ..., head_h)W^O

每个头的计算为:
head_i = Attention(QW_i^Q, KW_i^K, VW_i^V)

在这里,每个视角(头)独立计算与周围山峰的关系,可能关注不同的特征(如高度、坡度等)。最后,你将所有视角的观察结果结合在一起,形成一个全面的路径选择。

3. 前馈神经网络 (Feed-Forward Neural Network)

类比:在你选择了路径后,你需要进行进一步的调整和优化。

公式
FFN(x) = ReLU(xW_1 + b_1)W_2 + b_2

这个过程就像是在地图上进行细致的规划,考虑不同的因素(如天气、地形等),并根据这些因素重新调整你的路线。你通过前馈神经网络对选择的路径进行优化。

4. 位置编码 (Positional Encoding)

类比:在这座山地地图上,不同的位置有不同的特征和重要性。

公式
PE_{(pos, 2i)} = sin(pos / 10000^{2i/d}),
PE_{(pos, 2i+1)} = cos(pos / 10000^{2i/d})

位置编码就像是在地图上标记每个山峰的坐标,帮助你记住每个点的具体位置和相对关系。通过这些公式,你为每个山峰赋予了独特的坐标信息,使得在选择路径时能够考虑到它们的相对位置。

5. 最终输出

类比:在你经过多个视角的观察、细致的规划和位置标记后,最终你决定了最佳的行进路线。

公式
Output = LayerNorm(x + MultiHead(Q, K, V))

这个过程就像是经过层归一化和残差连接的处理,确保你的最终路径是最优的,能够有效地到达目标。

总结

Transformer的工作原理。自注意力机制帮助我们在复杂的环境中寻找最相关的信息,多头注意力提供了多样化的视角,前馈神经网络则帮助我们优化选择,而位置编码确保我们记住每个点的重要性和相对位置。整个过程形成了一条最佳的行进路线,帮助我们在序列数据中找到最有效的信息处理方式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353

推荐阅读更多精彩内容