2010-05-23 14 views
7

Tworzę narzędzie do przewidywania czasu i kosztu projektów oprogramowania na podstawie danych z przeszłości. Narzędzie wykorzystuje do tego sieć neuronową i jak dotąd wyniki są obiecujące, ale myślę, że mogę znacznie więcej optymalizować, zmieniając właściwości sieci. Wydaje się, że nie ma żadnych zasad ani nawet wielu dobrych praktyk, jeśli chodzi o te ustawienia, więc jeśli ktoś z doświadczeniem mógłby mi pomóc, bardzo bym to docenił.Ustawienia sieci neuronowej do szybkiego szkolenia

Dane wejściowe składają się z szeregu liczb całkowitych, które mogą wzrosnąć tak wysoko, jak użytkownik chce jechać, ale większość z nich będzie mniejsza niż 100 000 osób. Niektóre będą miały zaledwie 1. Są to dane, takie jak liczba osób na projekcie i koszt projektu, a także szczegóły dotyczące jednostek baz danych i przypadków użycia.

Zawiera 10 wejść i 2 wyjścia (czas i koszt). Używam Resilient Propagation do szkolenia sieci. Obecnie ma: 10 węzłów wejściowych, 1 ukrytą warstwę z 5 węzłami i 2 węzły wyjściowe. Trenuję, aby uzyskać poniżej 5% wskaźnika błędu.

Algorytm musi działać na serwerze internetowym, więc włożyłem środek, aby przerwać trening, gdy wygląda na to, że nigdzie się nie wybiera. Jest to ustawione na 10 000 iteracji szkoleniowych.

Obecnie, gdy próbuję go trenować z pewnymi danymi, które są nieco zróżnicowane, ale mieszczą się w granicach tego, czego oczekujemy od użytkowników, potrzeba dużo czasu, aby trenować, osiągając limit 10.000 powtórzeń. i jeszcze raz.

Po raz pierwszy użyłem sieci neuronowej i nie wiem, czego się spodziewać. Jeśli mógłbyś podać mi jakieś wskazówki dotyczące tego, jakich ustawień powinienem używać dla sieci i dla limitu iteracji, bardzo bym to docenił.

Dziękujemy!

Odpowiedz

10

Przede wszystkim dziękuję za dostarczenie tak wielu informacji o Twojej sieci! Oto kilka wskazówek, które powinny dać ci wyraźniejszy obraz.

  • Musisz znormalizować swoje dane wejściowe. Jeśli jeden węzeł zobaczy średnią wartość 100 000, a następną tylko 0,5, nie zobaczysz równego wpływu z dwóch wejść. Dlatego musisz je znormalizować.
  • Tylko 5 ukrytych neuronów dla 10 węzłów wejściowych? Pamiętam, że czytałem gdzieś, że potrzebujesz co najmniej podwójnej liczby wejść; spróbuj 20+ ukrytych neuronów. Zapewni to modelowi sieci neuronowej zdolność do opracowania bardziej złożonego modelu. Jednak zbyt wiele neuronów i twoja sieć zapamięta zestaw danych treningowych.
  • Odporna na przeciąganie wsteczna metoda jest dobra. Pamiętaj tylko, że istnieją inne algorytmy treningowe, takie jak Levenberg-Marquardt.
  • Ile masz zestawów treningowych? Sieci neuronowe zwykle potrzebują dużego zestawu danych, aby dobrze przygotować przydatne podpowiedzi.
  • Rozważ dodanie współczynnika pędu do algorytmu treningu siłowego, aby przyspieszyć działanie, jeśli jeszcze tego nie zrobiłeś.
  • Szkolenie online wydaje się być lepszym narzędziem do generowania prognoz niż szkolenie wsadowe. Dawne wagi aktualizacji po uruchomieniu każdego zestawu treningowego za pośrednictwem sieci, a drugi aktualizuje sieć po przejściu wszystkich zestaw danych. To Twoja decyzja.
  • Czy Twoje dane są dyskretne lub ciągłe? Sieci neuronowe radzą sobie lepiej z 0 s i 1 s niż z funkcjami ciągłymi. Jeśli jest to pierwsze, polecam użycie funkcji aktywacji esicy. Kombinacja funkcji aktywacji dla warstw ukrytych i wyjściowych ma tendencję do wykonywania dobrej pracy z ciągle zmieniającymi się danymi.
  • Potrzebujesz kolejnej ukrytej warstwy? Może to pomóc, jeśli Twoja sieć zajmuje się złożonym mapowaniem powierzchni wejścia-wyjścia.
+0

Dzięki za wszystkie informacje! 1. Myślałem o normalizacji wejść, ale nie wiem jak to zrobić, gdy wartość nie ma maksimum, a niektóre wartości mogą się tak bardzo różnić. 2. Próbowałem z 20 ukrytymi neuronami i dla niektórych danych trwało ponad 5 godzin zamiast sekund. Wyglądało na to, że ponad 10 nie było dobrze. 4. Liczba zestawów danych zależy od liczby użytkowników. Używamy około 5. 5. Używamy szkieletu sieci neuronowej o nazwie Encog, przyjrzę się zmianie pędu, ale nie wiem Jeśli jest to możliwe. – danpalmer

+0

6. Ponownie, nie wiem, w jaki sposób ramy zajmują się szkoleniami online, zajrzę się tym. 7. Dane są ciągłe i ustawiłem Linearne aktywacje we wszystkim, ponieważ wyobrażam sobie, że wyniki powinny się różnić w zależności od wyników. 8. Podobnie jak w punkcie 2, stwierdziłem, że przy dwóch warstwach uderzał on w mój nałożony limit o wiele więcej i zabierał więcej czasu na bieganie. – danpalmer

+0

Lol. Powinienem też być w łóżku, jutro w College. Dodałem trochę normalizacji. Nie jest świetny, ale wszystkie wartości zestawu danych będą zawierać się w przedziale od 0 do 1, a prognozy nie będą dużo wyższe. Z jednej strony zwiększyłem prędkość treningu o 18 000%. Będę kontynuował testowanie i spróbuję wprowadzić inne środki, ale na razie jest to świetny wynik. Bardzo ci dziękuje za pomoc! – danpalmer

Powiązane problemy