close

Vores nyhedsbreve

close
Ved at tilmelde dig accepterer du vores Brugerbetingelser, og at Mediehuset Ingeniøren og IDA-gruppen lejlighedsvis kan kontakte dig om arrangementer, analyser, nyheder, tilbud mm via telefon, SMS og email. I nyhedsbreve og mails fra Mediehuset Ingeniøren kan findes markedsføring fra samarbejdspartnere.
den levende maskine bloghoved

Dybe neurale net

Som nævnt sidste gang er dybe net tidens hotte område inden for kunstig intelligens. Anvendelsen af dette sæt af maskinlæringsteknikker har løst mange problemer som fagfeltet har kæmpet med i mange år. Men hvad er de der dybe net egentlig, hvordan fungerer de, og hvad kan de bruges til? Jeg skal forsøge at give en kort introduktion. Specielt interesserede henvises til e.g. Schmidhubers eller Bengios oversigtsartikler.

Dybe net er et sæt af metoder som alle deler den underliggende idé om at man kan lære et højt abstraktionsniveau af data ved at benytte mange lag af forbundne knuder som kan beregne ikke-lineære funktioner. Et klassisk, og efterhånden lidt banalt eksempel er at man kan træne et netværk til at genkende katte (højt abstraktionsniveau) fra pixler i et billede (lavt abstraktionsniveau). På vej fra pixler til kat vil lagene lære højere og højere abstraktionsniveauer.

Dybe net er, som de fleste (hvis ikke alle) AI metoder, ikke en ny opfindelse som er opstået ud af det blå. Hvis vi vælger at ignorere alle de tidligere arbejder fra mange fagfelter som har været inspirationer, er det første eksempel på dybe net nok fra 1979 udført af Fukushima.

Grunde til at dybe net har fået et renæssance er delvist at vi i dag har adgang til meget store datasæt og kraftige maskiner (typisk stakke af GPU’er). Men der er også sket en hel del metodeudvikling.

Som nævnt sidste gang er kernen i flade net at man tager noget data som man så bruger til at træne sin model. Derefter bruger man denne model på ny og ukendt data. En af de store udfordringer er det at vælge hvilke inputparametre (features) man skal bruge. Dette refereres ofte til som ”feature engineering”, er delvist en videnskab og delvist sort magi.

I tillæg bruger flade net typisk overvåget læring (supervised learning); altså at man har et træningssæt bestående af kendte forbindelser mellem input og output (labelled dataset).

Altså vil man have behov for et kendt træningssæt samt kunne udføre kunsten af feature engineering. Dette er ikke altid trivielt.

De dybe net kan bruges til ikke-overvåget læring (og overvåget læring) som kan bruge store datasæt uden kendt klassificering (unlabelled) for at finde strukturer og mønstre i disse data. Eller mindske udfordringen med at vælge inputparametre (features). Generelt kan man sige at de er gode til mønstergenkendelse og feature- og repræsentationslæring.

Hvordan fungerer dybe net så?

Lad os starte med knuderne i et netværk. De er af samme type som i flade net. Altså en ikke-lineær aktiveringsfunktion som oversætter inputværdier til outputværdier. Man starter med et inputlag og afslutter med et output lag. Hvor flade net typisk ikke har mange skjulte lag, vil et dybt net have rigtig mange.

Man kan så træne dybe net, enten på fundamentalt samme måde som med flade net, altså som overvåget læring via f.eks. backpropagation. Man kan også vælge at gå for ikke-overvåget læring (unsupervised).

Overvåget læring forsøger at forudsige en vektor, som er kendt i forvejen, ved a ud fra en matrix af input. Ikke-overvåget læring forsøger at finde mønstre som ikke er kendte i forvejen. F.eks. autoencoderen, som forsøger at lære at reproducere den samme matrix som bruges som input. Derfor har et sådan net samme antal inputknuder og outputknuder som størrelse på inputmatricen. De skjulte lag vil i sagens natur have færre knuder. Dette bliver et net med en klassisk timeglasform (se figur). Figuren viser et net som lærer at genkende håndskrift.

Så hvorfor virker det?

Det virker fordi man træner vægtene i hvert lag. Hvert lag er en ikke-lineær kombination af laget over, og også en ikke-lineær projektion ind i færre dimensioner. En projektion ind i færre dimensioner kan man også betragte som en højere abstraktion (som med eksemplet med katte ovenfor).

Dybe net er som nævnt et sæt af metoder, og de kommer derfor i mange afskygninger. Eksemplet ovenfor er, som nævnt, en bestemt version som kaldes en ”autoencoder”. Der findes en helt række andre afskygninger, så som ”convolutional net”, ”deep belief network”, og ”recurrent networks”.

Man kan spørge sig hvorfor dybe net er anderledes en tolags net?

Teoretisk kan et feed-forward netværk med et skjult lag approksimere enhver funktion. Så man kan jo spørge sig hvorfor man skulle bruge et dybt net. Der er to argumenter for dette: det første er at et dybt net kan approksimere funktioner ved brug af færre knuder; det andet og måske bedre er at det er en langt mere praktisk løsning.

Anders Kofod-Petersen
er professor i kunstig intelligens og vicedirektør i Alexandra Instituttet.