Tilbake
7.5
Etikk og samfunnsansvar i IT

7.5 Etikk og samfunnsansvar i IT

Kunstig intelligens, digital ulikhet og bærekraft.

55 min
6 oppgaver
AI-etikkDigital ulikhetBærekraftAnsvar
Du leser den tradisjonelle versjonen
Din fremgang i kapitlet
0 / 6 oppgaver

Teknologi er ikkje nøytral. Vala vi tek som utviklarar påverkar samfunn, økonomi og liva til individ. I dette kapittelet skal vi utforske etiske dilemma i IT-bransjen og diskutere samfunnsansvaret til utviklarar.

Som utviklar har du makt - makt til å påverke korleis millionar av menneske kommuniserer, får tilgang til informasjon, og tek avgjerder. Med denne makta følgjer eit ansvar for å handle etisk.

Algoritmisk bias oppstår når eit datasystem systematisk produserer urettferdige resultat.

Eksempel på algoritmisk bias:

1. Amazon rekrutteringsverktøy (2018)
Amazon utvikla ein AI for å vurdere CV-ar. Problemet? Den diskriminerte mot kvinner fordi den var trena på historiske data der dei fleste tilsette var menn.

2. Ansiktsattkjenning
Studiar viser at ansiktsattkjenning fungerer dårlegare for personar med mørk hudfarge, spesielt kvinner. Dette kan føre til feilaktige identifiseringar i kriminaletterforsking.

3. COMPAS (kriminalitetsrisiko)
Algoritme brukt i amerikansk rettssystem for å vurdere sannsyn for tilbakefall. Undersøkingar fann at den feilaktig klassifiserte svarte mistenkte som høgrisiko dobbelt så ofte som kvite.

Korleis oppstår bias?

Treningsdata:
- Data gjenspeglar historisk diskriminering
- Underrepresenterte grupper i datasettet
- Skeive utval

Algoritmeutforming:
- Val av features kan favorisere visse grupper
- Optimalisering for feil metrikk
- Manglande testing på diverse data

Fortolking og bruk:
- Blindt stole på outputen til algoritmen
- Ignorere kontekst
- Mangel på menneskeleg oversikt

Korleis kjempe mot bias:

# Eksempel: Sjekke for kjønnsbias i en modell

import pandas as pd
from sklearn.metrics import confusion_matrix

# Evaluer modell separat for hver gruppe
def evaluer_rettferdighet(modell, X_test, y_test, sensitiv_attributt):
    """
    Evaluerer om modellen gir like gode resultater
    for ulike grupper
    """
    resultater = {}

    for gruppe in X_test[sensitiv_attributt].unique():
        # Filtrer data for denne gruppen
        maske = X_test[sensitiv_attributt] == gruppe
        X_gruppe = X_test[maske]
        y_gruppe = y_test[maske]

        # Prediker
        y_pred = modell.predict(X_gruppe)

        # Beregn metrics
        cm = confusion_matrix(y_gruppe, y_pred)

        # True Positive Rate (sensitivitet)
        tpr = cm[1,1] / (cm[1,1] + cm[1,0])

        # False Positive Rate
        fpr = cm[0,1] / (cm[0,1] + cm[0,0])

        resultater[gruppe] = {
            'tpr': tpr,
            'fpr': fpr,
            'antall': len(y_gruppe)
        }

    return resultater

# Kjør evaluering
rettferdighet = evaluer_rettferdighet(
    min_modell,
    X_test,
    y_test,
    'kjonn'
)

# Sjekk om det er store forskjeller
for gruppe, metrics in rettferdighet.items():
    print(f"{gruppe}:")
    print(f"  True Positive Rate: {metrics['tpr']:.2%}")
    print(f"  False Positive Rate: {metrics['fpr']:.2%}")

Etiske prinsipp for AI:

1. Transparens: Forklar korleis algoritmen fungerer
2. Rettferd: Handsam alle grupper likt
3. Ansvarsplikt: Nokon må vere ansvarleg for konsekvensar
4. Personvern: Vern sensitive data
5. Tryggleik: Hindre misbruk
6. Menneskeleg kontroll: Menneske må ha siste ordet

Digital ulikskap (digital divide) refererer til ulik tilgang til og evne til å bruke digital teknologi.

Dimensjonar av digital ulikskap:

1. Tilgangsulikskap
- Manglande internettilgang (spesielt på landsbygda)
- Dyre einingar og dataabonnement
- Ustabil eller treg samband

2. Kompetanseulikskap
- Manglande digital kompetanse
- Språkbarrierar
- Tilgjengeproblem for personar med funksjonsnedsetjingar

3. Bruksulikskap
- Forskjellar i korleis teknologi blir brukt
- Nokre bruker internett til læring og jobbutvikling
- Andre kun til underhaldning

Konsekvensar:

- Utdanning: Digital heimeundervisning ekskluderer elevar utan utstyr
- Arbeid: Mange jobbar krev digitale ferdigheiter
- Tenester: Bank, helse, offentlege tenester blir digitale
- Demokrati: Digital deltaking i samfunnsdebatten

Som utviklar kan du:

1. Byggje tilgjengelege løysingar

<!-- God tilgjengelighet -->
<button
  aria-label="Lukk vindu"
  onclick="close()"
>
  <span aria-hidden="true">&times;</span>
</button>

<img
  src="diagram.png"
  alt="Flytdiagram som viser dataflyt fra bruker til database"
>

<!-- Støtt tastaturnavigasjon -->
<div
  tabindex="0"
  role="button"
  onkeypress="handleKeyPress(event)"
>
  Klikkbar
</div>

2. Optimalisere for treg samband

# Flask: Komprimer responser
from flask_compress import Compress

app = Flask(__name__)
Compress(app)

# Bruk effektive bildeformater
# WebP i stedet for PNG/JPEG
# SVG for ikoner i stedet for PNG

3. Støtte fleire språk

# Flask-Babel for internasjonalisering
from flask_babel import Babel, gettext

babel = Babel(app)

# I kode
print(gettext('Velkommen'))

# I template
{{ _('Velkommen') }}

4. Offline-first design

// Service Worker for offline-funksjonalitet
self.addEventListener('fetch', event => {
  event.respondWith(
    caches.match(event.request)
      .then(response => {
        // Returner fra cache hvis tilgjengelig
        return response || fetch(event.request);
      })
  );
});
Åpen kjeldekode (open source) tyder at kjeldekoden er fritt tilgjengeleg for alle å sjå, bruke og endre.

Kvifor åpen kjeldekode er viktig:

1. Transparens
Alle kan sjå kva programvara faktisk gjer. Viktig for tryggleik og tillit.

2. Samarbeid
Utviklarar over heile verda kan bidra til forbetringar.

3. Læring
Nybyrjarar kan lære av eksisterande kode.

4. Innovasjon
Byggje vidare på eksisterande løysingar i staden for å starte frå scratch.

5. Demokratisering
Teknologi tilgjengeleg for alle, ikkje berre dei med råd til dyre lisensar.

Populære open source-lisensar:

MIT License (permissiv):
- Kan bruke koden til kva som helst
- Må inkludere opphavleg lisens
- Ingen garanti

GNU GPL (copyleft):
- Må dele vidare under same lisens
- Derivat må også vere open source
- Vernar mot "closed fork"

Apache 2.0:
- Som MIT, men med patent-vern
- Populær i bedriftssamanheng

Korleis bidra til open source:

# 1. Fork et prosjekt på GitHub
# 2. Klon din fork
git clone https://github.com/ditt-brukernavn/prosjekt.git

# 3. Lag en branch for din endring
git checkout -b fikse-bug-123

# 4. Gjør endringer og commit
git add .
git commit -m "Fiks bug #123: Riktig validering av e-post"

# 5. Push til din fork
git push origin fikse-bug-123

# 6. Opprett Pull Request på GitHub

Etiske omsyn:

1. Bidra konstruktivt
- Vær høfleg i kommentarar
- Følg bidragsretningslinjene til prosjektet
- Respekter tida til vedlikehaldarane

2. Gi kreditt
- Attribution (gi kreditt til opphavspersonar)
- Ikkje hevd andre sitt arbeid som ditt

3. Respekter lisensar
- Forstå krava til lisensen
- Ikkje bryt lisensvilkår

4. Tryggleik
- Rapporter sårbarheiter ansvarleg (ikkje offentleg)
- Gi vedlikehaldarar tid til å fikse før offentleggjering

IT-sektoren står for aukande miljøpåverknad. Som utviklarar har vi ansvar for å lage meir berekraftig teknologi.

Miljøpåverknad frå IT:

1. Energiforbruk
- Datasenter bruker 1-2% av elektrisiteten i verda
- Kryptovaluta-mining er spesielt energikrevjande
- Video-streaming står for ~1% av globale CO2-utslepp

2. Elektronisk avfall
- Smarttelefonar, laptopar, tenarar blir kasta
- Inneheld giftige materiale
- Dårleg resirkulering

3. Produksjon
- Utvinning av sjeldne jordartar
- Høgt vassforbruk
- Arbeidstilhøve i fabrikkar

Berekraftig utvikling i praksis:

1. Effektiv kode

# INEFFEKTIVT: N+1 query problem
users = User.query.all()
for user in users:
    print(user.profil.navn)  # Hver iterasjon kjører egen query

# EFFEKTIVT: Eager loading
users = User.query.options(
    joinedload(User.profil)
).all()
for user in users:
    print(user.profil.navn)  # Kun én query totalt

2. Optimaliser bilete

from PIL import Image

def optimaliser_bilde(input_sti, output_sti, maks_bredde=1200):
    """Reduser bildestørrelse for web"""
    img = Image.open(input_sti)

    # Behold aspect ratio
    if img.width > maks_bredde:
        ratio = maks_bredde / img.width
        ny_hoyde = int(img.height * ratio)
        img = img.resize((maks_bredde, ny_hoyde), Image.LANCZOS)

    # Komprimer
    img.save(output_sti, optimize=True, quality=85)

3. Caching

from functools import lru_cache

@lru_cache(maxsize=128)
def hent_bruker(bruker_id):
    """Cache database-oppslag"""
    return db.query(User).get(bruker_id)

4. Lazy loading

<!-- Last bilder kun når de kommer i viewporten -->
<img src="bilde.jpg" loading="lazy" alt="Beskrivelse">

5. Vel grøn hosting
Mange webhotell bruker fornybar energi:
- Google Cloud
- AWS (aukar del fornybar energi)
- Grøne alternativ som Greenhost

6. Lang levetid på einingar
- Støtt eldre nettlesarar/einingar der mogleg
- Progressive enhancement
- Ikkje krev årleg oppgradering

7. Dark mode
OLED-skjermar bruker mindre straum med mørke fargar:

@media (prefers-color-scheme: dark) {
  body {
    background: #000;
    color: #fff;
  }
}

✏️Eksempel: Etisk sjekkliste for utvikling

Her er ei praktisk sjekkliste du kan bruke i utviklingsprosjekt:

ETISK SJEKKLISTE FOR IT-PROSJEKT

Personvern og data:
- [ ] Samlar vi kun data vi faktisk treng?
- [ ] Har vi gyldig handsamingsgrunnlag for alle data?
- [ ] Er personvernerklæringa klar og forståeleg?
- [ ] Kan brukarar enkelt slette kontoen sin?
- [ ] Krypterer vi sensitive data?
- [ ] Loggar vi kun det nødvendige (ingen passord/tokens)?

Tilgjenge:
- [ ] Fungerer sida med skjermlesar?
- [ ] Kan alt nåast med tastatur (utan mus)?
- [ ] Er kontrasten høg nok (WCAG Å)?
- [ ] Blir eldre nettlesarar/einingar støtta?
- [ ] Fungerer sida med tregt internett?
- [ ] Støttar vi fleire språk?

Rettferd og inkludering:
- [ ] Har vi testa med diverse brukarar?
- [ ] Diskriminerer algoritmen mot nokre grupper?
- [ ] Er standardinnstillingar "safe" for alle?
- [ ] Unngår vi stereotypiar i UI/innhald?

Tryggleik:
- [ ] Validerer vi all brukarinput?
- [ ] Bruker vi HTTPS overalt?
- [ ] Har vi implementert rate limiting?
- [ ] Loggar vi tryggleikshendingar?
- [ ] Er avhengigheiter oppdaterte?

Berekraft:
- [ ] Er koden optimalisert for yting?
- [ ] Bruker vi lazy loading for tunge ressursar?
- [ ] Er bilete/video komprimert?
- [ ] Har vi implementert caching?
- [ ] Støttar vi offline-bruk der relevant?

Transparens:
- [ ] Forklarer vi korleis algoritmar fungerer?
- [ ] Er vilkår og vilkår forståelege?
- [ ] Informerer vi om endringar i tenesta?
- [ ] Kan brukarar eksportere dataa sine?

Samfunnsansvar:
- [ ] Motarbeider løysinga spreiing av desinformasjon?
- [ ] Har vi vurdert misbrukspotensial?
- [ ] Bidreg vi til open source-fellesskapet?
- [ ] Handsamar vi leverandørar og partnarar rettferdig?

Eksempel på bruk:

# Før du deployer et nytt feature:

def pre_deployment_review():
    """
    Etisk gjennomgang før deployment
    """

    print("ETISK GJENNOMGANG")
    print("=" * 50)

    sjekkliste = [
        ("Personvern", [
            "Samler kun nødvendig data",
            "Har gyldig behandlingsgrunnlag",
            "Klar personvernerklæring"
        ]),
        ("Tilgjengelighet", [
            "Testet med skjermleser",
            "Tastaturnavigasjon fungerer",
            "God kontrast (WCAG AA)"
        ]),
        ("Sikkerhet", [
            "Input-validering implementert",
            "HTTPS enforced",
            "Rate limiting på plass"
        ])
    ]

    for kategori, punkter in sjekkliste:
        print(f"\n{kategori}:")
        for punkt in punkter:
            svar = input(f"  [ ] {punkt}? (j/n): ")
            if svar.lower() != 'j':
                print(f"      ⚠️  ADVARSEL: Må addresseres før deployment")

    print("\n" + "=" * 50)
    print("Gjennomgang fullført. Vurder alle advarsler før deployment.")

# Kjør før hvert deployment
if __name__ == "__main__":
    pre_deployment_review()

Oppsummering

I dette kapittelet har du lært:

- Etikk i IT: ansvar for korleis teknologi påverkar samfunnet.
- Bias i modellar: sjekke og redusere skeivskap.
- Berekraftig IT: effektiv kode og energi-/databruk.
- Tilgjenge og inkludering: internasjonalisering m.m.
- Åpen kjeldekode: bidra via fork og pull request.

Nøkkelomgrep


OmgrepForklaring
BiasSystematisk skeivskap i ein modell
Åpen kjeldekodeKode som er fritt tilgjengeleg og kan bidragast til

Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.