Delen via


Hoe generatieve AI en LLM's werken

Generatieve AI is een soort kunstmatige intelligentie die originele inhoud kan maken, zoals natuurlijke taal, afbeeldingen, audio en code. De uitvoer van een generatieve AI is gebaseerd op de invoer van de gebruiker. Een veelgebruikte manier voor gebruikers om te communiceren met generatieve AI is via chattoepassingen die natuurlijke taal gebruiken als invoer. ChatGPT, ontwikkeld door OpenAI, is een populair voorbeeld hiervan. Generatieve AI-toepassingen die natuurlijke taal als invoer gebruiken, worden mogelijk gemaakt door grote taalmodellen (LLM's) om natuurlijke taalverwerking (NLP) uit te voeren.

Hoe generatieve AI werkt

Alle generatieve AI is gebouwd op basis van modellen. Deze modellen worden getraind met grote gegevenssets in de vorm van inhoud, zoals natuurlijke taal, afbeeldingen, audio en code. Generatieve AI-modellen maken gebruik van de patronen die in de trainingsgegevens zijn geïdentificeerd om nieuwe, statistisch vergelijkbare inhoud te produceren.

De invoer die door de gebruiker wordt geleverd, wordt door het AI-model gebruikt om een uitvoer te maken. De invoer wordt eerst geparseerd in een vorm van gegevens die het model kan begrijpen. Het model gebruikt die gegevens vervolgens om overeenkomende patronen te identificeren uit de training die het combineert om de uiteindelijke uitvoer te bouwen. Generatieve AI-modellen zijn ontworpen om unieke inhoud te produceren, zodat ze niet dezelfde uitvoer genereren voor identieke invoer.

Generatieve AI-toepassingen die ondersteuning bieden voor natuurlijke taal als invoer of uitvoer, maken gebruik van LLM's om dit te doen. De LLM wordt gebruikt om NLP uit te voeren, waarmee de invoertekst wordt beoordeeld en het gevoel wordt bepaald. Deze classificatie- en sentimentanalyse wordt gebruikt door het generatieve AI-model om patronen te identificeren en de uitvoer te bouwen. Als de uitvoer tekst is, kan de LLM alleen worden gebruikt om deze te genereren. Als de uitvoer audio of afbeeldingen is, worden er aanvullende modellen gebruikt om de gegevens en patronen te leveren voor het genereren van uitvoer in die indeling.

Algemene toepassingen van generatieve AI

Generatieve AI-toepassingen ondersteunen verschillende mogelijke use cases en mogelijke uitvoer, die in de volgende secties worden verkend.

Genereren van natuurlijke taal

Sommige generatieve AI-toepassingen kunnen uitvoer van natuurlijke taal produceren, zoals:

  • Professioneel geformuleerde samenvattingen voor een LinkedIn-profiel
  • Uitgebreide beschrijvingen van items in een online winkel
  • Ideeën voor gezonde maaltijden

Op basis van de invoer van de gebruiker geef me bijvoorbeeld drie ideeën voor een gezond ontbijt met inbegrip van pepers, kan een generatieve AI-toepassing de volgende uitvoer produceren:

Oké, hier zijn drie voorbeelden van een gezond ontbijt met paprika:

  1. Ei en Pepper Scramble: Dobbel wat paprika's op en bak ze in een pan totdat ze enigszins zacht zijn. Voeg vervolgens enkele losgeklopte eieren toe en roer alles door elkaar. Serveer met volkorenbrood voor een voedzaam ontbijt.

  2. Peper en Avocado Toast: Toast een sneetje volkoren brood en top het met gesneden paprika's, mashed avocado en een strooije zout en peper. Dit is een uitstekende manier om gezonde vetten uit de avocado te halen, gecombineerd met de vitamine C uit de paprika.

  3. Ontbijt Burrito met Pepers: Sauté wat gededelde paprika's, uien en roerei samen in een pan. Schep het mengsel vervolgens op een volkoren tortilla en voeg nog wat salsa of hete saus toe. Rol de tortilla op en geniet van een vullend en voedzaam ontbijt.

Genereren van afbeeldingen

Sommige generatieve AI-toepassingen produceren afbeeldingsuitvoer van invoer in natuurlijke taal. Afhankelijk van de toepassing en de bijbehorende modellen kunnen gebruikers mogelijk het volgende opgeven:

  • De personen of dingen om de afbeelding weer te geven
  • De artistieke stijl voor het maken van de afbeelding in
  • Verwijzingen voor het genereren van vergelijkbare installatiekopieën

Het genereren van afbeeldingen kan virtuele avatars maken voor onlineaccounts, ontwerplogo's voor een bedrijf of artistieke inspiratie bieden voor makers. Een gebruiker kan bijvoorbeeld de aanvraag invoeren, een afbeelding maken van een olifant die een hamburger eet. Een generatieve AI-toepassing kan de volgende uitvoer produceren:

Voorbeeld van AI gegenereerde afbeelding van een olifant die een hamburger eet.

Audiogeneratie

Sommige generatieve AI-toepassingen produceren audio-uitvoer van invoer in natuurlijke taal. Afhankelijk van de toepassing en de bijbehorende modellen kunnen gebruikers mogelijk het volgende doen:

  • Natuurlijke klinkende stemmen van invoertekst synthetiseren
  • Muziek maken in een specifieke stijl of met bepaalde instrumenten
  • Invoeraudiobestanden wijzigen op basis van een in natuurlijke taal opgegeven criteria

Audiogeneratie kan gesproken antwoorden geven van digitale spraakassistenten, backinginstrumenten toevoegen aan nummers voor muziekproductie of de oorspronkelijke stem van een gebruiker uit referentie-opnamen reproduceren.

Codegeneratie

Sommige generatieve AI-toepassingen produceren code van invoer in natuurlijke taal. Afhankelijk van de toepassing en de bijbehorende modellen kunnen gebruikers mogelijk code genereren die:

  • Is in de taal van hun keuze
  • Accepteert een specifieke invoer- en uitvoerstructuur
  • Gebruikt specifieke technologieën op basis van hun referentiedocumentatie

Het genereren van code kan snelle implementaties bieden van algemene bewerkingen, zoals het sorteren of filteren van gegevens, het versnellen van het vertalen van code van de ene taal naar de andere, of het beantwoorden van vragen over een technologie op basis van de opgegeven referentiedocumentatie. Als u bijvoorbeeld de invoer 'Laat me zien hoe ik een spel van tic-tac-teen met C# codeer', kan een generatieve AI-toepassing de volgende uitvoer produceren:

Hier volgt een eenvoudig voorbeeld van hoe u een spel van tic-tac-teen in C# kunt coden:

using System;

namespace TicTacToe
{
    class Program
    {
        static char[] board = { '1', '2', '3', '4', '5', '6', '7', '8', '9' };
        static int player = 1; // Player 1 will start
        static int choice; // The number the player chooses
        static int flag = 0; // Set the flag value to 0

        // Check if the position is already marked or not
        private static int CheckPosition(char mark)
        {
            for (int i = 0; i < 9; i++)
            {
                if (board[i] == mark)
                {
                    return 1;
                }
            }
            return 0;
        }

        // The rest of the generated code has been omitted for brevity
        // ...
    }
}

Met deze code maakt u een eenvoudig op console gebaseerde tic-tac-teen-game in C#. Het maakt gebruik van een eendimensionale matrix om het bord weer te geven en controleert na elke verplaatsing op een winst of teken.

Hoe LLM's werken

Bij het trainen van een LLM wordt de trainingstekst eerst opgesplitst in tokens. Elk token identificeert een unieke tekstwaarde. Een token kan een afzonderlijk woord, een gedeeltelijk woord of een combinatie van woorden en leestekens zijn. Aan elk token wordt een id toegewezen, waarmee de tekst kan worden weergegeven als een reeks token-id's.

Nadat de tekst is opgesplitst in tokens, wordt aan elk token een contextvector, ook wel een insluiting genoemd, toegewezen. Deze insluitvectors zijn numerieke gegevens met meerdere waarden, waarbij elk element van de vector van een token een semantisch kenmerk van het token vertegenwoordigt. De elementen van de vector van een token worden bepaald op basis van hoe vaak tokens samen of in vergelijkbare contexten worden gebruikt.

Het doel is om het volgende token in de reeks te voorspellen op basis van de voorgaande tokens. Aan elk token in de bestaande volgorde wordt een gewicht toegewezen dat de relatieve invloed op het volgende token aangeeft. Vervolgens wordt een berekening uitgevoerd die gebruikmaakt van de gewichten en insluitingen van de voorgaande tokens om de volgende vectorwaarde te voorspellen. Het model selecteert vervolgens het meest waarschijnlijke token om de reeks voort te zetten op basis van de voorspelde vector.

Dit proces wordt iteratief voortgezet voor elk token in de reeks, waarbij de uitvoerreeks regressief wordt gebruikt als invoer voor de volgende iteratie. De uitvoer wordt één token tegelijk gemaakt. Deze strategie is vergelijkbaar met hoe automatisch aanvullen werkt, waarbij suggesties zijn gebaseerd op wat tot nu toe is getypt en bijgewerkt met elke nieuwe invoer.

Tijdens de training is de volledige reeks tokens bekend, maar alle tokens die na de tokens die momenteel worden beschouwd, worden genegeerd. De voorspelde waarde voor de vector van het volgende token wordt vergeleken met de werkelijke waarde en het verlies wordt berekend. De gewichten worden vervolgens incrementeel aangepast om het verlies te verminderen en het model te verbeteren.