Maskinlæring (ML)

Kunstig intelligens (AI), maskinlæring (ML) og "deep learning" er begreper som blir brukt om hverandre. AI er en superklasse som dekker alle, mens "deep learning" er en subklasse av ML. Oppsummert: (AI (ML ("deep learning"))). Ofte sier vi ML og mener i praksis "deep learning". Uansett er det AI.

Det finnes mange biblioteker/rammeverk for ML. Et av de mest dominerende rammeverkene er TensorFlow . Andre alternativer kan være Keras (inkludert i TensorFlow), PyTorch , Torch , Caffe , Theano , MXNet , CNTK .

Tensorer er kjernedatastrukturen i TensorFlow (og ellers innen dyplæring). De er en generalisering av vektorer og matriser . Eller sagt på en annen måte - en tensor er en flerdimensjonal matrise. I tillegg trenger vi en modell. Modellen kan være enkel av type lineær regresjon , eller kompleks som i et nevralt nettverk .

Data kan komme fra stordata ("big data") kilde(r). Stordata er datasett som er så store eller komplekse at de trenger ekstra kraftige dataprosesseringsverktøy for å la seg analysere. Det kan være behov for en "data scientist" for å finne og sette opp data og velge modell. Men trenden er at ML blir stadig enklere å bruke for systemutviklere.

PS! Hvordan skal du programmere klassifisering av ting eller bildegjenkjenning på konvensjonelt vis? 1000.000 if-then-else?
Tensorer (data) og modell (svar) mates inn i "Maskinlæringen" og kommer ut som regler. Disse reglene, som erstatter programmering av regler, mates inn sammen med ukjente data for å gi nye svar (min oppsummering slik jeg ser det).
ML ≅ "universal function approximator". I figuren nedenfor; bruk regelen som kommer ut fra ML og bruk den som input-regel i tradisjonell programering. Se da på ML-boksen som "trening", og programmerings-boksen som "testing". Trening av en modell ved hjelp av data, og testing av den trente modellen med bruk av andre data er typisk for all ML/dyplæring.

Programmering vs. ML

Tensorflow - programmering vs. maskinlæring
Programmering vs. ML - illustrert.

Prøv ML i praksis

Test de to demo'ene (valgfritt; kikk på koden), og kjør deretter noen av eksemplene ("EMOJI scavengerhunt" du prøve fra mobilen din!). Gå så til video'er for å lære mer.

En grundigere gjennomgang av tensorflow.js finnes på ml2.klev.org.

Selvstudie i ML

Her er link til et selvstudiekurs i ML

"Deep Learning" grunnleggende Lex Fridman

På et høyt nivå er nevrale nettverk enten "encoders", "decoders" eller en kombinasjon av begge:

Vi har tre klasser av "deep learning": Supervised, Unsupervised, og Reinforcement læring. Supervised: Egenskaper og korelasjon med "labels" (merkelapper/etiketter) F.eks. brukt til predikasjon av huspriser. Unsupervised: Kun sett av egenskaper. F.eks. brukt til predikasjon av oppførsel for en gruppe mennesker (kan være en gitt kundegruppe). Reinforcement: Styres av belønninger som "agentene" selv erfarer, og tilpasser modellens parametre automatisk. Tilsammen utgjør disse tre klassene syv viktige konsepter innen "deep learning":

  1. Feed Forward Neural Networks (FFNNs) - klassifisering og regresjon basert på egenskaper
  2. Convolutional Neural Networks (CNNs) - bilde klassifisering, objekt gjenkjenning, klassifisering av handlinger i en video
  3. Recurrent Neural Networks (RNNs) - språk modelering, tale gjenkjenning/generering (Min oppdatering fra oktober 2019: Convolutional Neural Networks ansees bedre enn og dekker også det RNNs gjør. Altså mindre leting etter modeller)
  4. Encoder Decoder Architectures - semantiske oppdelinger, maskin oversettelse
  5. Autoencoder - selvdrevet innbygging/forenkling, støyfjerning fra bilder. Grunnleggende for "deep learning" og selvdrevne modeller
  6. Generative Adversarial Networks (GANs) - selvdrevet generering av realistiske bilder
  7. Deep Reinforcement Learning (Deep RL) - selvspillende spill, selvkjørende biler, robot-simulering, neurale arkitektursøk
Klasser av 'deep learning'
Klasser av "deep learning" - Kilde: mit-deep-learning-basics-introduction-and-overview-with-tensorflow

Transformer Arkitekturen — "Attention Is All You Need"

Oppdatering etter at OpenAI's ChatGPT (GPT: Generative Pre-trained Transformer, en supergod "auto-complete" basert på LLM (Large Language Model)) ble populær, basert på Transformer Arkitekturen fra Google Brain: https://research.google/pubs/attention-is-all-you-need , og kanskje det viktigste dokumentet innen AI til nå; Attention Is All You Need .
OpenAI/GPT — i tillegg til tranformer-arkitekturen — skalerte opp modellen(e), tilførte enorme mengder data ("hele Internet") og tok i bruk enorme mengder av datakraft (GPU'er).
Tilsvarende OpenAI og ChatGPT, har Google Bard basert på Gemini.

Transformer Arkitekturen 'Attention Is All You Need'
Transformer Arkitekturen - Kilde: https://research.google/pubs/attention-is-all-you-need/

Diverse lenker