Transformer

Transformer 是一种基于自注意力机制(Self-Attention Mechanism)的深度学习模型,最初由 Vaswani 等人在 2017 年的论文《Attention is All You Need》中提出。Transformer 在自然语言处理(NLP)任务中取得了显著的成果,特别是在机器翻译、文本生成和问答系统等领域。

Transformer 的计算流程

Transformer 的计算流程可以分为以下几个主要步骤:

  1. 输入嵌入(Input Embedding)
  2. 位置编码(Positional Encoding)
  3. 编码器(Encoder)
  4. 解码器(Decoder)
  5. 输出层(Output Layer)

1. 输入嵌入(Input Embedding)

  • 词嵌入(Word Embedding):将输入的单词转换为固定维度的向量。例如,如果词汇表大小为 V,嵌入维度为 d,那么词嵌入矩阵的形状为 (V, d)。
  • 公式
    [
    X = W_E \cdot I
    ]
    其中,(X) 是嵌入后的向量,(W_E) 是词嵌入矩阵,(I) 是输入的单词索引。

2. 位置编码(Positional Encoding)

  • 目的:由于 Transformer 模型没有循环结构,需要一种方式来引入顺序信息。位置编码通过添加一个与位置相关的向量来实现这一点。
  • 公式
    [
    PE{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d}}\right)
    ]
    [
    PE
    {(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d}}\right)
    ]
    其中,(pos) 是位置,(i) 是维度,(d) 是嵌入维度。

  • 操作:将位置编码向量与词嵌入向量相加:
    [
    X’ = X + PE
    ]

3. 编码器(Encoder)

  • 结构:编码器由多个相同的层堆叠而成,每层包含两个子层:

    1. 多头自注意力机制(Multi-Head Self-Attention)
    2. 前馈神经网络(Feed-Forward Neural Network)
  • 多头自注意力机制

    • 线性变换:将输入向量 (X’) 通过三个不同的线性变换(权重矩阵 (W_Q), (W_K), (W_V))得到查询向量 (Q)、键向量 (K) 和值向量 (V)。
    • 公式
      [
      Q = X’ \cdot W_Q, \quad K = X’ \cdot W_K, \quad V = X’ \cdot W_V
      ]
    • 自注意力计算
      [
      \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) \cdot V
      ]
      其中,(d_k) 是键向量的维度。
    • 多头机制:将自注意力机制分为多个头,每个头独立计算,然后将结果拼接起来,再通过一个线性变换:
      [
      \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h) \cdot W_O
      ]
      其中,(h) 是头的数量,(W_O) 是最终的线性变换矩阵。
  • 残差连接和层归一化

    • 残差连接:将输入直接加到输出上,以缓解梯度消失问题。
    • 层归一化:对每一层的输出进行归一化,以稳定训练过程。
    • 公式
      [
      \text{LayerNorm}(X + \text{Sublayer}(X))
      ]
  • 前馈神经网络

    • 结构:两层全连接网络,中间有激活函数(如 ReLU)。
    • 公式
      [
      \text{FFN}(X) = \text{Linear}(\text{ReLU}(\text{Linear}(X)))
      ]
    • 残差连接和层归一化
      [
      \text{LayerNorm}(X + \text{FFN}(X))
      ]

4. 解码器(Decoder)

  • 结构:解码器也由多个相同的层堆叠而成,每层包含三个子层:

    1. 掩码多头自注意力机制(Masked Multi-Head Self-Attention)
    2. 多头注意力机制(Multi-Head Attention)
    3. 前馈神经网络(Feed-Forward Neural Network)
  • 掩码多头自注意力机制

    • 目的:在生成输出时,防止当前位置看到未来的信息。
    • 掩码:在自注意力计算中,使用掩码矩阵 (M),使得当前位置不能看到未来的位置。
    • 公式
      [
      \text{MaskedAttention}(Q, K, V) = \text{softmax}\left(\frac{QK^T + M}{\sqrt{d_k}}\right) \cdot V
      ]
  • 多头注意力机制

    • 目的:允许解码器关注编码器的输出。
    • 公式
      [
      \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) \cdot V
      ]
      其中,(Q) 来自解码器,(K) 和 (V) 来自编码器。
  • 前馈神经网络

    • 结构:与编码器中的前馈神经网络相同。
    • 公式
      [
      \text{FFN}(X) = \text{Linear}(\text{ReLU}(\text{Linear}(X)))
      ]
  • 残差连接和层归一化

    • 公式
      [
      \text{LayerNorm}(X + \text{Sublayer}(X))
      ]

5. 输出层(Output Layer)

  • 线性变换:将解码器的输出通过一个线性变换,映射到词汇表的大小。
  • 公式
    [
    Y = \text{Linear}(X)
    ]
  • softmax:将线性变换的结果通过 softmax 函数,得到每个词的概率分布。
  • 公式
    [
    P = \text{softmax}(Y)
    ]

总结

Transformer 的计算流程包括输入嵌入、位置编码、编码器、解码器和输出层。通过多头自注意力机制和前馈神经网络,Transformer 能够有效地捕捉长距离依赖关系,并在多种 NLP 任务中取得优异的性能。希望这些解释能帮助你更好地理解 Transformer 的计算流程。如果有更多问题或需要进一步的解释,请告诉我。

references

https://zhuanlan.zhihu.com/p/77307258
https://zhuanlan.zhihu.com/p/47812375

chatgpt

chatgpt api

parameters

two important parameters that you can use with OpenAI’s GPT API to help control text generation behavior: temperature and top_p sampling.
Temperature is a parameter that controls the “creativity” or randomness of the text generated by GPT-3. A higher temperature (e.g., 0.7) results in more diverse and creative output, while a lower temperature (e.g., 0.2) makes the output more deterministic and focused.In practice, temperature affects the probability distribution over the possible tokens at each step of the generation process. A temperature of 0 would make the model completely deterministic, always choosing the most likely token.

Top_p sampling is an alternative to temperature sampling. Instead of considering all possible tokens, GPT-3 considers only a subset of tokens (the nucleus) whose cumulative probability mass adds up to a certain threshold (top_p).

chatgpt methods

We trained this model using Reinforcement Learning from Human Feedback (RLHF), using the same methods as InstructGPT, but with slight differences in the data collection setup. We trained an initial model using supervised fine-tuning: human AI trainers provided conversations in which they played both sides—the user and an AI assistant. We gave the trainers access to model-written suggestions to help them compose their responses. We mixed this new dialogue dataset with the InstructGPT dataset, which we transformed into a dialogue format.

To create a reward model for reinforcement learning, we needed to collect comparison data, which consisted of two or more model responses ranked by quality. Using these reward models, we can fine-tune the model using Proximal Policy Optimization. We performed several iterations of this process.

Alt text

reference

https://community.openai.com/t/cheat-sheet-mastering-temperature-and-top-p-in-chatgpt-api-a-few-tips-and-tricks-on-controlling-the-creativity-deterministic-output-of-prompt-responses/172683

https://openai.com/blog/chatgpt