Delen via


Hoe generatieve kunstmatige intelligentie 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 werkt generatieve AI

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.

Natuurlijke taal generatie

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

Bijvoorbeeld, gezien de invoer van de gebruiker Geef me drie ideeën voor een gezond ontbijt inclusief pepers, kan een generatieve AI-toepassing de volgende uitvoer produceren:

OK, hier zijn drie gezonde ontbijten met pepers:

  1. Ei en Pepper Scramble: Dobbel wat paprika's op en bak ze in een pan totdat ze enigszins zacht zijn. Voeg vervolgens wat losgeklopte eieren toe en roer alles samen door elkaar. Serveer met graan toast 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 geweldige manier om wat gezonde vetten van de avocado samen met de vitamine C van de pepers te krijgen.

  3. Ontbijt Burrito met Pepers: Sauté wat gededelde paprika's, uien en roerei samen in een pan. Lepel vervolgens het mengsel op een volkoren tortilla en top het af met wat salsa of hete saus. Rol het op en geniet van een bevredigend en voedzaam ontbijt.

Afbeeldingsgeneratie

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 mensen of dingen die op de afbeelding verschijnen
  • De artistieke stijl om de afbeelding in te maken
  • Verwijzingen voor het genereren van vergelijkbare afbeeldingen

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 uit natuurlijke taal invoer. 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.

Code genereren

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 kunt coden in C#:

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 console-gebaseerd tic-tac-toe-spel in C#. Het maakt gebruik van een eendimensionale array om het bord weer te geven en controleert na elke zet op winst of gelijkspel.

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 embeddinggenoemd, 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 stap voor stap opgebouwd. 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 volgen op de huidige 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.