Worked Examples of Algebraic Neural Networks
Example 1: Polynomial Network for Function Approximation
Problem
Approximate the function f(x, y) = x² + 2xy + y² using an algebraic neural network.
Solution
import numpy as np
from algebraic_neural_network import PolynomialLayer
# Create a polynomial layer
poly_layer = PolynomialLayer(input_size=2, output_size=1, degree=2)
# Test points
test_points = np.array([
[1, 1], # f(1,1) = 1 + 2 + 1 = 4
[2, 3], # f(2,3) = 4 + 12 + 9 = 25
[0, 1], # f(0,1) = 0 + 0 + 1 = 1
[-1, 2] # f(-1,2) = 1 - 4 + 4 = 1
])
# Apply the polynomial transformation
output = poly_layer.forward(test_points)
print("Polynomial approximation results:", output.flatten())
Mathematical Analysis
The polynomial layer generates coefficients using the golden ratio φ = (1 + √5)/2:
- For output neuron 1: coefficient matrix uses φ¹ and φ²
- The transformation applies: y = Σᵢ Σⱼ (aᵢⱼ/j!) xʲ
Example 2: Group Theory Network for Rotation Invariance
Problem
Create a network that recognizes patterns invariant under rotations.
Solution
import numpy as np
from algebraic_neural_network import GroupTheoryLayer
# Create a group theory layer using 8-fold rotational symmetry
group_layer = GroupTheoryLayer(input_size=2, output_size=4, group_order=8)
# Test with a simple pattern (vector pointing in different directions)
patterns = np.array([
[1, 0], # Point along x-axis
[0, 1], # Point along y-axis
[1/√2, 1/√2], # Point along 45° diagonal
[-1, 0] # Point along negative x-axis
])
# Apply group transformations
transformed = group_layer.forward(patterns)
print("Group theory transformation results:")
print(transformed)
Mathematical Analysis
The group theory layer applies rotations from the cyclic group C₈:
- Rotation angles: 0°, 45°, 90°, 135°, 180°, 225°, 270°, 315°
- Each rotation is represented by a 2×2 rotation matrix
- The norm of the transformed vector provides rotation-invariant features
Example 3: Geometric Algebra Network for 3D Processing
Problem
Process 3D geometric data using geometric algebra operations.
Solution
import numpy as np
from algebraic_neural_network import GeometricAlgebraLayer
# Create geometric algebra layer
geo_layer = GeometricAlgebraLayer(input_size=3, output_size=4)
# 3D vectors representing different geometric entities
vectors = np.array([
[1, 0, 0], # Unit vector along x
[0, 1, 0], # Unit vector along y
[0, 0, 1], # Unit vector along z
[1, 1, 1] # Diagonal vector
])
# Apply geometric algebra transformations
geo_output = geo_layer.forward(vectors)
print("Geometric algebra results:")
print(geo_output)
Mathematical Analysis
The geometric algebra layer computes:
- Scalar products: a·b
- Vector products: a∧b (bivectors)
- Trivector products: a∧b∧c
- Mixed products combining all grades
Example 4: Complete Network for Pattern Classification
Problem
Build a complete algebraic neural network for classifying 2D patterns.
Solution
from algebraic_neural_network import AlgebraicNeuralNetwork, PolynomialLayer, GroupTheoryLayer
# Create network architecture
network = AlgebraicNeuralNetwork()
network.add_layer(PolynomialLayer(2, 4, degree=2)) # Feature extraction
network.add_layer(GroupTheoryLayer(4, 3, group_order=6)) # Symmetry processing
network.add_layer(PolynomialLayer(3, 1, degree=1)) # Final classification
# Test patterns
circle_points = np.array([
[np.cos(θ), np.sin(θ)] for θ in np.linspace(0, 2*np.pi, 8)
])
square_points = np.array([
[1, 1], [1, -1], [-1, -1], [-1, 1],
[1, 0], [0, 1], [-1, 0], [0, -1]
])
# Classify patterns
circle_scores = network.predict(circle_points)
square_scores = network.predict(square_points)
print("Circle pattern scores:", np.mean(circle_scores))
print("Square pattern scores:", np.mean(square_scores))
Analysis
This network demonstrates:
- Feature Extraction: Polynomial layer extracts nonlinear features
- Symmetry Processing: Group theory layer handles rotational symmetries
- Classification: Final layer provides decision boundary
Example 5: Time Series Processing with Algebraic Networks
Problem
Process time series data using algebraic transformations.
Solution
import numpy as np
def create_time_series_network():
network = AlgebraicNeuralNetwork()
# Window-based polynomial features
network.add_layer(PolynomialLayer(5, 6, degree=2)) # 5-point window
# Temporal symmetries
network.add_layer(GroupTheoryLayer(6, 4, group_order=4))
# Final prediction
network.add_layer(PolynomialLayer(4, 1, degree=1))
return network
# Generate sample time series
t = np.linspace(0, 4*np.pi, 100)
signal = np.sin(t) + 0.3*np.sin(3*t) + 0.1*np.random.randn(100)
# Create windows of 5 consecutive points
windows = np.array([signal[i:i+5] for i in range(len(signal)-4)])
# Process with algebraic network
ts_network = create_time_series_network()
predictions = ts_network.predict(windows)
print(f"Processed {len(windows)} time windows")
print(f"Prediction range: [{np.min(predictions):.3f}, {np.max(predictions):.3f}]")
Analysis
This demonstrates algebraic networks for temporal data:
- Windowing: Convert time series to fixed-size vectors
- Polynomial Features: Capture local nonlinear patterns
- Temporal Symmetries: Handle time-shift invariances
Performance Characteristics
Computational Complexity
- Polynomial Layers: O(nd) where n is input size, d is degree
- Group Theory Layers: O(ng) where g is group order
- Geometric Algebra Layers: O(n²) for geometric products
Memory Requirements
- Fixed Coefficients: No weight storage needed
- Intermediate Results: Only temporary computation storage
- Total Memory: O(n) where n is largest layer size
Accuracy Analysis
Algebraic networks provide:
- Consistency: Same input always produces same output
- Stability: Small input changes → small output changes
- Interpretability: Mathematical meaning for each operation
Practical Considerations
When to Use Algebraic Networks
- Known Mathematical Structure: Problem has clear algebraic properties
- No Training Data: When gradient-based training isn't feasible
- Interpretability Required: Need mathematical understanding of operations
- Real-time Processing: Fast, deterministic computation needed
Limitations
- Limited Expressivity: May not capture all possible patterns
- Parameter Selection: Choosing group orders, polynomial degrees
- Scaling: Performance with very high-dimensional data
Extensions
- Adaptive Coefficients: Use algebraic sequences that adapt to data
- Hybrid Networks: Combine with traditional neural networks
- Custom Algebras: Develop problem-specific algebraic structures