Ga naar hoofdinhoud

Een beginnersgids voor de Rectified Linear Unit (ReLU)

Ontdek de basis van een van de populairste activatiefuncties voor neurale netwerken
Javier Canales Luna
Javier Canales Luna

Maak je gratis account aan

Oefen en volg je voortgang.

Ga verder met GoogleDoor verder te gaan, accepteer je ons Gebruiksvoorwaarden, onze Privacybeleid en dat je gegevens in de VS worden opgeslagen.

Activatiefuncties zoals de Rectified Linear Unit (ReLU) vormen een hoeksteen van moderne neurale netwerken. Zonder deze functies zouden veel AI-toepassingen in de echte wereld—van beeldherkenning tot aanbevelingssystemen—niet mogelijk zijn. Deze gids behandelt de basis van ReLU, de voordelen, beperkingen en implementatie.

ReLU-basics

Sommige van de krachtigste AI-toepassingen zouden niet bestaan zonder kunstmatige neurale netwerken. Neurale netwerken zijn computationele modellen geïnspireerd op het menselijk brein. Deze netwerken bestaan uit onderling verbonden knooppunten, of "neuronen", die samenwerken om informatie te verwerken en beslissingen te nemen. Wat een neuraal netwerk "diep" maakt, is het aantal lagen tussen de input en de output. Een deep neural network heeft meerdere lagen, waardoor het complexere kenmerken kan leren en nauwkeurigere voorspellingen kan doen.

Deep neural network

Deep neural network. Bron: DataCamp

Toch zijn deze modellen veel meer dan simpele lagen. Ook andere componenten zijn cruciaal om neurale netwerken hun magie te laten doen. 

Een van die componenten zijn activatiefuncties. Je kunt activatiefuncties zien als beslissers: ze bepalen welke informatie wordt doorgegeven aan de volgende laag en voegen zo een nieuwe laag complexiteit toe die neurale netwerken in staat stelt genuanceerde beslissingen te nemen.

Hier introduceren we een van de populairste en meest gebruikte activatiefuncties: de Rectified Linear Unit (ReLU). We leggen de basis en enkele varianten uit, bespreken de voordelen en beperkingen, en laten zien hoe je ze implementeert met Pytorch. Lezen maar?

Wat zijn activatiefuncties?

Activatiefuncties zijn een essentieel bouwblok van neurale netwerken. Ze transformeren het ingangssignaal van een knooppunt in een uitgangssignaal dat vervolgens wordt doorgegeven aan de volgende laag. Zonder activatiefuncties zouden neurale netwerken beperkt zijn tot het modelleren van alleen lineaire relaties tussen inputs en outputs, bijvoorbeeld via matrixvermenigvuldiging.

De meeste gegevens uit de echte wereld laten zich echter niet lineair modelleren. Niet-lineariteiten vangen patronen, zoals hoe de stap van geen kinderen naar één kind je banktransacties anders beïnvloedt dan van drie naar vier kinderen. Zonder activatiefuncties zouden neurale netwerken de complexe niet-lineaire patronen die in de werkelijkheid bestaan niet kunnen leren.

Linear vs nonlinear functions

Lineaire vs. niet-lineaire functies. Bron: DataCamp

Activatiefuncties stellen neurale netwerken in staat relaties te leren door niet-lineair gedrag te introduceren. Met andere woorden: activatiefuncties creëren een numerieke drempel om te beslissen of een neuron wordt geactiveerd, en introduceren zo de flexibiliteit die cruciaal is om complexe en genuanceerde data te modelleren.

Wat is ReLU?

Een van de populairste en meest gebruikte activatiefuncties is ReLU (rectified linear unit). Net als andere activatiefuncties voegt het niet-lineariteit toe aan het model voor betere rekenprestaties. 

De ReLU-activatiefunctie heeft de vorm:

f(x) = max(0, x)

De ReLU-functie geeft de maximumwaarde terug tussen de input en nul, zoals te zien is in de grafiek. Voor positieve inputs is de output van de functie gelijk aan de input. Voor strikt negatieve inputs is de output van de functie gelijk aan nul.

Rectified Linear Unit (ReLU) activation function.

Rectified Linear Unit (ReLU)-activatiefunctie. Bron: DataCamp

Voordelen van ReLU

Een van de grootste voordelen van ReLU is dat het helpt het vanishing gradient-probleem te verminderen. Het vanishing gradient-probleem treedt op bij het trainen van deep neural networks met backpropagation. Het ontstaat wanneer de gradiënt die wordt gebruikt om de gewichten van het netwerk te updaten erg klein wordt of "verdwijnt" naarmate deze terug door het netwerk stroomt. Hierdoor worden de gewichten niet goed bijgewerkt, wat het leerproces kan vertragen of stoppen. Je vindt een volledige uitleg van het vanishing gradient-probleem in onze Introduction to Deep Learning in PyTorch-cursus.

Omdat de ReLU-functie geen bovengrens heeft en de gradiënten niet naar nul convergeren voor hoge waarden van x, overwint ReLU het vanishing gradient-probleem, dat vaak voorkomt bij gebruik van de sigmoid- en softmax-activatiefuncties. Bekijk ons aparte artikel om andere populaire activatiefuncties te ontdekken.

Verder leidt ReLU, doordat het nul teruggeeft voor alle negatieve inputs, van nature tot spaarzame activaties. Met andere woorden: omdat slechts een subset van neuronen tijdens het trainen wordt geactiveerd, levert dit efficiëntere berekeningen op.

Tot slot maakt dit gedrag het mogelijk om netwerken op te schalen naar veel lagen zonder een significante toename van de rekenlast, vergeleken met complexere functies zoals tanh of sigmoid. Dit maakt ReLU de meest gebruikelijke standaardactivatie en doorgaans een goede keuze als je niet zeker weet welke activatiefunctie je in je model moet gebruiken.

ReLU implementeren in PyTorch

ReLU implementeren in PyTorch is vrij eenvoudig. Je hoeft alleen de functie nn.ReLU() te gebruiken om de functie te maken en aan je model toe te voegen.

In het volgende voorbeeld passen we een ReLU-functie toe op een eenvoudige neuron en berekenen we de gradiënt in het geval van een negatieve waarde.

# Create a ReLU function with PyTorch
relu_pytorch = nn.ReLU()

# Apply your ReLU function on x, and calculate gradients
x = torch.tensor(-1.0, requires_grad=True)
y = relu_pytorch(x)
y.backward()

# Print the gradient of the ReLU function for x
gradient = x.grad
print(gradient)
>>> tensor(0.)

Let op: de inputwaarde was -1 en de ReLU-functie gaf nul terug. Onthoud dat voor negatieve waarden van x de output van ReLU altijd nul is, en inderdaad is de gradiënt overal nul omdat de functie niet verandert voor negatieve waarden van x.

Varianten van ReLU

ReLU is waarschijnlijk de meest gebruikte activatiefunctie, maar soms werkt het niet voor het probleem dat je wilt oplossen. Gelukkig hebben deep-learningonderzoekers enkele ReLU-varianten ontwikkeld die het testen waard zijn in je modellen. Dit zijn de populairste alternatieven

Leaky ReLU

Leaky ReLU heeft de vorm:

f(x) = max(0.01x, x)

Het doel van Leaky ReLU is het zogeheten "dying ReLU"-probleem aan te pakken. We noemden al dat ReLU voor negatieve inputs altijd nulwaarden oplevert. Als dit gebeurt, worden de gradiënten van knooppunten met negatieve waarden voor de rest van de training op nul gezet, waardoor deze parameter niet meer leert. Om dit te voorkomen, gebruikt Leaky ReLU een vermenigvuldigingsfactor voor negatieve inputs. Daardoor is de functie niet nul, maar heeft deze een kleine negatieve helling, zoals weergegeven in de volgende grafiek:

Leaky ReLU activation function.

Leaky ReLU-activatiefunctie. Bron: DataCamp

Parametric ReLU (PReLU)

Leaky ReLU biedt een vermenigvuldigingsfactor om het dying ReLU-probleem te omzeilen. Parametric ReLU (PReLU) gaat een stap verder en biedt een leerbare parameter (a) in plaats van een simpele constante om de waarde van negatieve inputs te berekenen: 

f(x) = max(ax, x)

Hoewel PReLU een verbetering kan bieden ten opzichte van ReLU en Leaky ReLU op het vlak van nauwkeurigheid en aanpasbaarheid (het is bijzonder geschikt om patronen te vangen in complexe taken, zoals computer vision of spraakherkenning), voegt het ook complexiteit toe aan het model. Het trainen van deze parameter kan tijdrovend zijn en vereist zorgvuldige afstelling en regularisatie. 

Parametric ReLU activation function

Parametric ReLU-activatiefunctie. Bron: DataCamp

Exponential Linear Unit (ELU)

Een ander goed alternatief voor ReLU is de Exponential Linear Unit (ELU), met de volgende formule:

In tegenstelling tot ReLU hebben ELU's negatieve waarden, waardoor ze de gemiddelde activaties dichter bij nul kunnen duwen en zo minder gevoelig zijn voor vanishing gradients. Bovendien zorgen gemiddelde activaties dichter bij nul voor sneller leren en snellere convergentie.

ELU activation function

ELU-activatiefunctie. Bron: DataCamp

Veelvoorkomende problemen met ReLU

ReLU is een uitstekende activatiefunctie, maar geen wondermiddel. ReLU kan met name last hebben van twee bekende problemen.

Het eerste is het dying ReLU-probleem. Zoals eerder genoemd geeft ReLU voor negatieve inputs altijd nulwaarden. Dit kan ertoe leiden dat de gewichten zo worden geüpdatet dat het neuron nooit meer activeert op een datapunt. 

Als dit gebeurt, is de gradiënt die door de eenheid stroomt vanaf dat moment altijd nul, waardoor deze parameter niet meer leert. ReLU-varianten, zoals Leaky ReLU en PReLU, zijn ontwikkeld om dit probleem aan te pakken.

Aan de andere kant kunnen ook onstabiele gradiënten optreden. Het exploding gradients-probleem doet zich voor wanneer de gradiënten steeds groter worden, wat leidt tot enorme parameterupdates en divergerende training. 

In dat geval stapelen grotere foutgradiënten zich op en worden de modelgewichten te groot. Dit kan leiden tot langere trainingstijden en slechte modelprestaties. Er zijn verschillende technieken om exploding gradients aan te pakken, waaronder gradient clipping en batchnormalisatie. 

Toepassingen van ReLU in neurale netwerken

Dankzij zijn unieke eigenschappen is ReLU de populairste activatiefunctie geworden: het is de standaardoptie in frameworks zoals PyTorch en TensorFlow en wordt veel gebruikt in talloze deep-learningtoepassingen, waaronder:

  • Beeldherkenning: ReLU is een cruciaal onderdeel in convolutionele neurale netwerken (CNN's), gespecialiseerde netwerken die vaak worden gebruikt voor feature-extractie en beeldverwerking.
  • NLP: ReLU wordt ook gebruikt in veel Natural Language Processing (NLP)-taken. Deze activatiefunctie is met succes ingezet om niet-lineariteit te bieden in domeinen als spraakherkenning en audioprocessing.
  • Aanbevelingssystemen: ReLU wordt in aanbevelingssystemen gebruikt om gepersonaliseerde aanbevelingen te genereren. 

Conclusie

We hebben de cruciale rol van ReLU-activatiefuncties tijdens het trainen van neurale netwerken verkend. Ondanks de eenvoud is ReLU een van de meest effectieve activatiefuncties die er zijn, en waarschijnlijk de populairste. 

Naarmate neurale netwerken blijven evolueren, zal het onderzoek naar activatiefuncties ongetwijfeld uitbreiden, mogelijk met nieuwe vormen die specifieke uitdagingen van opkomende architecturen aanpakken. 

De zorgvuldige keuze van activatiefuncties is een evenwichtsoefening—een mix van wetenschappelijk inzicht en intuïtie—die de prestaties van neurale netwerken aanzienlijk kan beïnvloeden. 

Wil je meer leren over deep learning? Bekijk dan ons gerichte materiaal en maak je klaar voor een van de meest transformerende technologieën in AI:

ReLU-veelgestelde vragen

Wat maakt ReLU anders dan de sigmoid- en tanh-activatiefuncties?

ReLU verschilt van sigmoid en tanh omdat het de output niet in een vaste range perst (bijv. [0,1] voor sigmoid of [-1,1] voor tanh). In plaats daarvan geeft het voor positieve waarden de input direct door en voor negatieve waarden nul. Deze eenvoud maakt ReLU rekenkundig efficiënt en helpt het vanishing gradient-probleem te verminderen dat vaak optreedt bij sigmoid en tanh.

Wanneer moet ik ReLU gebruiken in plaats van andere activatiefuncties?

ReLU is een uitstekende standaardkeuze voor de meeste verborgen lagen in deep neural networks, vooral bij het trainen van grote modellen of het werken met datasets met complexe, niet-lineaire relaties. Als je echter problemen tegenkomt zoals het "dying ReLU"-probleem of als je model ondermaats presteert, overweeg dan varianten zoals Leaky ReLU, PReLU of ELU.

Kan ReLU worden gebruikt in de outputlaag van een neuraal netwerk?

ReLU wordt doorgaans niet gebruikt in de outputlaag van een neuraal netwerk, omdat het bereik onbegrensd is, wat het interpreteren van de output lastig kan maken. Veelgebruikte keuzes voor outputlagen zijn:

  • Sigmoid: voor binaire classificatieproblemen.
  • Softmax: voor multiclass-classificatie.
  • Lineaire activatie: voor regressietaken.
Hoe draagt ReLU bij aan spaarzame activaties, en waarom is dat belangrijk?

ReLU draagt bij aan spaarzame activaties door voor alle negatieve inputs nul uit te geven, wat betekent dat slechts een subset van neuronen op enig moment actief is. Spaarzame activaties verlagen de rekenlast, voorkomen overfitting en stimuleren het netwerk om zich te richten op de meest relevante kenmerken van de data.

Wat zijn praktische tips om problemen door ReLU tijdens het trainen te debuggen?

Hier zijn een paar tips:

  • Controleer op het dying ReLU-probleem: Monitor je activaties tijdens het trainen. Als veel neuronen consistent nullen uitgeven, overweeg dan Leaky ReLU of PReLU.
  • Gebruik batchnormalisatie: Dit kan gradiënten stabiliseren en problemen zoals exploding gradients voorkomen, die kunnen optreden wanneer ReLU grote positieve waarden uitgeeft.
  • Gradient clipping: Als exploding gradients optreden, kan clipping de grootte van de gradiënt begrenzen tot een specifieke waarde, wat de stabiliteit verbetert.
  • Experimenteer met gewichtsinitialisatie: Juiste initialisatie (bijv. He-initialisatie) kan de kans op problemen zoals dode neuronen of trage convergentie verkleinen.
Javier Canales Luna

Auteur

Javier Canales Luna

Ik ben een freelance data-analist en werk samen met bedrijven en organisaties wereldwijd aan data­scienceprojecten. Ook geef ik les in data science en heb ik meer dan twee jaar ervaring als docent. Ik schrijf regelmatig artikelen over data science in het Engels en Spaans; sommige daarvan zijn gepubliceerd op bekende platforms zoals DataCamp, Towards Data Science en Analytics Vidhya. Als data scientist met een achtergrond in politicologie en recht wil ik werken op het snijvlak van openbaar beleid, recht en technologie. Ik zet de kracht van ideeën in om innovatieve oplossingen en verhalen te ontwikkelen die helpen bij het aanpakken van urgente uitdagingen, met name de klimaatcrisis. Ik beschouw mezelf als autodidact, een eeuwige leerling en een groot voorstander van multidisciplinariteit. Het is nooit te laat om nieuwe dingen te leren.

Onderwerpen

Gerelateerd