Taalsmodellen voor Tekstclassificatie: Van Bag-of-Words tot Jev

Het onlangs uitgebrachte Jev AI-model is de afgelopen twee weken een cultureel fenomeen geworden in technische gemeenschappen. Hoewel Jev bedoeld is om zaken te classificeren, is het makkelijk om Jev af te doen als "slechts een classifier". Mijn eigen visie op Jev is de afgelopen dagen sterk geëvolueerd: van "classifiers waren vroeger mijn brood en boter; dit kan ik eenvoudig zelf bouwen" naar "wauw, dit werkt eigenlijk beter dan ik dacht."

Hoewel de nieuwste state-of-the-art GPT- en open-weight LLM's dezelfde soorten classificatietaken kunnen uitvoeren als Jev, terwijl ze in staat zijn tot veel algemenere besluitvorming, ligt het voordeel van Jev in het feit dat het deze taken veel sneller en goedkoper kan afhandelen. Aan de andere kant van het spectrum zal Jev voor een smal, goed gedefinieerd probleem waarschijnlijk niet beter, sneller of goedkoper classificeren dan een specifiek doelmodel. Het verkoopargument is echter dat het veel algemener is dan die taakspecifieke modellen.

In dit artikel beantwoord ik de vraag wat de methodologie achter Jev is (gebaseerd op een beredeneerde gok), wat het kan en waarom het zo populair is. Ik begin met een korte geschiedenis van taalmodellen voor besluitvorming om de hype te demystificeren en te laten zien waar Jev uitblinkt.

Noot: Ik ben op geen enkele wijze verbonden aan Jev, ik heb geen gratis toegang gekregen en dit is geen productaanbeveling, maar een technisch artikel.

1. Taalmodellering en classificatie in het pre-transformer tijdperk

Om Jev in context te plaatsen, beginnen we chronologisch. In deze sectie behandelen we toegepaste tekstclassificatie via naive Bayes, logistische regressie en klassieke (diepe) neurale netwerken.

1.1 Bag-of-words: naive Bayes, logistische regressie en XGBoost

Vijftien jaar geleden werd tekstclassificatie meestal gedaan met een bag-of-words representatie. Deze methode maakt tekstinputs van verschillende lengtes compatibel met klassieke classifiers (zoals naive Bayes, logistische regressie, SVM's, Random Forest en XGBoost) die een inputvector van vaste grootte verwachten.

Populaire toepassingen zijn onder meer de classificatie van nieuwsartikelen en spamfilters voor e-mail. Men zegt dat zelfs het originele spamfilter van Gmail een Naive Bayes-model met een bag-of-words representatie gebruikte.

Wat is een bag-of-words representatie precies? Het is een manier om vrije tekst om te zetten in een vaste representatie. Een bag-of-words model begint met het bouwen van een vocabulaire, bestaande uit alle unieke woorden in de trainingsset (optioneel kunnen stopwords zoals "een" en "de" worden verwijderd).

De representatie werkt als volgt:

  • Elk woord in het vocabulaire krijgt een eigen positie in een vector.
  • Er wordt geteld hoe vaak elk woord in een document voorkomt.
  • Als het vocabulaire 50.000 unieke woorden bevat, resulteert dit in een vector met 50.000 entries, ongeacht of de input tien woorden of 300.000 woorden bevat.
  • De meeste entries zijn nul. In plaats van ruwe tellingen kunnen ook normalisatieschema's zoals TF-IDF worden gebruikt.

Zodra deze frequentievectoren gereed zijn, kan een classifier worden getraind. Een logistische regressie zou bijvoorbeeld feature-gewichten leren die bepaalde woorden correleren met specifieke labels (bijv. woorden die de spam-waarschijnlijkheid verhogen).

Voordelen en nadelen:

  • Voordeel: Computationeel goedkoop en effectief wanneer specifieke woorden sterke aanwijzingen geven over het label.
  • Nadeel: Het verlies van woordvolgorde. De zinnen "de hond bijt de man" en "de man bijt de hond" produceren identieke vectoren. Dit kan gedeeltelijk worden opgelost door n-grams (woordparen of langere sequenties) toe te voegen, hoewel dit de vocabulairegrootte vergroot.

1.2 Diepe neurale netwerken voor tekstclassificatie

Bag-of-words werkt ook met eenvoudige diepe neurale netwerken, zoals multilayer perceptrons, maar het probleem van het verlies van zinstructuur blijft bestaan. Geavanceerdere architecturen zoals Convolutionele Neurale Netwerken (CNN's) en Recurrente Neurale Netwerken (RNN's) omzeilen dit door gebruik te maken van woordembeddings.

1.2.1 Woordembeddings

In tegenstelling tot bag-of-words, waarbij de hele tekst wordt gerepresenteerd door tellingen, representeert een woordembedding een individueel woord als een dichte vector van geleerde getallen.

Wordembeddings werken vergelijkbaar met embedding-lagen in LLM's: ze converteren input-tokens naar dichte vectoren. Dit kan buiten het model gebeuren (bijv. Word2Vec of GloVe) of als onderdeel van de architectuur zelf. Klassieke embeddings zijn context-onafhankelijk; het woord "bank" krijgt bijvoorbeeld dezelfde vector in "rivierbank" en "bankrekening".

1.2.2 Recurrente neurale netwerken (RNN's)

RNN's lezen een sequentie woord voor woord. Bij elke stap combineren ze de huidige woordembedding met een hidden state van de vorige stap. De hidden state fungeert als een vector die de tot nu toe verwerkte tekst samenvat, waardoor de woordvolgorde ertoe doet.

Belangrijke ontwikkelingen binnen RNN's zijn:

  • LSTM (Long Short-Term Memory, 1997) en GRU (Gated Recurrent Units, 2014): Deze gebruiken 'gates' om te controleren hoe informatie wordt vastgehouden en bijgewerkt.
  • xLSTM (2024): Een recentere uitbreiding van LSTM.

Hoewel RNN's lastig te trainen zijn, kunnen ze effectief zijn. In experimenten met de IMDb-dataset behaalde een bag-of-words classifier met logistische regressie ongeveer 89,9% nauwkeurigheid, terwijl een LSTM-RNN slechts 85,66% behaalde bij training vanaf nul. Een betere aanpak is transfer learning: pre-trainen op een grote dataset en vervolgens fine-tunen. De ULMFiT-methode (2018) behaalde hiermee een indrukwekkende 95,4% nauwkeurigheid op IMDb.

1.2.3 Convolutionele neurale netwerken (CNN's)

CNN's, bekend uit computer vision, kunnen ook voor tekst worden gebruikt. In plaats van beeldfilters worden geleerde filters toegepast op vensters van aangrenzende woordembeddings.

Bij een venstergrootte van drie schuift het filter over de tekst (bijv. "de film had verrassend goed acteerwerk"), wat resulteert in sequenties zoals:

  1. "de film had"
  2. "film had verrassend"
  3. "had verrassend goed"
  4. "verrassend goed acteerwerk"

Om de input-lengte onafhankelijk te maken, wordt vaak global max-pooling gebruikt voordat de data naar de classificatiekop gaat. Een voordeel van CNN's is dat berekeningen parallel kunnen worden uitgevoerd, wat de stapsgewijze afhankelijkheid van RNN's vermijdt. Op de IMDb-dataset behaalde een CNN in mijn experimenten ongeveer 90,07% nauwkeurigheid.

2. Transformers

De transformer-architectuur, geïntroduceerd in 2017 in Attention Is All You Need, kan eenvoudig worden aangepast voor tekstclassificatie.

2.1 Encoder-stijl taalmodellen

Encoder-modellen, zoals BERT (Google), zijn van nature geschikte tekstclassifiers. Ze maken gebruik van een classificatietoken op de eerste positie (het [CLS] token), dat specifiek kan worden gefinetuned voor classificatietaken.

Een recent voorbeeld is ModernBERT (2024), dat op de IMDb-reviews ongeveer 95% nauwkeurigheid behaalt met minimale fine-tuning inspanning.

2.2 Decoder-stijl LLM's

LLM's zoals GPT zijn decoder-stijl, autoregressieve transformers. Hoewel ze primair generatief zijn, kunnen ze worden ingezet voor classificatie via:

  1. Prompting: Direct vragen aan het model (bijv. "Classificeer deze review"). Dit is echter vaak fragiel en inefficiënt.
  2. Vervangen van de outputlaag: De generatieve outputlaag vervangen door een slanke classificatiekop.

Bij fine-tuning van decoder-modellen moet men rekening houden met het autoregressieve attention-masker, zodat het classificatietoken informatie heeft over alle andere tokens in de sequentie.

2.3 Encoder-decoder-stijl architecturen

Modellen zoals Google's T5 (Text-to-Text Transfer Transformer) combineren beide werelden. T5 kan worden gebruikt door:

  • Een classificatiekop toe te voegen.
  • De decoder te trainen om het label als tekst te genereren (bijv. "positief" of "negatief"). Dit wordt text-to-text classification genoemd.

3. Overzicht van Jev

Jev is een nieuw model van TypeSafe AI. Het is een propriëtair model dat claimt op gelijke hoogte te staan met GPT-5.6 Luna voor besluitvorming, maar ordes van grootte sneller en goedkoper is.

3.1 Jev versus bestaande tekst-naar-tekst classificatie

De hype rond Jev komt voort uit de goede API en het feit dat het zeer goed presteert op diverse taken zonder dat er custom fine-tuning nodig is. Men zou kunnen zeggen dat Jev het "ChatGPT-moment voor classificatie" is: een general-purpose model dat goedkoop diverse teksten kan classificeren.

3.2 De Jev API

Jev biedt drie hoofdtypen API's:

  • Choice API: Voor multi-class classificatie (keuze uit meerdere labels).
  • Noul API: Voor binaire of multi-label classificatie (geeft een "ja"-waarschijnlijkheid per vraag).
  • Score API: Voor ordinale classificatie (toekennen van een score op basis van een rubric, bijv. 0, 1, 2).

3.3 Jev classificeert IMDb

In tests op de IMDb-dataset (25.000 reviews) behaalde Jev de volgende resultaten:

  • Choice API: 96,47% nauwkeurigheid (totaal 22 min 24 sec, kosten $0,6492).
  • Noul API: 96,20% nauwkeurigheid (totaal 23 min 3 sec, kosten $0,6345).

Ter vergelijking: ModernBERT behaalt een vergelijkbare nauwkeurigheid, maar vereist fine-tuning voor elke nieuwe taak. Jev kan direct worden ingezet voor diverse taken (zoals het spelen van Tetris in real-time via de Choice API), wat het een krig alternatief maakt voor het constant fine-tunen van specialistische modellen.

4. BERT- en GPT-stijl modellen met Jev API

Het is mogelijk om een Jev-achtige API bovenop een ModernBERT- of GPT-model te bouwen. Dit gebeurt door de outputlaag te vervangen door een kop met slechts één output-node.

Voor een taak met meerdere klassen (bijv. "facturatie", "technisch", "account") werkt dit als volgt:

  1. Voor elke kandidaat-optie voert men de inputtekst, de instructies en de beschrijving van de optie in het model.
  2. De scoring-head mapt de output naar een scalaire score.
  3. Er wordt een softmax toegepast over de scores van alle kandidaten om een waarschijnlijkheidsverdeling te verkrijgen.

Dit maakt het model flexibel: men kan het aantal klassen en hun beschrijvingen wijzigen zonder de architectuur aan te passen.

5. Architectuur en trainingsalgoritme van Jev

Hoewel de details niet openbaar zijn, is het vermoedelijk een klein model (vergelijkbaar met ModernBERT) voor lage latentie, getraind op 100% synthetische data van hoge kwaliteit.

5.1 Over kalibratie

Kalibratie zorgt ervoor dat de waarschijnlijkheidschattingen van een model overeenkomen met de werkelijke frequenties. Als een model een review met 74% zekerheid als positief bestempelt, zouden in een grote set van zulke reviews ook daadwerkelijk 74% positief moeten zijn.

Een veelgebruikte techniek is temperature scaling, waarbij de logits worden gedeeld door een temperatuurwaarde $T$ voordat de softmax wordt toegepast.

5.2 Reinforcement Learning met kalibratiebeloningen (RLCR)

TypeSafe AI gebruikt een methode genaamd Reinforcement Learning for Calibrated Decisions (RLCD). Een vergelijkbare publieke methode is RLCR. In traditionele RL krijgt een model een beloning van 1 voor een goed antwoord en 0 voor een fout. RLCR voegt hier een straf aan toe voor onnauwkeurige betrouwbaarheidschattingen:

$$R = c - (q - c)^2$$

Waarbij:

  • $c$ is 1 voor een correct antwoord, 0 anders.
  • $q$ is de door het model opgegeven betrouwbaarheid (confidence).

Een fout antwoord met een hoge betrouwbaarheid (0,9) krijgt een zware straf (-0,81), terwijl een fout antwoord met lage betrouwbaarheid (0,2) minder wordt gestraft (-0,04).

5.3 Zijstap: Is kalibratie noodzakelijk?

In theorie moedigt cross-entropy (CE) al accurate waarschijnlijkheidschattingen aan. In de praktijk overfitten neurale netwerken echter vaak op NLL (Negative Log-Likelihood) zonder te overfitten op 0/1 loss. Dit betekent dat de nauwkeurigheid kan verbeteren terwijl de betrouwbaarheidschattingen onbetrouwbaar worden. Het toevoegen van een Brier-loss of kalibratiebeloningen helpt dit te corrigeren.

6. Voor wie is Jev bedoeld?

Jev richt zich op gebruikers die tijd willen besparen (geen custom fine-tuning per taak) en kosten willen reduceren ten opzichte van grote modellen zoals GPT-6.

6.1 Jev-gebruiksscenario's

Mogelijke toepassingen zijn:

  • Praktisch: Spamfilters, prioritering van e-mails, categorisering van support-tickets.
  • LLM-agenten:
  • Pre-screening op prompt-injecties.
  • Selecteren van het benodigde redeneringsniveau.
  • Kiezen van een specifieke vaardigheid uit een bibliotheek.
  • Fungeren als judge voor evaluatie of zelf-verfijning.
  • Vinden van relevante bestanden voor context-building.

6.2 Over Jev-clones en lokale Jev's

Er zijn veel "clones" verschenen, maar de meeste zijn eenvoudige fine-tunes van ModernBERT of Qwen. Deze halen zelden het prestatieniveau van Jev over een breed scala aan taken. Er is een grote behoefte aan een sterk open-weight alternatief, vooral vanwege privacyoverwegingen.

Recente updates:

  • OpenAI Decision API: OpenAI heeft onlangs een Decision API aangekondigd die zeer vergelijkbaar is met Jev; het richt de intelligentie van Luna op specifieke vragen met vooraf gedefinieerde antwoorden.
  • Alternatieven: Projecten zoals Contrastive Language Models en Laya bestaan, maar presteren in tests (zoals de IMDb-dataset of de Tetris-test) vaak minder goed dan Jev.

Conclusie

Op het eerste gezicht lijkt Jev niets fundamenteel nieuws te bieden ("het is slechts een classifier"), maar de effectiviteit over een enorme reeks taken maakt het een "plug-and-play" versie van dedicated classifiers. De drempel om een gespecialiseerd model te fine-tunen ligt nu veel hoger, omdat Jev vaak "goed genoeg" resultaten levert zonder dat daar moeite voor nodig is. In de toekomst kunnen dergelijke modellen agent-harnesses sneller en goedkoper maken door dure modellen te ondersteunen bij de besluitvorming.