Så här fungerar generativ AI och LLM:er
Generativ AI är en typ av artificiell intelligens som kan skapa originalinnehåll, till exempel naturligt språk, bilder, ljud och kod. Utdata från en generativ AI baseras på de indata som tillhandahålls av användaren. Ett vanligt sätt för användare att interagera med generativ AI är genom chattprogram som använder naturligt språk som indata. ChatGPT, utvecklat av OpenAI, är ett populärt exempel på detta. Generativa AI-program som använder naturligt språk som indata drivs av stora språkmodeller (LLM) för att utföra bearbetning av naturligt språk (NLP).
Så här fungerar generativ AI
All generativ AI bygger på modeller. Dessa modeller tränas med stora uppsättningar data i form av innehåll, till exempel naturligt språk, bilder, ljud och kod. Generativa AI-modeller använder de mönster som identifieras i träningsdata för att skapa nytt, statistiskt liknande innehåll.
De indata som tillhandahålls av användaren används av AI-modellen för att skapa utdata. Indata parsas först i en form av data som modellen kan förstå. Modellen använder sedan dessa data för att identifiera matchande mönster från sin träning som den kombinerar för att skapa de slutliga utdata. Generativa AI-modeller är utformade för att producera unikt innehåll, så de genererar inte samma utdata för identiska indata.
Generativa AI-program som stöder naturligt språk som indata eller utdata använder LLM:er för att göra det. LLM används för att utföra NLP, vilket klassificerar indatatexten och avgör dess sentiment. Den klassificerings- och attitydanalysen används av den generativa AI-modellen för att identifiera mönster och skapa utdata. Om utdata är text kan endast LLM användas för att generera den. Om utdata är ljud eller bilder används ytterligare modeller för att tillhandahålla data och mönster för att generera utdata i det formatet.
Vanliga användningsområden för generativ AI
Generativa AI-program stöder en mängd olika möjliga användningsfall och potentiella utdata, som utforskas i följande avsnitt.
Generering av naturligt språk
Vissa generativa AI-program kan generera utdata från naturligt språk, till exempel:
- Professionellt formulerade sammanfattningar för en LinkedIn-profil
- Omfattande beskrivningar av objekt i en onlinebutik
- Idéer för hälsosamma måltider
Med tanke på användarinmatningen Ge mig till exempel tre idéer för en hälsosam frukost, inklusive paprika, kan ett generativt AI-program generera följande utdata:
Ok, här är tre hälsosamma frukostar som inkluderar paprika:
Ägg- och pepparröra: Tärna upp några paprika och sautera dem i en panna tills de är något mjuka. Lägg sedan till några slagna ägg och förvräng allt tillsammans. Servera med fullkornsbröd för en näringsrik frukost.
Peppar och avokado Toast: Rosta en skiva fullkornsbröd och toppa det med skivad paprika, mosad avokado och en strö salt och peppar. Detta är ett bra sätt att få några hälsosamma fetter från avokado tillsammans med C-vitamin från paprika.
Frukost Burrito med paprika: Sauté några tärnade paprika, lök och äggröra tillsammans i en panna. Skeda sedan blandningen på en fullkorns tortilla och toppa med lite salsa eller varm sås. Rulla upp den och njut av en tillfredsställande och näringsrik frukost.
Bildgenerering
Vissa generativa AI-program producerar bildutdata från naturliga språkindata. Beroende på programmet och dess modeller kan användarna kanske ange:
- De personer eller saker som ska visas på bilden
- Den konstnärliga stilen för att skapa bilden i
- Referenser för att generera liknande avbildningar
Bildgenerering kan skapa virtuella avatarer för onlinekonton, designlogotyper för ett företag eller ge konstnärlig inspiration till skapare. En användare kan till exempel ange begäran, Skapa en bild av en elefant som äter en hamburgare. Ett generativt AI-program kan generera följande utdata:
Ljudgenerering
Vissa generativa AI-program producerar ljudutdata från naturliga språkindata. Beroende på programmet och dess modeller kan användarna kanske:
- Syntetisera naturliga ljudröster från indatatext
- Skapa musik i en viss stil eller med vissa instrument
- Ändra indataljudfiler baserat på ett angivet villkor på naturligt språk
Ljudgenerering kan ge talade svar från digitala röstassistenter, lägga till stödinstrument till låtar för musikproduktion eller reproducera en användares ursprungliga röst från referensinspelningar.
Kodgenerering
Vissa generativa AI-program producerar kod från indata från naturligt språk. Beroende på programmet och dess modeller kan användarna generera kod som:
- Är på det språk som de väljer
- Accepterar en specifik indata- och utdatastruktur
- Använder specifika tekniker baserat på deras referensdokumentation
Kodgenerering kan ge snabba implementeringar av vanliga åtgärder, till exempel sorterings- eller filterdata, påskynda översättningen av kod från ett språk till ett annat eller svara på frågor om en teknik som baseras på angiven referensdokumentation. Med hjälp av indatan "Visa mig hur du kodar ett spel med tic-tac-toe med C#" kan ett generativt AI-program generera följande utdata:
Här är ett enkelt exempel på hur du kan koda ett spel med tic-tac-toe i 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
// ...
}
}
Den här koden skapar ett enkelt konsolbaserat tic-tac-toe-spel i C#. Den använder en endimensionell matris för att representera brädet och söker efter en vinst eller dragning efter varje flytt.
Så här fungerar LLM:er
När du tränar en LLM delas träningstexten först upp i token. Varje token identifierar ett unikt textvärde. En token kan vara ett distinkt ord, ett partiellt ord eller en kombination av ord och skiljetecken. Varje token tilldelas ett ID, vilket gör att texten kan representeras som en sekvens med token-ID:t.
När texten har delats upp i token tilldelas varje token en kontextbaserad vektor, som kallas inbäddning. Dessa inbäddningsvektorer är numeriska data med flera värden där varje element i en tokens vektor representerar ett semantiskt attribut för token. Elementen i en tokens vektor bestäms baserat på hur ofta token används tillsammans eller i liknande kontexter.
Målet är att förutsäga nästa token i sekvensen baserat på föregående token. En vikt tilldelas till varje token i den befintliga sekvensen som representerar dess relativa påverkan på nästa token. En beräkning utförs sedan som använder föregående tokens vikter och inbäddningar för att förutsäga nästa vektorvärde. Modellen väljer sedan den mest sannolika token för att fortsätta sekvensen baserat på den förutsagda vektorn.
Den här processen fortsätter iterativt för varje token i sekvensen, där utdatasekvensen används regressivt som indata för nästa iteration. Utdata skapas en token i taget. Den här strategin motsvarar hur automatisk komplettering fungerar, där förslag baseras på vad som har skrivits hittills och uppdaterats med varje ny indata.
Under träningen är den fullständiga sekvensen av token känd, men alla token som kommer efter den som för närvarande övervägs ignoreras. Det förutsagda värdet för nästa tokens vektor jämförs med det faktiska värdet och förlusten beräknas. Vikterna justeras sedan stegvis för att minska förlusten och förbättra modellen.