ruv-swarm
Version:
High-performance neural network swarm orchestration in WebAssembly
1,306 lines (1,203 loc) • 36.6 kB
JavaScript
/**
* Complete Neural Model Presets Integration
* 27+ Production-Ready Neural Network Architectures with Cognitive Patterns
*/
import { CognitivePatternEvolution } from '../cognitive-pattern-evolution.js';
import { MetaLearningFramework } from '../meta-learning-framework.js';
// Comprehensive neural model presets with cognitive patterns
export const COMPLETE_NEURAL_PRESETS = {
// 1. Transformer Models
transformer: {
bert_base: {
name: 'BERT Base',
description: 'Bidirectional encoder for language understanding',
model: 'transformer',
config: {
dimensions: 768,
heads: 12,
layers: 12,
ffDimensions: 3072,
dropoutRate: 0.1,
maxSequenceLength: 512,
vocabSize: 30522,
},
cognitivePatterns: ['convergent', 'systems', 'abstract'],
performance: {
expectedAccuracy: '92-95%',
inferenceTime: '15ms',
memoryUsage: '420MB',
trainingTime: '4 days on 16 TPUs',
},
useCase: 'Text classification, sentiment analysis, named entity recognition',
},
gpt_small: {
name: 'GPT Small',
description: 'Generative pre-trained transformer for text generation',
model: 'transformer',
config: {
dimensions: 768,
heads: 12,
layers: 12,
ffDimensions: 3072,
dropoutRate: 0.1,
maxSequenceLength: 1024,
vocabSize: 50257,
},
cognitivePatterns: ['divergent', 'lateral', 'abstract'],
performance: {
expectedAccuracy: '88-92%',
inferenceTime: '20ms',
memoryUsage: '510MB',
trainingTime: '2 weeks on 8 V100s',
},
useCase: 'Text generation, creative writing, code completion',
},
t5_base: {
name: 'T5 Base',
description: 'Text-to-text transformer for unified NLP tasks',
model: 'transformer',
config: {
dimensions: 768,
heads: 12,
encoderLayers: 12,
decoderLayers: 12,
ffDimensions: 3072,
dropoutRate: 0.1,
},
cognitivePatterns: ['systems', 'convergent', 'critical'],
performance: {
expectedAccuracy: '90-94%',
inferenceTime: '25ms',
memoryUsage: '850MB',
trainingTime: '3 weeks on 32 TPUs',
},
useCase: 'Translation, summarization, question answering',
},
},
// 2. CNN Models
cnn: {
efficientnet_b0: {
name: 'EfficientNet-B0',
description: 'Efficient convolutional network for image classification',
model: 'cnn',
config: {
inputShape: [224, 224, 3],
convLayers: [
{ filters: 32, kernelSize: 3, stride: 2, padding: 'same' },
{ filters: 16, kernelSize: 3, stride: 1, padding: 'same' },
{ filters: 24, kernelSize: 3, stride: 2, padding: 'same' },
{ filters: 40, kernelSize: 3, stride: 2, padding: 'same' },
{ filters: 80, kernelSize: 3, stride: 1, padding: 'same' },
{ filters: 112, kernelSize: 3, stride: 1, padding: 'same' },
{ filters: 192, kernelSize: 3, stride: 2, padding: 'same' },
{ filters: 320, kernelSize: 3, stride: 1, padding: 'same' },
],
outputSize: 1000,
},
cognitivePatterns: ['critical', 'convergent', 'abstract'],
performance: {
expectedAccuracy: '77.1% top-1',
inferenceTime: '4.9ms',
memoryUsage: '5.3MB',
trainingTime: '23 hours on 8 TPUs',
},
useCase: 'Image classification, feature extraction',
},
yolov5_small: {
name: 'YOLOv5 Small',
description: 'Real-time object detection network',
model: 'cnn',
config: {
inputShape: [640, 640, 3],
backbone: 'CSPDarknet',
neck: 'PANet',
head: 'YOLOv5Head',
anchors: [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]],
},
cognitivePatterns: ['systems', 'critical', 'convergent'],
performance: {
expectedAccuracy: '37.4% mAP',
inferenceTime: '6.4ms',
memoryUsage: '16MB',
trainingTime: '3 days on 1 V100',
},
useCase: 'Real-time object detection, autonomous driving',
},
},
// 3. RNN Models (LSTM/GRU)
lstm: {
bilstm_sentiment: {
name: 'BiLSTM Sentiment Analyzer',
description: 'Bidirectional LSTM for sentiment analysis',
model: 'lstm',
config: {
inputSize: 300,
hiddenSize: 256,
numLayers: 2,
outputSize: 3,
bidirectional: true,
dropoutRate: 0.3,
},
cognitivePatterns: ['convergent', 'systems', 'critical'],
performance: {
expectedAccuracy: '89-91%',
inferenceTime: '8ms',
memoryUsage: '45MB',
trainingTime: '4 hours on 1 GPU',
},
useCase: 'Sentiment analysis, emotion detection',
},
lstm_timeseries: {
name: 'LSTM Time Series Predictor',
description: 'LSTM for multi-step time series forecasting',
model: 'lstm',
config: {
inputSize: 10,
hiddenSize: 128,
numLayers: 3,
outputSize: 1,
sequenceLength: 100,
returnSequence: false,
},
cognitivePatterns: ['systems', 'convergent', 'abstract'],
performance: {
expectedAccuracy: '92% R²',
inferenceTime: '5ms',
memoryUsage: '25MB',
trainingTime: '2 hours on 1 GPU',
},
useCase: 'Stock prediction, weather forecasting, demand prediction',
},
},
// 4. GRU Models
gru: {
gru_translator: {
name: 'GRU Neural Translator',
description: 'GRU-based sequence-to-sequence translator',
model: 'gru',
config: {
inputSize: 512,
hiddenSize: 512,
numLayers: 4,
outputSize: 10000,
bidirectional: true,
attention: true,
},
cognitivePatterns: ['systems', 'abstract', 'convergent'],
performance: {
expectedAccuracy: '32.4 BLEU',
inferenceTime: '15ms',
memoryUsage: '120MB',
trainingTime: '5 days on 4 GPUs',
},
useCase: 'Machine translation, text summarization',
},
},
// 5. Autoencoder Models
autoencoder: {
vae_mnist: {
name: 'VAE for MNIST',
description: 'Variational autoencoder for digit generation',
model: 'vae',
config: {
inputSize: 784,
encoderLayers: [512, 256],
latentDimensions: 20,
decoderLayers: [256, 512],
betaKL: 1.0,
},
cognitivePatterns: ['divergent', 'abstract', 'lateral'],
performance: {
expectedAccuracy: '98% reconstruction',
inferenceTime: '2ms',
memoryUsage: '8MB',
trainingTime: '30 minutes on 1 GPU',
},
useCase: 'Digit generation, anomaly detection',
},
dae_denoising: {
name: 'Denoising Autoencoder',
description: 'Autoencoder for image denoising',
model: 'autoencoder',
config: {
inputSize: 4096,
encoderLayers: [2048, 1024, 512],
bottleneckSize: 256,
denoisingNoise: 0.3,
activation: 'relu',
},
cognitivePatterns: ['convergent', 'critical', 'systems'],
performance: {
expectedAccuracy: '28.5 PSNR',
inferenceTime: '4ms',
memoryUsage: '32MB',
trainingTime: '2 hours on 1 GPU',
},
useCase: 'Image denoising, feature extraction',
},
},
// 6. GNN Models
gnn: {
gcn_citation: {
name: 'GCN Citation Network',
description: 'Graph convolutional network for citation networks',
model: 'gnn',
config: {
nodeDimensions: 1433,
hiddenDimensions: 16,
outputDimensions: 7,
numLayers: 2,
dropoutRate: 0.5,
},
cognitivePatterns: ['systems', 'abstract', 'lateral'],
performance: {
expectedAccuracy: '81.5%',
inferenceTime: '10ms',
memoryUsage: '50MB',
trainingTime: '10 minutes on 1 GPU',
},
useCase: 'Citation network classification, social network analysis',
},
gat_molecular: {
name: 'GAT Molecular Property',
description: 'Graph attention network for molecular property prediction',
model: 'gat',
config: {
nodeDimensions: 64,
attentionHeads: 8,
hiddenUnits: 256,
numLayers: 3,
outputDimensions: 1,
},
cognitivePatterns: ['critical', 'systems', 'convergent'],
performance: {
expectedAccuracy: '89% R²',
inferenceTime: '12ms',
memoryUsage: '75MB',
trainingTime: '8 hours on 2 GPUs',
},
useCase: 'Drug discovery, molecular property prediction',
},
},
// 7. ResNet Models
resnet: {
resnet50_imagenet: {
name: 'ResNet-50 ImageNet',
description: 'Deep residual network for image classification',
model: 'resnet',
config: {
numBlocks: 16,
blockDepth: 3,
hiddenDimensions: 2048,
initialChannels: 64,
inputShape: [224, 224, 3],
outputDimensions: 1000,
},
cognitivePatterns: ['convergent', 'critical', 'systems'],
performance: {
expectedAccuracy: '76.1% top-1',
inferenceTime: '25ms',
memoryUsage: '98MB',
trainingTime: '8 days on 8 V100s',
},
useCase: 'Image classification, transfer learning backbone',
},
},
// 8. Attention Models
attention: {
multihead_attention: {
name: 'Multi-Head Attention',
description: 'Stand-alone multi-head attention mechanism',
model: 'attention',
config: {
heads: 8,
dimensions: 512,
dropoutRate: 0.1,
useCausalMask: false,
},
cognitivePatterns: ['systems', 'abstract', 'convergent'],
performance: {
expectedAccuracy: 'task-dependent',
inferenceTime: '3ms',
memoryUsage: '15MB',
trainingTime: 'varies',
},
useCase: 'Attention mechanism component, sequence modeling',
},
},
// 9. Diffusion Models
diffusion: {
ddpm_mnist: {
name: 'DDPM MNIST Generator',
description: 'Denoising diffusion probabilistic model',
model: 'diffusion',
config: {
timesteps: 1000,
betaSchedule: 'cosine',
imageSize: 28,
channels: 1,
modelChannels: 128,
},
cognitivePatterns: ['divergent', 'lateral', 'abstract'],
performance: {
expectedAccuracy: '3.17 FID',
inferenceTime: '1000ms',
memoryUsage: '200MB',
trainingTime: '2 days on 4 GPUs',
},
useCase: 'Image generation, data augmentation',
},
},
// 10. Neural ODE Models
neural_ode: {
node_dynamics: {
name: 'Neural ODE Dynamics',
description: 'Continuous-time dynamics modeling',
model: 'neural_ode',
config: {
solverMethod: 'dopri5',
tolerance: 1e-6,
hiddenDimensions: 64,
timeDimension: 1,
},
cognitivePatterns: ['systems', 'abstract', 'convergent'],
performance: {
expectedAccuracy: '95% trajectory',
inferenceTime: '50ms',
memoryUsage: '30MB',
trainingTime: '6 hours on 1 GPU',
},
useCase: 'Physical system modeling, continuous processes',
},
},
// 11. Capsule Networks
capsnet: {
capsnet_mnist: {
name: 'CapsNet MNIST',
description: 'Capsule network with dynamic routing',
model: 'capsnet',
config: {
primaryCaps: 32,
digitCaps: 10,
routingIterations: 3,
capsuleDimensions: 16,
},
cognitivePatterns: ['lateral', 'systems', 'abstract'],
performance: {
expectedAccuracy: '99.23%',
inferenceTime: '15ms',
memoryUsage: '35MB',
trainingTime: '10 hours on 1 GPU',
},
useCase: 'Viewpoint-invariant recognition, part-whole relationships',
},
},
// 12. Spiking Neural Networks
snn: {
lif_classifier: {
name: 'LIF Spiking Classifier',
description: 'Leaky integrate-and-fire spiking neural network',
model: 'snn',
config: {
neuronModel: 'lif',
threshold: 1.0,
decay: 0.95,
timeWindow: 100,
codingScheme: 'rate',
},
cognitivePatterns: ['systems', 'critical', 'convergent'],
performance: {
expectedAccuracy: '92%',
inferenceTime: '100ms',
memoryUsage: '10MB',
trainingTime: '4 hours on 1 GPU',
},
useCase: 'Energy-efficient inference, neuromorphic computing',
},
},
// 13. Neural Turing Machines
ntm: {
ntm_copy: {
name: 'NTM Copy Task',
description: 'Neural Turing machine for sequence copying',
model: 'ntm',
config: {
memorySize: [128, 20],
controllerSize: 100,
numHeads: 1,
shiftRange: 3,
},
cognitivePatterns: ['systems', 'abstract', 'convergent'],
performance: {
expectedAccuracy: '99.9%',
inferenceTime: '20ms',
memoryUsage: '45MB',
trainingTime: '12 hours on 1 GPU',
},
useCase: 'Algorithm learning, external memory tasks',
},
},
// 14. Memory Networks
memnn: {
memnn_qa: {
name: 'MemNN Question Answering',
description: 'End-to-end memory network for QA',
model: 'memnn',
config: {
memorySlots: 100,
hops: 3,
embeddingSize: 50,
temporalEncoding: true,
},
cognitivePatterns: ['convergent', 'systems', 'critical'],
performance: {
expectedAccuracy: '95% on bAbI',
inferenceTime: '8ms',
memoryUsage: '25MB',
trainingTime: '2 hours on 1 GPU',
},
useCase: 'Question answering, reasoning tasks',
},
},
// 15. Neural Cellular Automata
nca: {
nca_growth: {
name: 'NCA Pattern Growth',
description: 'Neural cellular automata for pattern formation',
model: 'nca',
config: {
channels: 16,
updateRule: 'sobel',
cellStates: 16,
gridSize: [64, 64],
},
cognitivePatterns: ['divergent', 'lateral', 'systems'],
performance: {
expectedAccuracy: 'qualitative',
inferenceTime: '5ms/step',
memoryUsage: '15MB',
trainingTime: '6 hours on 1 GPU',
},
useCase: 'Pattern generation, self-organization studies',
},
},
// 16. HyperNetworks
hypernet: {
hypernet_adaptive: {
name: 'Adaptive HyperNetwork',
description: 'Network that generates weights for target network',
model: 'hypernet',
config: {
hyperDim: 512,
targetLayers: ['conv1', 'conv2', 'fc1'],
embeddingSize: 128,
},
cognitivePatterns: ['abstract', 'lateral', 'systems'],
performance: {
expectedAccuracy: '94%',
inferenceTime: '30ms',
memoryUsage: '80MB',
trainingTime: '15 hours on 2 GPUs',
},
useCase: 'Adaptive networks, few-shot learning',
},
},
// 17. Meta-Learning Models
maml: {
maml_fewshot: {
name: 'MAML Few-Shot',
description: 'Model-agnostic meta-learning',
model: 'maml',
config: {
innerLR: 0.01,
outerLR: 0.001,
innerSteps: 5,
numWays: 5,
numShots: 1,
},
cognitivePatterns: ['abstract', 'divergent', 'critical'],
performance: {
expectedAccuracy: '95% 5-way 1-shot',
inferenceTime: '50ms',
memoryUsage: '40MB',
trainingTime: '24 hours on 4 GPUs',
},
useCase: 'Few-shot learning, rapid adaptation',
},
},
// 18. Neural Architecture Search
nas: {
darts_cifar: {
name: 'DARTS CIFAR-10',
description: 'Differentiable architecture search',
model: 'nas',
config: {
searchSpace: 'darts_space',
epochs: 50,
channels: 36,
layers: 20,
},
cognitivePatterns: ['divergent', 'critical', 'systems'],
performance: {
expectedAccuracy: '97.24%',
inferenceTime: '15ms',
memoryUsage: '60MB',
trainingTime: '4 days on 1 GPU',
},
useCase: 'AutoML, architecture optimization',
},
},
// 19. Mixture of Experts
moe: {
moe_nlp: {
name: 'MoE Language Model',
description: 'Sparse mixture of experts for NLP',
model: 'moe',
config: {
numExperts: 8,
expertCapacity: 2,
hiddenSize: 512,
routerType: 'top2',
},
cognitivePatterns: ['systems', 'divergent', 'abstract'],
performance: {
expectedAccuracy: '91% perplexity',
inferenceTime: '12ms',
memoryUsage: '400MB',
trainingTime: '1 week on 8 GPUs',
},
useCase: 'Large-scale language modeling, multi-task learning',
},
},
// 20. Neural Radiance Fields
nerf: {
nerf_3d: {
name: 'NeRF 3D Reconstruction',
description: 'Neural radiance field for 3D scene reconstruction',
model: 'nerf',
config: {
positionEncoding: 10,
directionEncoding: 4,
hiddenLayers: 8,
hiddenSize: 256,
},
cognitivePatterns: ['abstract', 'systems', 'lateral'],
performance: {
expectedAccuracy: '30 PSNR',
inferenceTime: '100ms/ray',
memoryUsage: '200MB',
trainingTime: '2 days on 1 GPU',
},
useCase: '3D reconstruction, novel view synthesis',
},
},
// 21. WaveNet
wavenet: {
wavenet_tts: {
name: 'WaveNet TTS',
description: 'WaveNet for text-to-speech synthesis',
model: 'wavenet',
config: {
dilationChannels: 32,
residualChannels: 32,
skipChannels: 512,
dilationDepth: 10,
dilationRepeat: 3,
},
cognitivePatterns: ['convergent', 'systems', 'critical'],
performance: {
expectedAccuracy: '4.5 MOS',
inferenceTime: '500ms/second',
memoryUsage: '150MB',
trainingTime: '1 week on 8 GPUs',
},
useCase: 'Speech synthesis, audio generation',
},
},
// 22. PointNet
pointnet: {
pointnet_seg: {
name: 'PointNet++ Segmentation',
description: 'Point cloud segmentation network',
model: 'pointnet',
config: {
pointFeatures: 3,
globalFeatures: 1024,
numClasses: 50,
samplingGroups: 3,
},
cognitivePatterns: ['systems', 'critical', 'abstract'],
performance: {
expectedAccuracy: '85.1% mIoU',
inferenceTime: '40ms',
memoryUsage: '90MB',
trainingTime: '20 hours on 2 GPUs',
},
useCase: '3D point cloud analysis, robotics',
},
},
// 23. World Models
world_model: {
world_model_rl: {
name: 'World Model RL',
description: 'World model for reinforcement learning',
model: 'world_model',
config: {
visionModel: 'vae',
memoryModel: 'mdn_rnn',
latentSize: 32,
hiddenSize: 256,
},
cognitivePatterns: ['systems', 'abstract', 'divergent'],
performance: {
expectedAccuracy: '900 score',
inferenceTime: '10ms',
memoryUsage: '120MB',
trainingTime: '3 days on 4 GPUs',
},
useCase: 'Model-based RL, environment simulation',
},
},
// 24. Normalizing Flows
flow: {
realvp_generation: {
name: 'RealNVP Generation',
description: 'Real-valued non-volume preserving flow',
model: 'normalizing_flow',
config: {
flowType: 'real_nvp',
couplingLayers: 8,
hiddenUnits: 512,
numBlocks: 2,
},
cognitivePatterns: ['divergent', 'abstract', 'lateral'],
performance: {
expectedAccuracy: '3.49 bits/dim',
inferenceTime: '20ms',
memoryUsage: '100MB',
trainingTime: '2 days on 4 GPUs',
},
useCase: 'Density estimation, generative modeling',
},
},
// 25. Energy-Based Models
ebm: {
ebm_generation: {
name: 'EBM Generator',
description: 'Energy-based generative model',
model: 'ebm',
config: {
energyFunction: 'mlp',
samplingSteps: 100,
stepSize: 10,
noise: 0.005,
},
cognitivePatterns: ['divergent', 'critical', 'systems'],
performance: {
expectedAccuracy: '7.85 FID',
inferenceTime: '200ms',
memoryUsage: '80MB',
trainingTime: '3 days on 2 GPUs',
},
useCase: 'Generative modeling, density estimation',
},
},
// 26. Neural Processes
neural_process: {
cnp_regression: {
name: 'CNP Regression',
description: 'Conditional neural process for regression',
model: 'neural_process',
config: {
latentDim: 128,
contextPoints: 10,
encoderHidden: [128, 128],
decoderHidden: [128, 128],
},
cognitivePatterns: ['abstract', 'systems', 'convergent'],
performance: {
expectedAccuracy: '0.15 MSE',
inferenceTime: '5ms',
memoryUsage: '30MB',
trainingTime: '4 hours on 1 GPU',
},
useCase: 'Few-shot regression, uncertainty estimation',
},
},
// 27. Set Transformer
set_transformer: {
set_anomaly: {
name: 'Set Anomaly Detection',
description: 'Set transformer for anomaly detection',
model: 'set_transformer',
config: {
inducingPoints: 32,
dimensions: 128,
numHeads: 4,
numBlocks: 4,
},
cognitivePatterns: ['critical', 'systems', 'convergent'],
performance: {
expectedAccuracy: '95% AUC',
inferenceTime: '15ms',
memoryUsage: '50MB',
trainingTime: '6 hours on 1 GPU',
},
useCase: 'Anomaly detection on sets, point cloud analysis',
},
},
};
/**
* Cognitive Pattern Selector
* Automatically selects cognitive patterns based on model and task
*/
export class CognitivePatternSelector {
constructor() {
this.patternEvolution = new CognitivePatternEvolution();
this.metaLearning = new MetaLearningFramework();
}
/**
* Select optimal cognitive patterns for a neural model preset
* @param {string} modelType - Type of neural model
* @param {string} presetName - Name of the preset
* @param {object} taskContext - Context about the task
*/
selectPatternsForPreset(modelType, presetName, taskContext = {}) {
const preset = COMPLETE_NEURAL_PRESETS[modelType]?.[presetName];
if (!preset) {
console.warn(`Preset not found: ${modelType}/${presetName}`);
return ['convergent']; // Default fallback
}
// Start with preset's recommended patterns
let patterns = [...preset.cognitivePatterns];
// Adjust based on task context
if (taskContext.requiresCreativity) {
patterns = this.enhanceCreativity(patterns);
}
if (taskContext.requiresPrecision) {
patterns = this.enhancePrecision(patterns);
}
if (taskContext.requiresAdaptation) {
patterns = this.enhanceAdaptation(patterns);
}
if (taskContext.complexity === 'high') {
patterns = this.handleHighComplexity(patterns);
}
// Ensure pattern diversity
patterns = this.ensurePatternDiversity(patterns);
return patterns;
}
/**
* Enhance patterns for creative tasks
*/
enhanceCreativity(patterns) {
if (!patterns.includes('divergent')) {
patterns.push('divergent');
}
if (!patterns.includes('lateral') && patterns.length < 4) {
patterns.push('lateral');
}
return patterns;
}
/**
* Enhance patterns for precision tasks
*/
enhancePrecision(patterns) {
if (!patterns.includes('convergent')) {
patterns.push('convergent');
}
if (!patterns.includes('critical') && patterns.length < 4) {
patterns.push('critical');
}
// Remove highly exploratory patterns for precision
return patterns.filter(p => p !== 'divergent' || patterns.length > 2);
}
/**
* Enhance patterns for adaptive tasks
*/
enhanceAdaptation(patterns) {
if (!patterns.includes('systems')) {
patterns.push('systems');
}
if (!patterns.includes('abstract') && patterns.length < 4) {
patterns.push('abstract');
}
return patterns;
}
/**
* Handle high complexity tasks
*/
handleHighComplexity(patterns) {
// For high complexity, ensure both analytical and creative patterns
const hasAnalytical = patterns.some(p => ['convergent', 'critical', 'systems'].includes(p));
const hasCreative = patterns.some(p => ['divergent', 'lateral', 'abstract'].includes(p));
if (!hasAnalytical) {
patterns.push('systems');
}
if (!hasCreative) {
patterns.push('abstract');
}
return patterns;
}
/**
* Ensure pattern diversity
*/
ensurePatternDiversity(patterns) {
// Limit to maximum 4 patterns
if (patterns.length > 4) {
// Keep the most diverse set
const diversity = this.calculatePatternDiversity(patterns);
patterns = this.selectMostDiverse(patterns, diversity, 4);
}
// Ensure at least 2 patterns for robustness
if (patterns.length < 2) {
if (!patterns.includes('convergent')) {
patterns.push('convergent');
} else {
patterns.push('systems');
}
}
return [...new Set(patterns)]; // Remove duplicates
}
/**
* Calculate diversity score for pattern combinations
*/
calculatePatternDiversity(patterns) {
const patternTypes = {
analytical: ['convergent', 'critical'],
creative: ['divergent', 'lateral'],
systemic: ['systems', 'abstract'],
};
let diversityScore = 0;
const typesCovered = new Set();
patterns.forEach(pattern => {
Object.entries(patternTypes).forEach(([type, typePatterns]) => {
if (typePatterns.includes(pattern)) {
typesCovered.add(type);
}
});
});
diversityScore = typesCovered.size / Object.keys(patternTypes).length;
return diversityScore;
}
/**
* Select most diverse pattern combination
*/
selectMostDiverse(patterns, currentDiversity, targetCount) {
if (patterns.length <= targetCount) {
return patterns;
}
// Simple heuristic: keep patterns that maximize type coverage
const selected = [];
const patternTypes = {
analytical: ['convergent', 'critical'],
creative: ['divergent', 'lateral'],
systemic: ['systems', 'abstract'],
};
// First, ensure one pattern from each type if possible
Object.values(patternTypes).forEach(typePatterns => {
const available = patterns.filter(p => typePatterns.includes(p));
if (available.length > 0 && selected.length < targetCount) {
selected.push(available[0]);
}
});
// Fill remaining slots with most unique patterns
patterns.forEach(pattern => {
if (!selected.includes(pattern) && selected.length < targetCount) {
selected.push(pattern);
}
});
return selected;
}
/**
* Get preset recommendations based on use case
*/
getPresetRecommendations(useCase, requirements = {}) {
const recommendations = [];
Object.entries(COMPLETE_NEURAL_PRESETS).forEach(([modelType, presets]) => {
Object.entries(presets).forEach(([presetName, preset]) => {
if (preset.useCase.toLowerCase().includes(useCase.toLowerCase())) {
const score = this.calculatePresetScore(preset, requirements);
recommendations.push({
modelType,
presetName,
preset,
score,
cognitivePatterns: this.selectPatternsForPreset(modelType, presetName, requirements),
});
}
});
});
// Sort by score
recommendations.sort((a, b) => b.score - a.score);
return recommendations.slice(0, 5); // Top 5 recommendations
}
/**
* Calculate preset score based on requirements
*/
calculatePresetScore(preset, requirements) {
let score = 1.0;
// Check performance requirements
if (requirements.maxInferenceTime) {
const inferenceTime = parseInt(preset.performance.inferenceTime, 10);
if (inferenceTime <= requirements.maxInferenceTime) {
score += 0.2;
} else {
score -= 0.3;
}
}
if (requirements.maxMemoryUsage) {
const memoryUsage = parseInt(preset.performance.memoryUsage, 10);
if (memoryUsage <= requirements.maxMemoryUsage) {
score += 0.2;
} else {
score -= 0.3;
}
}
if (requirements.minAccuracy) {
const accuracy = parseFloat(preset.performance.expectedAccuracy);
if (accuracy >= requirements.minAccuracy) {
score += 0.3;
} else {
score -= 0.2;
}
}
// Cognitive pattern alignment
if (requirements.cognitivePreference) {
const hasPreferred = preset.cognitivePatterns.some(p =>
p === requirements.cognitivePreference,
);
if (hasPreferred) {
score += 0.2;
}
}
return Math.max(0, Math.min(2, score));
}
}
/**
* Neural Adaptation Engine
* Enables cross-session learning and adaptation
*/
export class NeuralAdaptationEngine {
constructor() {
this.adaptationHistory = new Map();
this.crossSessionMemory = new Map();
this.performanceBaselines = new Map();
}
/**
* Initialize adaptation for a model preset
*/
async initializeAdaptation(agentId, modelType, presetName) {
const preset = COMPLETE_NEURAL_PRESETS[modelType]?.[presetName];
if (!preset) {
return;
}
this.adaptationHistory.set(agentId, {
modelType,
presetName,
baselinePerformance: preset.performance,
adaptations: [],
sessionCount: 0,
totalTrainingTime: 0,
performanceGains: [],
});
this.performanceBaselines.set(`${modelType}/${presetName}`, preset.performance);
}
/**
* Record adaptation results
*/
async recordAdaptation(agentId, adaptationResult) {
const history = this.adaptationHistory.get(agentId);
if (!history) {
return;
}
history.adaptations.push({
timestamp: Date.now(),
sessionId: history.sessionCount++,
result: adaptationResult,
performanceGain: this.calculatePerformanceGain(adaptationResult, history.baselinePerformance),
});
// Update cross-session memory
await this.updateCrossSessionMemory(agentId, adaptationResult);
}
/**
* Calculate performance gain from adaptation
*/
calculatePerformanceGain(result, baseline) {
const baselineAccuracy = parseFloat(baseline.expectedAccuracy) || 0;
const currentAccuracy = result.accuracy || 0;
return {
accuracyGain: currentAccuracy - baselineAccuracy,
relativeGain: baselineAccuracy > 0 ? (currentAccuracy - baselineAccuracy) / baselineAccuracy : 0,
efficiency: result.trainingTime ? baseline.trainingTime / result.trainingTime : 1,
};
}
/**
* Update cross-session memory
*/
async updateCrossSessionMemory(agentId, adaptationResult) {
const memoryKey = `agent_${agentId}_adaptations`;
if (!this.crossSessionMemory.has(memoryKey)) {
this.crossSessionMemory.set(memoryKey, []);
}
const memory = this.crossSessionMemory.get(memoryKey);
memory.push({
timestamp: Date.now(),
patterns: adaptationResult.cognitivePatterns || [],
performance: adaptationResult.performance || {},
insights: adaptationResult.insights || [],
});
// Keep only recent memories (last 100)
if (memory.length > 100) {
memory.splice(0, memory.length - 100);
}
}
/**
* Get adaptation recommendations
*/
async getAdaptationRecommendations(agentId) {
const history = this.adaptationHistory.get(agentId);
if (!history || history.adaptations.length < 3) {
return null; // Need more data
}
const recommendations = {
patterns: this.analyzePatternEffectiveness(history),
hyperparameters: this.suggestHyperparameters(history),
trainingStrategy: this.recommendTrainingStrategy(history),
};
return recommendations;
}
/**
* Analyze pattern effectiveness from history
*/
analyzePatternEffectiveness(history) {
const patternPerformance = new Map();
history.adaptations.forEach(adaptation => {
const patterns = adaptation.result.cognitivePatterns || [];
const gain = adaptation.performanceGain.accuracyGain;
patterns.forEach(pattern => {
if (!patternPerformance.has(pattern)) {
patternPerformance.set(pattern, { totalGain: 0, count: 0 });
}
const stats = patternPerformance.get(pattern);
stats.totalGain += gain;
stats.count++;
});
});
// Calculate average gain per pattern
const effectiveness = [];
patternPerformance.forEach((stats, pattern) => {
effectiveness.push({
pattern,
avgGain: stats.totalGain / stats.count,
frequency: stats.count,
});
});
effectiveness.sort((a, b) => b.avgGain - a.avgGain);
return effectiveness;
}
/**
* Suggest hyperparameters based on history
*/
suggestHyperparameters(history) {
// Analyze successful adaptations
const successfulAdaptations = history.adaptations.filter(a =>
a.performanceGain.accuracyGain > 0,
);
if (successfulAdaptations.length === 0) {
return {
learningRate: 0.001,
batchSize: 32,
epochs: 10,
};
}
// Extract and average successful hyperparameters
const hyperparams = {
learningRate: 0,
batchSize: 0,
epochs: 0,
};
successfulAdaptations.forEach(adaptation => {
const config = adaptation.result.trainingConfig || {};
hyperparams.learningRate += config.learningRate || 0.001;
hyperparams.batchSize += config.batchSize || 32;
hyperparams.epochs += config.epochs || 10;
});
const count = successfulAdaptations.length;
return {
learningRate: hyperparams.learningRate / count,
batchSize: Math.round(hyperparams.batchSize / count),
epochs: Math.round(hyperparams.epochs / count),
};
}
/**
* Recommend training strategy
*/
recommendTrainingStrategy(history) {
const recentPerformance = history.adaptations.slice(-5);
const isImproving = recentPerformance.every((a, i) =>
i === 0 || a.performanceGain.accuracyGain >= recentPerformance[i - 1].performanceGain.accuracyGain,
);
if (isImproving) {
return {
strategy: 'continue_current',
description: 'Current approach is showing consistent improvement',
recommendations: ['Maintain current learning rate', 'Consider increasing batch size'],
};
}
return {
strategy: 'explore_alternatives',
description: 'Performance has plateaued',
recommendations: [
'Try different cognitive patterns',
'Reduce learning rate',
'Implement learning rate scheduling',
'Consider data augmentation',
],
};
}
/**
* Export adaptation insights
*/
exportAdaptationInsights() {
const insights = {
totalAgents: this.adaptationHistory.size,
modelTypes: {},
overallPerformance: {
avgAccuracyGain: 0,
totalAdaptations: 0,
},
bestPractices: [],
};
this.adaptationHistory.forEach((history, _agentId) => {
const modelKey = `${history.modelType}/${history.presetName}`;
if (!insights.modelTypes[modelKey]) {
insights.modelTypes[modelKey] = {
count: 0,
avgGain: 0,
bestGain: 0,
};
}
const modelStats = insights.modelTypes[modelKey];
modelStats.count++;
history.adaptations.forEach(adaptation => {
const gain = adaptation.performanceGain.accuracyGain;
modelStats.avgGain += gain;
modelStats.bestGain = Math.max(modelStats.bestGain, gain);
insights.overallPerformance.avgAccuracyGain += gain;
insights.overallPerformance.totalAdaptations++;
});
});
// Calculate averages
Object.values(insights.modelTypes).forEach(stats => {
if (stats.count > 0) {
stats.avgGain /= stats.count;
}
});
if (insights.overallPerformance.totalAdaptations > 0) {
insights.overallPerformance.avgAccuracyGain /= insights.overallPerformance.totalAdaptations;
}
return insights;
}
}
// All components are already exported above