728 x 90

Liczenie cytryn

Liczenie cytryn

Przy dzisiejszych osiągnięciach w AI (sztucznej inteligencji) często widzimy jak media raportują  o nadludzkich możliwościach w niektórych zadaniach. Te często bardzo doniosłe ogłoszenia powinny być jednak traktowane ze sporą dawką sceptycyzmu, gdyż wiele z nich może generować rezultaty czysto patologiczne. W tym tekście chciałbym pokazać, co mam na myśli przez „patologię pomiarową”. I dlatego skonstruowałem prosty przykład, który pozwoli to zobrazować.

Liczenie cytryn

Wyobraź sobie kogoś kto przychodzi do Twojej firmy/laboratorium z następującym problemem: zidentyfikowania cytryn w obrazie. Brzmi to jak wystarczająco jasny cel dla stworzenia stworzenia rzeczywistego systemu uczenia maszynowego, który dokona takiej czynności. Oczywiście musimy najpierw sformalizować zadnie. Zwykle można zacząć od tego, że ktoś mozolnie oznakuje zbiór danych. Na potrzeby tego przykładu, mój zestaw danych składa się z jednego obrazu przedstawiającego około pięćdziesięciu cytryn.

Dane

Dokładnie oznakowane…

…taką oto maską

Mamy więc grunt do rozpoczęcia pomiarów. Jednym ze sposobów wyrażenia celu identyfikacji cytryn jest użycie indeksu Jaccarda.

Indeks Jaccarda, współczynnik podobieństwa Jaccardastatystyka używana do porównywania zbiorów.

Współczynnik Jaccarda mierzy podobieństwo między dwoma zbiorami i jest zdefiniowany jako iloraz mocy części wspólnej zbiorówmocy sumy tych zbiorów:

J(A,B)=|A∩B|/|A∪B|

Wartości przyjmowane przez współczynnik Jaccarda zawierają się w podzbiorze zbioru liczb rzeczywistych <0,1>. Jeśli współczynnik Jaccarda przyjmuje wartości bliskie zeru, zbiory są od siebie różne, natomiast przyjmując wartości bliskie 1, zbiory są do siebie podobne.

Miara ta jest powszechnie używana do wykrywania obiektów i semantycznej segmentacji. W naszym przypadku użyjemy do obliczenia IoU (Intersection over Union, inna nazwa indeksu Jaccarda) powierzchni odpowiednich pól oznaczonych na obrazie, sprawdzając jaki obszar odpowiedzi algorytmu pokrywa się z tym oznaczonym przez człowieka.

Jak powinien działać nasz algorytm oceny?

Załóżmy, że mamy przygotowane dwa algorytmy sztucznej inteligencji, które rozpoznają dane na obrazach. Algorytm 1: wynik zbliżony do etykietowania przez człowieka, algorytm 2: wynik, który nie pokrywa całości obszaru zajmowanego przez owoce.  Następnie obliczamy przecięcia tych masek i dzielimy przez unię.

Algorytm 1 zwraca maskę z wartością IoU równą  0.909. Rezultat jest zadowalający.

Maska zwracana przez algorytm 1

Algorytm 2 zwraca taką maskę z wynikiem IoU = 0.119.  Z tego wyniku nie jesteśmy zadowoleni, algorytm idzie do kosza.

Maska zwracana przez algorytm 2

Wybrana miara pozwala nam więc stwierdzić, że algorytm pierwszy był lepszy i taki sprzedajemy klientowi.

Jakość algorytmów.

Kilka tygodni później klient wraca, mówiąc, że rezultaty są bezużyteczne, bo chodziło o ilościowe oznaczenie cytryn na obrazie, aby oszacować zbiory. Okazuje się, że nasza miara nie okazała się dobra dla tego zastosowania.

Wróćmy do algorytmów, patrząc na nie z nowej perspektywy. Algorytm 1 miał bardzo dobre IoU, ale z 51 cytryn wykrył tylko 39.   Algorytm 2 nie był bardzo precyzyjny przy określaniu powierzchni zajmowanej przez cytrynę, ale wykrył ich 47. Okazuje się, że algorytm 2 był dużo lepszy! A my go przecież odrzuciliśmy!

Utracone algorytmy.

W rzeczywistości nikt nie wie ile algorytmów, które mogły mieć potencjalnie doskonałe zastosowanie, zostały odrzucone przez ich twórców, dzieląc los algorytmu 2, ponieważ nie były faworyzowane przez aktualnie uznane “standardowe miary” lub zbiory danych.

Każda obserwowana statystycznie zależność ma skłonność do zawodzenia, w momencie w którym zaczyna być wykorzystywana do celów regulacyjnych – Prawo Goodharta

Innymi słowy, jeżeli celem staje się konkretna miara, to w tej chwili przestaje być dobrą miarą!

 

Podsumowanie

Tym przykładem nakreśliłem następujący problem: końcowy wynik naszych wysiłków związanych z uczeniem maszynowym jest warty tyle, co miara, dla której optymalizujemy nasze algorytmy. Jeśli miara jest zła, jakakolwiek optymalizacja ostatecznie da bezurzyteczne wyniki. Nie ma jednego dobrego sposobu na określenie wydajności algorytmu, i raczej każda z miar, którą będziemy implementować ma swoje własne “patologie pomiarowe”.  Jest to szczególnie istotne w problemach, w których dane wejściowe mają wysoki wymiar, tak jak w zastosowaniach wizji komputerowej.

Dobieranie właściwych miar do problemów nie jest łatwe i nie ma dobrej metodologii, jest to bardziej sztuka niż nauka. Generalnie dobrze jest oceniać algorythm na kilku niezależnych miarach, z których każda w nieco inny sposób wyraża oczekiwaną funkcjonalność.

Oryginalny post pochodzi z blogu autora: http://blog.piekniewski.info/2017/07/27/measuring-performance-ml/. Tam znajdą Państwo więcej rozważań na temat liczenia cytryn!

Źródło obrazów: opracowanie własne autora

1 comment

Leave a Comment

Your email address will not be published. Required fields are marked with *

Cancel reply

1 Comment

Inne artykuły