Understanding AI Beyond Machine Learning: The Role of NEAT and RL

Artificial Intelligence (AI) is a vast field. While Machine Learning (ML)—specifically deep learning—currently dominates the conversation, not all AI relies on statistical pattern matching from big data. Some systems are driven by logic, others by search, and some by biological metaphors.

NEAT (NeuroEvolution of Augmenting Topologies) is a unique bridge in this landscape. It sits at the intersection of Evolutionary Computation and Reinforcement Learning, offering a way to "grow" intelligent systems without the traditional calculus used in deep learning.

AI Concepts Outside Traditional Machine Learning

To understand where NEAT fits, we must look at the branches of AI that emphasize structured reasoning or optimization rather than learning from labeled datasets:

  • Symbolic AI: Logic-based reasoning, rule systems, and knowledge representation.
  • Expert Systems: Knowledge bases and inference engines that mimic expert decision-making.
  • Search and Planning: Algorithms like A* or game tree search that explore state spaces.
  • Knowledge Representation & Reasoning (KRR): Ontologies, semantic networks, and logical inference.
  • Evolutionary Computation: Genetic algorithms and evolutionary strategies that simulate natural selection.
  • Swarm Intelligence: Algorithms inspired by collective behavior of ants, bees, or birds.

These methods emphasize structured reasoning, optimization, or heuristic search rather than statistical learning from large datasets.

What Is NEAT?

NEAT is an evolutionary algorithm designed to evolve both the weights and the architecture (topology) of neural networks.

Unlike traditional neural networks that use Backpropagation and Gradient Descent to adjust weights in a fixed structure, NEAT starts with a simple network and "evolves" complexity over generations.

Key Features:

  • Evolves Topology: It adds nodes and connections over time, finding the most efficient structure.
  • No Labeled Data: It doesn't need a "right answer" for every input; it just needs a score of how well it did.
  • Speciation: It groups similar networks together to protect new innovations, allowing them to optimize before they are forced to compete with the "elites."

NEAT and Reinforcement Learning

Although NEAT is not machine learning in the conventional sense, it is often applied in Reinforcement Learning (RL) contexts. RL is a branch of machine learning that focuses on training agents to make sequences of decisions by interacting with an environment.

"NEAT can be described as an evolutionary reinforcement learning method—not classical ML, but a biologically inspired optimization technique that achieves similar goals."

Core Concepts of RL:

  • Agent: The learner or decision-maker.
  • Environment: The external system with which the agent interacts.
  • State: A representation of the current situation.
  • Action: A choice made by the agent.
  • Reward: Feedback from the environment indicating the desirability of the action.

Why NEAT is "Evolutionary RL"

In classical RL, we use math to update a network. In NEAT, we use a Fitness Function (the evolutionary equivalent of a reward):

  1. Trial: A population of networks tries a task (e.g., navigating a maze).
  2. Fitness: Each network is assigned a score based on how close it got to the goal.
  3. Selection: The "weak" networks die; the "strong" ones reproduce and mutate.

Positioning NEAT in AI

Category Sub-fields / Examples
Machine Learning (ML) Supervised Learning, Unsupervised Learning, Reinforcement Learning (RL)
Evolutionary Computation Genetic Algorithms, Swarm Intelligence, NEAT
Symbolic & Logic AI Symbolic AI, Search & Planning, KRR, Expert Systems

Example: Q-Learning in FrozenLake

To illustrate the RL context in which NEAT often operates, consider the classic FrozenLake environment. Here, we use Q-learning (a value-based RL algorithm) to train an agent.


import gym
import numpy as np

# Create FrozenLake environment
env = gym.make("FrozenLake-v1", is_slippery=True)

# Initialize Q-table
state_size = env.observation_space.n
action_size = env.action_space.n
Q = np.zeros((state_size, action_size))

# Hyperparameters
learning_rate = 0.8
discount_factor = 0.95
epsilon = 0.1   # Exploration rate
episodes = 2000

# Training loop
for episode in range(episodes):
    state = env.reset()[0]
    done = False

    while not done:
        # Epsilon-greedy strategy
        if np.random.rand() < epsilon:
            action = env.action_space.sample()
        else:
            action = np.argmax(Q[state, :])

        # Take action
        next_state, reward, done, _, _ = env.step(action)

        # Q-learning update rule
        Q[state, action] = Q[state, action] + learning_rate * (
            reward + discount_factor * np.max(Q[next_state, :]) - Q[state, action]
        )

        state = next_state

print("Training complete!")
print("Q-table:")
print(Q)

Explanation of the Code:

  • Q-table: Stores the estimated value of each action in each state.
  • Epsilon-greedy: Balances exploration (trying new things) and exploitation (using known paths).
  • Update rule: Adjusts Q-values based on observed rewards and estimated future rewards.

Contrast: How NEAT would solve this

While the code above explicitly updates a table based on a math formula, a NEAT approach would create 100 random neural networks, let them all try the lake, and "breed" the ones that didn't fall into holes. Over time, the network's structure would change to better handle the "slippery" nature of the ice.

Conclusion

NEAT is not traditional machine learning—it does not rely on gradient descent or statistical pattern recognition. Instead, it is an evolutionary algorithm that evolves neural networks over time. However, because it often solves reinforcement learning problems, NEAT can be seen as a bridge between evolutionary computation and RL applications. This makes it a unique and powerful tool in the broader AI landscape.

Comments

Popular posts from this blog

Plug-ins vs Extensions: Understanding the Difference

Neat-Flappy Bird (Second Model)

Programming Paradigms: Procedural, Object-Oriented, and Functional