Pytanie:
Chcę rozpocząć dyskusję na temat tego, jak ludzie ustawiają parametry algorytmu, gdy nie jest możliwa walidacja względem prawdy naziemnej (być może dlatego, że prawdy naziemnej po prostu nie można uzyskać lub jest ona bardzo trudna / uciążliwa).
Przeczytałem wiele artykułów i zaimplementowałem podstawowe algorytmy, w których --- mówi się, że zestaw parametrów został ustawiony „empirycznie” --- i często stwierdziłem, że to one wpływają na ogólność algorytmu (mimo że teoria leżąca u podstaw metody jest elegancka, kusząca i solidna).
Byłbym wdzięczny za podzielenie się swoimi przemyśleniami. I nie ma właściwej lub złej odpowiedzi na to pytanie. Chcę tylko wiedzieć, jak wszyscy sobie z tym radzą.
Tło / Źródło pytania:
Jestem informatykiem zajmującym się analizą obrazu, wizją komputerową i uczeniem maszynowym, a to pytanie jest od dawna w mojej głowie, ponieważ ciągle napotykam ten dylemat, ilekroć projektuję nowy algorytm i spędziłem sporo czasu na dostrajaniu parametrów.
Myślę też, że moje pytanie jest bardziej ogólne dla każdego obszaru, w którym algorytmy obliczeniowe są mocno zaangażowane, i chcę zaprosić myśli ludzi ze wszystkich zainteresowanych obszarów.
Chciałem podać konkretny przykład, który pomoże ci myśleć:
--- Weźmy przypadek wykrywania funkcji (powiedzmy okrągłe plamy lub istotne punkty). Uruchamiasz niektóre filtry (wymaga parametrów) w różnych skalach (parametry skali) i prawdopodobnie progujesz odpowiedź (parametr progowy). Zazwyczaj nie jest możliwe uzyskanie prawdy, na podstawie której można zweryfikować, a tym samym automatycznie dostroić parametry w takich scenariuszach.
--- Weź dowolną strukturę obliczeniową, która wymaga wielu komponentów przetwarzania sygnałów. Zawsze trzeba dostroić parametry i zwykle nie ma prawdy gruntu, a kiedy dostroisz je subiektywnie na niewielkim losowym podzbiorze zestawu danych, pewnego dnia napotkasz przypadek, do którego się nie uogólnia.
Ten parametr diabeł jest bardziej kłopotliwy, gdy ustawia się parametry dla niektórych pośrednich kroków w algorytmie.
I często stwierdziłem, że nie można rzucić problemu znalezienia dobrych wartości dla tych parametrów jako problemu optymalizacji z funkcją celu, z której można wziąć pochodną, a tym samym użyć standardowych algorytmów optymalizacji do znalezienia dobrych wartości.
Ponadto w wielu scenariuszach udostępnianie tych parametrów użytkownikowi końcowemu nie jest opcją, ponieważ często opracowujemy aplikacje / oprogramowanie dla użytkowników końcowych innych niż obliczeniowi (powiedzmy biologowie, lekarze) i zwykle nie mają pojęcia, kiedy poprosisz ich o dostrojenie jeśli nie jest to bardzo intuicyjne (jak przybliżony rozmiar obiektu).
Podziel się swoimi przemyśleniami.
I want to kick up a discussion ...
jest naprawdę dobrą wskazówką, że to, o co pytasz, nie pasuje do formatu * .SE.