Robię wstępne przetwarzanie danych i zamierzam później zbudować Convonets na moich danych.
Moje pytanie brzmi: Powiedzmy, że mam całkowitą liczbę zestawów danych ze 100 obrazami, obliczałem średnią dla każdego ze 100 obrazów, a następnie odejmowałem je od każdego z obrazów, a następnie dzieliłem to na ciąg i zestaw sprawdzania poprawności, i robię to samo kroki do przetworzenia na danym zestawie testowym, ale wygląda na to, że nie jest to poprawny sposób, zgodnie z tym linkiem: http://cs231n.github.io/neural-networks-2/#datapre
„ Często występująca pułapka . Ważnym punktem na temat przetwarzania wstępnego jest to, że wszelkie statystyki przetwarzania wstępnego (np. Średnia danych) muszą być obliczone tylko na podstawie danych treningowych, a następnie zastosowane do danych walidacyjnych / testowych. Np. Obliczenie średniej i odjęcie jej od każdy obraz w całym zestawie danych, a następnie podzielenie danych na podziały pociąg / wartość / test byłoby błędem, zamiast tego średnią należy obliczyć tylko na podstawie danych treningowych, a następnie odjąć równomiernie od wszystkich podziałów (pociąg / wartość / test). „
Zgaduję, że autor mówi, że nie obliczaj średniej i nie odejmuj jej w obrębie każdego obrazu, ale oblicz średnią ze zbioru obrazów (tj. (Obraz1 + ... + obraz100) / 100) i odejmij średnią od każdy obraz.
Nie do końca rozumiem, czy ktoś może wyjaśnić? a także ewentualnie wyjaśnić, dlaczego to, co robiłem, jest złe (jeśli rzeczywiście jest złe).
Odpowiedzi:
Załóżmy, że masz w sumie 100 zdjęć; 90 to dane treningowe, a 10 to dane testowe.
Autorzy poprawnie twierdzą, że użycie całej próbki 100 obrazów do obliczenia próbki oznacza, że jest błędny. Wynika to z faktu, że w tym przypadku doszło do wycieku informacji. Informacje z elementów „nieobjętych próbą” zostaną przeniesione do zestawu treningowego. W szczególności do oszacowania , jeśli użyjesz 100 zamiast 90 obrazów, pozwalasz, aby twój zestaw treningowy miał bardziej świadomy środek, niż powinien. W rezultacie Twój błąd treningowy byłby potencjalnie niższy niż powinien.μ^ μ^
Oszacowany jest powszechny podczas całej procedury szkolenia / walidacji / testowania. Ten sam służy do wyśrodkowania wszystkich danych. (Wspominam o tym później, ponieważ mam wrażenie, że wykorzystujesz średnią każdego osobnego obrazu do wyśrodkowania tego obrazu).μ^ μ^
źródło
A
wydajność modelu, jeśliA
nie uogólni dobrze w różnym wieku. Jeśli obliczymy średni wiek w całym zestawie danych, otrzymamy bardziej reprezentatywny średni wiek. Jeśli teraz użyjemy tej bezstronnej średniej wieku w modeluA
, prawdopodobnie uzyskamy lepszą wydajność niż wcześniej, mimo żeA
nie uogólniamy dobrze w różnym wieku.)