Core AI Algorithms, Generative Models, NLP, and Computer Vision

Q-Learning Algorithm

This algorithm uses a value-based approach for discrete state-action spaces. The update rule follows Bellman equation:

$$ Q(s,a) \leftarrow Q(s,a) + \alpha [r + \gamma \max_{a'} Q(s',a') - Q(s,a)] $$ Implementation example using OpenAI Gym:


import numpy as np
import gym

env = gym.make('CartPole-v1')
state_space = env.observation_space.shape[0]
action_space = env.action_space.n

q_table = np.zeros((state_space, action_space))
learning_rate = 0.1
discount_factor = 0.99
epsilon = 0.1
episodes = 1000

for _ in range(episodes):
    state = env.reset()
    done = False
    while not done:
        if np.random.rand() < epsilon:
            action = env.action_space.sample()
        else:
            action = np.argmax(q_table[state])
        
        next_state, reward, done, _ = env.step(action)
        q_table[state, action] += learning_rate * (reward + discount_factor * np.max(q_table[next_state]) - q_table[state, action])
        state = next_state

print("Training completed")

Deep Q-Networks (DQN)

Combines Q-learning with neural networks. Key components include experience replay and target networks.


import torch
import torch.nn as nn
import gym
from collections import deque
import random

class DQN(nn.Module):
    def __init__(self, input_dim, output_dim):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(input_dim, 128),
            nn.ReLU(),
            nn.Linear(128, 64),
            nn.ReLU(),
            nn.Linear(64, output_dim)
        )
    
    def forward(self, x):
        return self.net(x)

env = gym.make('MountainCar-v0')
state_dim = env.observation_space.shape[0]
action_dim = env.action_space.n

model = DQN(state_dim, action_dim)
optimizer = torch.optim.Adam(model.parameters())
replay_buffer = deque(maxlen=10000)
batch_size = 32
gamma = 0.99
epsilon = 1.0

for episode in range(200):
    state = env.reset()
    done = False
    while not done:
        if random.random() < epsilon:
            action = env.action_space.sample()
        else:
            with torch.no_grad():
                action = model(torch.tensor(state)).argmax().item()
        
        next_state, reward, done, _ = env.step(action)
        replay_buffer.append((state, action, reward, next_state, done))
        state = next_state
    
    if len(replay_buffer) > batch_size:
        batch = random.sample(replay_buffer, batch_size)
        states, actions, rewards, next_states, dones = zip(*batch)
        
        states = torch.tensor(np.array(states))
        next_states = torch.tensor(np.array(next_states))
        actions = torch.tensor(actions)
        rewards = torch.tensor(rewards)
        dones = torch.tensor(dones)
        
        current_q = model(states).gather(1, actions.unsqueeze(1)).squeeze()
        next_q = model(next_states).max(1)[0]
        target_q = rewards + (1 - dones) * gamma * next_q
        
        loss = nn.MSELoss()(current_q, target_q)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

    epsilon *= 0.995

Generative Models

Generative Adversarial Networks (GAN)

Composed of generator and discriminator networks competing through minimax game.


import torch
import torch.nn as nn
import torch.optim as optim

class Generator(nn.Module):
    def __init__(self):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(100, 256),
            nn.ReLU(),
            nn.Linear(256, 128),
            nn.ReLU(),
            nn.Linear(128, 1)
        )
    
    def forward(self, x):
        return self.net(x)

class Discriminator(nn.Module):
    def __init__(self):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(1, 128),
            nn.ReLU(),
            nn.Linear(128, 1),
            nn.Sigmoid()
        )
    
    def forward(self, x):
        return self.net(x)

generator = Generator()
discriminator = Discriminator()
g_optim = optim.Adam(generator.parameters())
d_optim = optim.Adam(discriminator.parameters())
criterion = nn.BCELoss()

for epoch in range(200):
    # Train discriminator
    real_data = torch.randn(64, 1) * 5
    fake_data = generator(torch.randn(64, 100))
    
    d_real = discriminator(real_data)
    d_fake = discriminator(fake_data.detach())
    
    d_loss = criterion(d_real, torch.ones_like(d_real)) + criterion(d_fake, torch.zeros_like(d_fake))
    d_optim.zero_grad()
    d_loss.backward()
    d_optim.step()
    
    # Train generator
    fake_data = generator(torch.randn(64, 100))
    g_output = discriminator(fake_data)
    g_loss = criterion(g_output, torch.ones_like(g_output))
    g_optim.zero_grad()
    g_loss.backward()
    g_optim.step()

Diffusion Models

Progressively add/remove noise through Markov chains. Key components include U-Net architecture and denoising process.

Natural Language Processing

Transformer Architecture

Utilizes self-attention mechanism for parallel sequence processing. Key components: multi-head attention, positional encoding, and feed-forward networks.

BERT Fine-tuning

Pre-trained transformer model with masked language modeling and next sentence prediction tasks.


from transformers import BertTokenizer, BertForSequenceClassification, Trainer, TrainingArguments
from datasets import load_dataset

dataset = load_dataset("sst2")
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=2)

def tokenize_text(examples):
    return tokenizer(examples['sentence'], padding=True, truncation=True)

tokenized = dataset.map(tokenize_text, batched=True)

training_args = TrainingArguments(
    output_dir="./bert_finetuned",
    num_train_epochs=3,
    per_device_train_batch_size=8
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=tokenized["train"],
    eval_dataset=tokenized["validation"]
)

trainer.train()

Computer Vision

YOLO Object Detection

Real-time detection system that divides images into grids and predicts bounding boxes and class probabilities.

Mask R-CNN

Extends Faster R-CNN with instance segmentation capabilities. Includes ROI Align and mask prediction branches.

Tags: ReinforcementLearning GenerativeModels NLP ComputerVision BERT

Posted on Wed, 23 Sep 2026 16:20:38 +0000 by ryanbutler