Deep learning is a subset of machine learning that uses artificial neural networks with many layers to learn representations of data. It is the technology behind facial recognition, voice assistants, ChatGPT, self-driving cars, and real-time translation.
The word deep refers to the depth of these networks — dozens, hundreds, or even thousands of layers stacked on top of each other, each one learning increasingly abstract features from raw data.
Deep learning in 30 seconds
| Concept | What it means |
|---|---|
| Neural network | Layers of mathematical nodes inspired by the brain |
| Neuron / node | One computation unit: input × weight + bias → activation |
| Layer | A group of neurons that process data at the same level |
| Deep network | A neural network with many hidden layers (usually 3+) |
| Training | Adjusting weights via backpropagation + gradient descent |
| Epoch | One full pass through the training dataset |
| Loss | How wrong the model is — training tries to minimise this |
| Inference | Running a trained model on new data |
# A minimal deep learning model in PyTorch
import torch
import torch.nn as nn
class SimpleNet(nn.Module):
def __init__(self):
super().__init__()
self.layers = nn.Sequential(
nn.Linear(784, 256), # input layer (e.g. 28×28 image)
nn.ReLU(),
nn.Linear(256, 128), # hidden layer 1
nn.ReLU(),
nn.Linear(128, 10), # output layer (10 digit classes)
)
def forward(self, x):
return self.layers(x)
model = SimpleNet()
print(model) # 3-layer network, ~235k parameters
AI vs Machine Learning vs Deep Learning
People often use these terms interchangeably — they shouldn't. Here is the precise relationship:
┌──────────────────────────────────────────────────┐
│ Artificial Intelligence (AI) │
│ Any technique that makes computers act smart │
│ │
│ ┌────────────────────────────────────────────┐ │
│ │ Machine Learning (ML) │ │
│ │ Learns patterns from data automatically │ │
│ │ │ │
│ │ ┌──────────────────────────────────────┐ │ │
│ │ │ Deep Learning (DL) │ │ │
│ │ │ Uses multi-layer neural networks │ │ │
│ │ │ to learn from raw data │ │ │
│ │ └──────────────────────────────────────┘ │ │
│ └────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────┘
| AI | Machine Learning | Deep Learning | |
|---|---|---|---|
| Scope | Broadest | Subset of AI | Subset of ML |
| Approach | Rules OR learning | Statistical patterns | Neural networks |
| Data needed | Varies | Moderate | Very large datasets |
| Feature engineering | Manual | Often manual | Automatic (learned) |
| Hardware | CPU fine | CPU fine | GPU / TPU required |
| Interpretability | Varies | Often explainable | Often a "black box" |
| Examples | Chess engine, chatbot | Spam filter, price model | GPT-4, Stable Diffusion |
How a neural network works
1. Neurons and weights
Each artificial neuron takes a set of inputs, multiplies each by a weight, adds a bias, and passes the result through an activation function:
output = activation(w₁x₁ + w₂x₂ + ... + wₙxₙ + b)
The weights determine how much each input matters. Training adjusts them.
2. Layers
| Layer type | Role |
|---|---|
| Input layer | Receives raw data (pixels, tokens, numbers) |
| Hidden layers | Learn intermediate representations |
| Output layer | Produces the prediction (class, number, token) |
3. Activation functions
Without activation functions, a neural network would just be a linear model regardless of depth.
| Function | Formula | When to use |
|---|---|---|
| ReLU | max(0, x) |
Default for hidden layers |
| Sigmoid | 1 / (1 + e⁻ˣ) |
Binary classification output |
| Softmax | eˣᵢ / Σeˣⱼ |
Multi-class output (probabilities sum to 1) |
| Tanh | (eˣ − e⁻ˣ) / (eˣ + e⁻ˣ) |
RNNs, normalised outputs |
| GELU | x · Φ(x) |
Transformers (BERT, GPT) |
4. Forward pass
Data flows left to right through the layers — each layer transforms its input and passes it to the next.
5. Loss function
After the forward pass, the loss measures how wrong the prediction is:
| Task | Common loss function |
|---|---|
| Binary classification | Binary cross-entropy |
| Multi-class classification | Categorical cross-entropy |
| Regression | Mean squared error (MSE) |
| Language modelling | Cross-entropy per token |
6. Backpropagation and gradient descent
The network calculates the gradient (how much each weight contributed to the error) using the chain rule, then updates every weight to reduce the loss:
weight = weight - learning_rate × gradient
This loop — forward pass → loss → backprop → weight update — repeats for every batch, every epoch, until the loss stops improving.
Major deep learning architectures
Convolutional Neural Networks (CNNs)
Designed for grid-like data — images and video. Instead of connecting every neuron to every other, CNN layers apply convolutional filters that detect local patterns (edges, textures, shapes).
import torch.nn as nn
cnn = nn.Sequential(
nn.Conv2d(3, 32, kernel_size=3, padding=1), # 3 RGB channels → 32 feature maps
nn.ReLU(),
nn.MaxPool2d(2, 2), # shrink spatial dimensions 2×
nn.Conv2d(32, 64, kernel_size=3, padding=1),
nn.ReLU(),
nn.AdaptiveAvgPool2d((1, 1)),
nn.Flatten(),
nn.Linear(64, 10), # 10-class output
)
Used for: image classification, object detection (YOLO), face recognition, medical imaging.
Recurrent Neural Networks (RNNs) & LSTMs
Designed for sequences — text, audio, time series. An RNN passes a hidden state from one time step to the next, giving it memory.
The problem: vanilla RNNs struggle with long sequences (vanishing gradient). LSTMs (Long Short-Term Memory) solve this with gating mechanisms.
rnn = nn.LSTM(
input_size=128, # embedding dimension
hidden_size=256, # hidden state size
num_layers=2, # stacked LSTM layers
batch_first=True,
dropout=0.2,
)
Used for: speech recognition, time series forecasting, machine translation (before Transformers).
Transformers
The architecture that powers every modern large language model (GPT-4, Claude, Gemini, LLaMA). Instead of processing sequences step by step, Transformers use self-attention to look at all tokens simultaneously.
| Component | Role |
|---|---|
| Token embedding | Converts words/subwords to vectors |
| Positional encoding | Injects order information (RoPE, ALiBi, sinusoidal) |
| Self-attention | Each token attends to all others — learns context |
| Multi-head attention | Runs attention multiple times in parallel |
| Feed-forward | Per-token MLP after attention |
| Layer normalisation | Stabilises training |
# PyTorch has a built-in Transformer block
encoder_layer = nn.TransformerEncoderLayer(
d_model=512, # embedding dimension
nhead=8, # attention heads
dim_feedforward=2048,
dropout=0.1,
batch_first=True,
)
transformer = nn.TransformerEncoder(encoder_layer, num_layers=6)
Used for: LLMs (GPT, Claude), BERT, image generation (DiT), code generation, translation, summarisation.
Generative Adversarial Networks (GANs)
Two networks train against each other:
- Generator — creates fake data trying to fool the discriminator
- Discriminator — tries to tell real from fake
As they compete, the generator gets better at producing realistic output.
Used for: image synthesis, style transfer, data augmentation, deepfakes (and detection).
Diffusion Models
Start with random noise and iteratively denoise the input, guided by a text or image prompt. Replaced GANs as the dominant image generation architecture.
Used for: Stable Diffusion, DALL-E 3, Midjourney (likely), video generation (Sora).
Deep learning vs traditional machine learning
| Traditional ML | Deep Learning | |
|---|---|---|
| Feature engineering | Manual (domain expertise needed) | Automatic (learned from data) |
| Data required | Hundreds to thousands of examples | Millions of examples (or pre-training) |
| Hardware | CPU fine | GPU / TPU essential |
| Training time | Minutes to hours | Hours to weeks |
| Interpretability | High (decision trees, linear models) | Low — often a black box |
| Performance on images/text/audio | Moderate | State-of-the-art |
| Performance on tabular data | Often better (XGBoost) | Often worse |
| Inference cost | Low | Higher (large models) |
| When to choose it | Small data, tabular data, explainability needed | Images, audio, text, raw sensor data |
Rule of thumb: reach for deep learning when you have large amounts of unstructured data (pixels, audio samples, tokens). Use XGBoost/LightGBM for tabular data until you have evidence deep learning helps.
Real-world applications
| Domain | Deep learning application |
|---|---|
| Natural language | ChatGPT, Google Translate, Grammarly, search ranking |
| Computer vision | Face ID, Tesla Autopilot, cancer detection on X-rays |
| Speech | Siri, Alexa, Google Duplex, Whisper transcription |
| Generative AI | Stable Diffusion, DALL-E, Sora, Midjourney |
| Recommendation | Netflix, YouTube, TikTok feed, Spotify Discover Weekly |
| Gaming | AlphaGo, AlphaFold (protein folding), game AI |
| Drug discovery | Protein structure prediction, molecule generation |
| Finance | Fraud detection, algorithmic trading, credit scoring |
| Robotics | Manipulation, locomotion, sim-to-real transfer |
| Code | GitHub Copilot, Cursor, Claude code generation |
Popular deep learning frameworks
| Framework | By | Language | Strengths |
|---|---|---|---|
| PyTorch | Meta | Python | Research, LLMs, HuggingFace ecosystem, flexible |
| TensorFlow / Keras | Python | Production, TFLite mobile, TFX pipelines | |
| JAX | Python | Functional, XLA compilation, fastest on TPUs | |
| ONNX | Industry | Multi | Model interchange format, cross-framework deployment |
| MLX | Apple | Python/Swift | Apple Silicon (M1/M2/M3), on-device ML |
| TinyGrad | George Hotz | Python | Education, understand the fundamentals |
Recommendation for beginners: start with PyTorch. The HuggingFace ecosystem, most research code, and online tutorials are PyTorch-first in 2025.
Key hyperparameters and concepts
| Term | What it controls |
|---|---|
| Learning rate | How big each weight update step is (too high = unstable, too low = slow) |
| Batch size | How many examples per weight update (larger = smoother gradients) |
| Epochs | How many times the full dataset is seen during training |
| Dropout | Randomly zeroes neurons during training — prevents overfitting |
| Weight decay (L2 reg) | Penalises large weights — prevents overfitting |
| Gradient clipping | Caps gradients — prevents exploding gradient in RNNs |
| Learning rate schedule | Changes LR over training (warmup → cosine decay) |
| Early stopping | Stops training when validation loss stops improving |
Training loop in PyTorch (complete example)
import torch
import torch.nn as nn
from torch.utils.data import DataLoader, TensorDataset
# Toy dataset: predict if sum of two numbers > 1
X = torch.rand(1000, 2)
y = (X.sum(dim=1) > 1).float().unsqueeze(1)
dataset = TensorDataset(X, y)
loader = DataLoader(dataset, batch_size=32, shuffle=True)
model = nn.Sequential(
nn.Linear(2, 16),
nn.ReLU(),
nn.Linear(16, 1),
nn.Sigmoid(),
)
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)
loss_fn = nn.BCELoss()
for epoch in range(20):
for X_batch, y_batch in loader:
optimizer.zero_grad() # clear old gradients
predictions = model(X_batch) # forward pass
loss = loss_fn(predictions, y_batch)
loss.backward() # backpropagation
optimizer.step() # update weights
if epoch % 5 == 0:
print(f"Epoch {epoch:3d} | Loss: {loss.item():.4f}")
How to get started with deep learning
Recommended path (3–6 months)
| Month | Focus | Resources |
|---|---|---|
| 1 | Python + NumPy + pandas | Any Python intro + NumPy docs |
| 2 | Classical ML with scikit-learn | Andrew Ng's ML Specialisation (Coursera) |
| 3 | PyTorch fundamentals, CNNs | fast.ai Part 1 (free, practical-first) |
| 4 | RNNs, Transformers, HuggingFace | fast.ai Part 2, Andrej Karpathy's makemore |
| 5 | Build a project end-to-end | Kaggle competition or personal project |
| 6 | Fine-tune a pre-trained model | HuggingFace docs, LoRA / PEFT tutorials |
Essential resources
| Resource | Type | Best for |
|---|---|---|
| fast.ai | Free course | Practical-first, top-down |
| deeplearning.ai | Course (paid) | Theory-solid, Andrew Ng |
| Andrej Karpathy's YouTube | Free videos | Build GPT/tokeniser from scratch |
| HuggingFace docs | Reference | Pre-trained models and datasets |
| Dive into Deep Learning (d2l.ai) | Free book | Rigorous, interactive notebooks |
| Papers with Code | Research | State-of-the-art benchmarks |
| Kaggle | Practice | Real datasets, competitions |
Common mistakes
| Mistake | Why it hurts | Fix |
|---|---|---|
| Training on test data | Inflated metrics, broken model | Strict train/val/test split before anything |
| Skipping data exploration | Garbage in, garbage out | Always visualise and profile your data first |
| Huge model, tiny dataset | Severe overfitting | Start small; use transfer learning |
| Fixed learning rate | Slow convergence or instability | Use a cosine schedule with linear warmup |
| Not normalising inputs | Slow or failed training | Normalise images to [0,1] or zero mean/unit std |
| Ignoring class imbalance | Model predicts majority class only | Weighted loss, oversampling, or F1 metric |
| GPU memory errors | Training crashes | Reduce batch size or use gradient accumulation |
| Premature optimisation | Wasted effort on a bad model | Get a baseline working first, then improve |
Deep learning vs related fields
| Term | Relationship to deep learning |
|---|---|
| Machine learning | Deep learning is a subset — all deep learning is ML |
| Artificial intelligence | AI is broader — deep learning is one technique |
| Generative AI | Uses deep learning (Transformers, diffusion models) |
| Large Language Models (LLMs) | A class of deep learning model trained on text |
| Computer vision | An application domain; CNNs and Transformers power it |
| Reinforcement learning | Often combined with deep learning (Deep RL / DQN) |
| MLOps | Practices for deploying and monitoring deep learning in production |
FAQ
Is deep learning the same as AI? No. AI is the broadest term — any technique that makes computers behave intelligently. Deep learning is a specific technique within ML within AI. A chess engine using hand-coded rules is AI but not deep learning.
Do I need a GPU to do deep learning? For serious training, yes. A modern NVIDIA GPU (RTX 3080 or better) or cloud GPUs (Colab, Lambda, Vast.ai) are the standard. For inference and small experiments, CPU is fine. Apple Silicon M-series chips also handle moderate workloads well via MLX.
How much data do I need? It depends. Transfer learning from pre-trained models can work with a few hundred examples per class. Training from scratch on images typically needs tens of thousands. LLMs need billions of tokens. When data is scarce, use pre-trained models and fine-tune.
What is the difference between deep learning and a neural network? A neural network is the architecture. Deep learning refers to training deep (many-layered) neural networks on large datasets. Technically a 2-layer perceptron is a neural network but not "deep".
Is deep learning always better than classical ML? No. For tabular (structured) data, gradient-boosted trees (XGBoost, LightGBM) frequently outperform deep learning with far less data and compute. Deep learning excels at unstructured data: images, audio, text, video.
How long does it take to learn deep learning? With Python knowledge: 3–6 months to build practical models; 1–2 years to be job-ready for ML engineer roles. The fast.ai course (free) gets most people building real models in a weekend.