zadanie domowe.

Transkrypt

zadanie domowe.
Klasyfikacja przy pomocy wielowarstwowej sieci perceptronowej
Przedmiot: Sieci neuronowe i ich zastosowania
W ramach zajęć laboratoryjnych stosowaliśmy sieć perceptronową do aproksymacji funkcji. W przypadku
zadania domowego rozważmy omawianą metodę do rozwiązywania zadania związanego z klasyfikacją.
Przykładem może być rozpoznawanie mówcy, na podstawie jego plików dźwiękowych. Jak rozwiązać
przedstawiony problem?
1. Przygotowanie zbiorów treningowych oraz testujących.
• Dla wybranej grupy osób (myślę, że na początek nie większej od pięciu) należy nagrać próbki
głosowe (wypowiadaną ustaloną sekwencję słów – taką samą dla każdej osoby – nie dłuższą od
1 min.). Dla każdej osoby przykładowo po cztery pliki przeznaczone do treningu i powiedzmy
jeden testujący.
• Jeżeli nagraliśmy pliki w formacie windows .wav, w celu wczytania ich do Matlaba możemy
skorzystać z funkcji wavread, Y=WAVREAD(FILE), przykładowo pierwszy plik treningowy dla
mówcy pierwszego
s11tr = wavread(’s11tr.wav’).
• W celu konwersji do wektora cech akustycznych (akceptowalnej formy przez wybraną metodę
klasyfikacji, w naszym przypadku sieć neuronową) można skorzystać z algorytmu MFCC (Mel
Frequency Cepstral Coefficients). Implementacja metody dostępna wraz z całym pakietem
Voicebox http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html.
Funkcja: melcepst zwraca macierz dwunastu cech akustycznych. Przykład:
s1 = melcepst( s11tr, 8000);
• Tak uzyskane dane zapisujemy do macierzy wartości treningowych oraz testujących.
2. Organizacja sieci neuronowej. Dysponując próbkami treningowymi możemy przygotować sieć neuronową. Korzystając z informacji uzyskanych na laboratorium należy zastanowić się nad topologią
sieci (przede wszystkim liczbą neuronów w pierwszej warstwie), funkcjami przejścia oraz liczbą
iteracji. Przeprowadzamy trening (przyp. komenda train)
3. Analiza wyników. W celu weryfikacji nastrojonej sieci podajemy na wejście macierz cech określonego
mówcy (przyp. komenda sim). Sieć rozponała tę osobę, której wartość przeważała w odpowiedziach
sieci.
Podsumowując dotychczasowe zajęcia, proszę dodatkowo zastanowić się, czy przedstawiony problem może
zostać rozwiązany przy pomocy sieci składającej sie z perceptronów binarnych. Jeżeli tak, to w rozwiązaniu – w celu przyspieszenia obliczeń – proponuję zastosować własną implementację strojenia jednostki
perceptronowej. Chodzi oczywiście o obliczenia wykonane na całych macierzach wag, biasów. Niewielkim
nakładem programistycznym można znacznie zyskać na czasie :).
1