Deep Learning
Övning 1: Träna din egen bildklassificerare
Syfte: Att praktiskt uppleva hur det går till att träna en djupinlärningsmodell för datorseende. Vi använder ett enkelt och visuellt webb-verktyg som heter Google Teachable Machine.
Genomförande:
- Gå till Google Teachable Machine och starta ett nytt "Image Project".
- Välj ett tema: Bestäm dig för 2-3 klasser av objekt du vill lära din AI att känna igen. För att göra det utmanande, välj saker som liknar varandra. Förslag:
- Olika typer av svenska svampar (t.ex. "Kantarell" vs. "Flugsvamp").
- Olika typer av fika (t.ex. "Kanelbulle" vs. "Chokladboll").
- Olika handgester (t.ex. "Tumme upp" vs. "Peace-tecken").
- Samla data: Använd din webbkamera för att ta 10-20 bilder för varje klass. Försök att variera vinklar, bakgrunder och ljusförhållanden. Detta är din träningsdata.
- Träna modellen: Klicka på "Train Model". Processen tar oftast mindre än en minut.
- Testa modellen: När träningen är klar, använd "Preview"-fönstret för att testa din modell i realtid. Håll upp olika objekt (både sådana den tränats på och nya) framför kameran.
- Försök lura den: Hur robust är din modell? Vad händer om du håller upp en bild som är mitt emellan två klasser? Eller om du ändrar ljuset dramatiskt?
- Hur bra fungerade din modell? I vilka situationer blev den osäker?
- Vad tror du skulle hända med modellens prestanda om du hade använt 1000 bilder per klass istället för 10? Vad säger det om vikten av "Big Data"?
- Denna enkla modell tränades på några sekunder. Föreställ dig den datamängd och datorkraft som krävs för att bygga en modell som kan känna igen tusentals olika objekt med hög precision. Vad säger det om inträdesbarriärerna och skapandet av ett "AI-oligopol"?
Övning 2: Utforska en förtränad modell (Transfer Learning)
Syfte: Att förstå och praktiskt använda en kraftfull, förtränad djupinlärningsmodell för att klassificera bilder. Detta introducerar konceptet transfer learning.
Verktyg: Google Colab, Python, TensorFlow/Keras.
Instruktioner:
- (Denna övning är tänkt att genomföras i ett Google Colab-notebook som läraren tillhandahåller.)
Steg 1: Ladda en förtränad modell Vi kommer att ladda VGG16, en känd CNN-arkitektur som har tränats på det enorma ImageNet-datasetet och kan känna igen 1000 olika objektklasser.
# Importera nödvändiga bibliotek
from tensorflow.keras.applications.vgg16 import VGG16, preprocess_input, decode_predictions
from tensorflow.keras.preprocessing import image
import numpy as np
import requests
# Ladda VGG16-modellen, förtränad på ImageNet
model = VGG16(weights='imagenet')
print("Modellen VGG16 har laddats.")
Steg 2: Förbered en bild Ladda upp en egen bild eller använd en bild från en URL. Modellen kräver att bilden har en specifik storlek (224x224 pixlar).
# Funktion för att ladda och förbereda en bild från en URL
def prepare_image(url):
response = requests.get(url, stream=True)
img = image.load_img(response.raw, target_size=(224, 224))
img_array = image.img_to_array(img)
img_array_expanded = np.expand_dims(img_array, axis=0)
return preprocess_input(img_array_expanded)
# URL till en bild (byt ut mot en egen bild om du vill)
image_url = 'https://upload.wikimedia.org/wikipedia/commons/thumb/6/68/Golden_retriever_web_-_Crepes.jpg/640px-Golden_retriever_web_-_Crepes.jpg'
prepared_image = prepare_image(image_url)
print("Bilden har laddats och förberetts.")
Steg 3: Gör en förutsägelse Mata in den förberedda bilden i modellen och se vad den förutsäger.
# Gör en förutsägelse
predictions = model.predict(prepared_image)
# Avkoda förutsägelsen till läsbar text
decoded_predictions = decode_predictions(predictions, top=3)[0]
print("Modellens topp 3 förutsägelser:")
for i, (imagenet_id, label, score) in enumerate(decoded_predictions):
print(f"{i+1}: {label} ({score:.2f})")
- Testa med olika bilder. Prova med tydliga bilder på vanliga objekt (t.ex. en banan, en bil, en katt). Prova sedan med mer tvetydiga eller komplexa bilder. Hur bra fungerar modellen?
- Transfer learning handlar om att återanvända kunskap. VGG16 har redan lärt sig att känna igen kanter, former, texturer etc. från tusentals bilder. Hur skulle du kunna använda denna förtränade "kunskap" för att bygga en egen, specialiserad klassificerare (t.ex. för att känna igen olika svampar) utan att behöva träna en hel modell från grunden med miljontals bilder?
- Modellen ger en sannolikhet (score) för varje förutsägelse. Varför är detta mer användbart än att bara få ett enda svar?
Övning 3: Moravec's Paradox Labb
Syfte: Att praktiskt utforska och jämföra en modern AI:s styrkor och svagheter.
Genomförande (i par eller smågrupper):
- Del A (Lätt för AI, svårt för människan): Gå till en schack-app eller webbsida (t.ex. Lichess.org eller Chess.com). Spela en match mot datorn på en hög svårighetsgrad. Det är okej att förlora snabbt.
- Del B (Lätt för människan, svårt för AI): Använd en multimodal AI (en AI som kan tolka bilder, t.ex. ChatGPT-4, Gemini eller Copilot). Ladda upp en bild av en komplex social situation (t.ex. en känd historisk bild, en "stock photo" av ett kontorsmöte, eller en scen från en film). Be AI:n att:
- "Beskriv stämningen i den här bilden."
- "Vilken relation tror du personerna har till varandra?"
- "Vad tror du hände precis innan den här bilden togs?"
- Analysera:
- Jämför AI:ns prestanda på de två uppgifterna.
- I schack (Del A) är AI:n troligen övermänsklig. Varför? Vilka egenskaper hos schack gör det till ett "enkelt" problem för en dator? (Tydliga regler, avgränsad miljö, tydligt mål).
- Hur bra var AI:n på att tolka den sociala bilden (Del B)? Missade den några uppenbara sociala signaler? Var dess tolkning ytlig eller djup? Varför är detta ett "svårt" problem för en dator? (Kräver sunt förnuft, kulturell kontext, empati).
- Har djupinlärningen löst Moravec's Paradox? Varför/varför inte?
Övning 4: Den mänskliga rörelsen (Kroppslig intelligens)
Syfte: Att analysera skillnaden mellan en robots rörelser och en människas.
Genomförande:
- Titta på ett videoklipp av de mest avancerade humanoiderna från Boston Dynamics.
- Titta därefter på ett videoklipp av en professionell idrottare eller dansare i världsklass.
- Diskutera i grupp:
- Vad är de största skillnaderna ni ser i rörelsekvalitet, balans, anpassningsförmåga och "flow"?
- Robotarna är otroligt imponerande, men det är fortfarande något som "saknas". Försök att sätta ord på vad det är.
- Varför är en 18-årig gymnasts motorik fortfarande oändligt mycket mer sofistikerad än den mest avancerade robotens, trots att roboten har tillgång till enorm datorkraft?
Övning 5: Kognitivt Test - Ser du vad jag ser?
Syfte: Att jämföra din egen och en AI:s förmåga att känna igen objekt under svåra förhållanden.
Genomförande:
- Hitta bilder på objekt som är delvis dolda, uppochnedvända, eller har mycket visuellt "brus".
- Testa dig själv: Hur snabbt kan du identifiera objektet?
- Testa en AI: Använd en bildigenkännings-AI (t.ex. Google Lens eller en multimodal LLM) och se om den kan identifiera objektet korrekt.
- Diskutera: I vilka situationer var du överlägsen? När var AI:n bättre? Vad säger detta om styrkorna och svagheterna i ditt System 1 jämfört med en CNN?
Bok 1: Chip War av Chris Miller
Läs: Chris Miller - Chip War: The Fight for the World's Most Critical Technology.
Reflektera: Miller beskriver kampen om halvledare som en central geopolitisk konflikt. Hur förändrar detta er syn på er smartphone eller dator? Diskutera hur beroendet av ett fåtal tillverkare (som TSMC och Nvidia) skapar nya sårbarheter för hela världsekonomin.
Nu skulle vara ett bra tillfälle att genomföra ett mer omfattande halvkursprojekt som är ett större praktiskt moment du kan läsa mer om vid slutet av boken.