Submitted by zslotyi on Wed, 07/08/2020 - 08:20

Attól függően, hogy milyen háttérrel kezdesz hozzá, az első Machine Learning projekt kiválasztása lehet egyszerre egy magától értetődő feladvány, de lehet önmagában szinte megoldhatatlan feladat is (tipp: végül aztán nem megoldhatatlan). A megfontolni való szempontok széles skálán mozognak, tehát nehéz, ha lehetetlen olyan tanácsot adni, ami mindenki számára egységesen jól fog működni. 

Mielőtt azonban mélyebben elmerülnénk az első Machine Learning kalandban, érdemes végigmenni egy “bevásárlólistán”, ami talán legalább az előrelátható csapdák némelyikét segít elkerülni. 

Nézzünk néhány alapvető kérdést, amiket, ha felteszel magadnak, biztosan közelebb jutsz a megoldáshoz..

Mi az az égető probléma, amit megpróbálsz megoldani?

Ez a kérdés semmiképpen sem kizárólagos a gépi tanulásra vonatkozik - messze nem. Az élet bármilyen területén vág is valaki új feladatba, projektbe, a kérdés, amit a legtöbbször figyelmen kívül hagynak (legalábbis nem járnak körül eléggé körültekintően), az a probléma precíz azonosítása. Nem lehet eltúlozni ennek a lépésnek a jelentőségét, fontosságát.

Ha te már eleve úgy érkeztél a gépi tanulás világába, hogy egy meglévő (és potenciálisan valós) problémára kerestél választ, akkor nyilván teljesen más megközelítésre lesz szükséged, mint ha magából a gépi tanulásból indultál ki, és most egy projektet keresel - valójában bármilyen projektet -, ami ideális lenne arra, hogy kipróbálhasd az újonnan megszerzett tudásodat.

Tanácsunk ezen a fronton? - Ne célozz túl magasra!

A gépi tanulási alkalmazások összetettsége a probléma összetettségével nem lineárisan, hanem exponenciálisan növekszik. És akkor arról még nem is beszéltünk, hogy a valóban érdekes problémák nyilván még egy fokkal bonyolultabbak. 

Valószínűleg lényegesen vonzóbb egy valós alkalmazáson, például egy diagnosztikai computer vision alkalmazáson dolgozni, nem pedig egy első verziós macska-felismerő szoftveren (a gépi tanulási projektek „Hello World!” alkalmazása), de a választással érdemes azt is figyelembe venni, hogy te magad hol tartasz a machine learning területén tett utazásodban. A tippünk, hogy ha most keresed magadnak az első érdemi projektet, akkor még meglehetősen az elején.

Ha nem nem vagy biztos benne, hogy túlságosan bonyolult-e a projekt, amit választottál, akkor valószínűleg az. 

Ugyanez igaz arra az esetre, ha a gépi tanulás eszköztárával szeretnél egy olyan problémára megoldást találni, amit korábban még senki nem próbált ezzel a technikával megoldani. Persze lehetnek kivételek, de ha még senki nem futott neki, akkor kicsi a valószínűsége, triviális vagy könnyen megoldható problémával állsz szemben - és ennek megfelelően vélhetően a megoldás is meglehetősen összetett.

Ha azt akarod, hogy az első projekted sikeres (és véges) legyen, a legjobb, ha megpróbálod a végletekig leegyszerűsíteni az előtted álló problémát. Ez még akkor is igaz, ha ennek következtében esetleg az alkalmazás való világbeli hasznossága szenved csorbát. Ne feledd, ezen a ponton (még) nem a világ megváltása a cél, hanem az, hogy egy kezdő machine learning felhasználóból mielőbb egy haladó, majd egy profi szakértővé válj.

Kezdetnek tehát nem baj, ha megértő és kedves vagy magaddal. A későbbi projektek során aztán majd ráérsz bedurvulni. A megfelelően lassú - vagy legalábbis reális ütemben történő - indulás később majd meghálálja magát.

Milyen készségeid és erőforrásai vannak a projekt végrehajtására?

Időmilliomos vagy? Egy karrierváltás lehetőségét látod a mostani hobbiprojektben? Vagy éppen csak most fejezted be a 20 órás alapozó tanfolyamot? Vagy pont hogy most szereztél egyetemi diplomát? Órák óta böngészed a a Stack Overflow fórumát egy megfelelő problémafelvetés után kutatva?

Ezek a kérdések rengeteget elárulhatnak arról az attitűdről és alaphelyzetről, amiben az első gépi tanulási projektedet próbálod megtalálni.

Ha komoly terveid vannak (például teljesen új karriert kezdenél), vagy éppen egy egyetemi hallgató vagy, aki nem tud magával mit kezdeni a nyári szünetben, és úgyis csak a közösségi médiát görgeted véget nem érően, akkor biztos, hogy érdemes elég összetett problémát választanod. Talán a világmegváltás még itt is egy kicsit túl ambiciózus egy első projekthez, de talán valamiféle minimális mértékben érdemes abban gondolkodnod, hogy a projekted hogyan fogja jobbá tenni azt (mármint a világot). 

És ha ilyen problémát választasz, akkor arra sem árt felkészülnöd, hogy az első érdemi megoldásig jó eséllyel éveket kell várnod - mármint dehogy várnod, hanem keményen dolgoznod.

Ha pragmatikusabb szemlélettel közelítesz a gépi tanulás felé, és csak néhány olyan dolgot szeretnél kipróbálni, amiről szó volt a tanfolyamon, de aztán később nem láttad őket gyakorlatban működnöd, akkor a legjobban akkor jársz, ha minél egyszerűbb a problémával kezdesz. Válassz magadnak olyan projektet, amiből akár néhány óra alatt gyakorlatban tesztelhető - és aztán optimalizálható, finomhangolható modellt és struktúrát tudsz magadnak építeni. A tanulási folyamat persze itt sem marad el, de ebben az esetben a kísérletezést jóval korábban, szinte azonnal elkezdheted.

Mit tanácsolunk itt? - Ne tartson vissza, ha egy problémát mások már korábban sikeresen megoldottak!  Akár nyílt forráskódú, egyszerűen letölthető modellek saját felépítéséből is rengeteget tanulhatsz, ráadásul hogyha utána ezeket a modelleket elkezded a saját ötleteid szerint alakítgatni, még arra is komoly esély vagy, hogy itt vagy ott javítani tudsz rajtuk valamit.

Ne feledd: ez az első projekted; egy új pálya legelején jársz. A gépi tanulási karrierednek ebben a szakaszában, ahogy korábban írtuk, nem feltétlenül rögtön a világot gyökeresen átalakító, forradalmi problémára kell megoldást találnod. A cél, hogy újabb és újabb eszközök alkalmazásában szerezz tapasztalatot, kifejlessz magadnak egy olyan intuíciót és eszköztárat, ami lehetetlen könyvből megszerezni, amihez feltétlenül szükséges a gyakorlati tapasztalat.

Ha olyan problémát választasz, amelynek hozzáférhető már ismert megoldása (lehetőleg könnyen hozzáférhető), akkor tökéletes úton jársz afelé, hogy viszonylag kis esélyed legyen az elakadásra vagy arra, hogy feladd. 

Nem az a cél, hogy lemásold mások kódját - persze, hogy nem! De ha hagyod magad végigvezetni olyan gondolatmeneteken, amikkel esetleg évtizedes szakmai tapasztalattal rendelkező profik jutottak a problémafelvetéstől egészen a megoldásig, abból kétségtelenül rengeteget fogsz tanulni. Ráadásul egy ilyen irány számtalan biztonsági hálót is tartogat - hiszen jó eséllyel a helyes megoldás és a hozzá tartozó magyarázat részleteiben és könnyen hozzáférhető online.

Milyen adataid vannak?

Nem csak az számít, hogy milyen ragyogó modellt sikerült felépítened a problmémád megoldására. Ahhoz ugyanis, hogy a modell végül működjön, szükséged lesz a megfelelő adatokra, a modell tréningezéséhez. És ha akkor kezdesz el gondolkodni az adatok hozzáférhetőségéről (vagy arról, hogy egyáltalán léteznek-e ilyen adatok), amikor a modell már készen áll… Nos, akkor bajban vagy.

Minél mélyebben merülsz el a gépi tanulás világában, annál nyilvánvalóbb, hogy a projektek sikerét nagy mértékben éppen a rendelkezésre álló adatok - azok mennyisége, minősége és jellege - határozzák meg. És az adatok megszerzése - még akkor is, ha idővel és tapasztalattal némileg könnyebbé válik - soha nem lesz könnyű.

A tanácsunk itt? - Indulj ki a már rendelkezésére álló adatokból, és próbálj olyan problémát meghatározni, amelyeket ezek az adatok önmagukban meg tudnának oldani!

Lehet, hogy úgy tűnik, mintha fordítva ülnél a lovon, de a látszat csal. És újra hangsúlyozzuk: továbbra is az első gépi tanulási projektetednél tartasz. A cél, hogy megoldj valamit, hogy sikeres legyen a megoldás (a siker paramétereit és definícióját itt te határozod meg, úgyhogy ez azért könnyít a dolgo), aztán gyorsan továbblépj a második projektre 

Ha van adatod, bármilyen adatod, akkor már egy lépéssel azok előtt jársz, akik még messzebbről futnak neki. 

Ha pedig minden kötél szakad, akkor sincs hatalmas gáz - hiszen egy olyan korban élünk, amikor hatalmas az online tárolókból adathalmazokat publikálnak online  - köztük olyanokat is, amelyeket direkt gépi tanulási algoritmusok tréningezéséhez gyűjtöttek és tettek közzé. Válassz közülük valamit, és keress hozzájuk egy megfelelő megoldandó problémát. Ha már tudod, hogy pontosan milyen adatokhoz tudsz hozzájutni, találj ki hozzájuk egy olyan problémát, amit ezek az adatok meg tudnának oldani (még egyszer: nem kell, hogy a probléma zseniálisan eredeti vagy világrengető és forradalmi legyen), majd lépj tovább a modellhez, amit a probléma megoldásához építesz fel.

És akkor újra (és újra és újra) ellenőrizd, hogy a probléma, amit végül választottál megfelelően egyszerű-e.