NLMSvariants/Aufgabenstellung.md

4.7 KiB
Raw Blame History

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ˉ [𝑛] = <20>𝑎𝑗[𝑛] ∙ 𝑥[𝑛 𝑗]

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

𝑥 <0A>[𝑛] = 𝑥̅[𝑛] + ∑ 𝑎𝑗[𝑛] ∙ (𝑥[𝑛 𝑗] 𝑥̅[𝑛]) 𝑀 𝑗=1 mit 𝑥̅[𝑛] = 1 𝑀𝑥[𝑛 𝑗] 𝑀 𝑗=1 und 𝑎𝑗[𝑛 + 1] = 𝑎𝑗[𝑛] + 𝜇 ∙ 𝑒[𝑛] ∙ 𝑥[𝑛𝑗]−𝑥̅[𝑛] ||𝐱[𝑛]|| 2 mit ||𝐱[𝑛]|| 2 = ∑ (𝑥[𝑛 𝑗] 𝑥<>[𝑛]) 𝑀 2 𝑗=1

  1. Bezug auf direkten Vorgänger nehmen

𝑥 <0A>[𝑛] = 𝑥[𝑛 1] + ∑ 𝑎𝑗[𝑛] ∙ (𝑥[𝑛 1] 𝑥[𝑛 𝑗 1]) 𝑀 𝑗=1 und 𝑎𝑗[𝑛 + 1] = 𝑎𝑗[𝑛] + 𝜇 ∙ 𝑒[𝑛] ∙ 𝑥[𝑛1]𝑥[𝑛𝑗1] ||𝐱[𝑛]|| 2 mit ||𝐱[𝑛]|| 2 = ∑ (𝑥[𝑛 1] 𝑥[𝑛 𝑗 1]) 𝑀 2 𝑗=1

  1. differentiellen Bezug auf Vorgänger nehmen

𝑥 <0A>[𝑛] = 𝑥[𝑛 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 𝑁

<EFBFBD> ∑ (𝑒[𝑛]) 𝑁 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

Test: V=\pi \cdot r^{2} \cdot h