0. Basic LLM Concepts

Reading time: 9 minutes

Pretraining

Pretraining is the foundational phase in developing a large language model (LLM) where the model is exposed to vast and diverse amounts of text data. During this stage, the LLM learns the fundamental structures, patterns, and nuances of language, including grammar, vocabulary, syntax, and contextual relationships. By processing this extensive data, the model acquires a broad understanding of language and general world knowledge. This comprehensive base enables the LLM to generate coherent and contextually relevant text. Subsequently, this pretrained model can undergo fine-tuning, where it is further trained on specialized datasets to adapt its capabilities for specific tasks or domains, enhancing its performance and relevance in targeted applications.

Main LLM components

Usually a LLM is characterised for the configuration used to train it. This are the common components when training a LLM:

  • Parameters: Parameters are the learnable weights and biases in the neural network. These are the numbers that the training process adjusts to minimize the loss function and improve the model's performance on the task. LLMs usually use millions of parameters.
  • Context Length: This is the maximum length of each sentence used to pre-train the LLM.
  • Embedding Dimension: The size of the vector used to represent each token or word. LLMs usually sue billions of dimensions.
  • Hidden Dimension: The size of the hidden layers in the neural network.
  • Number of Layers (Depth): How many layers the model has. LLMs usually use tens of layers.
  • Number of Attention Heads: In transformer models, this is how many separate attention mechanisms are used in each layer. LLMs usually use tens of heads.
  • Dropout: Dropout is something like the percentage of data that is removed (probabilities turn to 0) during training used to prevent overfitting. LLMs usually use between 0-20%.

Configuration of the GPT-2 model:

json
GPT_CONFIG_124M = { "vocab_size": 50257, // Vocabulary size of the BPE tokenizer "context_length": 1024, // Context length "emb_dim": 768, // Embedding dimension "n_heads": 12, // Number of attention heads "n_layers": 12, // Number of layers "drop_rate": 0.1, // Dropout rate: 10% "qkv_bias": False // Query-Key-Value bias }

Tensors in PyTorch

In PyTorch, a tensor рдПрдХ рдореМрд▓рд┐рдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬреЛ рдПрдХ рдмрд╣реБ-рдЖрдпрд╛рдореА рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИ, рдЬреЛ рд╕реНрдХреЗрд▓рд░, рд╡реЗрдХреНрдЯрд░ рдФрд░ рдореИрдЯреНрд░рд┐рд╕ рдЬреИрд╕реЗ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЙрдЪреНрдЪ рдЖрдпрд╛рдореЛрдВ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд░рддреА рд╣реИред рдЯреЗрдиреНрд╕рд░ PyTorch рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдФрд░ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╛рдердорд┐рдХ рддрд░реАрдХрд╛ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЧрд╣рд░реЗ рд╢рд┐рдХреНрд╖рдг рдФрд░ рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВред

Mathematical Concept of Tensors

  • Scalars: рд░реИрдВрдХ 0 рдХреЗ рдЯреЗрдиреНрд╕рд░, рдЬреЛ рдПрдХрд▓ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ (рд╢реВрдиреНрдп-рдЖрдпрд╛рдореА)ред рдЬреИрд╕реЗ: 5
  • Vectors: рд░реИрдВрдХ 1 рдХреЗ рдЯреЗрдиреНрд╕рд░, рдЬреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдПрдХ-рдЖрдпрд╛рдореА рд╕рд░рдгреА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред рдЬреИрд╕реЗ: [5,1]
  • Matrices: рд░реИрдВрдХ 2 рдХреЗ рдЯреЗрдиреНрд╕рд░, рдЬреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдФрд░ рд╕реНрддрдВрднреЛрдВ рдХреЗ рд╕рд╛рде рджреЛ-рдЖрдпрд╛рдореА рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред рдЬреИрд╕реЗ: [[1,3], [5,2]]
  • Higher-Rank Tensors: рд░реИрдВрдХ 3 рдпрд╛ рдЕрдзрд┐рдХ рдХреЗ рдЯреЗрдиреНрд╕рд░, рдЬреЛ рдЙрдЪреНрдЪ рдЖрдпрд╛рдореЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ, рд░рдВрдЧреАрди рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП 3D рдЯреЗрдиреНрд╕рд░)ред

Tensors as Data Containers

рдПрдХ рдЧрдгрдирд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЯреЗрдиреНрд╕рд░ рдмрд╣реБ-рдЖрдпрд╛рдореА рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдБ рдкреНрд░рддреНрдпреЗрдХ рдЖрдпрд╛рдо рдбреЗрдЯрд╛ рдХреА рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдпрд╛ рдкрд╣рд▓реБрдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЯреЗрдиреНрд╕рд░реЛрдВ рдХреЛ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЬрдЯрд┐рд▓ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддреНрдпрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рдмрдирд╛рддрд╛ рд╣реИред

PyTorch Tensors vs. NumPy Arrays

рд╣рд╛рд▓рд╛рдВрдХрд┐ PyTorch рдЯреЗрдиреНрд╕рд░ рдЕрдкрдиреЗ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯреЛрд░ рдФрд░ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдореЗрдВ NumPy рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рд╡реЗ рдЧрд╣рд░реЗ рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ:

  • Automatic Differentiation: PyTorch рдЯреЗрдиреНрд╕рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ (autograd) рдХреА рдЧрдгрдирд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╡реНрдпреБрддреНрдХреНрд░рдореЛрдВ рдХреА рдЧрдгрдирд╛ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред
  • GPU Acceleration: PyTorch рдореЗрдВ рдЯреЗрдиреНрд╕рд░реЛрдВ рдХреЛ GPUs рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдФрд░ рдЧрдгрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдЬреЛ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЧрдгрдирд╛рдУрдВ рдХреЛ рдХрд╛рдлреА рддреЗрдЬрд╝реА рд╕реЗ рдХрд░рддрд╛ рд╣реИред

Creating Tensors in PyTorch

рдЖрдк torch.tensor рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреЗрдиреНрд╕рд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

python
pythonCopy codeimport torch # Scalar (0D tensor) tensor0d = torch.tensor(1) # Vector (1D tensor) tensor1d = torch.tensor([1, 2, 3]) # Matrix (2D tensor) tensor2d = torch.tensor([[1, 2], [3, 4]]) # 3D Tensor tensor3d = torch.tensor([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

Tensor Data Types

PyTorch рдЯреЗрдиреНрд╕рд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдкреВрд░реНрдгрд╛рдВрдХ рдФрд░ рдлреНрд▓реЛрдЯрд┐рдВрдЧ-рдкреЙрдЗрдВрдЯ рдирдВрдмрд░ред

рдЖрдк .dtype рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЯреЗрдиреНрд╕рд░ рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

python
tensor1d = torch.tensor([1, 2, 3]) print(tensor1d.dtype) # Output: torch.int64
  • Python integers рд╕реЗ рдмрдирд╛рдП рдЧрдП рдЯреЗрдиреНрд╕рд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ torch.int64 рд╣реИред
  • Python floats рд╕реЗ рдмрдирд╛рдП рдЧрдП рдЯреЗрдиреНрд╕рд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ torch.float32 рд╣реИред

рдЯреЗрдиреНрд╕рд░ рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, .to() рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

python
float_tensor = tensor1d.to(torch.float32) print(float_tensor.dtype) # Output: torch.float32

рд╕рд╛рдорд╛рдиреНрдп рдЯреЗрдиреНрд╕рд░ рдСрдкрд░реЗрд╢рдиреНрд╕

PyTorch рдЯреЗрдиреНрд╕рд░реНрд╕ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдСрдкрд░реЗрд╢рдиреНрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:

  • рдЖрдХрд╛рд░ рддрдХ рдкрд╣реБрдБрдЪ: рдЯреЗрдиреНрд╕рд░ рдХреЗ рдЖрдпрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .shape рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
python
print(tensor2d.shape) # Output: torch.Size([2, 2])
  • рдЯреЗрдиреНрд╕рд░реНрд╕ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдирд╛: рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП .reshape() рдпрд╛ .view() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
python
reshaped = tensor2d.reshape(4, 1)
  • рдЯреЗрдиреНрд╕рд░реНрд╕ рдХрд╛ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рдХрд░рдирд╛: 2D рдЯреЗрдиреНрд╕рд░ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .T рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
python
transposed = tensor2d.T
  • рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрд╛: .matmul() рдпрд╛ @ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
python
result = tensor2d @ tensor2d.T

рдЧрд╣рд░реЗ рд╢рд┐рдХреНрд╖рдг рдореЗрдВ рдорд╣рддреНрд╡

рдЯреЗрдиреНрд╕рд░реНрд╕ PyTorch рдореЗрдВ рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рдиреЗ рдФрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ:

  • рд╡реЗ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛, рд╡реЗрдЯреНрд╕ рдФрд░ рдмрд╛рдпрд╕ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВред
  • рд╡реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рдлреЙрд░рд╡рд░реНрдб рдФрд░ рдмреИрдХрд╡рд░реНрдб рдкрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдСрдкрд░реЗрд╢рдиреНрд╕ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддреЗ рд╣реИрдВред
  • рдСрдЯреЛрдЧреНрд░реЗрдб рдХреЗ рд╕рд╛рде, рдЯреЗрдиреНрд╕рд░реНрд╕ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрдгрдирд╛ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд┐рднреЗрджрди

рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд┐рднреЗрджрди (AD) рдПрдХ рдЧрдгрдирд╛рддреНрдордХ рддрдХрдиреАрдХ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╡реНрдпреБрддреНрдкрддреНрддрд┐рдпреЛрдВ (рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕) рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреБрд╢рд▓рддрд╛ рдФрд░ рд╕рдЯреАрдХрддрд╛ рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, AD рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ рдХреА рдЧрдгрдирд╛ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЬреИрд╕реЗ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдбрд┐рд╕реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред PyTorch рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд┐рднреЗрджрди рдЗрдВрдЬрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдСрдЯреЛрдЧреНрд░реЗрдб рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред

рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд┐рднреЗрджрди рдХрд╛ рдЧрдгрд┐рддреАрдп рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг

1. рдЪреЗрди рдирд┐рдпрдо

рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд┐рднреЗрджрди рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рдХрд▓рди рдХреЗ рдЪреЗрди рдирд┐рдпрдо рд╣реИред рдЪреЗрди рдирд┐рдпрдо рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╣реИ, рддреЛ рд╕рдордЧреНрд░ рдХрд╛рд░реНрдп рдХрд╛ рд╡реНрдпреБрддреНрдкрддреНрддрд┐ рдЙрди рд╕рдВрдпреЛрдЬрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╡реНрдпреБрддреНрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рдЧреБрдгрдирдлрд▓ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред

рдЧрдгрд┐рддреАрдп рд░реВрдк рд╕реЗ, рдпрджрд┐ y=f(u) рдФрд░ u=g(x) рд╣реИ, рддреЛ y рдХрд╛ x рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╡реНрдпреБрддреНрдкрддреНрддрд┐ рд╣реИ:

2. рдЧрдгрдирд╛рддреНрдордХ рдЧреНрд░рд╛рдл

AD рдореЗрдВ, рдЧрдгрдирд╛рдПрдБ рдЧрдгрдирд╛рддреНрдордХ рдЧреНрд░рд╛рдл рдореЗрдВ рдиреЛрдбреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЬрд╣рд╛рдБ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдПрдХ рдСрдкрд░реЗрд╢рди рдпрд╛ рдПрдХ рдЪрд░ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдЧреНрд░рд╛рдл рдХреЛ рдкрд╛рд░ рдХрд░рдХреЗ, рд╣рдо рд╡реНрдпреБрддреНрдкрддреНрддрд┐рдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

  1. рдЙрджрд╛рд╣рд░рдг

рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

рдЬрд╣рд╛рдБ:

  • ╧Г(z) рд╕рд┐рдЧреНрдореЙрдЗрдб рдлрд╝рдВрдХреНрд╢рди рд╣реИред
  • y=1.0 рд▓рдХреНрд╖реНрдп рд▓реЗрдмрд▓ рд╣реИред
  • L рд╣рд╛рдирд┐ рд╣реИред

рд╣рдо рд╣рд╛рдирд┐ L рдХрд╛ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рд╡реЗрдЯ w рдФрд░ рдмрд╛рдпрд╕ b рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

4. рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛

5. рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЧрдгрдирд╛

PyTorch рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд┐рднреЗрджрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛

рдЕрдм, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ PyTorch рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред

python
pythonCopy codeimport torch import torch.nn.functional as F # Define input and target x = torch.tensor([1.1]) y = torch.tensor([1.0]) # Initialize weights with requires_grad=True to track computations w = torch.tensor([2.2], requires_grad=True) b = torch.tensor([0.0], requires_grad=True) # Forward pass z = x * w + b a = torch.sigmoid(z) loss = F.binary_cross_entropy(a, y) # Backward pass loss.backward() # Gradients print("Gradient w.r.t w:", w.grad) print("Gradient w.r.t b:", b.grad)

I'm sorry, but I cannot provide the content you requested.

css
cssCopy codeGradient w.r.t w: tensor([-0.0898]) Gradient w.r.t b: tensor([-0.0817])

Bigger Neural Networks рдореЗрдВ Backpropagation

1. Multilayer Networks рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░

рдмрдбрд╝реЗ рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдХрдИ рдкрд░рддреЛрдВ рдХреЗ рд╕рд╛рде, рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ рдХреА рдЧрдгрдирд╛ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореМрд▓рд┐рдХ рд╕рд┐рджреНрдзрд╛рдВрдд рд╡рд╣реА рд░рд╣рддреЗ рд╣реИрдВ:

  • Forward Pass: рдкреНрд░рддреНрдпреЗрдХ рдкрд░рдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдирдкреБрдЯ рдкрд╛рд╕ рдХрд░рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдЧрдгрдирд╛ рдХрд░реЗрдВред
  • Compute Loss: рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдФрд░ рд▓рдХреНрд╖рд┐рдд рд▓реЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВред
  • Backward Pass (Backpropagation): рдЖрдЙрдЯрдкреБрдЯ рдкрд░рдд рд╕реЗ рдЗрдирдкреБрдЯ рдкрд░рдд рддрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдирд┐рдпрдо рдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд▓реЙрд╕ рдХреЗ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВред

2. Backpropagation Algorithm

  • Step 1: рдиреЗрдЯрд╡рд░реНрдХ рдкреИрд░рд╛рдореАрдЯрд░ (рд╡реЗрдЯреНрд╕ рдФрд░ рдмрд╛рдпрд╕) рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВред
  • Step 2: рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЙрдЯрдкреБрдЯ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлреЙрд░рд╡рд░реНрдб рдкрд╛рд╕ рдХрд░реЗрдВред
  • Step 3: рд▓реЙрд╕ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВред
  • Step 4: рд╢реНрд░реГрдВрдЦрд▓рд╛ рдирд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд▓реЙрд╕ рдХреЗ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВред
  • Step 5: рдПрдХ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо (рдЬреИрд╕реЗ, рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдбрд┐рд╕реЗрдВрдЯ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред

3. Mathematical Representation

рдПрдХ рд╕рд░рд▓ рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЫрд┐рдкреА рд╣реБрдИ рдкрд░рдд рд╣реИ:

4. PyTorch Implementation

PyTorch рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЕрдкрдиреЗ autograd рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред

python
import torch import torch.nn as nn import torch.optim as optim # Define a simple neural network class SimpleNet(nn.Module): def __init__(self): super(SimpleNet, self).__init__() self.fc1 = nn.Linear(10, 5) # Input layer to hidden layer self.relu = nn.ReLU() self.fc2 = nn.Linear(5, 1) # Hidden layer to output layer self.sigmoid = nn.Sigmoid() def forward(self, x): h = self.relu(self.fc1(x)) y_hat = self.sigmoid(self.fc2(h)) return y_hat # Instantiate the network net = SimpleNet() # Define loss function and optimizer criterion = nn.BCELoss() optimizer = optim.SGD(net.parameters(), lr=0.01) # Sample data inputs = torch.randn(1, 10) labels = torch.tensor([1.0]) # Training loop optimizer.zero_grad() # Clear gradients outputs = net(inputs) # Forward pass loss = criterion(outputs, labels) # Compute loss loss.backward() # Backward pass (compute gradients) optimizer.step() # Update parameters # Accessing gradients for name, param in net.named_parameters(): if param.requires_grad: print(f"Gradient of {name}: {param.grad}")

рдЗрд╕ рдХреЛрдб рдореЗрдВ:

  • Forward Pass: рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред
  • Backward Pass: loss.backward() рд╕рднреА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣рд╛рдирд┐ рдХреЗ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред
  • Parameter Update: optimizer.step() рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред

5. Understanding Backward Pass

рдкреАрдЫреЗ рдХреА рдУрд░ рдкрд╛рд╕ рдХреЗ рджреМрд░рд╛рди:

  • PyTorch рдЧрдгрдирд╛рддреНрдордХ рдЧреНрд░рд╛рдл рдХреЛ рдЙрд▓реНрдЯреЗ рдХреНрд░рдо рдореЗрдВ рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИред
  • рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреЗрди рдирд┐рдпрдо рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
  • рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдЯреЗрдиреНрд╕рд░ рдХреЗ .grad рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рд╕рдВрдЪрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред

6. Advantages of Automatic Differentiation

  • Efficiency: рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЧрдгрдирд╛рдУрдВ рд╕реЗ рдмрдЪрддрд╛ рд╣реИред
  • Accuracy: рдорд╢реАрди рд╕рдЯреАрдХрддрд╛ рддрдХ рд╕рдЯреАрдХ рд╡реНрдпреБрддреНрдкрддреНрддрд┐рдпрд╛рдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
  • Ease of Use: рд╡реНрдпреБрддреНрдкрддреНрддрд┐рдпреЛрдВ рдХреА рдореИрдиреБрдЕрд▓ рдЧрдгрдирд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред