ms-ai-architect/skills/ms-ai-governance/references/responsible-ai/bias-detection-mitigation-strategies.md
Kjell Tore Guttormsen 712a143e58 fix(ms-ai-architect): RX-KB1 strip stale plain-Verified pipe-tails (87) + audit-deteksjon [skip-docs]
De 87 referansefilene bar en plain-text `| Verified: <dato>`-hale på **Last updated:**-linjen
i 500B-header-vinduet — usynlig for den bold-only kontrakt-stacken (kb-headers.mjs / audit
RE_VERIFIED), og claimet en verifisering judgen aldri gjorde (samme poison-klasse som de 14
bold **Verified:** MCP Spor 1 fjernet). Uhåndtert springer den også dual-Verified-fellen: R7s
insertVerifiedFields ville stemplet en bold-verdi ved siden av den plain → to motstridende
provenance-claims per fil.

- ny driver strip-stale-verified-pipe.mjs: frosset 87-manifest (18 advisor + 45 eng + 8 gov +
  16 sec), pure verdi-bevarende strip (kun ` | Verified: …`-halen; **Last updated:**-dato
  byte-eksakt), hard per-fil-invariant (linjeantall uendret, body byte-identisk, dato bevart),
  idempotent, atomicWriteSync (RX-OPS2 recovery-kontrakt).
- audit-corpus-headers.mjs: ny plain-Verified-deteksjon (RE_PLAIN_VERIFIED + plainVerifiedPipe)
  — gjør M4-blindheten synlig så en stale plain-hale ikke kan gjenoppstå stille (non-advisor scope).
- 87 filer strippet; plain Verified i vinduet 0/389; live-audit plainVerifiedPipe 0.

Mekanisme: +15 tester (12 strip + 3 audit). Suite 875→890 exit 0. validate-plugin.sh 250/0.

Utsatt → RX-KB1b: footer-dato-avvik + label-whitelist (annen dialekt, flag-to-human).
2026-07-16 20:04:52 +02:00

1022 lines
40 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Bias Detection and Mitigation - Practical Approaches
**Last updated:** 2026-06-24
**Status:** GA
**Category:** Responsible AI & Governance
**Type:** reference
**Source:** https://learn.microsoft.com/azure/machine-learning/concept-responsible-ai-dashboard
---
## Innhold
- [Introduksjon](#introduksjon)
- [Kjernekomponenter / Nøkkelegenskaper](#kjernekomponenter--nøkkelegenskaper)
- [Arkitekturmønstre](#arkitekturmønstre)
- [Beslutningsveiledning](#beslutningsveiledning)
- [Integrasjon med Microsoft-stakken](#integrasjon-med-microsoft-stakken)
- [Offentlig sektor (Norge)](#offentlig-sektor-norge)
- [Kostnad og lisensiering](#kostnad-og-lisensiering)
- [For arkitekten (Cosmo)](#for-arkitekten-cosmo)
- [Kilder og verifisering](#kilder-og-verifisering)
## Introduksjon
Bias detection og mitigation er kritiske komponenter i utviklingen av rettferdige AI-systemer. Microsoft tilbyr et helhetlig rammeverk for å identifisere, måle og redusere bias gjennom hele AI-livssyklusen – fra datainsamling til produksjonsovervåkning.
**To hovedtyper AI-skapt skade:**
| Skadetype | Beskrivelse | Eksempel |
|-----------|-------------|----------|
| **Allocation harm** | Systemet gir eller holder tilbake muligheter, ressurser eller informasjon for bestemte grupper | Lånesystem som favoriserer én demografisk gruppe over andre |
| **Quality-of-service harm** | Systemet fungerer dårligere for én gruppe enn en annen | Stemmegjenkenning som feiler oftere for kvinner enn menn |
**Viktig prinsipp:** Fairness er en sosio-teknisk utfordring. Kvantitative metrikker fanger ikke alle aspekter av rettferdighet (som rettssikkerhet og prosessuell rettferdighet), og flere fairness-metrikker kan ikke optimaliseres samtidig.
---
## Kjernekomponenter / Nøkkelegenskaper
### 1. Responsible AI Dashboard (Azure Machine Learning)
Helhetlig plattform som integrerer seks verktøy for model debugging og bias assessment:
| Komponent | Formål | Verktøy |
|-----------|--------|---------|
| **Model Overview & Fairness** | Evaluerer modellytelse på tvers av sensitive features (kjønn, rase, alder) | [Fairlearn](https://fairlearn.org/) |
| **Error Analysis** | Identifiserer feilfordelinger og kohorter med høy feilrate | [Error Analysis](https://erroranalysis.ai/) |
| **Data Analysis** | Utforsker datasetdistribusjoner for over-/underrepresentasjon | Azure ML native |
| **Model Interpretability** | Forklarer hvilke features som påvirker prediksjoner | [InterpretML](https://interpret.ml/) |
| **Counterfactual Analysis** | Viser minimale endringer som gir motsatt prediksjon | [DiCE](https://github.com/interpretml/DiCE) |
| **Causal Inference** | Estimerer kausale effekter av intervensjoner | [EconML](https://github.com/Microsoft/EconML) |
**Prosess for model debugging:**
1. **Identify** → Finn feil og fairness-problemer (error analysis, fairness metrics)
2. **Diagnose** → Forstå årsakene (data analysis, interpretability, counterfactuals)
3. **Mitigate** → Implementer løsninger (Fairlearn-algoritmer, data rebalancing)
### 2. Fairlearn – Bias Mitigation Framework
**Konseptuell tilnærming:** Group fairness – "Hvilke grupper risikerer å oppleve skade?"
**Disparity metrics:**
| Metrikk-klasse | Måler | Eksempler |
|----------------|-------|-----------|
| **Model performance disparity** | Forskjeller i ytelse på tvers av grupper | Accuracy rate, error rate, precision, recall, MAE |
| **Selection rate disparity** | Forskjeller i positive prediksjoner | Loan approval rate, favorable classification rate |
**Parity constraints (paritetsbegrensninger):**
| Constraint | Formål | ML-oppgave | Beskrivelse |
|------------|--------|------------|-------------|
| **Demographic parity** | Reduser allocation harm | Binary classification, regression | Samme andel positive prediksjoner på tvers av grupper |
| **Equalized odds** | Diagnostiser allocation og QoS harm | Binary classification | Samme true positive rate og false positive rate |
| **Equal opportunity** | Diagnostiser allocation og QoS harm | Binary classification | Samme true positive rate (recall) |
| **Bounded group loss** | Reduser QoS harm | Regression | Begrens maksimal loss for hver gruppe |
### 3. Fairlearn Mitigation Algorithms
**Type 1: Reduction algorithms (retraining)**
| Algoritme | Beskrivelse | ML-task | Sensitive features | Parity constraints |
|-----------|-------------|---------|--------------------|--------------------|
| `ExponentiatedGradient` | Black-box reductions approach (iterativ gradient-basert) | Binary classification | Categorical | Demographic parity, equalized odds |
| `GridSearch` | Grid-search over reweighted datasets | Binary classification / Regression | Binary | Demographic parity, equalized odds / Bounded group loss |
**Hvordan det fungerer:**
- Tar en eksisterende estimator (f.eks. LightGBM)
- Genererer sekvens av retrained modeller med reweighted training data
- Bruker upweighting/downweighting av grupper for å redusere disparities
- Du velger modell med beste trade-off mellom accuracy og fairness
**Type 2: Post-processing algorithms (ingen retraining)**
| Algoritme | Beskrivelse | ML-task | Sensitive features | Parity constraints |
|-----------|-------------|---------|--------------------|--------------------|
| `ThresholdOptimizer` | Justerer decision threshold per gruppe | Binary classification | Categorical | Demographic parity, equalized odds |
**Hvordan det fungerer:**
- Tar eksisterende classifier og sensitive feature som input
- Deriverer monoton transformasjon av prediksjonene
- Enforcer fairness constraints uten å retrainere modellen
- Raskest og mest fleksibel tilnærming
**Viktig advarsel:** Mitigation-algoritmer kan redusere bias, men eliminerer den ikke fullstendig. Utviklere må vurdere om reduksjonen er tilstrekkelig for deres use case.
### 4. Azure AI Content Safety (Runtime Protection)
**Formål:** Real-time content filtering for generative AI outputs.
**Kategorier som filtreres:**
| Kategori | Beskrivelse | Severity levels |
|----------|-------------|-----------------|
| **Hate & Fairness** | Diskriminerende språk basert på rase, kjønn, religion, funksjonsnivå, etc. | Safe, Low, Medium, High |
| **Sexual** | Seksuelt innhold, trakassering, utnyttelse | Safe, Low, Medium, High |
| **Violence** | Voldelig innhold, våpen, trusler | Safe, Low, Medium, High |
| **Self-harm** | Selvskading, selvmord | Safe, Low, Medium, High |
**Default konfigurasjon:**
- **Text models:** Medium severity threshold (blokkerer medium og høyere)
- **Image models:** Medium severity threshold (samme terskel som text models for alle fire kategorier)
- Content filtering skjer synkront under inferens
- Separat fakturering etter [Azure AI Content Safety pricing](https://azure.microsoft.com/pricing/details/cognitive-services/content-safety/)
**Tilpasningsmuligheter:**
- Configurable filters via "Guardrails & controls" i AI Foundry portal
- Custom blocklists (ord/mønstre du vil blokkere)
- Meta-prompts (systemmeldinger som guider modelladferd)
- Threshold-justering per kategori
**Viktig for serverless API deployments:** Content filtering er ikke automatisk aktivert for ikke-Model Inference API. Du må implementere det separat via Azure AI Content Safety SDK.
### 5. Fairness Metrics for Classification Models
**Metrics for protected group comparison:**
| Metric | Måler | Definisjon |
|--------|-------|------------|
| `predictive_parity` | Precision-forskjell | Er modellens precision lik på tvers av grupper? |
| `predictive_equality` | False positive rate-forskjell | Er false positive rate lik? |
| `equal_opportunity` | True positive rate-forskjell | Predikeres positive labels like godt for begge grupper? |
| `statistical_parity` | Selection rate-forskjell | Er andelen positive prediksjoner lik? |
**Slicing for protected groups:**
- Bruk Boolean slice expressions (f.eks. `age < 25`)
- Gruppe der expression=True er "protected group"
- Gruppe der expression=False er "unprotected group"
- Automatisk beregning av comparative metrics
**Referanser:**
- Wikipedia: [Fairness (machine learning)](https://en.wikipedia.org/wiki/Fairness_(machine_learning))
- Paper: "Fairness Definitions Explained" (Verma & Rubin, 2018)
---
## Arkitekturmønstre
### Mønster 1: Pre-deployment Bias Assessment Pipeline
**Workflow:**
```
Training Data → Data Analysis (overrepresentasjon?)
↓
Model Training (baseline)
↓
Fairness Assessment (disparity metrics)
↓
┌────────────┴────────────┐
↓ ↓
Acceptable? Unacceptable?
↓ ↓
Deploy model Apply mitigation
↓
GridSearch / ExponentiatedGradient
↓
Retrain & reassess
↓
Select best trade-off model
```
**Implementasjon i Azure ML:**
```python
# 1. Create Responsible AI Dashboard
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
ml_client = MLClient(DefaultAzureCredential(), subscription_id, rg, workspace)
# 2. Load Fairlearn mitigation component
rai_fairness_component = ml_client_registry.components.get(
name="microsoft_azureml_rai_tabular_fairness",
label="latest"
)
# 3. Configure fairness job
fairness_job = rai_fairness_component(
rai_insights_dashboard=create_rai_job.outputs.rai_insights_dashboard,
sensitive_features=["gender", "age", "ethnicity"],
fairness_metric_thresholds={
"demographic_parity": 0.05, # Max 5% disparity
"equalized_odds": 0.05
}
)
```
**Output:** Responsible AI Scorecard (PDF) for stakeholder sharing.
### Mønster 2: Multi-layered Content Filtering (Runtime)
**Defense-in-depth for generative AI:**
```
User Input → Layer 1: Input Filtering
↓
Azure AI Content Safety (Prompt Shield)
- Detect jailbreak attempts
- Filter hate/sexual/violence content
- Apply custom blocklists
↓
Layer 2: Model Inference
↓
Azure OpenAI / Custom Model
- Meta-prompts for behavior guidance
- Internal monitoring (anomaly detection)
↓
Layer 3: Output Filtering
↓
Azure AI Content Safety (Response Filter)
- Content category filtering
- Custom validation rules
- Compliance checks
↓
Audit Logging (Azure Monitor)
↓
User Output
```
**Implementasjon:**
```python
from azure.ai.contentsafety import ContentSafetyClient
from azure.ai.contentsafety.models import AnalyzeTextOptions
# Input filtering
input_analysis = content_safety_client.analyze_text(
AnalyzeTextOptions(text=user_input, categories=["Hate", "Violence"])
)
if input_analysis.hate_result.severity >= 2: # Medium or higher
return {"blocked": True, "reason": "Hate content detected"}
# ... model inference ...
# Output filtering
output_analysis = content_safety_client.analyze_text(
AnalyzeTextOptions(text=model_response, categories=["Hate", "Sexual", "Violence"])
)
if output_analysis.hate_result.severity >= 2:
# Apply correction or regenerate
pass
```
**Best practices:**
- **Input layer:** Rate limiting, schema validation, malicious pattern detection
- **Processing layer:** Model monitoring (drift, anomaly), runtime security scanning
- **Output layer:** Cross-check mot policies, audit logging, user feedback loop
### Mønster 3: Continuous Fairness Monitoring (Production)
**Post-deployment drift detection:**
```
Production Traffic → Inference Logging (Azure ML)
↓
Data Profiling (scheduled)
↓
Fairness Metrics Calculation
- Predictive parity
- Predictive equality
- Equal opportunity
- Statistical parity
↓
┌───────┴────────┐
↓ ↓
Within thresholds? Exceeds thresholds?
↓ ↓
Continue monitoring Trigger alert
↓
Retrain pipeline
↓
A/B test new model
```
**Databricks-eksempel:**
```python
from databricks.data_quality import DataQualityMonitor
monitor = DataQualityMonitor.create(
table_name="inference_logs",
inference_log=True,
problem_type="classification",
slicing_exprs=["age < 25"], # Protected group
)
# Automatic metrics: predictive_parity, predictive_equality, equal_opportunity
```
**Varslingskriterier:**
- Disparity metric overstiger threshold (f.eks. >10% difference)
- Endring i population distribution (data drift)
- User feedback indikerer bias (feedback loop)
**Respons:**
- Automatisk retraining med oppdatert data
- Model rollback til forrige versjon
- Human review for root cause analysis
### Mønster 4: Human-in-the-Loop (HITL) Bias Correction
**Workflow for sensitive use cases:**
```
Model Prediction → Confidence Threshold Check
↓
High confidence? → Direct output
↓
Low confidence / Sensitive group
↓
Queue for Human Review
↓
Expert annotates
- Correct/Incorrect
- Bias present? (Y/N)
- Recommended label
↓
Feedback to Retraining Pipeline
↓
Fine-tune model on corrected labels
```
**Implementasjon i Copilot Studio:**
- **Escalation triggers:** Confidence < 70%, sensitive demographic detected
- **Review interface:** Azure ML Human-in-the-Loop labeling
- **Feedback loop:** Export corrections → retrain → deploy
**Governance layer:**
- Ethics committee oversees HITL decisions
- Audit trail for all manual interventions
- Regular review meetings for pattern analysis
---
## Beslutningsveiledning
### Når bruke hvilken tilnærming?
| Scenario | Anbefalt tilnærming | Verktøy |
|----------|---------------------|---------|
| **Pre-deployment assessment** | Fairlearn + Responsible AI Dashboard | `GridSearch`, `ExponentiatedGradient`, Fairness Assessment |
| **Existing model (no retraining)** | Post-processing mitigation | `ThresholdOptimizer` |
| **Generative AI (runtime)** | Multi-layered content filtering | Azure AI Content Safety, custom blocklists |
| **Production monitoring** | Continuous fairness metrics | Azure ML Inference Logging, Databricks Data Quality Monitor |
| **High-stakes decisions** | Human-in-the-Loop | Azure ML HITL, escalation workflows |
| **Data imbalance** | Data-level mitigation | Resampling, reweighting, synthetic data (SMOTE) |
### Valg av parity constraint
| Use case | Anbefalt constraint | Begrunnelse |
|----------|---------------------|-------------|
| Lånesøknader | Equalized odds | Både false positives (galt avslag) og false negatives (galt godkjenning) har konsekvenser |
| Ansettelse | Demographic parity | Like mange fra hver gruppe bør få tilbud (unngå systematic exclusion) |
| Medisinsk diagnose | Equal opportunity | Viktigst at sykdomstilfeller fanges opp likt på tvers av grupper |
| Risiko-scoring | Bounded group loss | Begrens maksimal feil per gruppe (unngå katastrofal feil for én gruppe) |
### Trade-off-vurderinger
**Accuracy vs. Fairness:**
| Scenario | Prioritering | Approach |
|----------|--------------|----------|
| **Safety-critical (medisin)** | Accuracy > Fairness (men begge viktig) | Start med høy accuracy, juster fairness med `ThresholdOptimizer` |
| **Offentlig sektor (NAV, Skatteetaten)** | Fairness ≥ Accuracy | Bruk `GridSearch` med strict fairness constraints |
| **Kommersiell (marketing)** | Balansert | `ExponentiatedGradient` med business-driven threshold |
**Multiple fairness metrics:**
- Kan **ikke** optimalisere alle metrics samtidig (impossibility theorem)
- Velg 1-2 primary metrics basert på stakeholder-prioriteringer
- Dokumenter trade-offs i ADR (Architecture Decision Record)
**Data diversity vs. performance:**
- Mer diverse training data → bedre fairness, men kan redusere accuracy kortsiktig
- Løsning: Aktiv learning for underrepresenterte grupper, synthetic data augmentation
---
## Integrasjon med Microsoft-stakken
### Azure Machine Learning
**Responsible AI Dashboard – komponenter:**
| Komponent | SDK-metode | Beskrivelse |
|-----------|------------|-------------|
| RAI Insights | `RAIInsights.from_model()` | Oppretter dashboard instance |
| Fairness Assessment | `add_fairness()` | Legger til fairness metrics |
| Error Analysis | `add_error_analysis()` | Tree-based error cohort discovery |
| Model Interpretability | `add_explainer()` | SHAP/LIME feature importance |
| Counterfactual | `add_counterfactual()` | DiCE-baserte counterfactuals |
| Causal Inference | `add_causal()` | EconML treatment effects |
**Pipeline-integrasjon:**
```python
from responsibleai import RAIInsights
rai_insights = RAIInsights(
model=trained_model,
train=train_data,
test=test_data,
target_column="outcome",
task_type="classification"
)
# Add components
rai_insights.fairness.add(
sensitive_features=["gender", "age_group"],
fairness_metrics=["demographic_parity", "equalized_odds"]
)
rai_insights.explainer.add()
rai_insights.error_analysis.add()
# Compute
rai_insights.compute()
# Save to Azure ML
rai_insights.save("rai_dashboard_v1")
```
**Scorecard generation:**
```python
from azure.ai.ml.entities import ResponsibleAIScorecardConfig
scorecard_config = ResponsibleAIScorecardConfig(
model_name="Housing Price Classifier",
model_type="classification",
metrics={
"accuracy_score": {"threshold": ">=0.85"},
"precision_score": {"threshold": ">=0.80"}
},
fairness={
"metric": ["accuracy_score", "selection_rate"],
"sensitive_features": ["age_group", "gender"],
"fairness_evaluation_kind": "difference",
"threshold": "<=0.05" # Max 5% disparity
}
)
# Generate PDF scorecard
ml_client.responsible_ai.scorecard.create(
dashboard_name="rai_dashboard_v1",
config=scorecard_config
)
```
### Microsoft Foundry
**Content Safety-integrasjon:**
1. **Via serverless API deployment:**
- Default content filters aktiveres automatisk
- Konfigurerbart via "Guardrails & controls" tab
- Medium threshold for text, Low for images
2. **Via standalone Content Safety API:**
```python
from azure.ai.contentsafety import ContentSafetyClient
client = ContentSafetyClient(endpoint=endpoint, credential=credential)
# Analyze text
result = client.analyze_text(
AnalyzeTextOptions(
text=user_input,
categories=["Hate", "Sexual", "Violence", "SelfHarm"],
blocklist_names=["custom_blocklist"],
halt_on_blocklist_hit=True
)
)
# Check results
if result.hate_result.severity >= 2: # Medium or higher
# Block or flag content
```
3. **Custom categories (preview):**
- Define egne kategorier for domene-spesifikk content moderation
- Train via Content Safety Studio
**Evaluation-integrasjon:**
```python
from azure.ai.evaluation import HateUnfairnessEvaluator
evaluator = HateUnfairnessEvaluator(
azure_ai_project=azure_ai_project,
credential=credential,
threshold=1 # Severity threshold
)
# Evaluate responses
result = evaluator(
query="What is the capital of France?",
response="Paris"
)
```
### Copilot Studio
**Bias mitigation i conversational AI:**
1. **Diverse training data:**
- Sørg for at knowledge sources representerer diverse perspektiver
- Audit topics for cultural bias
- Test med users fra ulike demografiske grupper
2. **Transparency practices:**
- Disclose at brukeren snakker med AI
- Kommuniser hvordan agenten er designet
- Gi opt-out for sensitive topics
3. **Human-in-the-loop:**
- Escalation flows for sensitive queries
- Human review av flagged conversations
- Feedback mechanism for bias reporting
4. **Monitoring:**
- Track conversation analytics per user segment
- Alert på disparities i satisfaction scores
- Regular bias audits av conversation logs
**Implementering:**
```yaml
# topics/bias-sensitive-topic.yaml
triggers:
- "loan application"
- "credit check"
nodes:
- id: check_sensitive_features
action: call_flow
flow: sensitive_feature_detector
- id: human_review_gate
condition: sensitive_features_detected == true
action: escalate_to_human
- id: proceed_automated
condition: sensitive_features_detected == false
action: continue_conversation
```
### Power Platform AI
**AI Builder – fairness considerations:**
| Modelltype | Bias-risiko | Mitigation |
|------------|-------------|------------|
| **Form Processing** | Lav (objektgjenkjenning) | Test på diverse form layouts |
| **Text Classification** | Høy (språkavhengig) | Balanced training data, diverse examples |
| **Prediction** | Høy (historisk bias) | Feature audit, fairness metrics post-training |
| **Object Detection** | Middels | Test på diverse image qualities, lighting |
**Best practices:**
- **Data audit:** Review training data for representation
- **Test cohorts:** Validate modell på underrepresenterte grupper
- **Feedback loop:** Users kan flagge incorrect predictions
- **Regular retraining:** Incorporate feedback, update data distribution
---
## Offentlig sektor (Norge)
### Juridiske krav og retningslinjer
**EU AI Act (gjelder fra 2026):**
| Risiko-kategori | Eksempler | Krav |
|-----------------|-----------|------|
| **Uakseptabel risiko** | Social scoring, subliminal manipulation | Forbudt |
| **Høy risiko** | Rekruttering, kreditt-scoring, rettsvesen | Conformity assessment, bias testing, logging, transparency |
| **Begrenset risiko** | Chatbots | Transparency disclosure |
| **Minimal risiko** | Spam-filtre | Ingen spesifikke krav |
**For høy-risiko AI-systemer:**
- ✅ **Bias testing påkrevd** før deployment
- ✅ **Dokumentasjon** av data sources, mitigation strategies
- ✅ **Human oversight** for endelige beslutninger
- ✅ **Audit trail** med logging av alle prediksjoner
- ✅ **Post-market monitoring** for bias drift
**Norsk personopplysningslov (GDPR-implementering):**
- **Art. 22:** Rett til ikke å være gjenstand for automatiserte avgjørelser (krever human review for høy-stakes)
- **Art. 13-14:** Rett til informasjon om automatisert behandling
- **Art. 15:** Rett til innsyn (hvilke data ble brukt?)
**Diskrimineringsloven:**
- Forbud mot diskriminering på grunnlag av kjønn, etnisitet, religion, funksjonsnivå, etc.
- Gjelder også for AI-systemer som påvirker tilgang til tjenester
### NAV, Skatteetaten, offentlige etater – særlige hensyn
**Transparenskrav:**
| Stakeholder | Informasjonsbehov | Løsning |
|-------------|-------------------|---------|
| **Innbygger** | Hvorfor fikk jeg dette vedtaket? | Counterfactual explanations, LIME/SHAP |
| **Saksbehandler** | Hvilke faktorer vektet modellen? | Feature importance, decision rules |
| **Jurist/kontrollorgan** | Er systemet diskriminerende? | Fairness metrics, audit reports |
| **Datatilsynet** | Overholdelse av personvern? | Privacy impact assessment, logging |
**Anbefalte tiltak:**
1. **Pre-deployment:**
- Gjennomfør Responsible AI Impact Assessment (template fra Microsoft)
- Fairness testing på alle relevante demografiske grupper
- Juridisk review av modellbeslutninger mot diskrimineringsloven
- Dokumenter beslutning om acceptable trade-offs i ADR
2. **Deployment:**
- **HITL workflow:** Modellen foreslår, menneske beslutter (spesielt for vedtak)
- **Explanation requirement:** Alle automatiserte vedtak må ha forklaring
- **Opt-out mechanism:** Innbygger kan kreve manuell behandling
- **Audit logging:** Full sporbarhet (input, output, timestamp, versjon)
3. **Post-deployment:**
- **Quarterly bias audits:** Review fairness metrics per kvartal
- **Citizen feedback:** Klageportal for å rapportere opplevd diskriminering
- **Model retraining:** Ved detektert bias, retrain med corrected data
- **Annual compliance report:** Til Datatilsynet/kontrollorgan
**Eksempel – NAV ytelsesberegning:**
```python
# Pre-deployment fairness check
fairness_report = model_evaluator.assess_fairness(
sensitive_features=["gender", "ethnicity", "age", "disability_status"],
metrics=["demographic_parity", "equalized_odds"],
thresholds={"max_disparity": 0.05} # 5% max difference
)
if fairness_report.compliant:
# Deploy with HITL
deploy_model(human_review_threshold=0.7)
else:
# Apply mitigation
mitigated_model = apply_fairlearn_mitigation(
model=original_model,
constraint="demographic_parity",
sensitive_features=["gender", "ethnicity"]
)
```
**Spesifikke utfordringer:**
- **Historisk bias i data:** Tidligere vedtak kan reflektere diskriminering → data cleaning required
- **Proxy features:** Features som korrelerer med sensitive attributes (f.eks. postnummer → etnisitet) må håndteres
- **Explainability vs. accuracy:** Ofte trade-off – offentlig sektor prioriterer explainability
- **Språk/dialekt:** NLP-modeller må fungere likt for alle norske dialekter og minoritetsspråk
---
## Kostnad og lisensiering
### Azure AI Content Safety
**Pricing-modell (per 1000 text records):**
| Tier | Records/måned | Pris per 1000 records | Totalkostnad (NOK, ca.) |
|------|---------------|-----------------------|-------------------------|
| **0-1M** | Første 1 million | $1.00 | ~10 000 NOK |
| **1M-10M** | Neste 9 millioner | $0.75 | ~67 500 NOK (kumulativ: ~77 500) |
| **10M+** | Over 10 millioner | $0.50 | Variable |
**Image analysis:** $1.50 per 1000 images (all tiers)
**Custom categories (preview):** Separat pricing (kontakt Microsoft)
**Viktig:**
- Content Safety faktureres **separat** fra Azure OpenAI/model inference
- Default content filters på serverless deployments teller mot kvote
- Region-basert pricing (US typically lowest)
### Azure Machine Learning – Responsible AI Dashboard
**Kostnadsdrivere:**
| Komponent | Ressurs | Estimert kostnad |
|-----------|---------|------------------|
| **Compute for dashboard generation** | Standard_DS3_v2 (4 cores) | ~6 NOK/time |
| **Storage (dashboard artifacts)** | Azure Blob Storage | ~0.20 NOK/GB/måned |
| **Fairlearn computation** | CPU-intensive (50-100 models for GridSearch) | Variable (~100-500 NOK per run) |
| **Scorecard generation** | Minimal (PDF generation) | ~1-5 NOK per scorecard |
**Typisk scenario (model fairness assessment):**
- **Dashboard generation:** 30 min compute → ~3 NOK
- **Storage:** 500 MB artifacts → ~0.10 NOK/måned
- **GridSearch mitigation:** 2 timer compute → ~12 NOK
- **Total per assessment:** ~15-20 NOK
**Skalering:**
- Dashboards kan genereres én gang per modellversjon (ikke per inference)
- Re-use dashboards på tvers av stakeholders (PDF scorecard)
- Batch assessments for multiple models: ~10-15 NOK per modell
### Lisenskrav
**Inkludert i Azure ML-lisens:**
- Responsible AI Dashboard (no additional license)
- Fairlearn (open source, Apache 2.0)
- InterpretML, EconML, DiCE (alle open source)
**Krever egen lisens:**
- Azure AI Content Safety (pay-per-use, ingen base fee)
- Azure OpenAI (separate pricing for models)
**Copilot Studio:**
- Responsible AI features inkludert i standard Copilot Studio-lisens
- No per-use charge for bias detection features
**Cost optimization tips:**
- ✅ Bruk **dev/test compute** for dashboard generation (50% rabatt)
- ✅ **Cache dashboards** for re-use (sett lifecycle policy for blobs)
- ✅ **Sample data** for initial fairness assessments (test på 10-20% av data først)
- ✅ **Spot instances** for Fairlearn GridSearch (kan redusere kostnad med 70-80%)
- ⚠️ **Unngå:** Real-time dashboard generation per inference (dyrt, unødvendig)
---
## For arkitekten (Cosmo)
### Når skal du anbefale bias detection/mitigation?
**OBLIGATORISK for:**
- ✅ Alle høy-risiko AI-systemer (jf. EU AI Act)
- ✅ Offentlig sektor-løsninger som påvirker innbyggeres rettigheter (NAV, Skatteetaten)
- ✅ HR/rekruttering, kreditt-scoring, forsikring (allocation harm-risk)
- ✅ Medisinsk diagnose, treatment recommendation (quality-of-service harm-risk)
- ✅ Generative AI med public-facing output (content safety)
**ANBEFALT for:**
- 🔷 Alle classification/regression-modeller i produksjon
- 🔷 Chatbots og conversational AI (transparency + bias monitoring)
- 🔷 Systemer som bruker sensitive features (kjønn, rase, alder, etc.)
- 🔷 ML-modeller som skal ESG-rapporteres (diversity, fairness metrics)
**VALGFRITT (men good practice) for:**
- ⚪ Interne verktøy uten bruker-facing beslutninger
- ⚪ Low-stakes predictions (f.eks. marketing segmentation)
- ⚪ Prototype/POC-fase (men planlegg for pre-prod assessment)
### Spørsmål å stille stakeholders
**1. Impact assessment:**
- "Hvilke grupper kan påvirkes negativt av modellens feil?"
- "Er dette en allocation decision (hvem får tilgang?) eller quality-of-service (fungerer det likt for alle)?"
- "Hva er worst-case scenario hvis modellen er biased?"
**2. Data representation:**
- "Er training data representativ for alle brukergrupper?"
- "Finnes det historisk bias i dataene?" (f.eks. tidligere diskriminerende vedtak)
- "Har vi nok data for underrepresenterte grupper?"
**3. Compliance og juridisk:**
- "Gjelder GDPR Art. 22 (automatiserte avgjørelser)?" → Krever human review
- "Er dette høy-risiko iht. EU AI Act?" → Fairness testing påkrevd
- "Må vi kunne forklare vedtak til innbyggere?" → Transparency requirement
**4. Organizational readiness:**
- "Hvem er ansvarlig for å håndtere bias alerts?" (governance)
- "Har vi prosess for model retraining ved detektert bias?"
- "Finnes det feedback-mekanisme for brukere til å rapportere opplevd diskriminering?"
### Arkitekturprinsipper for bias-resilient systems
**P1: Fairness by Design**
- Inkluder fairness requirements i kravspesifikasjon (ikke etterpå)
- Define sensitive features og parity constraints før training
- Budget for fairness assessment i prosjektplan (~10-15% av ML-tid)
**P2: Multi-layered Defense**
- **Data layer:** Audit for bias, resampling/reweighting
- **Model layer:** Fairlearn mitigation algorithms
- **Runtime layer:** Azure AI Content Safety for generative AI
- **Monitoring layer:** Continuous fairness metrics i production
**P3: Human Oversight**
- HITL workflows for høy-stakes decisions
- Ethics committee for edge cases og trade-off decisions
- User feedback loop for bias reporting
**P4: Transparency og Explainability**
- Model interpretability (SHAP/LIME) for alle production models
- Counterfactual explanations for adverse decisions
- Audit trail: logg input, output, features, version, timestamp
**P5: Continuous Monitoring**
- Fairness metrics i production dashboards
- Alerts for disparity threshold violations
- Scheduled bias audits (monthly for high-risk, quarterly for others)
### Common pitfalls og hvordan unngå dem
| Pitfall | Symptom | Root cause | Løsning |
|---------|---------|------------|---------|
| **"Fairness washing"** | High-level commitment, ingen praktisk implementering | Mangler konkrete metrikker og accountability | Define measurable fairness KPIs, assign ownership |
| **Oversimplified metrics** | Optimerer én metric, ignorerer trade-offs | Tror én metric = "fair system" | Bruk multiple metrics, dokumenter trade-offs i ADR |
| **Post-hoc mitigation only** | Bruker ThresholdOptimizer uten å fikse data issues | Foretrekker quick fix over root cause analysis | Start med data audit, deretter model mitigation |
| **Ignoring proxy features** | Fairness på protected features OK, men bias via proxies | F.eks. postnummer korrelerer sterkt med etnisitet | Feature correlation analysis, remove/mitigate proxies |
| **Static assessment** | Pre-deployment fairness OK, men bias utvikles over tid | Data distribution endres, ingen monitoring | Continuous fairness monitoring, scheduled retraining |
| **Lack of domain expertise** | Teknisk korrekt, men mangler kontekst | ML-engineers designer fairness uten domain input | Involve domain experts + ethics committee i design |
### Decision trees for Cosmo
**Tree 1: Velg mitigation strategy**
```
Start: Modell viser bias
↓
Kan vi retrainere modellen?
├─ Nei → ThresholdOptimizer (post-processing)
└─ Ja
↓
Er sensitive features binary eller categorical?
├─ Binary → GridSearch (fastest)
└─ Categorical → ExponentiatedGradient
↓
Hvor strenge fairness constraints?
├─ Strenge (offentlig sektor) → GridSearch med tight bounds
└─ Moderate (kommersiell) → ExponentiatedGradient (bedre accuracy trade-off)
```
**Tree 2: Content Safety konfigurering**
```
Start: Generative AI deployment
↓
Public-facing eller intern?
├─ Intern → Medium threshold (balansert)
└─ Public-facing
↓
Målgruppe inkluderer barn/sårbare grupper?
├─ Ja → Low threshold (restriktivt) + custom blocklists
└─ Nei → Medium threshold + kategori-spesifikk tuning
↓
Bransjespesifikke krav?
├─ Helsevesen → Strict filtering (all categories)
├─ Finans → Focus: Hate, Violence (compliance)
└─ Offentlig sektor → All categories + transparency disclosure
```
**Tree 3: Monitoring strategy**
```
Start: Production deployment
↓
Risikokategori (EU AI Act)?
├─ Høy risiko (rekruttering, kreditt)
└─ → Weekly bias audits + real-time alerts
├─ Begrenset risiko (chatbot)
└─ → Monthly audits + user feedback review
└─ Minimal risiko
└─ → Quarterly audits
```
### Red flags for Cosmo å se etter
**I kravspesifikasjon:**
- 🚩 Ingen mention av fairness/bias i requirements
- 🚩 "Vi har ikke sensitive features" (dobbeltsjekk for proxies)
- 🚩 "Testing på overall accuracy holder" (ingen subgroup analysis)
**I dataanalyse:**
- 🚩 Underrepresenterte grupper (<5% av dataset)
- 🚩 Historiske data med kjente bias issues (f.eks. gamle HR-vedtak)
- 🚩 Ubalanserte labels på tvers av grupper (f.eks. 80% approval rate for group A, 40% for group B)
**I modellutvikling:**
- 🚩 Ingen fairness metrics beregnet
- 🚩 "Modellen er ferdig, kan vi bare kjøre Fairlearn raskt?" (bias mitigation bør ikke være afterthought)
- 🚩 Mangler dokumentasjon av trade-off decisions (accuracy vs. fairness)
**I deployment-plan:**
- 🚩 Ingen HITL workflow for høy-stakes decisions
- 🚩 Mangler monitoring-setup for production fairness metrics
- 🚩 Ingen definert prosess for å håndtere bias alerts
### Kostnadsestimering for bias mitigation
**Typisk prosjekt (norsk offentlig sektor, classification model):**
| Fase | Aktivitet | Tid (timer) | Kostnad (NOK, ca.) |
|------|-----------|-------------|--------------------|
| **Pre-deployment** | Data audit for bias | 16 | Konsulent: ~20 000 |
| | Fairness metrics beregning | 8 | Azure compute: ~50 |
| | Fairlearn mitigation (GridSearch) | 4 | Azure compute: ~25 |
| | Responsible AI Dashboard | 2 | Azure compute: ~10 |
| | Scorecard generering og review | 4 | Konsulent: ~5 000 |
| **Deployment** | HITL workflow-implementering | 16 | Utvikler: ~20 000 |
| | Monitoring dashboard setup | 8 | Utvikler: ~10 000 |
| **Production (årlig)** | Continuous monitoring compute | - | Azure: ~500/måned → 6 000/år |
| | Quarterly bias audits | 16/kvartal | Konsulent: ~20 000/år |
| | Content Safety (1M requests/mnd) | - | Azure: ~10 000/måned → 120 000/år |
| **Total første år** | | | ~201 000 NOK (+ løpende ~146 000/år) |
**Cost-benefit:**
- **Kostnaden** ved å ikke gjøre bias mitigation: Bøter (GDPR: opp til 4% av omsetning), omdømmetap, juridiske saker
- **ROI-perspektiv:** Bias mitigation er **risikoreduseringsaktivitet**, ikke direkte revenue driver
---
## Kilder og verifisering
**Microsoft Learn – offisiell dokumentasjon:**
1. **Model performance and fairness (Azure ML)**
https://learn.microsoft.com/en-us/azure/machine-learning/concept-fairness-ml
Verifisert: 2026-02-03 | Status: GA | Confidence: ✅ High
2. **Responsible AI dashboard**
https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard
Verifisert: 2026-02-03 | Status: GA | Confidence: ✅ High
3. **Fairlearn mitigation algorithms**
https://fairlearn.org/v0.7.0/user_guide/mitigation.html
Verifisert: 2026-02-03 | Status: Open source, maintained | Confidence: ✅ High
4. **Azure AI Content Safety overview**
https://learn.microsoft.com/en-us/azure/ai-services/content-safety/overview
Verifisert: 2026-02-03 | Status: GA | Confidence: ✅ High
5. **Apply responsible AI principles (Copilot Studio)**
https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/responsible-ai
Verifisert: 2026-02-03 | Status: GA | Confidence: ✅ High
6. **Content filter severity levels**
https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/content-filter-severity-levels
Verifisert: 2026-02-03 | Status: GA | Confidence: ✅ High
7. **Monitor fairness and bias (Databricks)**
https://learn.microsoft.com/en-us/azure/databricks/data-quality-monitoring/data-profiling/fairness-bias
Verifisert: 2026-02-03 | Status: GA | Confidence: ✅ High
**Microsoft Research papers:**
8. **A Reductions Approach to Fair Classification** (Agarwal et al., 2018)
https://arxiv.org/abs/1803.02453
Grunnlag for ExponentiatedGradient og GridSearch algorithms | Confidence: ✅ High
9. **Equality of Opportunity in Supervised Learning** (Hardt et al., 2016)
https://arxiv.org/abs/1610.02413
Grunnlag for ThresholdOptimizer | Confidence: ✅ High
10. **Fair Regression: Quantitative Definitions and Reduction-based Algorithms** (Agarwal et al., 2019)
https://arxiv.org/abs/1905.12843
Regression fairness med bounded group loss | Confidence: ✅ High
**Open source verktøy:**
11. **Fairlearn** – https://fairlearn.org/
Microsoft-supported open source project | Confidence: ✅ High
12. **InterpretML** – https://interpret.ml/
Model interpretability framework | Confidence: ✅ High
13. **EconML** – https://github.com/Microsoft/EconML
Causal inference library | Confidence: ✅ High
14. **DiCE** – https://github.com/interpretml/DiCE
Counterfactual explanations | Confidence: ✅ High
**Standarder og regelverk:**
15. **EU AI Act** (gjelder fra 2026)
https://artificialintelligenceact.eu/
Confidence: ✅ High (regulatory requirement)
16. **NIST AI Risk Management Framework**
https://www.nist.gov/itl/ai-risk-management-framework
Confidence: ✅ High (industry standard)
17. **Microsoft Responsible AI Standard v2**
https://blogs.microsoft.com/wp-content/uploads/prod/sites/5/2022/06/Microsoft-Responsible-AI-Standard-v2-General-Requirements-3.pdf
Confidence: ✅ High (Microsoft-internt rammeverk)
**Pricing og lisensiering:**
18. **Azure AI Content Safety pricing**
https://azure.microsoft.com/pricing/details/cognitive-services/content-safety/
Verifisert: 2026-02-03 | Confidence: ✅ High (offerisielle priser)
19. **Azure Machine Learning pricing**
https://azure.microsoft.com/pricing/details/machine-learning/
Verifisert: 2026-02-03 | Confidence: ✅ High
**Confidence markers brukt:**
- ✅ **High:** Offisiell Microsoft-dokumentasjon, peer-reviewed papers, regulatory standards
- 🔶 **Medium:** Community-bidrag, third-party case studies (ikke brukt i dette dokumentet)
- ⚠️ **Low:** Spekulativt, beta features (ikke brukt i dette dokumentet)
**Viktig disclaimer:**
- Fairness er en **sosio-teknisk utfordring**, ikke en rent teknisk løsning
- Kvantitative metrikker fanger ikke alle aspekter av rettferdighet (justice, due process, cultural context)
- Utviklere og organisasjoner må vurdere context-spesifikke trade-offs og ta ansvar for decisions
- Dette dokumentet gir tekniske verktøy, men erstatter ikke juridisk rådgivning eller etisk vurdering