Development

Klantinteractie
Hoe Deep Learning de Vlaming aan werk helpt

Hoe deep learning de Vlaming aan werk helpt

# Jobmatching is een belangrijk en groeiend probleem.
 

Vrouw met een laptop. © Unsplash Linkedin Sales Navigator
13 augustus 2018

# Jobmatching is een belangrijk en groeiend probleem.
 

Heb je recentelijk een nieuwe job gezocht? Of misschien een nieuwe werknemer? Dan weet je dat zoiets niet in een-twee-drie geklaard is. Er bestaan jobboards en recruitmentkantoren om dit proces te versnellen. En ook de overheid draagt haar steentje bij aan de organisatie van de arbeidsmarkt. Zo heb je UWV in Nederland en VDAB in België. Al deze organisaties doen een beroep op technologie om de juiste personen te linken met de juiste jobs.

Klassieke, rule-based technologieën volstaan niet

Hoe weten we welke persoon bij welke job past? Welke informatie is het belangrijkst? We weten uit ervaring dat jobtitel en locatie erg belangrijk zijn. Klassieke systemen, die geen gebruikmaken van machine learning, zijn rule-based. Enkele voorbeelden van hoe ze redeneren:

  • De afstand tussen de job en de persoon is klein, dus er is een match.
  • De persoon is een babysitter, maar de job vraagt om een nanny, dus geen match.

  • De persoon heeft 'EN' als taal aangeduid, maar de job vermeldt 'speaks English', dus geen match.

  • De persoon vermeldt 'Licence B', maar de job vermeldt “drive the kids to school', dus geen match.

Zoals je ziet, een gemiste kans. De vraag is dus: hoe kunnen we een jobmatchingsysteem bouwen dat menselijke taal verstaat? Met deep learning natuurlijk!

Wat zijn artificiële intelligentie, machine learning en deep learning?

Voor we verder gaan, even een snelle herhaling.

  • Artificiële intelligentie, of AI, is het algemene concept van machines die menselijke intelligentie vertonen.

  • Machine learning, of ML, een specifieke vorm van AI, is het gebruik van algoritmes die leren uit data, om zo AI te bereiken.

  • Deep learning, of DL, een specifieke vorm van ML, is het gebruik van een bepaalde klasse van algoritmes, genaamd neurale netwerken.

Deep learning is de beste manier om complexe kennisdomeinen te modelleren. Waarom is dat? De eerste reden is dat DL beter presteert dan klassieke machine-learningmodellen in bepaalde gevallen.
Meer precies:

  • Als het gaat om een complex kennisdomein, zoals vertalen, gezichtsherkenning, spraakherkenning, schaken, enzovoort.

  • Als er genoeg data zijn om dit complexe kennisdomein aan te leren.

De reden dat DL in zulke gevallen beter presteert, is omdat een DL-model, of met andere woorden een neuraal netwerk, veel meer parameters bevat om die kennis te kunnen absorberen. Dit varieert van 1 miljoen parameters voor een klein neuraal netwerk tot 100 miljoen parameters voor een groot neuraal netwerk.

In het geval van jobmatching is DL exact wat we nodig hebben. De jobmarkt begrijpen vereist een complex model, en er zijn genoeg data om het model te trainen.

Deep learning kan mensentaal omzetten naar machinetaal

Hoe leren we een machine lezen? Machines zijn heel goed met nummers. Het idee is om elk woord in het woordenboek te vertalen naar een vector van 300 nummers. Elk van die 300 nummers geeft aan in welke mate het woord een bepaalde betekenis bevat. Eén nummer zou kunnen beschrijven of het woord een job is. Een ander of het iets te maken heeft met kinderen, enzovoort. Met 300 nummers zijn de combinaties eindeloos. In deep learning noemen we deze vectoren 'embeddings'. Embeddings is een goede naam, want alle belangrijke informatie van een woord is geëmbed in deze 300 nummers.

Zodus, een embedding is een vector, of met andere woorden: gewoon een lijst met getallen tussen -1 en 1. Een vector van drie getallen kun je voorstellen in een 3D-ruimte. Een vector van 300 getallen kun je voorstellen in een 300D-ruimte. Dit heeft enkele interessante gevolgen. Zo zal de embedding voor babysitter zeer dicht liggen bij die van nanny. En die zal ook dicht liggen bij de embedding van het Nederlandse woord kinderverzorger.

Maar er is meer. Deze embeddings bevatten effectief relaties tussen woorden. Je kunt ermee rekenen. Wat is de uitkomst van de volgende berekening: king - man + woman = ?

Embeddings in deep learning
Embeddings in deep learning

Dit toont de kracht van DL. Het kan hoog dimensionale data, zoals woorden of afbeeldingen, samenvatten in laag dimensionale embeddings. Deze embeddings kunnen dan gebruikt worden voor tal van zaken. Gelijkaardige woorden vinden bijvoorbeeld. Je kunt deze embeddings zelfs gebruiken om andere embeddings te genereren.

Met embeddings kan je jobmatching doen

Om personen en jobs samen te vatten, gebruiken we een opeenvolging van embeddings. Eerst vatten we alle woorden van een cv of een jobomschrijving samen in woord-embeddings. Meerdere woord-embeddings vatten we samen in document-embeddings. We voegen nog wat andere embeddings toe, zoals de locatie, en we houden job- en persoon-embeddings over. Deze bevatten alle belangrijke informatie die nodig is om een persoon met een job te matchen, in 300 getallen. Het eerste getal zou bijvoorbeeld kunnen gaan over de industrie, een ander over de ervaring, een ander over de taal, een ander over de locatie, enzovoort.

Architectuur van een deep job recommender

 

Nu je wat meer weet over embeddings, kunnen we uitzoomen naar de volledige deep-learningarchitectuur van de job recommender.

Architectuur van deep job recommender
Architectuur van deep job recommender

Personen en jobs zijn complexe dataobjecten. Ze bevatten gestructureerde data, zoals leeftijd, taalcodes, postcode, enzovoort. Het gros van de data is ongestructureerd. Dit zijn tekstdocumenten zoals het cv en de jobomschrijving.

We willen een persoon vergelijken met een job om te zien of er een match is. Omdat het voor een machine zeer moeilijk is om die vergelijking te maken op ongestructureerde data, gebruiken we een DL-model om elke job en elke persoon samen te vatten in een embedding. Met een simpele wiskundige formule, zoals de cosinus similarity, kunnen we een score berekenen van hoe goed de match is tussen een persoon en een job.

Geen deep learning zonder learning

Er rest ons één belangrijke vraag. Hoe kan DL leren om effectief bruikbare embeddings te genereren? Voor we het DL-netwerk trainen, zijn alle parameters random, dus ook de embeddings zijn random, en dus onbruikbaar.

Wat we nodig hebben zijn voorbeelden om uit te leren. In DL noemen we dit 'labels'. Er zijn verschillende opties voor labels. De beste labels zijn voorbeelden van personen die succesvol geappliceerd hebben voor een job. Maar ook niet-succesvolle applicaties zijn nuttig. En zelfs het feit dat een persoon meermaals op een vacature klikt is een nuttige indicator.

Om het model te trainen, sturen we een matchende job en persoon door het netwerk en berekenen we de similarity-score. Als de score hoog is, is het model correct. Dan moet er niets veranderen. Maar als de score laag is, is het model verkeerd. Dit geeft ons de kans om het model licht te tweaken in de juiste richting. Dit is het principe van gradient descent. Herhaal dit voor miljoenen voorbeelden en je krijgt een accurate job recommender.

Deep learning helpt de Vlaming aan werk

Kort samengevat, door cv’s en vacatures om te zetten in embeddings, hierop een similarity-score te berekenen, en deze berekening te trainen met deep learning, kunnen we accuraat jobs op maat aanbevelen. Verre toekomst? Absoluut niet. Dit project is een samenwerking tussen radix.ai en VDAB (Vlaamse Dienst voor Arbeidsbemiddeling).

Magazine AG Connect

Dit artikel is ook gepubliceerd in het magazine van AG Connect (nummer 8, 2018). Wil je alle artikelen uit dit nummer lezen, klik dan hier voor de inhoudsopgave.

Lees meer over Development OP AG Intelligence
Reactie toevoegen
De inhoud van dit veld is privé en zal niet openbaar worden gemaakt.