From b9b2ef45d17bbed2dd3ab73b08866db125b22565 Mon Sep 17 00:00:00 2001 From: Friese Date: Tue, 15 May 2018 11:53:18 +0200 Subject: [PATCH] I live again --- Aufgabenstellung.md | 130 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 Aufgabenstellung.md diff --git a/Aufgabenstellung.md b/Aufgabenstellung.md new file mode 100644 index 0000000..feb297f --- /dev/null +++ b/Aufgabenstellung.md @@ -0,0 +1,130 @@ +# Aufgabenstellung + +Aus der PDF entnommen mit der Auswahl an PVL-Themen + +### "Vergleich von linearen Prädiktionsstrategien (NLMSvariants)" + +Das Voraussagen von Signalwerten ist ein Schlüsselelement in modernen Kompressionssystemen. +Aber auch in anderen Anwendungsgebieten ist die Prädiktion von Ereignissen erforderlich. +Aufgabe ist es, ein Matlab/SciLab/Octave/C-Programm zu schreiben, das Varianten eines bestimmten +Prädiktionsverfahrens miteinander vergleicht. +Adaptive Prädiktionsfilter passen sich der Charakteristik der Signale an und gehören somit in den +Bereich des maschinellen Lernens. So genannte Least-Mean-Square-Filter (LMS) sind adaptive +Filter mit einer vergleichsweisen geringen Komplexität. Im Wesentlichen werden M vorangegangene +Signalwerte gewichtet überlagert, um einen Schätzwert für die aktuelle Position zu generieren. + +Xˉ [𝑛] = �𝑎𝑗[𝑛] ∙ 𝑥[𝑛 − 𝑗] + +Der Prädiktionsfehler lautet: e[𝑛] = 𝑥[𝑛] − 𝑥'[𝑛]. Um die Prädiktionsfehlerenergie zu minimieren +müssen die Filterkoeffizienten nachgeführt (aktualisiert) werden + +𝑎𝑗[𝑛 + 1] = 𝑎𝑗[𝑛] + 𝜇 * 𝑒[𝑛] * 𝑥[𝑛−𝑗] + +||𝐱[𝑛]|| +2 mit ||𝐱[𝑛]|| +2 = ∑ (𝑥[𝑛 − 𝑗]) 𝑀 2 +𝑗=1 + +während 0 < 𝜇 ≤ 1 die Lernrate ist. +Leider funktioniert das nur gut, wenn der Mittelwert von x[n] gleich Null ist. Für Bilder und auch +teilweise für Sprachsignale ist das nicht gegeben. Als Lösung kommen drei Varianten in Frage, +welche die obigen Formeln leicht abwandeln: + +1. lokalen Mittelwert abziehen + + 𝑥 +�[𝑛] = 𝑥̅[𝑛] + ∑ 𝑎𝑗[𝑛] ∙ (𝑥[𝑛 − 𝑗] − 𝑥̅[𝑛]) 𝑀 +𝑗=1 mit 𝑥̅[𝑛] = 1 +𝑀 ∑ 𝑥[𝑛 − 𝑗] 𝑀 +𝑗=1 +und + 𝑎𝑗[𝑛 + 1] = 𝑎𝑗[𝑛] + 𝜇 ∙ 𝑒[𝑛] ∙ +𝑥[𝑛−𝑗]−𝑥̅[𝑛] +||𝐱[𝑛]|| +2 mit ||𝐱[𝑛]|| +2 = ∑ (𝑥[𝑛 − 𝑗] − 𝑥�[𝑛]) 𝑀 2 +𝑗=1 + +2. Bezug auf direkten Vorgänger nehmen + +𝑥 +�[𝑛] = 𝑥[𝑛 − 1] + ∑ 𝑎𝑗[𝑛] ∙ (𝑥[𝑛 − 1] − 𝑥[𝑛 − 𝑗 − 1]) 𝑀 +𝑗=1 +und +𝑎𝑗[𝑛 + 1] = 𝑎𝑗[𝑛] + 𝜇 ∙ 𝑒[𝑛] ∙ +𝑥[𝑛−1]−𝑥[𝑛−𝑗−1] +||𝐱[𝑛]|| +2 mit ||𝐱[𝑛]|| +2 = ∑ (𝑥[𝑛 − 1] − 𝑥[𝑛 − 𝑗 − 1]) 𝑀 2 +𝑗=1 + +3. differentiellen Bezug auf Vorgänger nehmen + +𝑥 +�[𝑛] = 𝑥[𝑛 − 1] + ∑ 𝑎𝑗[𝑛] ∙ (𝑥[𝑛 − 𝑗] − 𝑥[𝑛 − 𝑗 − 1]) 𝑀 +𝑗=1 +und +𝑎𝑗[𝑛 + 1] = 𝑎𝑗[𝑛] + 𝜇 ∙ 𝑒[𝑛] ∙ +𝑥[𝑛−𝑗]−𝑥[𝑛−𝑗−1] +||𝐱[𝑛]|| +2 mit ||𝐱[𝑛]|| +2 = ∑ (𝑥[𝑛 − 𝑗] − 𝑥[𝑛 − 𝑗 − 1]) 𝑀 2 +𝑗=1 + +Das originale Verfahren und die drei Varianten sind zu implementieren und mit verschiedenen +Testsignalen (synthetisierte und reale, N>= 500) und verschiedene M zu prüfen. Als Gütekriterium +ist die mittlere Energie des Schätzfehlers 𝐸 = 1 +𝑁 + +� ∑ (𝑒[𝑛]) 𝑁 2 𝑛=1 heranzuziehen. Bei selbstgenerierten +Signalen könnte auch die Konvergenz der Filterkoeffizienten zu den richtigen Werten +untersucht werden. + +Weitere Unterstützung wird bei Bedarf gegeben. Alle Untersuchungen sind schriftlich zu dokumentieren. +Neben der schriftlichen Arbeit sind alle Quellen (Programmcode, Texte, Testsignale) +und Tools abzugeben, damit eine Reproduktion der Ergebnisse möglich ist. + +Teilaufgaben: +* Koordination +* Recherche +* Programmierung +* Dokumentation (Grundlagen, Methode, Änderungen am Quellcode, Kompressionsergebnisse) + + +## E-Mail Ergänzung zur Aufgabenstellung: + +Sehr geehrte Studierende, + +danke für die Wahl des Themas. + +Zur Themenstellung möchte ich Folgendes ergänzen: +Die drei Varianten sind jeweils in einer Schleife über alle +verfügbaren Signalwerte abzuarbeiten, wobei typischer Weise mit +Filterkoeffizienten a_j = 0 angefangen wird. +Abweichend davon ist es evtl. sinnvoll, a_1=1 zusetzen. + +Testsignale können Sie sich selbst generieren, wobei wir uns +hierüber noch abstimmen sollten. +Man könnte verschiedene Zeilen aus verschiedenen Bildern nehmen, +Sprachsignale aufzeichnen oder Signale synthetisch generieren: + +z.B. +x[0] = x[1] = x[2] =..= x[M] = 100; +for n = M+1: N-1 + x[n] = a_1 * x[n-1] + a_2 * x[n-2] + ..+ a_M *x[n-M] + +randn(1,1)*5; +end + +Die Koeffizienten des LMS-Filters müssten dann gegen die bei der +Synthese verwendeten Koeffizienten konvergieren +Achtung: bei Matlab beginnt das Indizieren mit 1 (statt 0). + +Bitte fangen Sie zeitnah an. +Falls es Unklarheiten zum Ablauf oder der Verfahrensweise gibt, +bitte per Email bei mir melden. +Da es gewisse Freiheitsgrade in der Bearbeitung gibt, wäre es sehr +sinnvoll, wenn Sie mir regelmäßig über den Stand der PVL berichten +und wir uns ggf. austauschen können. + +Mit freundlichen Grüßen +T.Strutz