Pytanie:
Popularne oprogramowanie wykorzystywane w badaniach to nieprawidłowo rozwiązanie raportowania jest optymalne: co robić?
Kuhndog
2017-05-17 02:39:53 UTC
view on stackexchange narkive permalink

Mam przykład pokazujący, że rozwiązanie stworzone przez powszechnie używany pakiet oprogramowania nie jest rozwiązaniem optymalnym, mimo że oprogramowanie tak twierdzi. Kilka ostatnich artykułów opublikowanych w moim laboratorium wykorzystywało to oprogramowanie w swoich ocenach i wiem, że jest ono szeroko stosowane w społeczności naukowej do rozwiązywania problemów optymalizacyjnych.

Więc nie jestem pewien, jak zgłosić ten błąd; jest to zastrzeżone oprogramowanie o zamkniętym kodzie źródłowym. Na początku mógłbym skontaktować się z programistą w sprawie błędu, chociaż wydaje się, że nie ma prostej metody zgłaszania błędów.

Ale poważniejszym problemem jest to, że artykuły publikowane z wynikami opartymi na błędnym oprogramowaniu mogą zostać naruszone. Co się stanie, jeśli ostateczna poprawka spowoduje, że oprogramowanie będzie działało znacznie dłużej, więc uruchomienie na dużych instancjach jest teraz niewykonalne?

Poinformowałem mojego doradcę o problemie, ale nie wydaje się on zbytnio zainteresowany, prawdopodobnie ze względu na potencjalne konsekwencje.

Obecnie pracuję nad projektem, w którym mógłbym użyć tego oprogramowania; Teraz nie ufam temu i przeszedłem na znacznie mniej wydajną alternatywę typu open source. Więc wydaje mi się, że moje pytanie brzmi: jak mam sobie z tym poradzić?

Rozwiąż problem za pomocą oprogramowania open source, pokaż, że wyniki są lepsze niż te, które daje oprogramowanie własnościowe, opublikuj.Co może się nie udać?
Istnieją pewne gałęzie optymalizacji, które koncentrują się na tworzeniu „dostatecznie dobrego” rozwiązania, a nie optymalnego globalnie.Czy jesteś pewien, że problem w Twoim przypadku bezwzględnie wymaga globalnie optymalnego rozwiązania?
„Mam przykład demonstrujący, że rozwiązanie produkowane przez powszechnie używany pakiet oprogramowania nie jest rozwiązaniem optymalnym, mimo że oprogramowanie twierdzi, że tak jest”.Czy dokumentacja zestawu określa, czy istnieją określone warunki, które muszą być spełnione / założenia, które należy przyjąć, aby raportowany wynik był prawidłowy?Czy twój przykład spełnia wszystkie te warunki?(Konieczne vs. wystarczające warunki i tak dalej.)
Czy bez nazywania komercyjnego oprogramowania możesz przynajmniej nazwać alternatywę open source, na którą się teraz przełączyłeś?
Zdarza się to dość często.Oprogramowanie naukowe rzadko jest idealne w pierwszym wydaniu.Potraktuj to jako okazję do stworzenia lepszej alternatywy lub przynajmniej zaprezentuj swoje wyniki, krytykując ją, aby zachęcić innych do opracowania lub wykorzystania czegoś innego w przyszłości.Podchodź ostrożnie do każdego oprogramowania naukowego i wypróbuj go w przypadkach, w których wiesz, że wyniki są oczekiwane.Badacze nieustannie zmieniają metodologię i znajdują wady we wcześniejszych podejściach.Niewiele osób będzie zaskoczonych takim problemem.
@JAB i lighthousekeeper przedstawiają doskonałe punkty, które należy wziąć pod uwagę.Dodam do tego: czy ich definicja optymalna jest taka sama jak Twoja?Czy są dostępne opcje, które modyfikują proces optymalizacji?
„wydaje się, że nie mają prostej metody zgłaszania błędów”.Czy mają niełatwą metodę?Jeśli to oprogramowanie jest w ogóle popularne, byłbym zszokowany, gdyby nie miał kontaktowego adresu e-mail, na który można zapytać „jak zgłosić potencjalny błąd?”
@lighthousekeeper Chciałem uzyskać dokładne optymalne rozwiązanie w mniejszych instancjach, aby porównać je z procedurami, które mogą działać na większych wystąpieniach problemów, ale niekoniecznie zapewniają optymalne rozwiązania.
@JAB Tak, dokładnie sprawdziłem dokumentację i poprawnie używam oprogramowania.Oprogramowanie zapewnia parametr tolerancji błędów, ale to nie wyjaśnia jego rozwiązania w tym przypadku.
Przez chwilę myślałem, że PO odnosi się do problemów MS Excel ze statystykami (https://www.statisticalengineering.com/Weibull/excel.html, http://www.pages.drexel.edu/~bdm25/gnumeric.pdf).
Optymalizacja to trudny problem.Jeśli znalezienie globalnego minimum jest ważne, zawsze powinieneś przynajmniej przetestować różne algorytmy optymalizacji.Dobre oprogramowanie Ci to umożliwi.Jeśli optymalizator numeryczny nie znajdzie optymalnego globalnego dla konkretnego problemu, zwykle nie jest to błąd implementacji.
Jakiego algorytmu optymalizacji używasz?Czasami metody oparte na Newtonie nie są zbieżne z optimum, jeśli początkowe przypuszczenie nie jest dobre.Jeśli znasz już optimum, podaj przypuszczenie, które jest bliskie tej wartości.Dodatkowo mogłeś przekroczyć swój limit iteracji.Ogólnie rzecz biorąc, najpierw ważne jest, aby potwierdzić, czy oprogramowanie faktycznie zawodzi.Możesz uzyskać raport debugowania przebiegu.
Nie jest jasne, że to błąd.Jeśli problem jest nawet nieco trudnym problemem optymalizacyjnym, żadne istniejące oprogramowanie nie może go rozwiązać dokładnie z jakąkolwiek niezawodnością, o której można by mówić.@Roland +1
Żeby powtórzyć, inni mówią: optymalizacja jest trudna.Możesz uruchomić 10 algorytmów optymalizacji w tych samych danych i uzyskać 10 różnych wyników i żaden (ze wszystkich) nie jest „zły”.Podają po prostu inne rozwiązanie i bardzo często nie ma wiarygodnego sposobu, aby ocenić, które jest lepsze.Upewnij się, że nie pracujesz z tego typu problemami.
AFAIK, istnieją dwa rodzaje problemów optymalizacyjnych.Tych, które można rozwiązać analitycznie i takich, które nie mają rozwiązań analitycznych.I nie ma oprogramowania, które twierdzi, że może dać optymalne rozwiązania dla tych drugich.Pierwszy typ może być również trudny w implementacjach oprogramowania.Dlatego większość dostawców oprogramowania ostrożnie twierdzi, że mogą podać dokładnie optymalne rozwiązania
-1
Sześć odpowiedzi:
HEITZ
2017-05-17 03:06:30 UTC
view on stackexchange narkive permalink

Powinieneś stworzyć odtwarzalny przypadek testowy, który ostatecznie zademonstruje błąd. Jeśli masz taką pewność, a oprogramowanie jest tak szeroko stosowane, gwarantuje publikację w czasopiśmie technicznym. Kluczowe jest zaangażowanie firmy. Pokaż im swój przypadek testowy i wspomnij, że jesteś zainteresowany opublikowaniem wyniku. Zaproponuj współpracę z nimi przy publikacji. W ten sposób będą zmuszeni albo pokazać, że się mylisz, albo przyznać, że masz rację. W tym drugim przypadku oszczędzają twarz przyznając się do problemu. Jeśli cię ignorują, idź naprzód.

To jest dobra odpowiedź.Uważaj, przygotowując swój list / e-mail do firmy, pamiętając, że możesz chcieć upublicznić list w przyszłości.Ponadto firma może szybko rozwiązać problem, co może sprawić, że planowana publikacja będzie mniej imponująca lub rzadziej zostanie przyjęta do publikacji.
Mój kolega zrobił to - pomyślnie.
* „Jeśli masz taką pewność, a oprogramowanie jest tak szeroko stosowane, gwarantuje to publikację w czasopiśmie technicznym.” * No może… a może nie.Na przykład [Znalazłem dość strasznie niewybaczalny problem] (https://math.stackexchange.com/q/224935/4890) w Wolfram Alpha.Może Wolfram Alpha nie jest uważany za „oprogramowanie” w tym sensie, ale gdyby ten sam problem pojawił się w Mathematica, czy uzasadniałby to artykuł?Wątpię.
@Mehrdad fakt, że błąd istnieje, nie gwarantuje publikacji.Powody istnienia błędu + zmodyfikowana metoda, która byłaby wolna od błędów, prawdopodobnie uzasadniają publikację.Dotyczy zarówno Twojego przypadku, jak i OP.
Ale to nie jest błąd per se.To kwestia optymalności.Błąd tak naprawdę nie wymaga debaty.
@HEITZ: Wywołanie rozwiązania `x` optymalne implikuje, że istnieje` f (x) `takie, że nie istnieje` y`, dla którego `f (y)> f (x)`.Jeśli oprogramowanie zgłasza, że „x” jest optymalne, a jednak istnieje „y” takie, że „f (y)> f (x)„, to stwierdzenie jest niepoprawne, tj. Błąd.
@Mehrdad Fakt, że błąd istnieje, nie może zostać opublikowany.Fakt, że błąd potencjalnie wpływa na wnioski z wcześniej opublikowanych artykułów * jest *.Jeśli potrafisz wykazać, że błąd ma związek z wynikami wcześniej opublikowanych artykułów, warto to opublikować.Idealnie byłoby, gdybyś miał przynajmniej jeden przykład wcześniej opublikowanej pracy, w której wnioski ulegają zmianie z powodu błędu, ale w zależności od czasopisma nawet „nie możemy być już pewni siły tych wniosków”.- Nie chodzi o publikowanie błędu, ale publikowanie „tych innych artykułów może być błędne”.
@R.M.Nie o tym mówiła odpowiedź, stąd mój komentarz.
Komentarze wskazujące na konkretne problemy z odpowiedzią są mile widziane, ale komentarze, które mówią „to źle” lub „to jest zła odpowiedź” bez żadnych merytorycznych szczegółów, nie są i mogą zostać usunięte.Pytania lub wątpliwości dotyczące zasad usuwania komentarzy są mile widziane w [meta].
alephzero
2017-05-17 08:07:25 UTC
view on stackexchange narkive permalink

Techniczna odpowiedź na pytanie wydaje się oczywista: jeśli istnieje jasna definicja tego, co oznacza „optymalny” dla twoich problemów, uruchom oba programy i zobacz, który wygrywa, a następnie opublikuj wyniki.

Wszelkie porady dotyczące polityki , jak postępować, są jedynie spekulacjami, dopóki nie wykonasz technicznej pracy, aby odkryć fakty sprawy.

Te rzeczy zdarzyć. Kiedyś odkryliśmy „błąd szkolny” w jednym ze standardowych pakietów oprogramowania w tej dziedzinie. Na spotkaniu, na którym przedstawiliśmy wyniki, mieliśmy trzech starszych członków zespołu deweloperskiego dostawcy (w sumie około 300 osób) siedzących z głowami w dłoniach, doskonale wiedząc, że gdybyśmy chcieli, moglibyśmy zniszczyć może 75% ich międzynarodowa baza użytkowników. (Niektórzy z pozostałych 25% nie rozumieliby, o co tyle zamieszania, a jak na ironię, ich najwięksi indywidualni klienci prawdopodobnie używali systemów komputerowych, w których błąd i tak nie wystąpił - co może wyjaśniać, dlaczego nikt inny nie zauważył go w około 10 poprzednich lat).

Ale nam przyniosło znacznie więcej korzyści w naprawieniu problemu niż nukowaniu oprogramowania, więc wybraliśmy opcję „Napraw to jak najszybciej” - i „JAK NAJSZYBCIEJ” „faktycznie zajęło to około 2 tygodni, aby uzyskać wersję beta-testową.

Jakie czasopismo jest zainteresowane publikacją „Przeprowadziłem tę samą optymalizację na dwóch systemach. Podali różne odpowiedzi.”?
Wydaje się, że rażąco przeceniasz wpływ błędów na popularność oprogramowania.Gdyby jeden błąd wystarczył do zniszczenia 75% bazy użytkowników produktu, Mathworks już dawno wypadłby z rynku, nie wspominając o Microsoft.
@DmitryGrigoryev to jest dość podobne: [Błędy zaokrąglania Intel Pentium] (https://en.wikipedia.org/wiki/Pentium_FDIV_bug)
@DmitryGrigoryev To zależy na pewno od dziedziny?tj. czy w przypadku konkretnych klientów błąd reprezentował: „popełnisz błąd, i to jest naprawdę bardzo irytujące, ale myślę, że tak to działa” - czy też „zawiodłeś tak fundamentalnie, że zagroziłeś naszej wiarygodności / bezpieczeństwu / itp.”Jeśli błąd jest na tyle poważny, że należy do tej drugiej kategorii, to może 75% nie jest tak szalonym szacunkiem ... cóż, zwłaszcza jeśli oprogramowanie ma tylko 4 użytkowników.: P
@StephenS Ponownie, naprawdę zależy od pola i tego, kto ocenia.Wyspecjalizowani użytkownicy bardzo specyficznego oprogramowania, które może pełnić niezwykle ważną funkcję, bardzo różnią się od np.laik, który nawet nie wie, że istnieje zmiennoprzecinkowy, nieważne, jak Intel go sfałszował lub jak kiedyś obniżył jego budżet o 2 pensy.Ponadto duże firmy, takie jak Intel, zazwyczaj nie tracą nagle łaski i nie dają się porwać, ale specjalistyczne firmy programistyczne mogą łatwo.
To najlepsza odpowiedź.Jakie są szczegóły matematyczne optymalizowanej funkcji?Jakie są szczegóły matematyczne algorytmu optymalizacji?Takie szczegóły techniczne należy doprecyzować w osobnym pytaniu na bardziej technicznej stronie wymiany stosów.Jeśli zostało to już zrobione, należy to połączyć lub przynajmniej podać w pytaniu.Ale na razie, z tego, co wiemy, OP szuka lokalnego optymalizatora straty nie wypukłej i interpretuje ją jako błąd lub inną potencjalną głupotę.
@underscore Nie ma nietrywialnego oprogramowania, które nie zawierałoby błędów.W szczególności, jeśli jest to niejasny błąd, który nie wystąpiłby nawet w większości systemów, chciałbym zobaczyć, jakiego rodzaju błąd i pole musiałby to być dla tego rodzaju wpływu (jeśli pole jest szczególnie niechętne dla błędu, byłoby tonawet * mniej * prawdopodobieństwo przejścia na inny produkt. O wiele lepiej jest użyć czegoś, o czym wiesz, że jego błędy nie mają dużego wpływu na twoją codzienną pracę, niż przejście na kompletnie nieznane).
Do diabła, nawet w medycynie, możesz mieć błąd oprogramowania, który zabije co najmniej sześć osób, wykazać brak należytej staranności, zignorować raporty o błędach, nie wykonywać żadnego rodzaju modelowania niezawodności ani zarządzania ryzykiem i * nadal * pozostać w biznesie dobrze.Chociaż lubimy myśleć, że jakość oprogramowania jest niezbędna dla firmy programistycznej, tak naprawdę istnieją znacznie ważniejsze fakty związane z sukcesem lub upadkiem takiej firmy.
Shake Baby
2017-05-17 12:03:26 UTC
view on stackexchange narkive permalink

Mam przykład pokazujący, że rozwiązanie stworzone przez powszechnie używany pakiet oprogramowania nie jest rozwiązaniem optymalnym, mimo że oprogramowanie tak twierdzi.

To wydaje się być dużo zamieszania, prawdopodobnie o nic.

Przeczytaj dokumentację oprogramowania , jeśli taka istnieje. Powinien wyjaśnić, w jakich przypadkach deklaruje „rozwiązanie znalezione”. Zwykle jest tak, że wskazuje to, że kilka parametrów związanych z warunkiem koniecznym dla optymalności jest wystarczająco małych, co wskazuje, że prawdopodobnie znaleziono rozwiązanie. Brak gwarancji.

Jeśli nie możesz znaleźć przyczyny takiego zachowania w dokumentacji, napisz do programisty z minimalnym działającym przykładem, w którym występuje nieoczekiwane zachowanie, i poproś o wyjaśnienie.

Trilarion
2017-05-17 16:36:26 UTC
view on stackexchange narkive permalink

Mam przykład pokazujący, że rozwiązanie stworzone przez powszechnie używany pakiet oprogramowania nie jest rozwiązaniem optymalnym, mimo że oprogramowanie twierdzi, że tak jest.

Oprogramowanie może więc twierdzić zbyt wiele. Nie jest to takie rzadkie.

Więc nie jestem pewien, jak zgłosić ten błąd; jest to zastrzeżone oprogramowanie o zamkniętym kodzie źródłowym. W pierwszej kolejności mógłbym skontaktować się z twórcą oprogramowania w sprawie błędu, chociaż wydaje się, że nie mają oni prostej metody zgłaszania błędów.

Kontaktowanie się z producentem w dowolny odpowiedni sposób, jeśli żaden szczególny sposób nie jest wskazany, byłaby to zalecana procedura, jeśli chcesz pomóc producentowi (a tym samym pośrednio także sobie i innym). Po prostu upewnij się, że błąd naprawdę istnieje i dokładnie go wyjaśnij, aby można go było odtworzyć.

Jednak większym problemem jest to, że artykuły opublikowane z wynikami opartymi na błędnym oprogramowaniu mogą zostać naruszone.

Prawdopodobnie całe oprogramowanie zawiera błędy. Bez znajomości szczegółów trudno jest ocenić powagę tej sprawy. Jednak zawsze dobrze jest nie polegać zbytnio na jednym pakiecie oprogramowania, ale testować także produkty równoległe. Możesz sprawdzić te dokumenty i zobaczyć, czy dotyczy ich błąd, a jeśli tak, to w jakim stopniu.

Co się stanie, jeśli ostateczna poprawka spowoduje, że oprogramowanie będzie działać znacznie dłużej, więc że uruchomienie na dużych instancjach jest teraz niewykonalne?

Naprawione oprogramowanie, które zajmuje więcej czasu, aby poprawnie rozwiązać problem, jest zawsze preferowane niż wadliwe, szybkie oprogramowanie. Oznaczałoby to po prostu, że poprawne rozwiązania dla dużych instancji nigdy nie były do ​​tej pory wykonalne.

Poinformowałem swojego doradcę o problemie, ale nie wydaje się on zbytnio zainteresowany, prawdopodobnie z powodu potencjalnych konsekwencji.

Może nie przejmuje się zbytnio używaniem oprogramowania wolnego od błędów lub nie jest jeszcze przekonany o istnieniu błędu lub jest po prostu zbyt leniwy, by przeszkadzać firmie lub nie chce żadnego konfliktu.

Obecnie pracuję nad projektem, w którym mógłbym użyć tego oprogramowania; Teraz nie ufam temu i przeszedłem na znacznie mniej wydajną alternatywę typu open source.

To naturalne, że stracisz trochę zaufania, ale może nie wszystko. Możesz dokładnie ocenić stare oprogramowanie (pamiętając, że czasami pojawiają się błędy), jeśli nadal można mu ufać w szczególnych okolicznościach Twojego projektu, a następnie zdecydować, czy chcesz go używać, czy też chcesz używać obu projektów oprogramowania, chcę używać tylko alternatywnego oprogramowania (które również może być błędne, więc nie ufaj temu całkowicie).

Więc wydaje mi się, że moje pytanie brzmi: jak mam sobie z tym poradzić?

  • Powinieneś skontaktować się z firmą i napisać krótką wiadomość z informacją o błędzie. Mogą szybko to naprawić, przywracając zaufanie.
  • Możesz również opublikować błąd (na swoim blogu, na liście mailingowej, nawet jako raport techniczny, jeśli błąd jest wystarczająco ważny i dziennik jest tym zainteresowany ), więc inni są tego świadomi, zwłaszcza jeśli firma nie naprawia tego szybko.
  • Powinieneś użyć dwóch posiadanych pakietów oprogramowania i porównać je. Załóżmy, że oba mogą mieć błędy, o których jeszcze nic nie wiesz.
Conor Mancone
2017-05-17 20:57:06 UTC
view on stackexchange narkive permalink

Myślę, że pierwsze pytanie, na które musisz odpowiedzieć, dotyczy tego, jak bardzo to jest problemem. Czy to tylko skrajny przypadek? Czy „optymalne” rozwiązanie jest tylko nieznacznie lepsze? Trudno powiedzieć wiele bez dalszych szczegółów na temat rzeczywistego przypadku użycia i rozwiązań. Z niektórymi problemami z optymalizacją / dopasowaniem, nad którymi pracowałem w ramach doktoratu, można było zawsze szukać „bardziej” optymalnych rozwiązań, ale w zależności od tego, jak zaszumione były dane, w rzeczywistości nie oznaczało to, że nowe rozwiązania były „lepsze” . Mając dobre zrozumienie zestawu problemów i podstawowych algorytmów optymalizacji, powinieneś być w stanie dowiedzieć się, co dokładnie dzieje się nie tak z oprogramowaniem o zamkniętym kodzie źródłowym i czy istnieje rzeczywisty problem.

resztę tej dyskusji zamierzam założyć, że próbujesz znaleźć optymalne dopasowanie do pewnego rodzaju zbioru danych empirycznych. Jeśli tak, efektywnie przeszukujesz jakąś przestrzeń parametrów chi ^ 2, znalezienie bardziej optymalnego dopasowania może oznaczać bardzo różne rzeczy, np.

  1. Twoja przestrzeń chi ^ 2 jest hałaśliwa i " lepsze ”rozwiązanie tak naprawdę nic nie znaczy
  2. Zastrzeżony system utknął w lokalnym minimum i nie znajduje znalezionego globalnego minimum
  3. Oboje badacie to samo minimum globalne, ale Twoje rozwiązanie jest nieco bliżej

W efekcie proces znajdowania optymalnego rozwiązania może być bardzo trudny i istnieje wiele różnych algorytmów, których można użyć, z których każdy ma swoje zalety i wady. Jeśli masz płynnie zmieniającą się zależność między parametrami dopasowania a chi ^ 2, prawie każda metoda optymalizacji może znaleźć minimum, ale życie nie zawsze jest takie proste. Wszystko po to, aby powiedzieć, że nawet jeśli znalazłeś lepsze optimum w jednym konkretnym problemie, nie oznacza to, że oprogramowanie jest śmieciami i powinno zostać wyrzucone. W szczególności, jak znalazłeś lepsze optimum? Czy możesz ogólnie zastosować tę samą metodę do tego rodzaju problemów optymalizacyjnych? Czy zawsze będzie lepiej pasować? Jeśli odpowiedź na którekolwiek z tych dwóch ostatnich pytań brzmi „nie”, powiedziałbym, że tak naprawdę nie ma tu nic wielkiego. Najprawdopodobniej jedynym prawdziwym problemem jest nadgorliwy marketingowiec z daną firmą programistyczną, który obiecał rzeczy, których żaden system oprogramowania nie jest w stanie realistycznie dostarczyć.

Podsumowując, powiedziałbym, że zanim naprawdę zaczniesz z tym korzystać, musisz naprawdę szczegółowo zrozumieć, dlaczego ich algorytm nie znajduje najbardziej optymalnego rozwiązania, a jeśli to ma znaczenie w praktyce.

Dima Pasechnik
2017-05-17 19:10:05 UTC
view on stackexchange narkive permalink

Widziałem dobrze znane komercyjne pakiety optymalizacyjne, takie jak CPLEX, które generowały błędne wyniki pod naporem, że tak powiem - rozwiązując problemy, które można rozwiązać na papierze za pomocą tego oprogramowania, ale w praktyce wystarczająco różni się od tego, co jest testowane włączone i skierowane do.

Przez błędne rozumiem tak źle, jak tylko się da, tj. problem optymalizacji liniowej jest zgłaszany jako niewykonalny, podczas gdy żądanie wytworzenia certyfikatu niewykonalności kończy się niepowodzeniem (i jeśli zostanie rozwiązany z większą precyzją na wolniejszy open source, problem okazuje się możliwy).

Z pewnością wcześniej czy później błąd, jeśli wystąpił błąd, zostanie znaleziony i ujawniony, tak działa nauka. Nawiasem mówiąc, w ostatnich kilku latach publikowałem artykuły, w których między innymi poprawiam błędy w monografii i podręcznikach (sic!); Odpowiednie błędne artykuły zostały opublikowane ponad 20 lat temu. No cóż.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...