Kódverifikáció gépi tanulással

Hasonló dokumentumok
Regresszió. Csorba János. Nagyméretű adathalmazok kezelése március 31.

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Újfajta, automatikus, döntési fa alapú adatbányászati módszer idősorok osztályozására

Gépi tanulás a gyakorlatban. Bevezetés

Keresés képi jellemzők alapján. Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék

Számítógépes képelemzés 7. előadás. Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék

Babeş Bolyai Tudományegyetem, Kolozsvár Matematika és Informatika Kar Magyar Matematika és Informatika Intézet

Programtervezés. Dr. Iványi Péter

Gépi tanulás a gyakorlatban. Kiértékelés és Klaszterezés

A KUTATÁS EREDMÉNYEI ZÁRÓJELENTÉS

Gépi tanulás a gyakorlatban SVM

Teljesen elosztott adatbányászat alprojekt

13. Egy x és egy y hosszúságú sorozat konvolúciójának hossza a. x-y-1 b. x-y c. x+y d. x+y+1 e. egyik sem

Intervenciós röntgen berendezés teljesítményszabályozójának automatizált tesztelése

Csima Judit április 9.

1. gyakorlat. Mesterséges Intelligencia 2.

Verifikáció és validáció Általános bevezető

Algoritmizálás, adatmodellezés tanítása 6. előadás

SZTE Eötvös Loránd Kollégium. 2. Móra György: Információkinyerés természetes nyelvű szövegekből

Fodor Gábor március 17. Fodor Gábor Osztályozás március / 39

Specifikáció alapú teszttervezési módszerek

Specifikáció alapú teszttervezési módszerek

BEKE ANDRÁS, FONETIKAI OSZTÁLY BESZÉDVIZSGÁLATOK GYAKORLATI ALKALMAZÁSA

Modell alapú tesztelés mobil környezetben

IV.7 MÓDSZER KIDOLGOZÁSA FELHASZNÁLÓI ADATOK VÉDELMÉRE MOBIL ALKALMAZÁSOK ESETÉN

Szoftverminőségbiztosítás

TARTALOMJEGYZÉK. TARTALOMJEGYZÉK...vii ELŐSZÓ... xiii BEVEZETÉS A lágy számításról A könyv célkitűzése és felépítése...

[1000 ; 0] 7 [1000 ; 3000]

Statisztikai eljárások a mintafelismerésben és a gépi tanulásban

Szoftver karbantartási lépések ellenőrzése

Visszacsatolt (mély) neurális hálózatok

Mesterséges intelligencia alapú regressziós tesztelés

Gépi tanulás. Hány tanítómintára van szükség? VKH. Pataki Béla (Bolgár Bence)

Osztott jáva programok automatikus tesztelése. Matkó Imre BBTE, Kolozsvár Informatika szak, IV. Év 2007 január

Mesterséges Intelligencia MI

Élpont osztályozáson alapuló robusztus tekintetkövetés

Mit látnak a robotok? Bányai Mihály Matemorfózis, 2017.

Szoftverminőségbiztosítás

Tanulás az idegrendszerben. Structure Dynamics Implementation Algorithm Computation - Function

A TESZTELÉS ALAPJAI MIÉRT SZÜKSÉGES A TESZTELÉS? MI A TESZTELÉS? ÁLTALÁNOS TESZTELÉSI ALAPELVEK

CARE. Biztonságos. otthonok idős embereknek CARE. Biztonságos otthonok idős embereknek Dr. Vajda Ferenc Egyetemi docens

Szoftverminőségbiztosítás

Valószínűségi modellellenőrzés Markov döntési folyamatokkal

Pannon Egyetem Vegyészmérnöki és Anyagtudományok Doktori Iskola

Rendszámfelismerő rendszerek

Az értékelés során következtetést fogalmazhatunk meg a

Adatbányászati szemelvények MapReduce környezetben

Adatbányászat: Klaszterezés Haladó fogalmak és algoritmusok

Automatikus tesztgenerálás modell ellenőrző segítségével

Oktatási környezetek vizsgálata a programozás tanításához

Gyakorló feladatok adatbányászati technikák tantárgyhoz

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Klaszterezés, 2. rész

Kétdimenziós mesterséges festési eljárások. Hatások és alkalmazások

Hadházi Dániel.

Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs rendszerek Tanszék. Neurális hálók. Pataki Béla

Ensemble előrejelzések: elméleti és gyakorlati háttér HÁGEL Edit Országos Meteorológiai Szolgálat Numerikus Modellező és Éghajlat-dinamikai Osztály 34

Előrenéző és paraméter tanuló algoritmusok on-line klaszterezési problémákra

Forráskód minőségbiztosítás

IBM SPSS Modeler 18.2 Újdonságok

Nyílt forráskódú szoftverek minőségi vizsgálata szoftver metrikák alapján

Osztályozás, regresszió. Nagyméretű adathalmazok kezelése Tatai Márton

(Independence, dependence, random variables)

Gépi tanulás a gyakorlatban. Lineáris regresszió

Algoritmusok helyességének bizonyítása. A Floyd-módszer

Neurális hálózatok elméleti alapjai TULICS MIKLÓS GÁBRIEL

Rendszermodellezés: házi feladat bemutatás

Számítógépes döntéstámogatás. Genetikus algoritmusok

Kernel gépek vizsgálata

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

Intelligens adatelemzés

Neurális hálózatok bemutató

Support Vector Machines

MISKOLCI EGYETEM GÉPÉSZMÉRNÖKI ÉS INFORMATIKAI KAR

Intelligens Rendszerek Elmélete. Versengéses és önszervező tanulás neurális hálózatokban

Intelligens orvosi műszerek VIMIA023

A lineáris programozás alapjai

Regressziós vizsgálatok

KOMPUTER-ALGEBRA RENDSZEREK VERIFIKÁCIÓJA

Közösség detektálás gráfokban

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

7. Régió alapú szegmentálás

Biológiai rendszerek modellellenőrzése bayesi megközelítésben

Tanulás az idegrendszerben. Structure Dynamics Implementation Algorithm Computation - Function

LINEÁRIS VEKTORTÉR. Kiegészítő anyag. (Bércesné Novák Ágnes előadása) Vektorok függetlensége, függősége

Shannon és Huffman kód konstrukció tetszőleges. véges test felett

Parametrikus tervezés

The nontrivial extraction of implicit, previously unknown, and potentially useful information from data.

Alapszintű formalizmusok

Miről lesz szó? Videó tartalom elemzés (VCA) leegyszerűsített működése Kültéri védelem Közúthálózat megfigyelés Emberszámlálás

JAVASLAT A TOP-K ELEMCSERÉK KERESÉSÉRE NAGY ONLINE KÖZÖSSÉGEKBEN

Utolsó módosítás:

BitTorrent felhasználók értékeléseinek következtetése a viselkedésük alapján. Hegedűs István

Klaszterezés. Kovács Máté március 22. BME. Kovács Máté (BME) Klaszterezés március / 37

Totális Unimodularitás és LP dualitás. Tapolcai János

Tanulás az idegrendszerben

További programozási esetek Hiperbolikus, kvadratikus, integer, bináris, többcélú programozás

Hibadetektáló rendszer légtechnikai berendezések számára

Szoftver-mérés. Szoftver metrikák. Szoftver mérés

5. A kiterjesztési elv, nyelvi változók

Átírás:

Kódverifikáció gépi tanulással Szoftver verifikáció és validáció kiselőadás Hidasi Balázs 2013. 12. 12.

Áttekintés Gépi tanuló módszerek áttekintése Kódverifikáció Motiváció Néhány megközelítés Fault Invariant Classifier módszer ismertetése

Gépi tanuló módszerek Tanuló módszerek Felügyelt tanulás Megerősítéses tanulás Felügyelet nélküli tanulás Félig felügyelt tanulás Regresszió Osztályozás Klaszterezés Dimenziócsökkentés Jellemző kinyerés Módszerek: - Lineáris regresszió - Logisztikus regresszió - Döntési fák - Szupport vektor gépek - Neurális hálók - Ensemble módszerek - Módszerek: - Hierarchikus klaszterezők - Partícionáló klaszterezők (pl. knn) - Sűrűség alapú klaszterezők (pl. DBSCAN) -

Kódverifikáció

Motiváció (1/2) Gépi tanulás előnyei Általános modellek Nem kell külön teszteseteket generálni Taníthatóság Kód fejlődésével a tesztek is automatikusan fejlődnek Követelmény: tanítókészlet Alkalmazás feltétele Pl. korábbi projektek kódjai; aktuális projekt hibás és javított verziói; közösség által összegyűjtött kódhalmaz

Motiváció (2/2) Nem tökéletes Tökéletes eredményt adó tanuló módszer hibás Hamis pozitív és hamis negatív hibák Eredmény átnézése szükséges De az átnézendő esetek száma jelentősen csökken Eljárás = szűrés Nagy mennyiségű adat (gyors/olcsó) kezelése Költséges eljárások megspórolhatóak Futtatásuk elegendő a tanuló módszer által gyanúsnak ítélt részeken

Néhány megközelítés (1/4) Mit akarunk jelezni? Rejtett hiba van a forráskódban Ez egy rejtett hiba a forráskódban Hogyan reprezentáljuk a kódot? Milyen módszert használunk? Felügyelt tanulás Hibás nem hibás példák előállítása Hogyan generáljuk le a tanítóhalmazt? Felügyelet nélküli tanítás Hogyan értelmezzük az eredményt?

Néhány megközelítés (2/4) 1. megközelítés Statikus jellemzők definiálása Pl.: kódduplikáció, nem használt kód, stb. Valószínűségi modell építése Jellemzők jelenléte hibás/nem hibás viszonyra File szintű vizsgálat Hibás-e a file?

Néhány megközelítés (3/4) 2. megközelítés Kódrészletek többszöri futtatása Feltevés: futtatás olcsó, verifikáció költséges Futtatások klaszterezése Feltevés: hibás futtatások kisebb klasztereket képeznek Kevesebb hibás futtatás, mint nem hibás Hibák okai eltérőek: más klaszterekbe kerülnek Mintavételezés Minden klaszterből egy eset választása verifikálásra Kisebb klaszterekből és így hibás esetekből több kerül kiválasztásra Ha a verifikáció során hibát találunk, a klaszter más elemeit is ellenőrizzük

Néhány megközelítés (4/4) 3. megközelítés Hibás és nem hibás forráskódok vagy futtatások osztályozása Címke: hibás volt-e? Az egyes entitások jellemzése fontos kérdés

Fault Invariant Classifier (1/6) Áttekintés Hibára utaló tulajdonságok felfedezése forráskódban Konkrét hibára utaló kódrészletek megtalálása Automatikus tulajdonság generálás Felügyelt tanulás a gyanús és nem gyanús tulajdonságok megkülönböztetésére Osztályozás Hibára futó kód Kód a hibás rész eltávolításával Új forráskód Elemzés Elemzés Elemzés Tulajdonságok Tulajdonságok Tulajdonságok Model Osztályozó tanítása Osztályozás Model Hibára utaló tulajdonságok

Fault Invariant Classifier (2/6) Tanítóhalmaz generálás Eltérés ismerten hibás és nem hibás kódváltozatok között Egy kód két verziója P: Legalább egy hiba van benne P : Legalább egy hiba ki lett javítva P-hez képest Nem szükséges, hogy hibátlan legyen Csak hibás kódokban lévő tulajdonságok hibás címke Hibás és javított kódban is meglévő tulajdonságok nem hibás címke Csak javított kódban lévő tulajdonságok eldobva Javított kódok tulajdonságai Hibás tulajdonságok Nem hibás tulajdonságok Eldobva Hibás kódok tulajdonságai

Fault Invariant Classifier (3/6) Tulajdonság generálás Szemantikus jellemzők Dinamikus invariáns detektálás Futási idejű tulajdonságok Futtatások során érvényes logikai kifejezések a változókra Példák: Skalárok milyen értéktartományba esnek bizonyos programpontokon Skalárok közötti relációk Listák legkisebb és legnagyobb eleme Listák viszonya egymással Implikáció Stb.

Fault Invariant Classifier (4/6) Tulajdonságok karakterisztikus vektor Tanuló eljárások bemenete (általában) egy fix hosszúságú vektor Konvertálás szükséges Ezen a vektoron tanítunk Ne legyen program specifikus Pl. x=y helyett (értékadás, kétváltozós, skalár) Tanuló eljárások Szupport vektor gépek (SVM) Bináris osztályozó Osztályok szétválasztása egy hipersíkkal úgy, hogy a távolsága hozzá legközelebb eső, vele párhuzamos, az osztályok egy pontját tartalmazó hipersíkkal maximális Maximal margin separation Lineáris szeparálás kernelek alkalmazásával nemlineárissá tehető A legközelebbi párhuzamos hipersíkokra eső tanítópontok a szupport vektorok; a modell velük kifejezhető (többi pont eldobható) Max

Fault Invariant Classifier (5/6) Tanuló eljárások (folyt.) Döntési fák Partícionáló eljárások Egy gyökér csomópontból indulunk, ami minden tanítópontot tartalmaz A csomópontban a legjobban vágó feltétel választása Feltétel: attribútum + logikai kifejezés Vágás jó Pl.: Kor > 20, Nem=Nő, stb. Osztályok eloszlása a vágás után eltér az eredetitől Csomópontok mérete közel egyenlő (ne 1-1 elemet vágjunk le) Célfüggvény: pl. információ nyereség, Gini-index, stb. Tanítópontok szétdobása a feltétel alapján a gyermek csomópontokba Ha a leállási feltétel nem teljesül, akkor ki nem fejtett csomópontok kifejtése a fentiek szerint Könnyen értelmezhető modellt állít elő

Fault Invariant Classifier (6/6) Kiértékelés Leave-one-out teszt Egy program kivételével az összesen tanítanak, az egyen tesztelnek Minden programon tesztelnek egyszer Hibásnak ítélt- és a teljes halmazban a hibásak arányának arányát nézik Nem az összes hibát okozó tulajdonság megkeresése a cél Rangsorolás: az elől lévők nagy valószínűséggel legyenek hibát okozóak Jelentős javulás rangsorolás esetén a korábbi módszerekhez képest (~50-szeres a hibás tulajdonságok aránya) Mérsékelt javulás címkézés esetén (~5-szörös) (Hiba a cikkben: döntési fa nem használható sorrendezésre de használható) Használhatósági teszt: egy hiba okának megtalálásához átlagosan 3 gyanús tulajdonságot kell átnézni

Források Brun, Yuriy, and Michael D. Ernst. "Finding latent code errors via machine learning over program executions." Proceedings of the 26th International Conference on Software Engineering. IEEE Computer Society, 2004. Dickinson, William, David Leon, and Andy Podgurski. "Finding failures by cluster analysis of execution profiles." Proceedings of the 23rd international conference on Software engineering. IEEE Computer Society, 2001. Xie, Yichen, and Dawson Engler. "Using redundancies to find errors." ACM SIGSOFT Software Engineering Notes 27.6 (2002): 51-60. Hangal, Sudheendra, and Monica S. Lam. "Tracking down software bugs using automatic anomaly detection." Proceedings of the 24th international conference on Software engineering. ACM, 2002.