Wieloklasowa sieć neuronowa
Ważne
Obsługa programu Machine Learning Studio (wersja klasyczna) zakończy się 31 sierpnia 2024 r. Zalecamy przejście do usługi Azure Machine Learning przed tym terminem.
Od 1 grudnia 2021 r. nie będzie można tworzyć nowych zasobów programu Machine Learning Studio (wersja klasyczna). Do 31 sierpnia 2024 r. można będzie nadal korzystać z istniejących zasobów programu Machine Learning Studio (wersja klasyczna).
- Zobacz informacje na temat przenoszenia projektów uczenia maszynowego z programu ML Studio (wersja klasyczna) do Azure Machine Learning.
- Dowiedz się więcej o Azure Machine Learning.
Dokumentacja programu ML Studio (wersja klasyczna) jest wycofywana i może nie być aktualizowana w przyszłości.
Tworzy model klasyfikacji wieloklasowej przy użyciu algorytmu sieci neuronowej
Kategoria: Machine Learning/ Inicjowanie modelu/klasyfikacji
Uwaga
Dotyczy: tylko Machine Learning Studio (klasyczne)
Podobne moduły przeciągania i upuszczania są dostępne w Azure Machine Learning projektanta.
Omówienie modułu
W tym artykule opisano sposób użycia modułu wieloklasowej sieci neuronowej w programie Machine Learning Studio (wersja klasyczna) do utworzenia modelu sieci neuronowej, który może służyć do przewidywania obiektu docelowego, który ma wiele wartości.
Na przykład sieci neuronowe tego rodzaju mogą być używane w złożonych zadaniach przetwarzania obrazów, takich jak rozpoznawanie cyfr lub liter, klasyfikacja dokumentów i rozpoznawanie wzorców.
Klasyfikacja przy użyciu sieci neuronowych jest metodą uczenia nadzorowanego i dlatego wymaga otagowanego zestawu danych, który zawiera kolumnę etykiety.
Model można wytszkolić, podając model i oznakowany zestaw danych jako dane wejściowe funkcji Train Model (Trenowanie modelu) lub Tune Model Hyperparameters (Dostrajanie hiperparametrów modelu). Wytrenowany model może następnie służyć do przewidywania wartości dla nowych przykładów wejściowych.
Więcej informacji na temat sieci neuronowych
Sieć neuronowa to zestaw połączonych warstw. Dane wejściowe są pierwszą warstwą i są połączone z warstwą wyjściową za pomocą grafu acyklicznego złożonego z ważonych krawędzi i węzłów.
Między warstwami wejściowymi i wyjściowych można wstawić wiele ukrytych warstw. Większość zadań predykcyjnych można łatwo wykonać przy użyciu tylko jednej lub kilku ukrytych warstw. Jednak ostatnie badania wykazały, że głębokie sieci neuronowe (DNN) z wieloma warstwami mogą być bardzo skuteczne w złożonych zadaniach, takich jak rozpoznawanie obrazów lub mowy. Kolejne warstwy są używane do modelowania rosnących poziomów głębokości semantycznej.
Relacja między danymi wejściowymi i wyjściowych jest dzielna na podstawie trenowania sieci neuronowej na danych wejściowych. Kierunek grafu przechodzi od danych wejściowych przez warstwę ukrytą i do warstwy wyjściowej. Wszystkie węzły w warstwie są połączone przez ważone krawędzie z węzłami w następnej warstwie.
Aby obliczyć dane wyjściowe sieci dla określonego wejścia, wartość jest obliczana w każdym węźle w warstwach ukrytych i w warstwie wyjściowej. Wartość jest ustawiana przez obliczenie ważonej sumy wartości węzłów z poprzedniej warstwy. Następnie do tej sumy ważonej jest stosowana funkcja aktywacji.
Jak skonfigurować wieloklasową sieć neuronową
Dodaj moduł MultiClass Neural Network do eksperymentu w programie Studio (wersja klasyczna). Ten moduł można znaleźć w Machine Learning, Initialize, w kategorii Klasyfikacja.
Utwórz tryb szkoleniowy: użyj tej opcji, aby określić sposób trenowania modelu:
Pojedynczy parametr: wybierz tę opcję, jeśli wiesz już, jak chcesz skonfigurować model.
Zakres parametrów: wybierz tę opcję, jeśli nie masz pewności co do najlepszych parametrów i chcesz użyć funkcji czyszczenie parametrów. Następnie określ zakres wartości i użyj modułu Dostrajanie hiperparametrów modelu, aby iterować po kombinacjach i znaleźć optymalną konfigurację.
Specyfikacja warstwy ukrytej: wybierz typ architektury sieci do utworzenia.
Przypadek w pełni połączony: wybierz tę opcję, aby utworzyć model przy użyciu domyślnej architektury sieci neuronowej. W przypadku wieloklasowych modeli sieci neuronowych wartości domyślne są następujące:
- Jedna ukryta warstwa
- Warstwa danych wyjściowych jest w pełni połączona z ukrytą warstwą.
- Warstwa ukryta jest w pełni połączona z warstwą wejściową.
- Liczba węzłów w warstwie wejściowej zależy od liczby cech w danych szkoleniowych.
- Użytkownik może ustawić liczbę węzłów w warstwie ukrytej. Wartość domyślna to 100.
- Liczba węzłów w warstwie wyjściowej zależy od liczby klas.
Skrypt definicji niestandardowej. Wybierz tę opcję, aby utworzyć niestandardową architekturę sieci neuronowej przy użyciu języka Net#. Można zdefiniować liczbę ukrytych warstw, ich połączenia i opcje zaawansowane, takie jak określanie mapowań między warstwami. Aby uzyskać wprowadzenie do języka Net#, zobacz więcej informacji o net# w dalszej części tego tematu.
Definicja sieci neuronowej: jeśli wybrano opcję architektury niestandardowej, wpisz lub wklej instrukcje napisane w języku Net# za pomocą pola tekstowego. Aby uzyskać dodatkowe przykłady skryptów, zobacz Przewodnik po języku specyfikacji sieci neuronowych Net#.
Liczba ukrytych węzłów: ta opcja umożliwia dostosowanie liczby ukrytych węzłów w architekturze domyślnej. Wpisz liczbę ukrytych węzłów. Wartość domyślna to jedna ukryta warstwa ze 100 węzłami.
Szybkość nauki: zdefiniuj rozmiar kroku wykonanego w każdej iteracji, przed poprawką. Większa wartość kursu nauki może spowodować, że model będzie zbieżny szybciej, ale może przekroczenie lokalnych minimów.
Liczba iteracji uczenia: określ maksymalną liczbę przypadków trenowania, po których algorytm ma przetwarzać przypadki trenowania.
Początkowa waga nauki: określ wagi węzłów na początku procesu uczenia.
Tempo: określ wagę do zastosowania podczas uczenia się do węzłów z poprzednich iteracji.
Typ normalizacji: Wybierz metodę, która ma być stosowana do normalizacji funkcji. Obsługiwane są następujące metody normalizacji:
Normalizacja ingingu: normalizuje tworzenie pojemników o równym rozmiarze, a następnie normalizuje każdą wartość w każdym pojemniku przez podzielenie przez łączną liczbę pojemników.
Normalizuj gaussański: normalizuje ponownie wartości każdej funkcji, aby mieć średnią 0 i wariancja 1. Jest to wykonywane przez obliczanie średniej i wariancji poszczególnych funkcji. Dla każdego wystąpienia wartość średnia jest odejmowana, a wynik jest dzielony przez kwadrat główny wariancji (odchylenie standardowe).
Normalizacja minimalna-maksymalna: minimalna-maksymalna normalizacja liniowo ponownie skaluje każdą funkcję do interwału [0,1].
Ponowne skalowanie do interwału [0,1] odbywa się przez przesunięcie wartości każdej funkcji tak, aby minimalna wartość była 0, a następnie podzielenie przez nową wartość maksymalną (czyli różnicę między oryginalnymi wartościami maksymalnymi i minimalnymi).
Nie normalizuj: normalizacja nie jest wykonywana.
Przykłady mieszania: wybierz tę opcję, aby mieszać przypadki między iteracjami.
W przypadku zaznaczenia tej opcji przypadki są przetwarzane dokładnie w tej samej kolejności przy każdym uruchomieniu eksperymentu.
Iniekcjator liczb losowych: wpisz wartość do użycia jako iniekcjator, jeśli chcesz zapewnić powtarzalność między przebiegami tego samego eksperymentu.
Zezwalaj na nieznane poziomy kategorii: wybierz tę opcję, aby utworzyć grupowanie dla nieznanych wartości w zestawach trenowania i walidacji. Model może być mniej precyzyjny w przypadku znanych wartości, ale zapewniać lepsze przewidywania dla nowych (nieznanych) wartości.
W przypadku zaznaczenia tej opcji model może akceptować tylko wartości zawarte w danych szkoleniowych.
Połączenie zestaw danych szkoleniowych i jeden z modułów szkoleniowych:
Jeśli ustawisz tryb Tworzenia instruktora nawartość Pojedynczy parametr, użyj funkcji Train Model (Trenowanie modelu).
Jeśli ustawisz ustawienie Utwórz tryb instruktora na wartość Zakres parametrów, użyj hiperparametrów modelu dostrajania.
Uwaga
Jeśli przekażemy zakres parametrów do funkcji Train Model, będzie używana tylko pierwsza wartość z listy zakresów parametrów.
Jeśli przekażemy pojedynczy zestaw wartości parametrów do modułu Hiperparametry modelu dostrajania, jeśli oczekuje on zakresu ustawień dla każdego parametru, zignoruje wartości i użyje wartości domyślnych dla uczących się.
W przypadku wybrania opcji Zakres parametrów i wprowadzenia pojedynczej wartości dla dowolnego parametru określona pojedyncza wartość będzie używana podczas całej czyszczenie, nawet jeśli inne parametry zmienią się w zakresie wartości.
Wyniki
Po zakończeniu szkolenia:
Aby wyświetlić podsumowanie parametrów modelu, wagi cech wyuczonych na wyniku trenowania i inne parametry sieci neuronowej, kliknij prawym przyciskiem myszy dane wyjściowe funkcji Train Model (Trenowanie modelu) lub Tune Model Hyperparameters (Dostrajanie hiperparametrów modelu) i wybierz pozycję Visualize (Wizualizacja).
Aby zapisać migawkę wytrenowany model, kliknij prawym przyciskiem myszy dane wyjściowe wytrenowany model i wybierz polecenie Zapisz jako wytrenowany model. Ten model nie jest aktualizowany w kolejnych przebiegach tego samego eksperymentu.
Aby przeprowadzić krzyżową walidację względem zestawu danych z etykietami, połącz nieprzeszkolony model z modelem krzyżowym.
Przykłady
Przykłady sposobu, w jaki używany jest ten algorytm uczenia, można znaleźć w tych przykładowych eksperymentach w Azure AI Gallery. Eksperymenty są powiązane i opisane w jednym dokumencie, który jest rozwijany od konfiguracji podstawowej do zaawansowanej:
- Przykład głębokich sieci neuronowych (część A)
- Przykład głębokich sieci neuronowych (część B)
- Przykład głębokich sieci neuronowych (część C)
- Przykład głębokich sieci neuronowych (część D)
Uwagi techniczne
Ta sekcja zawiera szczegóły implementacji, porady i odpowiedzi na często zadawane pytania.
Dostosowywanie sieci neuronowej przy użyciu skryptu
W Machine Learning Studio (klasycznej) można dostosować architekturę modelu sieci neuronowej przy użyciu języka Net#. Dostosowania obsługiwane przez język Net# obejmują:
- Określanie liczby ukrytych warstw i liczby węzłów w każdej warstwie
- Określanie mapowań między warstwami
- Definiowanie konwolucji i pakietów z udostępnianiem wag
- Wybieranie funkcji aktywacji
Model sieci neuronowej jest definiowany przez strukturę wykresu, która zawiera następujące atrybuty:
- Liczba ukrytych warstw
- Liczba węzłów w każdej warstwie ukrytej
- Jak warstwy są połączone
- Która funkcja aktywacji jest używana
- Wagi krawędzi grafu
Ważne
Użytkownik może określić ogólną strukturę wykresu oraz funkcję aktywacji. Nie można jednak określić wag krawędzi i należy je nauczyć podczas trenowania sieci neuronowej na danych wejściowych.
Ogólnie rzecz biorąc, sieć ma następujące wartości domyślne:
- Pierwsza warstwa to zawsze warstwa danych wejściowych.
- Ostatnia warstwa to zawsze warstwa danych wyjściowych.
- Liczba węzłów w warstwie wyjściowej powinna być równa liczbie klas.
Można zdefiniować dowolną liczbę warstw pośrednich: są one czasami nazywane warstwami ukrytymi, ponieważ znajdują się w modelu i nie są bezpośrednio widoczne jako punkty końcowe.
W przewodniku informacyjnym net# wyjaśniono składnię i przedstawiono przykładowe definicje sieci. Wyjaśniono w nim, jak używać języka Net# do dodawania ukrytych warstw i definiowania sposobu, w jaki różne warstwy współdziałają ze sobą.
Na przykład poniższy skrypt auto
używa słowa kluczowego , które automatycznie ustawia liczbę cech dla warstw wejściowych i wyjściowych oraz używa wartości domyślnych dla warstwy ukrytej.
input Data auto;
hidden Hidden auto from Data all;
output Result auto from Hidden all;
Aby uzyskać dodatkowe przykłady skryptów, zobacz Przewodnik po języku specyfikacji sieci neuronowych Net#.
Porada
Sieci neuronowe mogą być kosztowne obliczeniowo ze względu na wiele hiperparametrów i wprowadzenie niestandardowych topologii sieci. Mimo że w wielu przypadkach sieci neuronowe dają lepsze wyniki niż inne algorytmy, uzyskanie takich wyników może wymagać sprawiedliwego przemycania (iteracji) hiperparametrów.
Parametry modułu
Nazwa | Zakres | Typ | Domyślny | Opis |
---|---|---|---|---|
Specyfikacja warstwy ukrytej | Lista | Topologia sieci neuronowych | W pełni połączona sprawa | Określanie architektury warstwy ukrytej |
Początkowa waga uczenia | >= double. Epsilon | Float | 0.1 | Określanie wag węzłów na początku procesu uczenia |
Tempo nauki | [double. Epsilon;1.0] | Float | 0.1 | Określanie rozmiaru każdego kroku w procesie uczenia |
Tempo | [0.0;1.0] | Float | 0,0 | Określanie wagi do zastosowania podczas uczenia się do węzłów z poprzednich iteracji |
Definicja sieci neuronowej | Dowolne | Streamreader | Po wybraniu opcji Skrypt definicji niestandardowej wpisz prawidłowe wyrażenie skryptu w każdym wierszu, aby zdefiniować warstwy, węzły i zachowanie niestandardowej sieci neuronowej | |
Typ normalizacji | Lista | Metoda normalizacji | Normaliator minimalnej i maksymalnej | Wybieranie typu normalizacji do zastosowania w przypadku przykładów uczenia |
Liczba iteracji uczenia | >= 1 | Liczba całkowita | 100 | Określanie liczby iteracji podczas nauki |
Przykłady mieszania | Dowolne | Boolean | Prawda | Wybierz tę opcję, aby zmienić kolejność wystąpień między iteracjami uczenia |
Iniekt liczb losowych | Dowolne | Liczba całkowita | Określ liczbowy iniekt do użycia podczas generowania liczb losowych. Pozostaw puste, aby użyć domyślnego iniekcyju. | |
Zezwalaj na nieznane poziomy kategorii | Dowolne | Boolean | Prawda | Wskaż, czy należy utworzyć dodatkowy poziom dla nieznanych kategorii. Jeśli testowy zestaw danych zawiera kategorie, które nie są obecne w zestawie danych treningowych, są one mapowane na ten nieznany poziom. |
Dane wyjściowe
Nazwa | Typ | Opis |
---|---|---|
Nieprzetrenowany model | ILearner, interfejs | Nieprzetrenowany model klasyfikacji wieloklasowej |
Zobacz też
Klasyfikacja
Dwuklasowa sieć neuronowa
Regresja sieci neuronowej
Lista modułów A–Z