A neurális háló fonákján: egyetemi kutatók a Lexunitban
Ha a cég alapításának korszakáról beszélünk, akkor el szoktuk mondani, hogy a Lexunit egy kollégiumi társaságból szerveződött, és alapvetően gépészmérnökök vagyunk. 4-5-ről 20 fő környékére bővültünk 3 év alatt, és persze a kollégáink változátos háttérrel, képzettséggel, munkatapasztalattal bírnak.
Öröm és büszkeség a számunkra, hogy a közelmúltban több olyan fejlesztő is csatlakozott hozzánk, akik erősen kötődnek a felsőoktatáshoz, sőt, éppen a doktorijukat írják. Ez változatosabbá teszi a csapatban fellelhető szakértelmeket, készségeket, és erősíti a kapcsolatrendszerünket a hazai egyetemi élettel, ami sok szempontból érdekes lehet.
A mesterséges intelligencia korunk egyik kiemelten fontos kutatási területe. A tech cégek mellett az államok és az egyetemi laboratóriumok is hozzájárulnak a fejlődéséhez. Az a célunk, hogy a lehető legkorszerűbb Machine Learning és AI megoldásokat biztosítsuk ügyfeleink számára, így fontos, hogy lehetőleg minden olyan szereplővel legyen valamilyen kapcsolatunk, akik ezen a területen aktívak.
Bogdándy Bence január óta dolgozik nálunk, mint Python-fejlesztő. Bence programtervező informatikus BSc, majd mérnök-informatikus MSc diplomát szerzett, aztán rögtön belevágott a PhD kutatásába. Közben két évig tanított az Eszterházy Károly Katolikus Egyetemen, Egerben.
Már a BSc alatt dolgozott demonstrátorként, majd tanszéki mérnökként tartott órákat, OTDK-ra járt, cikkeket publikált.
Bence a kezdetektől jól érezte magát az egyetemen, az akadémikus közeg szabad levegőjén: "Más mint azt amit egy informatikus meetupon tapasztalsz, mert ott mindenki szakmabeli". - emlékezik vissza a kezdeti tapasztalatokra.
Témavezetője biztatására kezdte el a PhD-jét a debreceni adattudományi egyetemen. Ekkor még 2016-ot írunk, szóval a Machine Learning és a Data Science korántsem volt olyan "befutott" téma mint manapság. Az oktatásban nem szerepelt, nem voltak ilyen szakok, de a cégek már hangoztatták, hogy ez a jövő, így Bence érdeklődése is ebbe az irányba fordult. Elkezdte gyakorolni a Pythont, tanulni a Machine Learninget, és ebből írta a diplomamunkáját mesterszakon. A PhD ennek a munkának a folytatása volt.
A téma a neurális hálózatok inverziójának alkalmazásai. Ez a modern gépi tanulásnak egy kevéssé kutatott része. Van példa a gyakorlati alkalmazásra, de még nagyon elenyésző mennyiségben. Nem létezik még általános implementáció, amit egy egyszerű importálás után bárki alkalmazhatna a saját projektjében, ezt még senki sem programozta le. Bence doktorijának ez lenne a hozadéka: megvalósítani, elérhetővé tenni az inverziót, mint Machine Learning megoldást, bárki számára.
A munka jelenleg is zajlik, az implementációs fázisban vagyunk, Bence még 1-2 évre saccolja a véglegesítést.
De mit értünk az alatt egyáltalán, hogy a "neurális hálózatok inverziója"?
Ha veszünk egy tetszőleges függvényt, annak meg lehet határozni egy inverzét.
A neurális háló egy általános függvény-approximátor. Mit jelent ez?
A sokat emlegetett "tanítás" a Machine Learning projektekben ebből a szempontból megfogalmazva azt jelenti, hogy van egy ismeretlen függvényünk, amit nem tudunk leírni, mert túl bonyolult.
A képfelismerő algoritmusnak sem tudjuk "megmagyarázni" az összes tényezőt, ami egy macska képét jellemzi. Ez lenne a "macskaság" vizuális mivoltjának minél teljesebb leírása. Ebben az esetben ezt tartalmazza ez a bizonyos, elméletben létező függvény.
Ezt a függvényt nem ismerjük, ezért mutatunk a gépnek egy macskát, majd még egyet, és reméljük, hogy idővel össze tud gyűjteni olyan összefüggéseket, amelyeket mi akár fel sem fogunk, észre sem veszünk, de az algoritmus ennek hatására a későbbiekben be tudja azonosítani, hogy egy új képen van -e macska (teherautó, gyalogos, betörő, stb).
A macska képét bármilyen gyakorlati alkalmazásra behelyettesíthetjük. Mi a kávéfőzés folyamata? Hogyan terjed a wifi egy épületben? Minden oldalról lefényképezte az autót a felhasználó? Minden alkatrész a helyén van?
Matematikailag leírni ilyen folyamatokat túl bonyolult lenne, és miért is tennénk? Ha "utánzással", vagyis sok-sok példa feldolgozásával betanítunk egy neurális hálót, az "majdnem" úgy fogja csinálni, ahogy tanítottuk - szinte sosem lesz teljesen pontos, dehát mit jelentene egyáltalán az, hogy teljesen pontos macska?
Az eredmény megfelelő lesz, és ez a lényeg. Ha megfelelő az eredmény, ha a modell kellően pontos a számunkra, akkor elvégeztük a feladatot.
Hogyan lesz ebből inverzió?
Hagyjuk most a macskákat, és foglalkozzunk komolyabb dolgokkal: például borral.
Lehetne olyan algoritmust írni, ami besorolja a bevizsgált borokat kategóriákba (A, B, C), különböző paraméterek alapján, a cukortartalomtól a savasságon át a tannintartalomig. Ha ezt a neurális hálót invertáljuk, akkor azt kérjük tőle: "Adj meg olyan borokat, amelyek B kategóriájúak!"
Ekkor az algoritmus mutat egy olyan kombinációt, amely a B kategóriába esik, VAGY az ÖSSZES elvileg lehetséges B kategóriás bor megadására is képes lehet.
Egyetemi élet és fejlesztői munka
Az egyetemi életben Bence megszokta, hogy rá van bízva, hogyan hajtja végre a feladatokat. A döntéseinek nyilvánvaló a következménye. Azt tudta a multiknál elhelyezkedő barátaitól, hogy ezt az autonómiát és egyéni karrierutat el kellene engednie, ha elmenne egy nagy céghez dolgozni.
Dáviddal beszélgetve világossá vált, hogy szakmai érdeklődése jól egyezik a Lexunit szakmai profiljával. "Azt csinálják, amit én akarok, nagyjából úgy, ahogy én akarom."
A közös munka lehetőségének felmerülése utáni döntési folyamat nem volt hosszú.
Bencének mintegy két hónapra volt szüksége ahhoz, hogy a Python-tudását felhúzza a hétköznapi gyakorlati munkához megfelelő szintre - "Az egyetemi munka nagyon jó a lexikális tudásod fenntartására, de egészen más dolog valamit konkrétan leprogramozni Pythonban".
A JobStep backenden kezdett dolgozni. A funkció lényege egy ajánlási rendszer lett volna: a felhasználó kap 15-20 állásajánlatot a rendszertől, a paraméterei szerint, és visszajelzéssel pontosítja az algoritmust. Ez egy nagyívű projekt, most tartanánk nagyjából a felénél, ha a JobStep vezetői nem exiteltek volna sikeresen az elmúlt nyáron. A cég akvirálásával az együttműködésünk véget ért.
Bence az ilyen projektek tapasztalatait közvetlenül nem tudja felhasználni a kutatómunkájában, mert minden doktorinak egyedi témája kell, hogy legyen. Viszont sokféle technológiával dolgozik, és sokkal gyorsabban tud programozni - így a doktorival kapcsolatos kódolási munkákkal hamarabb tud végezni.
Az IT egy olyan tudományág, ahol az egyetemi világ egy fél lépéssel mindig le van maradva a cégek legújabb fejlesztéseihez képest, ezért Bence szerint a Lexunit, mint innovatív megoldásokat kidolgozó, egyfajta IT-problémamegoldó laboratórium, jó közeg és jó csapat a tudományos érdeklődésű IT-szakemberek számára. A későbbiekben pedig talán a cég is profitálhat abból, ha jó kapcsolatokat épít ki a felsőoktatásban, például újabb csatornát nyithat a tehetséges fejlesztők eléréséhez.
Lehet, hogy számodra is érdekes választás lehet a Lexunit? Nézz körül az aktuális állásajánlataink között, illetve küldd el a CV-d, és jelzünk, ha nyílik egy jó lehetőség!