AI · szintetikus adatgenerálás

Felhasználói viselkedésből tanuló, tesztadatot generáló modell

Hogyan lesz a weboldalon rögzített kattintásokból tanítható adat, abból egy modell, a modellből élethű tesztadat — és hogyan jut el mindez egy MCP szerverhez. Egy görgethető áttekintés fejlesztőknek.

neuronháló ágens betanítás eseménynapló szintetikus adat MCP

01  Az alapok

Ágens és neuronháló, röviden

A neuronháló egy sok apró számoló egységből (neuronból) álló, rétegekbe rendezett függvény: bemenetből kimenetet számol, és a súlyai hangolásával mintázatokat tanul meg az adatból.

Az ágens ezt használó, célvezérelt rendszer: érzékeli a környezetét, dönt, cselekszik, majd a visszajelzésből tanul — esetünkben a felhasználók viselkedését figyeli meg, és ez alapján generál új adatot.

Egyszerű neuronháló három réteggel Bemeneti réteg, rejtett réteg és kimeneti réteg neuronjai éllel összekötve. bemenet rejtett réteg kimenet
egy neuronháló: rétegek + súlyozott kapcsolatok

02  A tanulás

Hogyan működik a betanítás?

A modell egy adaton előrejelzést ad, egy hibafüggvény megméri, mennyire tévedett a valós értékhez képest, majd a súlyokat egy kicsit a jó irány felé módosítjuk (visszaterjesztés + gradiens). Ezt sok-sok mintán, sokszor ismételve a hiba fokozatosan csökken.

A betanítási hurok Adat a modellbe, előrejelzés, hiba mérése, súlyfrissítés, majd vissza a modellhez. Adat minta + címke Modell neuronháló Előrejelzés Hiba valós vs. jósolt súlyok frissítése — ismételd sokszor
a betanítási hurok: jóslás → hiba → frissítés

Betanítási módszerek

felügyelt

Supervised

Címkézett példákból tanul: minden bemenethez ismert a helyes kimenet. „Ezt a mintát így kell folytatni.”

osztályozásregresszió
felügyelet nélküli

Unsupervised

Címkék nélkül keres struktúrát: klasztereket, mintázatokat, eloszlásokat. Feltárja a tipikus viselkedésmintákat — hogyan használják jellemzően az oldalt a felhasználók.

klaszterezéseloszlás-tanulás
megerősítéses

Reinforcement

Próbálkozás és jutalom: az ágens cselekszik, visszajelzést kap, és a jutalmat maximalizáló viselkedést tanulja meg.

jutalomstratégia
A mi feladatunkhoz a felügyelet nélküli / generatív megközelítés áll a legközelebb — pontosabban önfelügyelt: nem egy külső „helyes választ” akarunk eltalálni, hanem megtanulni a felhasználói viselkedés eloszlását, hogy abból újat tudjunk mintavételezni.

Önfelügyelt cél: a következő esemény jóslása

A mi modellünk nem kap külön címkéket. A tanítás önfelügyelt: minden lépésnél a következő eseményt kell megjósolnia egy munkameneten belül — a „helyes válasz” egyszerűen a ténylegesen következő esemény. Így minden rögzített session magától tanítópéldává válik, kézi annotálás nélkül.

Következő esemény előrejelzése Az eddigi események a modellbe kerülnek, ami a következő eseményt jelzi előre; a címke a tényleges következő esemény. FOCUS INPUT_DONE BLUR bemenet · eddigi események Modell autoregresszív FOCUS ? előrejelzés
a „címke” a tényleges következő esemény — minden session automatikusan tanítópélda

Gyakorlati fogalmak

iteráció

Epoch & batch

Egy epoch a teljes tanítóhalmaz egyszeri átnézése; a batch a kis adagokra bontás, amin egyszerre frissülnek a súlyok. Sok epochon át ismételünk.

mit csökkentünk

Veszteségfüggvény

Az esemény-előrejelzésnél kereszt-entrópia méri, mennyire tér el a jósolt eseménytípus a valóstól. A tanítás ezt a hibát minimalizálja.

amire figyelni kell

Túltanulás → validáció

Ha a modell bemagolja a tanítóadatot, egy külön validációs halmazon romlik. Korai leállással és regularizációval védekezünk ellene.

Tanítási és validációs veszteség epochonként A tanítási veszteség folyamatosan csökken, a validációs egy minimum után emelkedni kezd; a korai leállás ennél a minimumnál áll meg. veszteség epoch → korai leállás tanítási (train) validációs (val)
a train tovább csökken, de a val a minimum után romlik — ott érdemes megállni (túltanulás kezdete)

03  Modellválasztás

Melyik modell erre a konkrét célra?

Az autoregresszív, szekvencia-alapú megközelítésen belül három jelölt van erre a feladatra: egy LSTM, egy GRU (könnyített rekurrens háló) és egy kis transformer. Mindhárom eseményről eseményre modellezi a munkameneteket — a különbség az adatigényben, a tanítási sebességben és a hosszú távú összefüggések kezelésében van.

rekurrens · RNN

LSTM

Lépésről lépésre olvassa a szekvenciát, és egy rejtett állapotban „emlékszik” az eddigiekre. Erős szekvenciális előfeltevése miatt kevesebb adatból is stabilan tanul.

erősség kevés adattal is jóstabil hosszú memória kompromisszum szekvenciális → lassabb tanítástöbb paraméter, mint a GRU
rekurrens · könnyített

GRU

Az LSTM egyszerűsített rokona: kevesebb kapu, nincs külön cellaállapot. Kevesebb paraméterrel, gyorsabban tanul, és sok feladaton az LSTM-mel egyenértékű eredményt ad.

erősség kevés adattal is jólegkisebb, leggyorsabb rekurrens kompromisszum szekvenciális (mint az LSTM)nagyon hosszú függőségeknél gyengülhet
attention · figyelem

Kis transformer

Önfigyeléssel (attention) egyszerre látja az egész szekvenciát, így a távoli események közti kapcsolatokat is jól megfogja. A tanítás párhuzamosítható, és több adattal jól skálázódik.

erősség párhuzamos, gyorsabb tanításerős hosszú távú összefüggésekjól skálázódik kompromisszum több adatot igényelkis adaton túltanulhat
LSTM és GRU cella kapui Az LSTM három kapuval és külön cellaállapottal, a GRU két kapuval és egyetlen rejtett állapottal dolgozik. LSTM — 3 kapu cellaállapot · Cₜ felejtő bemeneti kimeneti rejtett állapot · hₜ GRU — 2 kapu egyetlen rejtett állapot · hₜ reset update nincs külön cellaállapot
a GRU az LSTM egyszerűsített rokona: kevesebb kapu, nincs külön cellaállapot
SzempontLSTMGRUKis transformer
Adatigényalacsonyalacsonymagas
Tanítási sebességlassabb (szekvenciális)közepes (szekvenciális, könnyebb)gyorsabb (párhuzamos)
Hosszú távú függőségekközepesközepeserős
Modellméret / komplexitáskicsilegkisebbközepes
Skálázódás sok adattalkorlátozottkorlátozottkiváló
Gyakorlati ajánlás: kezdd egy rekurrens baseline-nal, amíg kevés a session — a GRU itt jó első választás: kisebb és gyorsabb, mint az LSTM, de hasonlóan mintahatékony (az LSTM-et akkor érdemes preferálni, ha nagyon hosszú munkameneteknél stabilabb memória kell). Ahogy nő az adatmennyiség (és épp az a terv, hogy sokat gyűjtesz), a kis transformer veszi át: jobban skálázódik és pontosabban adja vissza a hosszú munkamenetek szerkezetét.

04  A mi témánk · 1. lépés

A felhasználók viselkedésének felvétele

A weboldalon a felhasználó minden interakciója egy esemény: oldalletöltés, kattintás, görgetés, mezőkitöltés, űrlapküldés, elnavigálás. Ezeket időbélyeggel és kontextussal rögzítjük — így áll össze egy-egy munkamenet (session): egy felhasználó útja az oldalon.

Nem magukat az embereket tároljuk, hanem a viselkedésmintát: mit, milyen sorrendben, mennyi idő alatt csinálnak.

Eseményfolyam egy munkamenetből Időrendben egymást követő felhasználói események egy függőleges idővonalon. FOCUSdiagnózis · t=0 INPUT_DONEdiagnózis · len 45 · t=1200 BLURdiagnózis · t=1400 VALIDATION_ERRORgyógyszerelés · t=5100 CLICKmentés_gomb · t=5400
egy munkamenet = időrendezett eseménysor

05  A mi témánk · 2. lépés

Milyen adatként adjuk át a modellnek?

A nyers eseményeket a modell számára emészthető, strukturált formára hozzuk. Minden esemény egy rekord néhány mezővel; a munkamenet ezek sorozata. Ebből a formából már milliószámra lehet gyűjteni és betanításra adni.

Egy esemény mezői Egy esemény strukturált rekordja: idő, típus, mező, hossz mezőkkel. t1200 (ms) typeINPUT_DONE fielddiagnózis len45 page/beteg/uj
egy esemény ~ néhány mezős rekord
idő

Szekvencia és időzítés

Az események sorrendje és a köztük eltelt idő maga is információ — a modell ezt a ritmust tanulja meg.

jellemzők

Kategorikus + numerikus mezők

Eseménytípus, mező neve, oldal, beírt szöveg hossza… A szöveges mezők kódolva, a számok (idő, hossz) normalizálva kerülnek a hálóba.

munkamenet · JSONvalós / rögzített
{
  "session_id": "abc123",
  "events": [
    { "t": 0,    "type": "FOCUS",            "field": "diagnózis",     "page": "/beteg/uj" },
    { "t": 1200, "type": "INPUT_DONE",       "field": "diagnózis",     "len": 45, "page": "/beteg/uj" },
    { "t": 1400, "type": "BLUR",             "field": "diagnózis",     "page": "/beteg/uj" },
    { "t": 1450, "type": "FOCUS",            "field": "gyógyszerelés", "page": "/beteg/uj" },
    { "t": 5100, "type": "VALIDATION_ERROR", "field": "gyógyszerelés", "page": "/beteg/uj", "context": { "hiba": "kötelező" } },
    { "t": 5300, "type": "INPUT_DONE",       "field": "gyógyszerelés", "len": 12, "page": "/beteg/uj" },
    { "t": 5350, "type": "BLUR",             "field": "gyógyszerelés", "page": "/beteg/uj" },
    { "t": 5400, "type": "CLICK",            "field": "mentés_gomb",   "page": "/beteg/uj" }
  ]
}
A cél: nagy mennyiségű, valós munkamenet ebben az egységes formában — ez a tanítóhalmaz, amiből a modell megtanulja, „hogyan használják jellemzően az oldalt”.

06  A mi témánk · 3. lépés

Tanulás után: tesztadat generálása

Ha a modell megtanulta a valós munkamenetek eloszlását, akkor mintavételezni tud belőle: új, sosem látott — de élethű — eseménysorokat állít elő. Ezek statisztikailag úgy néznek ki, mintha igazi felhasználók hagyták volna őket, valós személyes adat nélkül.

Így annyi szintetikus tesztadatot gyártunk, amennyit csak akarunk: terheléshez, fejlesztéshez, edge-case-ek lefedéséhez.

Új munkamenetek generálása a betanított modellből A betanított modell mintavételezéssel több új, egymástól eltérő eseménysorozatot állít elő. Betanított modell megtanult mintázat mintavétel generált munkamenet #1 F I B I C generált munkamenet #2 F I V I C generált munkamenet #3 F I C
F=FOCUS · I=INPUT_DONE · B=BLUR · V=VALIDATION_ERROR · C=CLICK — minden sor egy új, generált eseménysor

07  A mi témánk · 4. lépés

A generált adat elküldése MCP szerverre

Az MCP (Model Context Protocol) egységes csatorna eszközök és szerverek eléréséhez. A célrendszer egy MCP szervert ad, ami egy eszközt (pl. ingest_test_data) kínál; a mi oldalunk egy MCP kliens, ami ezt az eszközt meghívja (tool call), és a generált adat a hívás paramétere. A szerver eltárolja, betölti a tesztkörnyezetbe, vagy továbbküldi.

Adat útja az MCP szerverhez A generáló szkript (MCP kliens) egy eszközhíváson keresztül küldi a tesztadatot a szervernek, ami eltárolja vagy továbbadja. MCP kliens generáló szkript MCP szerver tool: ingest_test_data Cél tár / teszt-DB MCP eszközhívás eltárolás
MCP kliens (generáló szkript) → eszközhívás → szerver → tesztkörnyezet
Nincs szükség külön AI-ágensre: a modellt betöltő generáló szkript maga az MCP kliens — betölti a modellt, mintavételez, majd meghívja a szerver ingest_test_data eszközét. (Ágenst csak akkor érdemes közbeiktatni, ha amúgy is orchesztrál valamit.)
1 · kapcsolódás

A kliens csatlakozik az MCP szerverhez, és lekéri az elérhető eszközöket (pl. ingest_test_data).

2 · hívás

Meghívja az eszközt a generált munkamenetek batch-ével — strukturált, validált formában.

3 · nyugta

A szerver visszaigazolja a befogadást, és a tesztadat elérhetővé válik a felhasználó rendszerében.

MCP eszközhívás · tools/callgenerált → MCP
{
  "method": "tools/call",
  "params": {
    "name": "ingest_test_data",
    "arguments": {
      "dataset": "synthetic_form_sessions_v1",
      "generated_by": "behavior-transformer",
      "count": 500,
      "sessions": [
        {
          "session_id": "syn_0001",
          "events": [
            { "t": 0,    "type": "FOCUS",            "field": "diagnózis",     "page": "/beteg/uj" },
            { "t": 1300, "type": "INPUT_DONE",       "field": "diagnózis",     "len": 38, "page": "/beteg/uj" },
            { "t": 4800, "type": "VALIDATION_ERROR", "field": "gyógyszerelés", "page": "/beteg/uj" },
            { "t": 5200, "type": "CLICK",            "field": "mentés_gomb",   "page": "/beteg/uj" }
          ]
        }
      ]
    }
  }
}

08  Eszközök

Mi kell egy ilyen modell elkészítéséhez?

A tipikus eszközkészlet a nyers eseménygyűjtéstől a betanított modellen át az MCP-integrációig. Az alábbiak bevett választások — nem az egyetlen lehetséges út, de jó kiindulópont.

1 · adatgyűjtés

Események a weboldalról

Kliensoldali eseménygyűjtő, ami a FOCUS/INPUT_DONE/BLUR/… eseményeket rögzíti, egy backend végpont fogadja, és egy naplóba / adatbázisba kerülnek.

JavaScriptREST APIPostgreSQL
2 · előkészítés

Adatfeldolgozás

Az események tisztítása, munkamenetekbe rendezése, tokenizálása/kódolása és a számok normalizálása — a modell bemenetéhez.

PythonpandasNumPy
3 · modell & tanítás

Deep learning keretrendszer

A háló (GRU/LSTM/transformer) építése és betanítása. A beépített rétegek gyorsítják a fejlesztést; a tanítás GPU-n a leggyorsabb.

PyTorchCUDA / GPUTransformers
4 · kísérletkövetés

Mérés & kiértékelés

A tanítási/validációs veszteség és a metrikák követése, futások összevetése, a korai leállás megtalálása.

TensorBoardWeights & Biases
5 · mentés & kiszolgálás

Modell + generáló

A betanított modell mentése (checkpoint), majd egy szolgáltatás, ami mintavételezéssel legenerálja a szintetikus munkameneteket.

checkpointFastAPI

09  Összefoglalás

A teljes folyamat egy képen

A valós viselkedéstől a szintetikus tesztadatig — a teal a valós/megfigyelt oldal, a borostyán a generált/szintetikus oldal.

A teljes adatfolyam Felhasználók, események, tanítóhalmaz, modell, generált tesztadat, majd MCP szerver. Felhasználók weboldalon Események napló Tanítóhalmaz strukturált Modell betanítva Tesztadat generált MCP szerver
felhasználók → események → tanítóhalmaz → modell → tesztadat → MCP