Skip to main content

Már rég kitaláltam, hogy cikket írok arról, mennyire érdemes a PPC kampányaink optimalizálásánál gépi tanulásra hagyatkozni, mennyire célszerű ,,kézi” beállítások helyett a mesterséges intelligenciára bízni a célzást. Ahogy PPC-ben szinte mindennek, ennek is van egy dinamikusan változó módszertana. A dinamikust pedig nagyon dinamikusnak értem – ami most best practice, az akár 3 hónapon belül válhat a pénzégetés kiváló módszerévé. Ezért nagyon fontos naprakésznek lennünk a szakma változásaival.

Azonban ahhoz, hogy pontosan lássuk a módszer korlátait és lehetőségeit, fontos megértenünk, pontosan mit csinál és hogyan működik a gépi tanulás, a mesterséges intelligencia. De rögtön be is vallom, hogy erőset lódítottam az előző mondatomban. Valójában simán használhatja valaki az A.I.-t a legkifinomultabb profizmussal, anélkül, hogy a leghalványabb fogalma lenne arról, hogy mi is történik közben a motorháztető alatt. Viszont ez a téma kiváló kifogást nyújt számomra ahhoz, hogy előbb írjak egy külön cikket a gépi tanuló algoritmusok működéséről. Ezt szeretném tenni, mert egyrészt szerintem elképesztően érdekes a dolog, másrészt erősen szemléletformáló, akár világnézet-formáló erejű tudásról van szó. Harmadrészt, régi szokásom, hogy igyekszem mindent mindenkivel megértetni.

Ezért engedd meg, hogy ebben a cikkben nagy vonalakban, a lehető legszemléletesebben és leginkább ismeretterjesztő jelleggel elmagyarázzam, hogyan is működik a gépi tanulás. Előrebocsátom, hogy ha mágiát sejtesz a dolog mögött, akkor igen kiábrándító cikknek nézel elébe. Ugyanis a gépi tanulás egyik legnagyobb csodája, hogy egy rém egyszerű dologról van szó. Csak sokat csinálják. Stomp Dániel, Performance Marketing Expert írása.

A gépi tanuló algoritmusokat, mesterséges intelligenciákat neurális hálóknak is szokták hívni. Jó okkal, ugyanis az emberek és állatok agya egymással elektromos összeköttetésben álló neuronokból áll, az A.I. rendszerek pedig ezt utánozzák számítógéppel.

Az ötlet elég régi: a neurális hálók elméleti hátterét 1943-ban dolgozta ki Warren McCulloch és Walter Pitts. Ez a neuronok egymással való kommunikációjának leegyszerűsített matematikai modelljére épülő algoritmus, amelyet ,,perceptron” névvel illetnek. Az első ilyen elven működő gépet 1957-ben alkotta meg Frank Rosenblatt. Ez mindössze annyit csinált, hogy egy 20×20-as négyzethálóra rajzolt körökről és háromszögekről – a megfelelő tanulási fázis után – egész jó arányban meg tudta mondani, hogy azok körök vagy háromszögek.

Frank Rosenblatt neurális hálója egy korszak kezdetét jelentette

Frank Rosenblatt neurális hálója egy korszak kezdetét jelentette

Innen jó nagy ugrás az, hogy a ChatGPT néhány perc alatt simán ír neked egy 80 oldalas szakdolgozatot urdu nyelven arról, hogy Thomas Mann: A varázshegy című művében miképpen köszön vissza a Plutarchos Párhuzamos életrajzok című munkájában nyomon követhető létfilozófia. Természetesen ’43 óta rengeteget fejlődött a módszernek mind az elméleti háttere, mind a rendelkezésre álló számítási kapacitás az egyre bonyolultabb algoritmusok futtatására. Viszont az alapelv lényegében ugyanaz maradt.

Nézzük, hogyan működik a neuronok kapcsolata a te agyadban! Példaként mondjuk azt, hogy 5 neuronod hozzá van kötve egy hatodikhoz. Az összeköttetést hívjuk szinapszisnak. Az 5 neuron most éppen vagy aktiválódik, vagy nem. Ha aktiválódik, akkor küld egy kis elektromos impulzust a megfelelő szinapszison keresztül a 6. neuronnak. Viszont a szinapszisok nem egyenlő mértékben továbbítják az impulzust, valamelyik erősebben, valamelyik gyengébben. Végül az 5 neuronból beérkeznek ezek a különböző erősséggel továbbított impulzusok a 6. neuronba. Ha ezeknek az impulzusoknak az egyesített erőssége elér egy bizonyos határértéket, akkor ez a 6. neuron is aktiválódik, és maga is továbbküld egy impulzust egy másik szinapszison át. Ha az impulzusok összeadott erőssége a határérték alatt van, akkor nem aktiválódik a 6. neuron és nem küld impulzust.

Az emberi és állati agy egymással szinapszisokon keresztül kommunikáló neuronokból áll

Az emberi és állati agy egymással szinapszisokon keresztül kommunikáló neuronokból áll

Ennek utánzására találták ki a perceptront, amely matematikailag írja le, hogy mi történik ilyenkor. Méghozzá igen egyszerűen, mindössze a négy alapműveletet használva. Vegyük példaként ugyanazt a helyzetet, hogy 5 neuront kötöttünk hozzá egy hatodikhoz! Ha a neuron aktív, akkor annak a számértéke legyen 1. Ha nem aktív, akkor ez a számérték 0. Ezután hozzárendelünk egy aktivációs határértéket a jelfogadó neuronunkhoz. Az alábbi ábrán látható példán ez 15. Azt, hogy egy bizonyos szinapszis mennyire erősen küld impulzust, szintén adjuk meg egy számmal, mondjuk 1-től 10-ig. Most pedig összegezzük a beérkező impulzusok egyesített erősségét olyan módon, hogy összeadogatjuk az aktiváció számértékének (1 vagy 0) és a hozzá tartozó szinapszis jeltovábbító-erősségének (1-tól 10-ig valami) szorzatait. Erre kapunk egy számot eredményül. Az ábrán látható példán ez 22. Mivel ez nagyobb a jelfogadó neuron aktivációs határértékénél (ami 15), a neuronunk aktiválódik.

Egy konkrét példa arra, hogyan működik a perceptron

Egy konkrét példa arra, hogyan működik a perceptron

Egy ilyen rendszert úgy lehet egy konkrét cél érdekében munkára fogni (ismerjen fel alakzatokat, írjon szöveget, vagy éppen ismerje fel az online hirdetésünk láttán jó eséllyel konvertáló felhasználókat), hogy egyszerűen növeljük a neuronok és az összeköttetések számát. Tegyük fel, hogy össze akarunk rakni egy neurális hálót, amely egy 640×480-as felbontású fekete-fehér képről fel tud ismerni mondjuk 30-féle állatot. Ehhez ,,bemeneti” neuronokból kapásból kell 640-szer 480, azaz 307 200 darab. Ezek mindegyikéhez majd 1-est vagy 0-t rendelünk, attól függően, hogy az adott képen, amelyet éppen elemzünk, melyik pixel fekete és melyik fehér. ,,Kimeneti” neuronnak pedig kell 30 darab, amelyek mindegyike egy-egy állatnak felel meg. Ha jól csináltuk a dolgot, akkor a 30 kimeneti neuron közül épp a megfelelő állatot reprezentáló fog majd aktiválódni egy adott kép feldolgozására.

Legegyszerűbb megközelítésben annyit teszünk, hogy a 307 200 darab bemeneti neuron mindegyikét összekötjük a 30 kimeneti neuron mindegyikével. Ez kapásból 307 200 x 30 = 9 216 000 szinapszisnak felel meg. Ezzel megvan a neurális hálónk. Most pedig beállítjuk a 9 216 000 szinapszisunk mindegyikének jeltovábbító-erősségét 1-től 10-ig teljesen véletlenszerűen. Valamelyik 1-est kap, valamelyik 7-est, valamelyik 10-est, stb. Szintén teljesen véletlenszerűen beállítjuk a 30 kimeneti neuronunk aktivációs határértékét, valamelyik mondjuk 10-et kap, valamelyik 708 170-et, stb. (itt vegyük figyelembe, hogy a korábbi 5+1 neuronos hálónkkal szemben itt most több százezer bemeneti neuronból jöhet jel, amelyeket megszorzunk 1-től 10-ig valamivel, majd mindezt összeadjuk, szóval jóval nagyobb értékeink lehetnek).

Még egyszerűbb neurális hálók esetén is több millió összeköttetésre lehet szükség

Még egyszerűbb neurális hálók esetén is több millió összeköttetésre lehet szükség

Most pedig beküldünk egy 640×480-as fekete-fehér képet egy cicáról. A kép egyes pixelei feketék, egyesek fehérek, ennek megfelelően adunk a 307 200 bemeneti neuronunknak 0 vagy 1 értéket. Ezután a fentebb leírt perceptron-algoritmusnak megfelelő számítást végezzük el. Vagyis, az összes neuron 0-ás vagy 1-es számértékét megszorozzuk az ezeket az első kimeneti neuronhoz kötő összes szinapszis 1-től 10-ig terjedő értékével, majd ezeket összeadjuk, és az eredményt összehasonlítjuk az első neuron aktivációs határértékével. Ha a szorzatösszeg a nagyobb, akkor az adott kimeneti neuron aktiválódik. Ha az aktivációs határérték a nagyobb, akkor nem. Na és persze ezt végrehajtjuk mind a 30 kimeneti neuronnal. Így aztán nem kevés számítási kapacitást felhasználva, 9 216 000 darab szorzás, 30 darab, egyenként 307 200 tagú összeadás, és 30 összehasonlítás árán megkapunk egy mondjuk olyan eredményt, hogy a képen lévő állat az rozmár, kutya, zsiráf és emu, viszont nem cica.

Ez a hibás eredmény persze nem meglepő, hiszen a jeltovábbító-erősségeket és az aktivációs határértékeket teljesen véletlenszerűen adtuk meg, így az eredmény is véletlenszerű lett. De mi tudjuk, hogy a képen cica van. Itt jön a kulcs: a gépi tanulás. Ezt a szép neurális hálót most be kell tanítanunk. Úgyhogy az a feladatunk, hogy az eredmény ismeretében úgy módosítsuk a jeltovábbító-erősségeket és az aktivációs határértékeket, hogy ezt a képet elemezve a rengeteg szorzás és összeadás után végül a cica-neuron aktiválódjon.

Ennek elvégzésére van már kidolgozott matek, ezt lentebb kifejtem, de csak annak javaslom az elmélyedést, aki bírja a matekot. Egyelőre tegyük fel, hogy ennek segítségével összerakjuk a dolgot. De utána mutatunk egy másik cica képet, és erre megint nem cica-aktivációt kapunk. Akkor most megint módosítanunk kell az összes szorzófaktorunkat és határértékünket úgy, hogy erre az új cicaképre is cica-aktivációt kapjunk, méghozzá úgy, hogy az előző képre adott cica-aktivációt se rontsuk el. Aztán jön egy kutyus kép. Erre ziher, hogy nem kutya-aktivációt kapunk, ezért megint kellőképpen módosítjuk a számértékeinket, de úgy igyekezve, hogy az előző kettőt se rontsuk el. És így tovább.

Elvileg ha ezt elég sokáig csináljuk (több ezer állatképpel végigjátszva), akkor végül a neurális hálónknak olyan jeltovábbító-erősségei és az aktivációs határértékei lesznek, hogy nem csak a betanításra használt képek, hanem új, korábban nem látott képek esetén is az esetek nagy többségében a helyes állatnak megfelelő neuron fog aktiválódni. Ez elvben jól hangzik, de gyakorlatban két fő nehézség van.

Az egyik, hogy visszafejteni az eredményt és beállítani a megfelelő szorzófaktorokat és határértékeket egy iszonyú bonyolult feladat. Természetesen kidolgozták már a megoldást erre a problémára. A módszer igencsak sok számítást igényel, de működik, és csak egy előre meghatározott műveletet kell ismételgetni ahhoz, hogy egy idő után elég jól összeálljon a dolog.

(Zárójelben hadd írjam le a dolog lényegét matek-fenomén olvasóimnak – ha nem vagy ilyen, nyugodtan ugord át ezt a részt! A számítás a legkisebb négyzetek módszerére épül: a jeltovábbító-erősségeket és az aktivációs határértékeket változóknak megtéve egy függvényt képzünk a kapott aktivációk és a várt aktivációk különbségének négyzetösszegéből, amelynek a minimumát keressük. Ehhez már a jelen példában is egy több százezer dimenziós függvényt kéne deriválni, ami túl nagy számítási kapacitásba kerülne. Ezért ehelyett egyfajta szukcesszív approximációval közelítjük a megoldást, és csupán azt vizsgáljuk több lépésben, hogy mely változók igazítására reagál a függvény a legnagyobb csökkenéssel, és csak azokat módosítjuk néhány iterációval.)

A másik nehézség, hogy a fenti példában leírt neurális hálót létrehozva, majd azt heroikus kitartással tanítva rájössz egy idő után, hogy ez így nem fog működni. Az életben nem fogja kielégítő arányban aktiválni a helyes kimeneti neuront. Na de hogy egy klasszikust idézzek: ,,Ha minden más veszve van, már csak a tényeket tudomásul venni képtelen fafejűség menthet meg minket!” /Fekete Vipera, 4. évad/. Így természetesen ragaszkodunk hozzá, hogy ez márpedig működni fog, csak még ennél is többet kell csinálni.

Rejtett neuronrétegek használata a megoldás a megbízhatóságra

Rejtett neuronrétegek használata a megoldás a megbízhatóságra

Ezért a bemeneti és a kimeneti neuronjaink közé beiktatunk még több réteg úgynevezett “rejtett” neuront, hátha attól jobb lesz. Mondjuk 3 réteget, egyenként 300 neuronnal. Azaz a 307 200 bemeneti neuronunk mindegyikét hozzákötjük az 1. rejtett réteg mind a 300 neuronjához, majd ez a 300 neuron mindegyikét hozzákötjük a 2. rejtett réteg mind a 300 neuronjához, ezek mindegyikét a 3. réteg mind a 300 neuronjához, és végül ez a 3. réteg neruonjainak mindegyikét kötjük hozzá mind a 30 kimeneti neuronhoz. Némi számolással utánajárva látszik, hogy míg az első, rejtett rétegek nélküli esetben néhány millió alap számítási művelet elvégzésével megúsztuk egy kép elemzését, addig a 3, egyenként 300 neuronból álló rejtett réteget közbeiktatva már sok milliárd számításra van szükség.

A csoda viszont az, hogy ettől a dolog elkezd működni. Ha ezen az új rendszeren végzed el a betanítást több százezer képpel, olyan neurális hálót kaphatsz, amely új, korábban nem látott képek esetén is akár 95%-ban a helyes kimeneti neuront fogja aktiválni. Ettől pedig vérszemet kapunk. Elkezdünk minél több rétegbe pakolt minél több neuronból álló minél bonyolultabb neurális hálókat létrehozni. Aztán ezeket még az előzőnél is több, több millió vagy akár milliárd példával tanítunk be, a legkülönfélébb célokra specializálva: mondja meg, várhatóan mikor megy fel vagy le egy részvény ára, betáplált szövegre adjon megfelelő választ, vagy historikus PPC adatokból kalkulálja ki, mikor melyik kulcsszó licitjét hogyan kell állítani.

Az ilyen módon levezényelt gépi tanulásra épülő mesterséges intelligenciák olykor szinte ijesztő eredményeket is produkálhatnak. 2022-ben például létrehoztak egy olyan gépi tanuló algoritmust, amely mellkasröntgen-felvételek alapján meg tudta mondani, melyik rasszba tartozik a páciens – tehát az arcszerkezetről nem volt információja -, és senki sem tudja, hogyan. Vagy ki ne döbbenne le azon, ahogy a ChatGPT disszertációkat és programkódokat ír, vagy ahogyan egy A.I. akár fotorealisztikus képeket generál szinte bármilyen abszurd parancsra.

Ezt alkotta nekem az egyik ingyenes A.I. a sokból az ,,a robot is sharing a chocolate with his pet hamster'' leírásra

Ezt alkotta nekem az egyik ingyenes A.I. a sokból az ,,a robot is sharing a chocolate with his pet hamster” leírásra

Viszont a fenti hosszú és kimerítő magyarázatom éppen azt hivatott szolgálni, hogy lássuk, ezek az algoritmusok iszonyú bonyolult struktúrákban ugyan, de csak számolnak. Amikor már betanultak, leginkább csak szoroznak és összeadnak. Tehát nincs itt mágia. Szinte mágikusnak hat, hogy ez a dolog képes így működni, de végső soron csupán két tényező a gépi tanulás eredményességének kulcsa: a komplexitás és a tanulási minta nagysága. A legfejlettebb gépi tanuló algoritmusok több milliárd neuronból állnak, és sok terabájt adat felhasználásával lettek betanítva. De ezzel is csak egy szuperfejlett számológép született belőlük. Emberi értelemben véve képtelenek a gondolkodásra és az intuícióra.

Innentől fogva akár a PPC-ről van szó, akár más szakterületről, nem kell attól tartani, hogy a mesterséges intelligenciák elveszik a munkát. Legfeljebb annyira teszik ezt, mint annak idején a zsebszámológépek. Csupán megkönnyítik a munkát azáltal, hogy annak monoton részét elvégzik helyettünk, és nekünk így több energiánk marad a feladataink kreativitást igénylő részére. Ugyanis a gépi tanulásra épülő mesterséges intelligenciák csak arra képesek, hogy mintákat találjanak komplex rendszerekben, és ebben valóban sokkal jobbak az embernél. De csak ebben. A leggagyibb zsebszámológép is nagyságrendekkel gyorsabban von gyököt egy 6 számjegyű számból, mint a világ legjobb fejszámolója. De az csupán egy adott feladatra optimalizált elektronikus eszköz, amely alapvetően továbbra is ,,buta”, a kreativitás pedig az emberé.

Az önálló, kreatív gondolkodásra képes (és rosszindulatú) gépekre még egy darabig várnunk kell

Az önálló, kreatív gondolkodásra képes (és rosszindulatú) gépekre még egy darabig várnunk kell

(Bár van azt hirdető szemlélet is, hogy a mi ,,valódi” intelligenciánk mindössze a komplexitásában különbözik az általunk eddig létrehozott mesterséges intelligenciáktól, pusztán az egyedi neuronok és a köztük lévő összeköttetések nagyobb száma miatt, de ettől eltekintve pontosan ugyanazt csinálja a kettő. Így ez a szemlélet szerint az emberi személyiségünk, érzéseink, gondolkodásunk, intuíciónk és öntudatunk (ha úgy tetszik, lelkünk) is csupán egy fejlett algoritmikus rendszer eredménye. Ha még nem volt egzisztenciális krízised mára, örülök, hogy segíthettem!)

Mindez viszont arra is magyarázatot ad, hogy tipikusan miért csak azután működik jól Google Ads-en a Maximize Conversion automatikus licitstratégia, hogy volt már legalább száz konverziód, és miért lennél képtelen kézi CPC licitstratégiával felvenni vele a versenyt, miután már volt ezer konverziód. Egy neurális háló duruzsol a hirdetői fiókod motorházteteje alatt, amelynek adatra van szüksége ahhoz, hogy betanuljon. Másképp képtelen jól működni, ugyanis nem tud gondolkodni.

A következő cikkemben kifejtem, hogy mi jelenleg a legjobb stratégia a gépi tanulás felhasználásának a PPC kampányokban.

Stomp Dániel

Eredetileg fizikusként végzett és dolgozott, majd 2019-ben átnyergelt PPC-re, és azóta nemzetközi szinten kezelte már a legváltozatosabb ügyfélkört. Sportos, testtudatos életvitelét - ahogy ő mondaná - funkcionális hedonizmussal egyenlíti ki, imád főzni és enni. Cicák és kutyák pedig pillanatok alatt gügyögő óriásbébivé változtatják.