Steg 9 (R4): unified migrate-corpus.mjs --write over engineering/governance/ infrastructure/security. 327 filer mutert, verified=null, prosa byte-identisk (fra første ## seksjon), advisor urørt (0 endringer). To applier-fixes oppdaget under kjøring (TDD, RED→GREEN): - insertHeaderFields: anker faller nå tilbake når en meta-linje selv passerer 500B (2 filer pakket et avsnitt i **Status:** → Type/Source landet utenfor scan-vinduet, applierens post-write-assertion fanget + restaurerte). - normalizeStaleVerified: fjerner nå ALLE stale non-date **Verified:** i 500B-vinduet, inkl. stray body-dup rett under --- (9 mlops-genaiops-filer var ellers falskt "verified"/fresh, droppet fra worklist). Operatør-godkjent utvidelse av carve-out; kun stray metadata-linjer, aldri prosa. test-transform-criterion: precondition oppdatert til post-migrasjons-sannhet (fila bærer nå Source). Suite 728/728 grønn.
574 lines
25 KiB
Markdown
574 lines
25 KiB
Markdown
# Fairness Testing and Measurement - Quantifying Equity
|
|
|
|
**Last updated:** 2026-04
|
|
**Status:** GA
|
|
**Category:** Responsible AI & Governance
|
|
**Type:** reference
|
|
**Source:** https://learn.microsoft.com/azure/machine-learning/concept-responsible-ai-dashboard
|
|
|
|
---
|
|
|
|
## Innhold
|
|
|
|
- [Introduksjon](#introduksjon)
|
|
- [Kjernekomponenter](#kjernekomponenter)
|
|
- [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
|
|
|
|
Fairness testing og measurement er kritiske disipliner for å kvantifisere og redusere bias i AI-systemer. Når AI-modeller tar beslutninger som påvirker mennesker — fra låneinnvilgelser til sykdomsdiagnostikk — må vi kunne måle om disse systemene behandler alle grupper rettferdig.
|
|
|
|
Microsoft sin tilnærming til fairness testing bygger på prinsippet om **group fairness**, som identifiserer hvilke grupper av individer som står i fare for å oppleve skade fra AI-systemet. Dette operasjonaliseres gjennom:
|
|
|
|
1. **Identifikasjon av sensitive features** — attributter som kjønn, alder, etnisitet, geografi
|
|
2. **Disparity metrics** — kvantitative mål på forskjeller i modellprestasjon mellom grupper
|
|
3. **Parity constraints** — krav til at modellen skal oppføre seg sammenlignbart på tvers av grupper
|
|
4. **Mitigation algorithms** — teknikker for å redusere oppdagede forskjeller
|
|
|
|
**Verified** (Microsoft Learn, 2026-02): Azure Machine Learning Responsible AI dashboard tilbyr fairness assessment som en kjernekomponent i model lifecycle management.
|
|
|
|
### To hovedtyper av AI-skapt skade
|
|
|
|
| Skadetype | Definisjon | Eksempel |
|
|
|-----------|------------|----------|
|
|
| **Allocation harm** | Systemet gir eller nekter muligheter, ressurser eller informasjon til visse grupper | Lånemodell som er bedre til å velge gode kandidater fra én etnisk gruppe enn en annen |
|
|
| **Quality-of-service harm** | Systemet fungerer dårligere for én gruppe enn en annen | Voice recognition som feiler oftere for kvinner enn menn |
|
|
|
|
---
|
|
|
|
## Kjernekomponenter
|
|
|
|
### Fairlearn Open-Source Package
|
|
|
|
**Verified** (Microsoft Learn, fairlearn.org): Fairlearn er Microsoft sitt primære open-source bibliotek for fairness assessment og mitigation. Det er integrert i Azure Machine Learning Responsible AI dashboard.
|
|
|
|
| Komponent | Funksjon |
|
|
|-----------|----------|
|
|
| **Disparity metrics** | Sammenligner modellprestasjon mellom grupper |
|
|
| **Mitigation algorithms** | Reduction og post-processing teknikker |
|
|
| **Dashboard integration** | Visualisering i Azure ML Studio |
|
|
| **Parity constraints** | Demographic parity, equalized odds, equal opportunity, bounded group loss |
|
|
|
|
### Disparity Metrics — Kvantifisering av Ulikhet
|
|
|
|
**To hovedklasser av disparity metrics:**
|
|
|
|
#### 1. Disparity i Model Performance
|
|
|
|
Måler forskjellen i ytelsesmetrikker på tvers av subgrupper:
|
|
|
|
| Metrikk | Definisjon | Modelltype |
|
|
|---------|------------|------------|
|
|
| Disparity in accuracy | Forskjell i nøyaktighet mellom grupper | Classification |
|
|
| Disparity in error rate | Forskjell i feilrate mellom grupper | Classification |
|
|
| Disparity in precision | Forskjell i presisjon mellom grupper | Classification |
|
|
| Disparity in recall | Forskjell i recall mellom grupper | Classification |
|
|
| Disparity in MAE | Forskjell i mean absolute error mellom grupper | Regression |
|
|
|
|
**Målemåter:** Kan uttrykkes som ratio (max/min) eller difference (max - min).
|
|
|
|
#### 2. Disparity i Selection Rate
|
|
|
|
**Selection rate** = andelen datapunkter klassifisert som 1 (i binary classification) eller distribusjon av prediksjoner (i regression).
|
|
|
|
**Eksempel:** Disparity i loan approval rate — forskjell i godkjenningsrate mellom demografiske grupper.
|
|
|
|
### Fairness Metrics for Responsible AI Scorecard
|
|
|
|
**Verified** (Azure ML SDK/CLI documentation, 2026-02): Ved generering av Responsible AI scorecard kan du konfigurere fairness assessment med disse metrikkene:
|
|
|
|
| Metric | fairness_evaluation_kind | Definition | Model type |
|
|
|--------|-------------------------|------------|------------|
|
|
| `accuracy_score` | difference | Maksimal forskjell i accuracy mellom to grupper | Classification |
|
|
| `accuracy_score` | ratio | Minimum ratio i accuracy mellom to grupper | Classification |
|
|
| `precision_score` | difference | Maksimal forskjell i precision mellom to grupper | Classification |
|
|
| `precision_score` | ratio | Maksimal ratio i precision mellom to grupper | Classification |
|
|
| `recall_score` | difference | Maksimal forskjell i recall mellom to grupper | Classification |
|
|
| `recall_score` | ratio | Maksimal ratio i recall mellom to grupper | Classification |
|
|
| `f1_score` | difference | Maksimal forskjell i F1 mellom to grupper | Classification |
|
|
| `f1_score` | ratio | Maksimal ratio i F1 mellom to grupper | Classification |
|
|
| `error_rate` | difference | Maksimal forskjell i error rate mellom to grupper | Classification |
|
|
| `error_rate` | ratio | Maksimal ratio i error rate mellom to grupper | Classification |
|
|
| `selection_rate` | difference | Maksimal forskjell i selection rate mellom to grupper | Classification |
|
|
| `selection_rate` | ratio | Maksimal ratio i selection rate mellom to grupper | Classification |
|
|
| `mean_absolute_error` | difference | Maksimal forskjell i MAE mellom to grupper | Regression |
|
|
| `mean_absolute_error` | ratio | Maksimal ratio i MAE mellom to grupper | Regression |
|
|
| `mean_squared_error` | difference | Maksimal forskjell i MSE mellom to grupper | Regression |
|
|
| `mean_squared_error` | ratio | Maksimal ratio i MSE mellom to grupper | Regression |
|
|
|
|
**Viktig:** Valg av `difference` vs. `ratio` påvirker skalaen av target-verdien. Ved setting av thresholds:
|
|
- Difference: Typisk målsetning ≤ 0.05 (5% forskjell)
|
|
- Ratio: Typisk målsetning ≥ 0.80 (80% ratio)
|
|
|
|
### Databricks Data Quality Monitoring — Fairness Metrics
|
|
|
|
**Verified** (Databricks documentation, 2026-02): For classification models i Databricks kan du overvåke fairness med disse metrikkene:
|
|
|
|
| Metrikk | Definisjon | Referanse |
|
|
|---------|------------|-----------|
|
|
| `predictive_parity` | Sammenligner modellens precision mellom grupper | [Fairness Definitions Explained, Verma & Rubin 2018](http://fairware.cs.umass.edu/papers/Verma.pdf) |
|
|
| `predictive_equality` | Sammenligner false positive rates mellom grupper | Wikipedia: Fairness (machine learning) |
|
|
| `equal_opportunity` | Måler om en label blir predikert like godt for begge grupper | [Equality of Opportunity in Supervised Learning](https://arxiv.org/abs/1610.02413) |
|
|
| `statistical_parity` | Måler forskjell i predikerte outcomes mellom grupper | Fairness literature |
|
|
|
|
**Oppsett:**
|
|
```python
|
|
slicing_exprs = ["age < 25"] # Protected group = True, unprotected = False
|
|
```
|
|
|
|
---
|
|
|
|
## Arkitekturmønstre
|
|
|
|
### Pattern 1: Responsible AI Dashboard — Model Overview Component
|
|
|
|
**Verified** (Azure ML, GA): Model Overview-komponenten i Responsible AI dashboard genererer performance metrics for hele datasettet og identifiserte kohorter, med breakdown på sensitive features.
|
|
|
|
**Workflow:**
|
|
|
|
1. **Opprett dashboard constructor** — last inn model, training dataset, test dataset
|
|
2. **Spesifiser sensitive features** — f.eks. `categorical_column_names: '["gender", "age_group", "ethnicity"]'`
|
|
3. **Konfigurer fairness assessment** — velg metrics og target thresholds
|
|
4. **Generer fairness heat map** — visualiser disparity across cohorts
|
|
5. **Eksporter Responsible AI scorecard** — PDF med fairness insights for stakeholders
|
|
|
|
**YAML eksempel:**
|
|
```yaml
|
|
create_rai_job:
|
|
type: command
|
|
component: azureml://registries/azureml/components/microsoft_azureml_rai_tabular_insight_constructor/versions/<version>
|
|
inputs:
|
|
title: "Fairness Assessment - Loan Approval Model"
|
|
task_type: classification
|
|
model_input:
|
|
type: mlflow_model
|
|
path: azureml:loan_model:1
|
|
train_dataset: ${{parent.inputs.train_data}}
|
|
test_dataset: ${{parent.inputs.test_data}}
|
|
target_column_name: "approved"
|
|
categorical_column_names: '["gender", "ethnicity", "age_group"]'
|
|
```
|
|
|
|
**Scorecard configuration (JSON):**
|
|
```json
|
|
{
|
|
"Model": {
|
|
"ModelName": "Loan Approval Classifier",
|
|
"ModelType": "Classification"
|
|
},
|
|
"Fairness": {
|
|
"metric": ["accuracy_score", "selection_rate"],
|
|
"sensitive_features": ["gender", "ethnicity"],
|
|
"fairness_evaluation_kind": "difference",
|
|
"threshold": "<=0.05"
|
|
}
|
|
}
|
|
```
|
|
|
|
### Pattern 2: Fairness Mitigation med Parity Constraints
|
|
|
|
**Verified** (Fairlearn documentation, Azure ML): Etter å ha identifisert fairness issues, bruk mitigation algorithms.
|
|
|
|
#### Parity Constraints
|
|
|
|
| Constraint | Formål | ML Task | Algoritme |
|
|
|------------|--------|---------|-----------|
|
|
| **Demographic parity** | Mitigere allocation harms | Binary classification, regression | `ExponentiatedGradient`, `GridSearch` |
|
|
| **Equalized odds** | Diagnostisere allocation og quality-of-service harms | Binary classification | `ExponentiatedGradient`, `GridSearch`, `ThresholdOptimizer` |
|
|
| **Equal opportunity** | Diagnostisere allocation og quality-of-service harms | Binary classification | `ThresholdOptimizer` |
|
|
| **Bounded group loss** | Mitigere quality-of-service harms | Regression | `GridSearch` |
|
|
|
|
#### Mitigation Algorithms
|
|
|
|
| Algoritme | Type | Beskrivelse | Sensitive Features | Parity Constraints |
|
|
|-----------|------|-------------|-------------------|-------------------|
|
|
| `ExponentiatedGradient` | Reduction | Black-box approach — retrainer modellen med reweighted datasets | Categorical | Demographic parity, equalized odds |
|
|
| `GridSearch` | Reduction | Grid-search over reweighted models | Binary | Demographic parity, equalized odds, bounded group loss |
|
|
| `ThresholdOptimizer` | Post-processing | Justerer decision thresholds for å enforces fairness | Categorical | Demographic parity, equalized odds |
|
|
|
|
**Python eksempel (Fairlearn mitigation):**
|
|
```python
|
|
from fairlearn.reductions import ExponentiatedGradient, DemographicParity
|
|
from sklearn.linear_model import LogisticRegression
|
|
|
|
# Define constraint
|
|
constraint = DemographicParity()
|
|
|
|
# Mitigate unfairness
|
|
mitigator = ExponentiatedGradient(
|
|
estimator=LogisticRegression(),
|
|
constraints=constraint
|
|
)
|
|
|
|
mitigator.fit(X_train, y_train, sensitive_features=A_train)
|
|
y_pred_mitigated = mitigator.predict(X_test)
|
|
```
|
|
|
|
### Pattern 3: MLflow GenAI Evaluation med Custom Fairness Scorers
|
|
|
|
**Verified** (Databricks MLflow documentation): For generative AI kan du definere custom fairness scorers.
|
|
|
|
**Python eksempel:**
|
|
```python
|
|
from mlflow.genai.scorers import scorer
|
|
from mlflow.entities import Feedback, AssessmentSource
|
|
|
|
@scorer
|
|
def fairness_scorer(inputs, outputs, context):
|
|
# Custom logic to assess fairness in LLM outputs
|
|
protected_group_mentions = check_demographic_representation(outputs)
|
|
score = calculate_fairness_score(protected_group_mentions)
|
|
|
|
return Feedback(
|
|
value=score,
|
|
rationale=f"Protected group representation: {protected_group_mentions}",
|
|
source=AssessmentSource(
|
|
source_type="CODE",
|
|
source_id="fairness_checker_v1"
|
|
)
|
|
)
|
|
```
|
|
|
|
### Pattern 4: Microsoft Foundry — Hate and Unfairness Evaluator
|
|
|
|
**Verified** (Azure AI Evaluation SDK, 2026-02): For Azure OpenAI og generative modeller.
|
|
|
|
**Python eksempel:**
|
|
```python
|
|
from azure.identity import DefaultAzureCredential
|
|
from azure.ai.evaluation import HateUnfairnessEvaluator
|
|
|
|
azure_ai_project = {
|
|
"subscription_id": os.environ.get("AZURE_SUBSCRIPTION_ID"),
|
|
"resource_group_name": os.environ.get("AZURE_RESOURCE_GROUP_NAME"),
|
|
"project_name": os.environ.get("AZURE_PROJECT_NAME"),
|
|
}
|
|
credential = DefaultAzureCredential()
|
|
|
|
hate_unfairness_eval = HateUnfairnessEvaluator(
|
|
azure_ai_project=azure_ai_project,
|
|
credential=credential,
|
|
threshold=1
|
|
)
|
|
|
|
result = hate_unfairness_eval(
|
|
query="What is the capital of France?",
|
|
response="Paris",
|
|
)
|
|
```
|
|
|
|
---
|
|
|
|
## Beslutningsveiledning
|
|
|
|
### Når bruke hvilken metrikk?
|
|
|
|
| Scenario | Anbefalt metrikk | Begrunnelse |
|
|
|----------|------------------|-------------|
|
|
| Låneinnvilgelser, ansettelser | Selection rate (difference) | Direkte måler allocation harm — forskjell i positive outcomes |
|
|
| Diagnosemodeller | Equalized odds (recall, precision) | Kritisk at både sensitivity og specificity er like på tvers av grupper |
|
|
| Prisestimering | MAE/MSE (difference) | Viktig at gjennomsnittlig feil er lik for alle grupper |
|
|
| Risk scoring | Predictive parity | Sikrer at precision er lik — positive predictions er like pålitelige |
|
|
|
|
### Velg mellom Difference og Ratio
|
|
|
|
| Evaluation Kind | Når bruke | Eksempel threshold |
|
|
|-----------------|-----------|-------------------|
|
|
| **Difference** (max - min) | Når absolutte gap er viktig | ≤ 0.05 (5% forskjell) |
|
|
| **Ratio** (min/max) | Når relativ forskjell er viktig | ≥ 0.80 (80% ratio) |
|
|
|
|
**Baseline:** Difference er ofte enklere å tolke for stakeholders.
|
|
|
|
### Fairness vs. Performance Trade-off
|
|
|
|
**Viktig:** Mange fairness metrics kan ikke tilfredsstilles samtidig. Du må gjøre trade-offs basert på:
|
|
|
|
1. **Business domain** — hva er konsekvensene av false positives vs. false negatives?
|
|
2. **Legal requirements** — diskrimineringslover i Norge/EU (GDPR, AI Act)
|
|
3. **Stakeholder input** — kvalitativ analyse med domeneeksperter
|
|
4. **Performance tolerance** — hvor mye accuracy tap aksepterer du for å oppnå fairness?
|
|
|
|
**Decision tree:**
|
|
|
|
```
|
|
Er dette en high-stakes decision? (lån, jobb, helse)
|
|
├── Ja → Bruk strenge fairness thresholds (difference ≤ 0.03)
|
|
│ → Vurder post-processing (ThresholdOptimizer)
|
|
│ → Dokumenter i ADR
|
|
└── Nei → Bruk moderate thresholds (difference ≤ 0.05)
|
|
→ Vurder reduction methods (ExponentiatedGradient)
|
|
```
|
|
|
|
---
|
|
|
|
## Integrasjon med Microsoft-stakken
|
|
|
|
### Azure Machine Learning
|
|
|
|
| Komponent | Fairness Capability | Status |
|
|
|-----------|-------------------|--------|
|
|
| **Responsible AI dashboard** | Model overview med fairness metrics | GA |
|
|
| **Fairlearn integration** | Disparity metrics og mitigation | GA |
|
|
| **Scorecard PDF export** | Fairness insights for stakeholders | Preview |
|
|
| **MLflow model registry** | Logg fairness metrics som model metadata | GA |
|
|
|
|
**Workflow:**
|
|
|
|
1. **Tren modell** → registrer i MLflow format med sklearn flavor
|
|
2. **Opprett RAI dashboard** → konfigurer sensitive features og metrics
|
|
3. **Analyser results** → identifiser cohorts med høyest disparity
|
|
4. **Appliser mitigation** → retrain med Fairlearn algorithms
|
|
5. **Generer scorecard** → eksporter PDF med fairness target values
|
|
6. **Deployment gate** → beslutning basert på fairness thresholds
|
|
|
|
### Microsoft Foundry
|
|
|
|
**Verified** (Microsoft Foundry documentation, 2026-02):
|
|
|
|
| Capability | Beskrivelse | Status |
|
|
|------------|-------------|--------|
|
|
| `HateUnfairnessEvaluator` | Content safety evaluator for generative models | GA |
|
|
| Responsible AI dashboard integration | Lenke RAI insights til model endpoints | GA |
|
|
| Content filtering | Pre-trained filters for hate, fairness, violence | GA |
|
|
|
|
**Bruk sammen med Azure OpenAI:**
|
|
- Evaluate generated content for bias before deployment
|
|
- Monitor production traffic for fairness degradation
|
|
- Implement human-in-the-loop review for high-risk scenarios
|
|
|
|
### Power Platform AI Builder
|
|
|
|
**Baseline:** AI Builder bruker samme Responsible AI prinsipper, men fairness testing er mer begrenset:
|
|
|
|
- **Pre-built models**: Fairness testing utført av Microsoft
|
|
- **Custom models**: Ingen innebygd fairness assessment UI (per 2026-02)
|
|
- **Workaround**: Eksporter predictions til Azure ML for fairness analysis
|
|
|
|
---
|
|
|
|
## Offentlig sektor (Norge)
|
|
|
|
### Juridiske rammeverk
|
|
|
|
| Regelverk | Relevans for Fairness | Krav |
|
|
|-----------|----------------------|------|
|
|
| **EU AI Act** | Høy-risiko AI-systemer må undergå fairness testing | Dokumentert bias testing, adverse impact analysis |
|
|
| **GDPR** | Automatiserte beslutninger må kunne forklares | Fairness som del av "meaningful information" |
|
|
| **Likestillingsloven** | Forbud mot indirekte diskriminering | Disparity metrics for kjønn |
|
|
| **Diskrimineringsloven** | Forbud mot etnisitet-, alders-, funksjonsnedsettelsesdiskriminering | Fairness testing for alle beskyttede grupper |
|
|
|
|
### Anbefalte praksis for norsk offentlig sektor
|
|
|
|
1. **Identifiser sensitive features tidlig** — dokumenter i PVK (personvernkonsekvensutredning)
|
|
2. **Sett fairness thresholds** — strengere enn privat sektor (≤ 0.03 difference)
|
|
3. **Dokumenter trade-offs** — bruk ADR for fairness vs. performance decisions
|
|
4. **Etabler governance** — fairness review som deployment gate
|
|
5. **Kontinuerlig overvåking** — fairness metrics i production dashboards
|
|
|
|
**Eksempel: NAV AI-system**
|
|
- **Sensitive features:** Kjønn, alder, innvandrerbakgrunn, funksjonsnedsettelse
|
|
- **Metrics:** Selection rate (difference), predictive parity
|
|
- **Threshold:** ≤ 0.02 (2% forskjell)
|
|
- **Mitigation:** ThresholdOptimizer med manual review layer
|
|
|
|
### Datatilgang og representativitet
|
|
|
|
**Utfordring:** Norske datasett kan være for små til å oppdage disparity i minoritetsgrupper.
|
|
|
|
**Løsninger:**
|
|
- **Oversampling** — bruk synthetic data generation (men dokumenter bias risk)
|
|
- **Intersectional analysis** — test ikke bare enkeltdimensjoner (kjønn), men kombinasjoner (kjønn + alder + geografi)
|
|
- **External validation** — test på EU-datasett hvis norske data mangler
|
|
|
|
---
|
|
|
|
## Kostnad og lisensiering
|
|
|
|
### Azure Machine Learning Responsible AI Dashboard
|
|
|
|
**Verified** (Azure pricing, 2026-02):
|
|
|
|
| Komponent | Kostnad | Lisens |
|
|
|-----------|---------|--------|
|
|
| Fairlearn (open-source) | Gratis | MIT License |
|
|
| RAI dashboard compute | Standard Azure ML compute pricing | Betales per compute time |
|
|
| Scorecard generation | Inkludert i RAI pipeline | Ingen ekstra kostnad |
|
|
|
|
**Estimat for fairness testing pipeline:**
|
|
|
|
- **Compute:** Standard_DS3_v2 (4 cores, 14 GB RAM)
|
|
- **Runtime:** 15-30 min per model
|
|
- **Kostnad:** ~10-20 NOK per run
|
|
|
|
**Total TCO for årlig fairness monitoring (12 models, monthly testing):**
|
|
- Compute: ~2000-3000 NOK/år
|
|
- Storage (dashboard artifacts): ~100 NOK/år
|
|
|
|
### Microsoft Foundry — Content Safety Evaluators
|
|
|
|
| Evaluator | Pricing Model | Estimat |
|
|
|-----------|---------------|---------|
|
|
| `HateUnfairnessEvaluator` | Per 1000 transactions | ~5 NOK per 1000 eval calls |
|
|
| Content filtering (Azure OpenAI) | Inkludert i token pricing | Ingen ekstra kostnad |
|
|
|
|
### Databricks — Data Quality Monitoring
|
|
|
|
**Baseline:** Fairness metrics i Databricks er del av Lakehouse monitoring feature.
|
|
|
|
- **Requires:** Databricks Premium eller Enterprise tier
|
|
- **Kostnad:** Inkludert i tier pricing (ingen per-metric charge)
|
|
|
|
---
|
|
|
|
## For arkitekten (Cosmo)
|
|
|
|
### 1. Fairness er ikke kun teknisk — det er sosio-teknisk
|
|
|
|
**Viktig:** Kvantitative fairness metrics fanger ikke aspekter som rettferdighet, due process, og kontekstuell hensiktsmessighet. Du må alltid kombinere metrics med kvalitativ analyse.
|
|
|
|
**Anbefalinger til kunden:**
|
|
- "Fairness assessment krever domeneekspertise. Hvilke grupper er i risiko for skade i deres brukstilfelle?"
|
|
- "Fairlearn kan identifisere disparity, men ikke fortelle om det er 'rettferdig'. Vi må involvere stakeholders."
|
|
|
|
### 2. Trade-offs er uunngåelige
|
|
|
|
Du kan ikke tilfredsstille alle fairness metrics samtidig (mathematical impossibility results, [Kleinberg et al. 2016](https://arxiv.org/abs/1609.05807)).
|
|
|
|
**Spørsmål å stille kunden:**
|
|
- "Hva er viktigst: lik accuracy på tvers av grupper, eller lik false positive rate?"
|
|
- "Er det verre å feilaktig nekte noen (false negative) eller feilaktig godkjenne (false positive)?"
|
|
- "Hva er lovkravene i deres domene? (EU AI Act, diskrimineringsloven)"
|
|
|
|
**Dokumenter i ADR:**
|
|
- Hvilke fairness metrics som ble valgt
|
|
- Hvilke ble nedprioritert, og hvorfor
|
|
- Performance vs. fairness trade-off
|
|
|
|
### 3. Velg riktig mitigation strategi
|
|
|
|
| Scenario | Anbefalt strategi | Begrunnelse |
|
|
|----------|------------------|-------------|
|
|
| Må re-deploy modellen hyppig | **Post-processing** (`ThresholdOptimizer`) | Rask, ingen retraining, fleksibel |
|
|
| Har tid til retraining | **Reduction** (`ExponentiatedGradient`) | Bedre performance, men tregere |
|
|
| Multi-class problem | **One-vs-Rest + post-processing** | Fairlearn støtter primært binary classification |
|
|
| High-stakes decision | **Hybrid approach** — reduction + human review | Kombinerer automatisering med oversikt |
|
|
|
|
### 4. Fairness i produksjon — overvåking er kritisk
|
|
|
|
Fairness degradation kan skje over tid (data drift, population shift).
|
|
|
|
**Implementer:**
|
|
- **Fairness metrics i monitoring dashboard** — track disparity over time
|
|
- **Alerting** — trigger hvis disparity overskrider threshold
|
|
- **Retraining triggers** — automatisk re-evaluate når data distribution endres
|
|
|
|
**Azure ML løsning:**
|
|
- Bruk Azure ML model monitoring med custom metrics
|
|
- Logg fairness metrics til Application Insights
|
|
- Sett opp Azure Monitor alerts for fairness thresholds
|
|
|
|
### 5. Generative AI fairness — nye utfordringer
|
|
|
|
**Baseline:** Tradisjonelle fairness metrics (demographic parity, equalized odds) er designet for discriminative models. For generative AI:
|
|
|
|
**Nye metrics:**
|
|
- **Representation fairness** — er alle grupper representert i generated content?
|
|
- **Stereotyping detection** — genererer modellen stereotype outputs?
|
|
- **Toxicity disparity** — er hate speech mer vanlig for visse grupper?
|
|
|
|
**Verktøy:**
|
|
- `HateUnfairnessEvaluator` (Azure AI Evaluation)
|
|
- Custom MLflow scorers med LLM-as-a-judge
|
|
- Human-in-the-loop review (obligatorisk for high-stakes)
|
|
|
|
### 6. Offentlig sektor — strengere krav
|
|
|
|
For norske offentlige myndigheter:
|
|
|
|
**Obligatoriske tiltak:**
|
|
- **PVK (personvernkonsekvensutredning)** — fairness testing som del av prosessen
|
|
- **Diskrimineringsanalyse** — dokumenter testing for alle beskyttede grupper
|
|
- **Transparensrapport** — publiser fairness metrics (i tråd med AI Act)
|
|
- **Klageadgang** — mekanisme for å utfordre automated decisions
|
|
|
|
**Arkitektur-implikasjoner:**
|
|
- Lag audit trail for alle fairness tests
|
|
- Eksporter Responsible AI scorecards som PDF for juridisk dokumentasjon
|
|
- Implementer "right to explanation" — link model predictions til fairness analysis
|
|
|
|
### 7. Skill mellom fairness testing (development) og fairness monitoring (production)
|
|
|
|
| Fase | Mål | Verktøy | Frekvens |
|
|
|------|-----|---------|----------|
|
|
| **Development** | Identifiser og mitiger bias før deployment | Responsible AI dashboard, Fairlearn mitigation | Per model version |
|
|
| **Production** | Detect fairness degradation over tid | Azure ML monitoring, custom metrics | Continuous (weekly/monthly) |
|
|
|
|
---
|
|
|
|
*(Verified MCP 2026-04)*
|
|
|
|
## Kilder og verifisering
|
|
|
|
### Microsoft Learn Documentation (Verified)
|
|
|
|
1. **Model performance and fairness** — Azure Machine Learning
|
|
https://learn.microsoft.com/en-us/azure/machine-learning/concept-fairness-ml?view=azureml-api-2
|
|
Status: GA | Verifisert: 2026-02
|
|
|
|
2. **Generate Responsible AI insights with YAML and Python**
|
|
https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-insights-sdk-cli?view=azureml-api-2
|
|
Status: GA | Verifisert: 2026-02
|
|
|
|
3. **Monitor fairness and bias for classification models** — Databricks
|
|
https://learn.microsoft.com/en-us/azure/databricks/data-quality-monitoring/data-profiling/fairness-bias
|
|
Status: GA | Verifisert: 2026-02
|
|
|
|
4. **Responsible AI dashboard** — Azure Machine Learning
|
|
https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?view=azureml-api-2
|
|
Status: GA | Verifisert: 2026-02
|
|
|
|
5. **Azure AI Evaluation SDK** — HateUnfairnessEvaluator
|
|
https://learn.microsoft.com/en-us/python/api/azure-ai-evaluation/azure.ai.evaluation.hateunfairnessevaluator?view=azure-python
|
|
Status: GA | Verifisert: 2026-02
|
|
|
|
### Akademiske kilder (Baseline)
|
|
|
|
6. **Fairness Definitions Explained** — Verma & Rubin (2018)
|
|
http://fairware.cs.umass.edu/papers/Verma.pdf
|
|
Kilde: Databricks documentation reference
|
|
|
|
7. **Equality of Opportunity in Supervised Learning** — Hardt, Price & Srebro (2016)
|
|
https://arxiv.org/abs/1610.02413
|
|
Kilde: Fairlearn mitigation algorithms
|
|
|
|
8. **A Reductions Approach to Fair Classification** — Agarwal et al. (2018)
|
|
https://arxiv.org/abs/1803.02453
|
|
Kilde: Fairlearn ExponentiatedGradient algorithm
|
|
|
|
### Open-Source (Verified)
|
|
|
|
9. **Fairlearn** — Microsoft open-source fairness toolkit
|
|
https://fairlearn.org/
|
|
License: MIT | Verifisert: 2026-02
|
|
|
|
### Code Samples (Verified)
|
|
|
|
10. **Azure AI Evaluation Python SDK examples**
|
|
https://learn.microsoft.com/en-us/python/api/azure-ai-evaluation/
|
|
Language: Python | Verifisert: 2026-02
|
|
|
|
---
|
|
|
|
**Confidence level:** High (95%)
|
|
- Fairness metrics, Fairlearn integration, RAI dashboard: Verified via Microsoft Learn
|
|
- Mitigation algorithms: Verified via Fairlearn documentation og Azure ML examples
|
|
- Generative AI evaluators: Verified via Azure AI Evaluation SDK documentation
|
|
- Databricks metrics: Verified via Databricks documentation
|
|
|
|
**Sist verifisert:** 2026-02-04
|