Planowanie projektów z zakresu uczenia maszynowego różni się od planowania typowych projektów inżynierii oprogramowania. Projekty dotyczące systemów uczących się są nieliniowe i mają różny stopień niepewności. Wymagają one podejścia iteracyjnego i eksperymentalnego.
Niepewność projektu
Planowanie na wczesnym etapie może być trudne, ponieważ najlepsze podejście nie jest zwykle oczywiste na początku projektu. Ta niepewność utrudnia szacowanie harmonogramów.
Ostatni konkurs Kaggle pokazuje niepewność związaną z projektami systemów uczących się. W pierwszych tygodniach trwania konkursu wzięło w nim udział 350 zespołów. Najlepsze zespoły zwiększyły jakość prognozy referencyjnej z 35% do 65%. W ciągu kolejnych 2 tygodni liczba zespołów pracujących nad tym problemem wzrosła z 350 do 1400. Jednak najlepszy model osiągnął jakość prognozy na poziomie zaledwie 68%.
Rysunek 3 przedstawia niepewność w rozwoju systemów ML, pokazując znaczny wzrost nakładu pracy, ale tylko minimalne zwiększenie jakości modelu.
Rysunek 3. W ciągu 2 tygodni liczba zespołów pracujących nad problemem wzrosła 4-krotnie, ale jakość modelu pozostała prawie taka sama, co pokazuje, jak trudno jest oszacować nakład pracy związany z rozwiązaniem opartym na uczeniu maszynowym.
Inaczej mówiąc, ponad tysiąc zespołów, z których każdy eksperymentował z różnymi przekształceniami danych, architekturami i hiperparametrami, osiągnęło model o jakości prognozy wynoszącej 68%.
Przykład z branży obrazuje nieliniowy charakter projektów z zakresu uczenia maszynowego, w których przypadku wyniki nie są proporcjonalne do danych wejściowych. Dwa zespoły potrzebowały kilku miesięcy, aby wytrenować model o jakości prognozy na poziomie 90%. Jednak przygotowanie modelu do wdrożenia z jakością przewidywania na poziomie 99, 9% zajęło kilku zespołom ponad 5 lat.
Te przykłady pokazują, że wdrożenie gotowych systemów ML to proces eksploracyjny, wymagający zarówno podejścia naukowego, jak i inżynieryjnego.
Podejście eksperymentalne
W większości przypadków tworzenie rozwiązań opartych na ML przypomina przeprowadzanie eksperymentów, a nie tradycyjne tworzenie oprogramowania. ML wymaga testowania różnych cech, wypróbowywania wielu architektur i odpowiedniego dostrajania hiperparametrów. Z definicji nie ma gwarancji, że eksperymenty zakończą się sukcesem. Dlatego najlepiej zaplanować to za pomocą ram eksperymentalnych.
Przyjrzyjmy się typowemu planowi inżynieryjnemu, aby zobaczyć, czym różni się on od planu projektu z wykorzystaniem uczenia maszynowego.
Planowanie projektów inżynierii oprogramowania
W typowym planie inżynierii oprogramowania określasz wymagania, zarysowujesz komponenty, szacujesz nakład pracy i planujesz pracę. istnieje wyraźnie określona ścieżka do rozwiązania; Na przykład inżynierowie często wiedzą z dużą pewnością, jakie zadania muszą wykonać, aby stworzyć aplikację zgodną ze specyfikacją projektu.
Gdy przewidują czas potrzebny na wykonanie zadania, mogą oszacować pracę na podstawie podobnych projektów. Chociaż zawsze pojawiają się problemy, takie jak nieznane zależności lub zmieniające się wymagania, które mogą utrudniać szacowanie, zwykle istnieje jasna ścieżka do rozwiązania.
Z kolei projekty dotyczące uczenia się maszynowego zwykle nie mają jednej jasnej ścieżki do sukcesu.
Planowanie projektów z wykorzystaniem AI
W przypadku większości projektów wykorzystujących uczenie maszynowe najlepsze rozwiązanie znajdziesz, eksperymentując z różnymi podejściami metodą prób i błędów. Zanim spróbujesz rozwiązać problem, zwykle nie wiesz, jaka jest optymalna metoda jego rozwiązania. Na przykład architektura optymalnego rozwiązania może być prostym modelem liniowym, siecią neuronową lub drzewem decyzyjnym. Najlepsze rozwiązanie można znaleźć, testując wszystkie metody.
Ta niejednoznaczność utrudnia planowanie. Jak już wspomnieliśmy, trudno przewidzieć nakład pracy, jaki będzie wymagać projekt uczenia maszynowego. Dopiero próba rozwiązania problemu pozwoli Ci lepiej oszacować, ile czasu i zasobów może być potrzebnych do znalezienia rozwiązania.
Oto zalecane strategie planowania pracy związanej z ML:
Zaplanuj czas pracy. Ustal jasne ramy czasowe na wykonanie zadań lub wypróbowanie konkretnego rozwiązania. Możesz na przykład przeznaczyć 2 tygodnie na sprawdzenie, czy możesz uzyskać dostęp do odpowiednich danych. Jeśli uda Ci się uzyskać dane, możesz przeznaczyć jeszcze 2 tygodnie na sprawdzenie, czy prosty model wskazuje, że rozwiązanie oparte na ML jest możliwe do zastosowania. Jeśli prosty model zawiedzie, możesz przeznaczyć jeszcze 2 tygodnie na wypróbowanie sieci neuronowej. Pod koniec każdego okresu będziesz mieć więcej informacji, które pomogą Ci określić, czy warto nadal poświęcać zasoby na rozwiązanie problemu.
Zawęź zakres wymagań projektu. Jeśli rozwiązanie oparte na ML wydaje się obiecujące, ale nie jest kluczową funkcją Twojego produktu lub usługi, ogranicz wymagania. Na przykład podczas planowania pracy na następny kwartał możesz chcieć wypróbować bardzo proste rozwiązanie. W kolejnych kwartałach możesz planować stopniowe ulepszanie rozwiązania. Wdrożenie rozwiązania opartego na AI poprzez wprowadzanie stopniowych ulepszeń w dłuższym okresie czasu to sposób, w jaki wiele zespołów uzyskuje skuteczne rozwiązania oparte na AI.
Projekt dla stażysty lub nowego pracownika. Poproś stażystę lub nowo zatrudnionego pracownika o pomoc w rozwiązaniu problemu z wykorzystaniem uczenia maszynowego. To dobry sposób na rozpoczęcie eksploracji nowej dziedziny z nieznanymi wynikami. Po zakończeniu projektu będziesz mieć lepsze pojęcie o tym, ile wysiłku wymagać będzie rozwiązanie oparte na ML i jakie podejścia mogą być obiecujące, a które zasoby należy wykorzystać w innym miejscu.
W przypadku każdej strategii warto szybko się uczyć na błędach. Najpierw wypróbuj podejścia o najniższym koszcie, ale potencjalnie najwyższym zysku. Jeśli to podejście zadziała, oznacza to, że znalazłeś dobre rozwiązanie. Jeśli nie, nie zmarnujesz dużo czasu i zasobów.
W miarę zdobywania doświadczenia i prowadzenia eksperymentów zespoły będą mogły lepiej oszacować nakład pracy wymagany przez eksperyment, co ułatwi planowanie. Wynik eksperymentu jest jednak prawie zawsze nieznany, więc nie można z wyprzedzeniem oszacować liczby eksperymentów potrzebnych do znalezienia najlepszego rozwiązania.
Planowanie metod z uwzględnieniem podejścia eksperymentalnego pomaga zespołowi osiągnąć sukces. Gdy stosowane podejście prowadzi do ślepej uliczki, zamiast zniechęcać, członkowie zespołu wiedzą, że jest to część procesu znajdowania rozwiązania z wykorzystaniem ML. Co ważniejsze, omawiając z zainteresowanymi stronami nieodłączną od rozwoju systemów ML niepewność, możesz sformułować bardziej realistyczne oczekiwania.
Sprawdź swoją wiedzę
Pamiętaj
Nauczenie się planowania wielu metod uczenia maszynowego z użyciem metody probabilistycznej wymaga czasu i doświadczenia. Plan projektu może wymagać częstych aktualizacji. Możesz go traktować jako dynamiczny dokument, który stale się rozwija, gdy Twój zespół eksperymentuje z różnymi podejściami. Skupienie się na tych kluczowych kwestiach zwiększy Twoje szanse na sukces:
- Oszacuj koszty i szanse na powodzenie każdego podejścia.
- Wypróbuj różne podejścia.
- Określ wnioski z doświadczenia i próbuj ulepszać system po trochu.
- Planowanie na wypadek awarii.
Czasami wcześniejsze podejście prowadzi do przełomu. Ktoś może odkryć błąd w potoku generowania danych lub podziale na zestawy danych do trenowania i walidacji. Dzięki dobremu planowaniu i szczegółowemu dokumentowaniu zwiększasz prawdopodobieństwo znalezienia modelu, który rozwiąże Twój problem biznesowy szybciej, niż się spodziewasz.