Dette indlæg vil dække nogle meget grundlæggende begreber inden for maskinlæring, fra lineær algebra til evalueringsmetrikker. Det tjener som en fin guide til nybegyndere, der ønsker at komme ind på området.

Linær algebra

Linær algebra er den centrale søjle inden for maskinlæring. Hvorfor? Maskinlæringsalgoritmer beskrives i bøger, artikler og på websteder ved hjælp af vektor- og matrixnotation. Lineær algebra er matematikken om data, og dens notation gør det muligt at beskrive operationer på data præcist med specifikke operatorer. De 2 vigtigste begreber i lineær algebra, som du bør kende, er vektorer og matricer.

1 – Vektorer

En vektor er en tupel af en eller flere værdier, der er kendt som scalarer. Det er almindeligt at introducere vektorer ved hjælp af en geometrisk definition, hvor en vektor repræsenterer et punkt eller en koordinat i et højdimensionelt rum. De vigtigste aritmetiske operationer for vektorer er addition, subtraktion, multiplikation, division, prikprodukt og skalarmultiplikation.

  • To vektorer af samme længde kan adderes sammen for at skabe en ny tredje vektor.
  • En vektor kan subtraheres fra en anden vektor af samme længde for at skabe en ny tredje vektor.
  • To vektorer af samme længde kan ganges sammen.
  • To vektorer af samme længde kan deles.
  • Punktproduktet er summen af de multiplicerede elementer af to vektorer af samme længde for at give en skalar.
  • En vektor kan ganges med en skalar for at skalere vektorens størrelse.

Der er mange anvendelsesmuligheder for vektorer. Vektorer kan f.eks. repræsentere en forskydning i 2D- eller 3D-rummet. Punkter er blot vektorer fra oprindelsen. Data (pixels, gradienter ved et billednøglepunkt osv.) kan også behandles som en vektor.

2 – Matricer

En matrix er et 2-dimensionelt array af skalarer med en eller flere kolonner og en eller flere rækker. Hvis matrixen har det samme antal rækker og kolonner, er det en kvadratisk matrix. Identitetsmatrix er en kvadratisk matrix med 1’er på diagonalen og 0’er alle andre steder. Diagonalmatrix er en kvadratisk matrix med tal på diagonalen og 0’er andre steder. En kolonnevektor er blot en matrix, hvor der er én række, mens en rækkevektor blot er en matrix, hvor der er én kolonne.

De grundlæggende matrixoperationer er addition, skalering, prikprodukt, vektormultiplikation, skalarmultiplikation, transponering, invers og determinant/sporing.

  • To matricer med samme dimensioner kan adderes sammen til en ny tredje matrix.
  • Sådan kan en matrix trækkes fra en anden matrix med samme dimensioner.
  • To matricer med samme dimensioner kan ganges sammen, og dette kaldes ofte elementvis matrixmultiplikation.
  • En matrix kan divideres med en anden matrix med samme dimensioner.
  • Matrixpunktproduktet har posterne i 2 vektorer, der ganges med hinanden og resultatet lægges sammen.
  • En matrix og en vektor kan ganges sammen, så længe reglen for matrixmultiplikation overholdes.
  • En matrix kan ganges med en skalar. Resultatet er en matrix med samme størrelse som den overordnede matrix, hvor hvert element i matrixen er ganget med den skalare værdi.
  • Matrixtransponering er, når vi vender en matrixs kolonner og rækker om, så række 1 nu er kolonne 1 osv.
  • Givet en matrix A er dens inverse A^(-1) en matrix, således at A x A^(-1) = I. Hvis A^(-1) eksisterer, er A invertibel eller ikke-singulær. Ellers er den singulær.

Maskinlæring

1 – Hovedtilgange

De 3 vigtigste tilgange til maskinlæring er:

  • Usupervised Learning, som bruges meget inden for computer vision. Eksempler er k-means, ICA, PCA, Gaussian Mixture Models og dybe auto-enkodere.
  • Supervised Learning, som også bruges meget inden for computervision. Eksempler er dybe overvågede neurale netværk.
  • Reinforcement Learning, som især anvendes til robotteknologi og kontrolproblemer. Eksempler er dyb Q-learning og policy gradient metoder.

I Reinforcement Learning er spillereglerne ukendte. Der er ingen tilsynsførende, kun et belønningssignal med forsinket feedback. Agentens handlinger påvirker de efterfølgende data, den modtager.

I uovervåget læring ønsker vi at finde struktur og mening i data uden nogen etiketter. Som nævnt ovenfor er eksempelalgoritmer Principal Component Analysis, k-means, Non-Negative Matrix Factorization, Independent Component Analysis, Gaussian Mixture Models, Latent Dirichlet Allocation og Auto-Encoders.

I Supervised Learning er den grundlæggende terminologi sådan, at vi har et indledende inputrum x og et indledende outputrum y. Efter at have set en række eksempler (x, y) ønsker vi at vælge en afbildning F: x -> y, der nøjagtigt replikerer input-output-mønstret for eksemplerne. Der findes masser af algoritmer til at finde forskellige modeller af F ud fra mærkede observationer (ground truth). Ofte kategoriseres læring efter deres outputrum, som enten kan være diskret eller kontinuerligt.

  • Kontinuerligt outputrum anvendes i regressionsproblemer. For eksempel, givet input som et billede af en tallerken med mad, ønsker vi output som antallet af samlede kalorier. Eller givet input som en persons ansigt ønsker vi output som denne persons alder.
  • Med diskrete outputrum opbygger vi typisk klassifikatorer. Vi ønsker f.eks., at output skal være klasse 1, klasse 2, klasse 3 …, hvor tallene repræsenterer en eller anden form for meningsfuld kategori. Vi kan også kalde disse etiketter eller kategorier.

2 – Træningsdata og testdata

Træningsdata er det, vi giver klassifikatoren i løbet af træningsprocessen. Det er de parrede data til indlæring af f(x) = y, hvor x er input (en vektor af funktioner i R^d) og y er output (en etiket med klassifikation). Under træningen forsøger vi at finde en god model af f(x), der replikerer input-output-forholdet i dataene.

Testdata anvendes sammen med en trænet klassifikator for at vurdere den. Vi har x, men vi kender ikke y. Normalt lader vi kun som om, at vi ikke har y i forskningen, men i den virkelige verden vil man virkelig ikke have det. Det trænede system forudsiger y for os, og vi vurderer, hvor godt systemet fungerer.

3 – Sandsynligheder

I stedet for kun at kategorisere et input i en af K forskellige klasser, ønsker vi måske at kende sandsynligheden for hver af disse klasser. For hver mulig kategori returnerer P(C = k | x) en værdi mellem 0 og 1, idet værdier tættere på 1 betyder, at klassifikatoren “tror”, at den pågældende klasse sandsynligvis er den kategori, som inddataet tilhører. For at klassificere ønsker vi at vælge den største P(C = k | x).

4 – Parametriske og ikke-parametriske

Parametriske modeller indebærer tilpasning af parametre. Vi ønsker f.eks. at finde gode værdier for w-vektorerne til vores lineære klassifikator. Parametriske modeller har et endeligt antal parametre, hvor antallet af parametre er uafhængigt af træningsmængden.

Non-parametriske modeller indebærer lagring af data og anvendelse af dem på en eller anden måde. Her afhænger antallet af parametre af træningsmængden (hvor mange data man gemmer). Mere specifikt vokser antallet af parametre med størrelsen af træningssættet.

Evaluering af klassifikatorer til maskinlæring

Når modellen har set en række eksempler (x, y), vælger den en afbildning F: x -> y, der replikerer ind- og udgangsmønstret i eksemplerne. Spørgsmålet er, hvor godt modellen F fungerer efter træning? Vi kan evaluere F på træningsdataene, men præstationen på træningsdataene fortæller os ikke rigtig, hvor godt modellen generaliseres til andre data. Med andre ord kan F blot lære træningsdataene udenad. Vi skal derfor evaluere på testdataene for at få et bedre indtryk af, hvor godt modellen fungerer.

Det enkleste evalueringsmål for klassifikation er nøjagtighed, som er den andel af punkterne, der er korrekt klassificeret. Nøjagtigheden kan beregnes som summen af sande positive og sande negative punkter, divideret med alle datapunkter. Fejlprocenten er simpelthen 1 – Nøjagtighed, eller summen af falske positive og falske negative, divideret med alle datapunkter.

For at implementere nøjagtighed er den bedste måde at gemme dine forudsigelser for hver testvektor x_t på. Så hvis du har i alt T vektorer at teste, ender du med en T-dimensionel vektor med alle dine forudsigelser, og så skal du bare sammenligne den med grundsandheden. Du kan også gemme sandsynlighederne for at beregne andre målinger, men det kan kræve meget hukommelse, hvis du har mange klasser.

1 – Forvirringsmatrix

En forvirringsmatrix er et særligt tabellayout, der gør det muligt at visualisere en algoritmes ydeevne, typisk en supervised learning-algoritme. Hver række i matrixen repræsenterer forekomsterne i en forudsagt klasse, mens hver kolonne repræsenterer forekomsterne i en faktisk klasse. Det giver dig mulighed for at se, hvilke klasser der er mest forvirrede. En “stærk” diagonal indikerer en god præstation. I en normaliseret forvirringsmatrix er rækkerne normaliseret til at summen er 1.

2 – Præcision og tilbagekaldelse

Præcision er antallet af korrekt klassificerede positive eksempler divideret med det samlede antal eksempler, der er klassificeret som positive. Recall er antallet af korrekt klassificerede positive eksempler divideret med det samlede antal faktiske positive eksempler i testmængden. Præcision-Recall er en dominerende måleenhed i forbindelse med objektdetektion og er især nyttig, når kategorierne er ubalancerede. Høj præcision betyder, at en algoritme returnerede væsentligt flere relevante resultater end irrelevante, mens høj recall betyder, at en algoritme returnerede de fleste af de relevante resultater.

3 – Klassificeringstærskler

Ofte vil en klassifikator have en vis tillidsværdi i hver kategori. Disse genereres oftest af probabilistiske klassifikatorer. Nogle gange sætter vi tærskelværdierne for sandsynlighedsværdierne. I computervision sker dette meget i forbindelse med detektion. Den optimale tærskelværdi varierer afhængigt af opgaverne. Nogle præstationsmålinger er følsomme over for tærsklen. Ved at ændre tærskelværdien fra min til max (fra 0 til 1) kan vi tegne en kurve (ROC- og Precision-Recall-kurver).

Model Power

1 – Overfitting & Underfitting

Din klassifikator F siges at være overfittet til dataene, hvis træningsydelsen er meget større end testydelsen. På den anden side er F undertilpasset til dataene, når den ikke er stærk nok til at modellere input-output-forholdet.

2 – Modelkapacitet

Modelkapacitet henviser til antallet af parametre. Større kapacitet betyder generelt, at du har brug for flere træningsdata til at træne modellen, da den ellers har en stor risiko for overpasning. På den anden side betyder en lav kapacitet sandsynligvis, at du underfitter træningsdataene betydeligt.

Specifikt med neurale netværk betyder flere neuroner større kapacitet. En god analogi er, at en lineær klassifikator har meget lav kapacitet, mens et dybt neuralt netværk har meget stor kapacitet. Med flere træningsdata vinder den mere komplekse model. Klassifikatorer med en større model kan skabe komplekse beslutningsgrænser, men for komplekse kan være en dårlig model for testdataene, især hvis dataene er begrænsede.

3 – Samplingskompleksitet

Samplingskompleksitet er antallet af træningsprøver, som vi skal levere til læringsalgoritmen, så den funktion, som algoritmen returnerer, ligger inden for en vilkårligt lille fejl i forhold til den bedst mulige funktion (træning og test). Algoritmer med større modelkapacitet har tendens til at have dårligere prøvekompleksitet, fordi de har flere parametre at tilpasse og sandsynligvis vil overtilpasse med utilstrækkelige træningsdata. I disse tilfælde kan reguleringsteknikker hjælpe.

Hvis du er interesseret i dette materiale, skal du følge udgivelsen Cracking Data Science Interview for at modtage mine efterfølgende artikler om, hvordan du knækker datavidenskabsinterviewprocessen.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *