4 čimbenika za testiranje aplikacija za strojno učenje

Sustavi strojnog učenja djeluju pomalo poput matematičkog problema. Shvatite algoritam, unesite podatke i izlaze odgovori.

Ali kako znate da su odgovori točni?

Kada pokušavate predvidjeti koje filmove ili knjige vole ljudi, to može biti izuzetno važno, razlika između povećanja prihoda i ugleda koji se pojavljuje na mediabuzz.com. Ipak, testiranje nam je rijetko u glavi dok pokušavamo razviti i implementirati sustave koji se temelje na algoritmima strojnog učenja. Jednostavna izgradnja dobrog skupa algoritama koji modeliraju problemski prostor je dovoljno teška. No, testiranje je dio procesa razvoja i implementacije softvera i moramo ozbiljno pogledati kako će se ti sustavi testirati.

Prva, češća vrsta testiranja je kada programeri jedinstveno testiraju aplikaciju, "testiraju dim" automatizacijom tijekom postupka izrade i integracije i ručno testiraju testeri. Taj je postupak dobro poznat, iako će varirati ovisno o vrsti sustava koji se razvija.

Druga vrsta testiranja temelji se na stvarnom unosu, koji se razlikuje ovisno o unesenim podacima. Na primjer, jedan od Matt-ovih kupaca napisao je softver za ograničavanje rizika u financijskim transakcijama. Softver bi analizirao tržište i polako odmotavao blok dionica tijekom određenog dana, dizajniran da ne započinje upozorenja na strani prodaje. Prvi unos bio je blok za prodaju, ali drugi u stvarnom vremenu bila su financijska tržišta koja se vremenom razlikuju, tako da prodaja u testu neće odgovarati prodaji u proizvodnji. Tu testiranje postaje problematičnije. Kako testiramo sustave koji s vremenom mogu istim podacima vratiti različit rezultat? Tradicionalne tehnike ispitivanja ne mogu uzeti u obzir takav rezultat. Pa što bi testeri trebali raditi?

Kvalitetno testiranje sustava za strojno učenje nije isto što i testiranje bilo koje druge vrste softvera. U većini situacija s testiranjem nastojite osigurati da stvarni izlaz odgovara očekivanom. Sa sustavima strojnog učenja traženje točno pravih rezultata upravo je pogrešan pristup. Vjerojatno ne možete izračunati ni "pravi izlaz", a da dvaput ne napišete softver. Ni tada to možda neće biti moguće.

Na što se testeri moraju usredotočiti za programe strojnog učenja:

1. Imati objektivne i mjerljive kriterije prihvaćanja. Znajte standardno odstupanje koje možete prihvatiti u svom problematičnom prostoru. To zahtijeva neke kvantitativne informacije i sposobnost da budete sigurni da razumijete i interpretirate ta mjerenja.

2. Testirajte s novim podacima, a ne s izvornim podacima o treningu. Ako je potrebno, podijelite svoj trening set u dvije skupine: onu koja vježba i onu koja testira. Bolje, pribavite i koristite svježe podatke ako ste u mogućnosti.

3. Ne računajte da će svi rezultati biti točni; mislite na njih kao na najbolju pretpostavku na temelju dostupnih podataka. Ako to nije dovoljno dobro, problem bi mogao biti alogirthmn ili, što je vjerojatnije, skup podataka. U nekim slučajevima "dotjerivanje" skupa podataka kako bi se dobio čisti unos može biti najbrže rješenje ovog problema. 

4. Razumjeti arhitekturu mreže kao dio procesa testiranja. Ispitivači neće nužno razumjeti kako je izgrađena neuronska mreža, ali moraju razumjeti ispunjava li zahtjeve. A na temelju mjerenja koja testiraju, možda će morati preporučiti radikalno drugačiji pristup ili priznati da softver jednostavno nije u stanju s povjerenjem raditi ono što je traženo.

Donja linija

Ključ testiranja sustava je razumijevanje zahtjeva za proizvodnim rezultatima i ograničenja algoritama. Zahtjevi se trebaju prevesti u objektivna mjerenja; idealno bi bilo standardno odstupanje srednjeg rezultata, pod pretpostavkom da je srednji rezultat usko povezan sa stvarnim rezultatom koji se nalazi u podacima o treningu. Morate biti sposobni procijeniti svoje rezultate sa statističkog stajališta, umjesto sa stajališta da-ne.

Ne računajte na točan točan odgovor cijelo vrijeme, pa čak ni većinu vremena. Način na koji testirate i kako ocjenjujete, u potpunosti ovisi o ciljevima sustava. Za matice testiranja, neprocjenjivo je imati platformu kao što je Intel Parallel Studio XE za razvoj i testiranje koda i algoritama.

Sada je lakše nego ikad napisati svoj kôd za paralelno pokretanje - isprobajte Intel® Parallel Studio XE besplatno tijekom 30 dana