Programiranje

4 dejavniki za preizkušanje aplikacij strojnega učenja

Sistemi strojnega učenja so videti kot matematični problemi. Ugotovite algoritem, vnesite podatke in odgovori se pojavijo.

Kako pa veste, da so odgovori pravi?

Ko poskušate napovedati, kateri filmi ali knjige so všeč ljudem, je to lahko izjemno pomembna razlika med povečanjem prihodka in uspešnostjo ugleda, ki se pojavi na mediabuzz.com. Kljub temu pa je testiranje redko v naših mislih, saj skušamo razviti in uvesti sisteme, ki temeljijo na algoritmih strojnega učenja. Preprosto zgraditi dober nabor algoritmov, ki modelirajo problematični prostor, je dovolj težko. Toda testiranje je del postopka razvoja in uvajanja programske opreme, zato moramo resno preučiti, kako bodo ti sistemi preizkušeni.

Prva, bolj pogosta vrsta preskušanja je, če aplikacijo enotno preizkusijo razvijalci, "preizkusijo dim" z avtomatizacijo med postopkom izdelave in integracije in ročno preskusijo preizkuševalci. Ta postopek je dobro znan, čeprav se bo razlikoval glede na vrsto sistema, ki se razvija.

Druga vrsta testiranja temelji na vloženih podatkih iz resničnega sveta, ki se razlikujejo glede na posredovane podatke. Eden od Mattovih kupcev je na primer napisal programsko opremo za omejevanje tveganja pri finančnih transakcijah. Programska oprema bi analizirala trg in v nekaj dneh počasi odvila paket delnic, da ne bi sprožila opozoril ob prodaji. Prvi vložek je bil blok za prodajo, drugi, sprotni vložek pa so bili finančni trgi, ki se s časom spreminjajo, zato se prodaja na preizkusu ne bo ujemala s prodajo v proizvodnji. Tu postane testiranje bolj problematično. Kako preizkusimo sisteme, ki lahko sčasoma vrnejo drugačen rezultat istim podatkom? Tradicionalne tehnike testiranja nikakor ne morejo upoštevati takšnih rezultatov. Torej, kaj naj bi naredili preizkuševalci?

Kakovostno preizkušanje sistemov strojnega učenja ni enako preizkušanju katere koli druge vrste programske opreme. V večini primerov preizkušanja se prepričate, ali se dejanski izhod ujema s pričakovanim. Pri sistemih strojnega učenja je iskanje točno pravega rezultata ravno napačen pristop. Verjetno ne morete izračunati niti "pravega izhoda", ne da bi dvakrat napisali programsko opremo. Tudi takrat to morda ne bi bilo mogoče.

Na kaj se morajo preskuševalci osredotočiti pri aplikacijah strojnega učenja:

1. imeti objektivna in merljiva merila sprejemljivosti. Poznajte standardni odklon, ki ga lahko sprejmete v svojem problematičnem prostoru. To zahteva nekaj kvantitativnih informacij in sposobnost, da se prepričate, ali razumete in interpretirate te meritve.

2. Preizkusite z novimi podatki in ne z originalnimi podatki o vadbi. Če je potrebno, razdelite svoj trening na dve skupini: eno, ki izvaja trening, in tisto, ki izvaja testiranje. Bolje pridobite in uporabite sveže podatke, če ste sposobni.

3. Ne računajte, da bodo vsi rezultati natančni; na podlagi razpoložljivih podatkov o njih razmišljajte najbolje. Če to ni dovolj dobro, je težava lahko alogirthmn ali, bolj verjetno, nabor podatkov. V nekaterih primerih je najhitrejša rešitev te težave "prilagajanje" nabora podatkov za čist vnos.

4. Razumevanje arhitekture omrežja kot dela preskusnega procesa. Preizkuševalci ne bodo nujno razumeli, kako je bila zgrajena nevronska mreža, vendar morajo razumeti, ali ustreza zahtevam. In na podlagi meritev, ki jih preizkušajo, bodo morda morali priporočiti radikalno drugačen pristop ali priznati, da programska oprema preprosto ne zmore samozavestno narediti tistega, kar so zahtevali.

Spodnja črta

Ključno pri preizkušanju sistema je razumevanje zahtev glede proizvodnih rezultatov in omejitev algoritmov. Zahteve je treba prevesti v objektivne meritve; idealno je standardni odklon povprečnega rezultata, ob predpostavki, da je srednji rezultat tesno povezan z dejanskim rezultatom, ki ga najdemo v podatkih o treningu. Rezultate morate biti sposobni oceniti s statističnega stališča in ne z negativnega stališča.

Ves čas ali celo večino ne računajte na natančen pravi odgovor. Kako preizkušate in kako ocenjujete, je popolnoma odvisno od ciljev sistema. Za preizkusne matice je neprecenljivo imeti platformo, kot je Intel Parallel Studio XE, ki lahko razvija in preizkuša kodo in algoritme.

Zdaj je lažje kot kdaj koli prej napisati kodo, ki naj deluje vzporedno - preizkusite Intel® Parallel Studio XE brezplačno 30 dni

 

$config[zx-auto] not found$config[zx-overlay] not found