Bias control in AGISystem2 uses dimension masking to prevent protected attributes from influencing decisions. The BiasController can selectively disable dimensions during reasoning, implementing a geometric "veil of ignorance".

384-Dimensional Concept Vector Ontology: 0-255 Protected Axiology: 256-383 Bias Mask Application Original vector: ontology prot axiology Bias mask: 1 1 1 1 0 0 1 1 1 1 Masked result: × BiasController Operations setProtectedDimensions([120-159]) Marks dimensions as protected maskedDistance(a, b) L1 distance ignoring protected dims Protected Dimension Examples Employment Age, gender, ethnicity Lending Race, zip code proxies Scientific reasoning All axiological dims masked

The BiasController applies dimension masks to prevent protected attributes from influencing reasoning. When a mask has 0 in a dimension, that dimension is ignored during distance calculations. This implements fair decision-making by making the system "blind" to sensitive attributes.

How It Works

Bias control operates by modifying the masked L1 distance calculation:

  1. Define protected dimensions – Specify which dimensions encode sensitive attributes
  2. Create mask – Set protected dimension weights to 0
  3. Apply during reasoning – All similarity and containment checks use the masked distance
  4. Log decisionsAuditLog records when bias masks were applied

Mask Types

Mask TypeDimensions MaskedUse Case
Ontology-only 256-383 (all axiology) Pure factual reasoning
Protected attributes Specific ontological dims Fair hiring, lending
Custom domain Domain-specific subset Medical, legal contexts
Full mask None (all dims active) Normal reasoning

Implementation

// Define protected dimensions
biasController.setProtectedDimensions([120, 121, 122, 123]); // e.g., age, gender

// Create mask (384 dims, 1 = active, 0 = masked)
const mask = biasController.createFairnessMask();
// Result: [1,1,...,1,0,0,0,0,1,1,...] with 0s at positions 120-123

// Use in reasoning
const fairDistance = mathEngine.maskedL1(conceptA, conceptB, mask);

// Audit log entry created automatically:
// { action: "BIAS_MASK_APPLIED", dims: [120-123], context: "employment_decision" }

Veil of Ignorance Mode

For maximum fairness, enable veil of ignorance mode which masks all axiological dimensions plus protected ontological ones:

// Full veil: no values, no protected attributes
biasController.enableVeilOfIgnorance({
  protectedOntology: [120, 121, 122, 123],
  includeAllAxiology: true
});

// Now all reasoning ignores both values and protected attributes
ASK "Should applicant be hired?" # Based only on qualifications

Bias Detection

The system can detect potential bias by comparing results with and without masks:

// Run query twice: with and without mask
const normalResult = reasoner.ask(query, { mask: fullMask });
const fairResult = reasoner.ask(query, { mask: fairnessMask });

// If results differ, bias may be present
if (normalResult !== fairResult) {
  auditLog.warn("BIAS_DETECTED", { query, diff: [...] });
}

Related Documentation