DE102022124546A1 - Produktautokodierer für eine Fehlerkorrektur mittels Unterstufenverarbeitung - Google Patents

Produktautokodierer für eine Fehlerkorrektur mittels Unterstufenverarbeitung Download PDF

Info

Publication number
DE102022124546A1
DE102022124546A1 DE102022124546.2A DE102022124546A DE102022124546A1 DE 102022124546 A1 DE102022124546 A1 DE 102022124546A1 DE 102022124546 A DE102022124546 A DE 102022124546A DE 102022124546 A1 DE102022124546 A1 DE 102022124546A1
Authority
DE
Germany
Prior art keywords
neural
stages
parameters
decoding
decoder
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102022124546.2A
Other languages
English (en)
Inventor
Mohammad Vahid Jamali
Hamid Saber
Homayoon Hatami
Jung Hyun Bae
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE102022124546A1 publication Critical patent/DE102022124546A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2909Product codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6561Parallelized implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Neurology (AREA)
  • Error Detection And Correction (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Eine Verarbeitungsschaltung implementiert Folgendes: einen Kodierer, der konfiguriert ist: k Symbole von ursprünglichen Daten einem neuronalen Produktkodierer zuzuführen, der M neuronale Kodierungsstufen aufweist, wobei eine j-te neuronale Kodierungsstufe ein j-tes neuronales Netzwerk aufweist, das durch j-te Parameter konfiguriert ist, um einen (nj,kj)-Fehlerkorrekturcode umzusetzen, wobei njein Faktor von n ist und kjein Faktor von k ist; und n Symbole auszugeben, welche die k Symbole von ursprünglichen Daten darstellen, die durch einen Fehlerkorrekturcode kodiert sind; oder einen Dekodierer, der konfiguriert ist, n Symbole einer empfangenen Nachricht einem neuronalen Produktdekodierer zuzuführen, der neuronale Dekodierungsstufen aufweist, die in IPipeline-Stufen gruppiert werden, wobei eine i-te Pipeline-Stufe des neuronalen Produktdekodierers M neuronale Dekodierungsstufen aufweist, eine j-te neuronale Dekodierungsstufe ein j-tes neuronales Netzwerk aufweist, das durch j-te Parameter konfiguriert ist, um einen (nj,kj)-ECC umzusetzen; und k Symbole auszugeben, die aus den n Symbolen der empfangenen Nachricht dekodiert sind.

Description

  • Querverweis auf ähnliche Anmeldungen
  • Diese Anmeldung beansprucht die Priorität und den Vorteil der am 4. Oktober 2021 beim Patent- und Markenamt der Vereinigten Staaten eingereichten vorläufigen U.S.-Patentanmeldung Nr. 63/252027, deren Offenbarung durch Verweis hierin aufgenommen ist.
  • Gebiet
  • Aspekte von Ausführungsformen der vorliegenden Offenbarung beziehen sich auf Kanalkodierer und -dekodierer, die unter Verwendung von trainierten neuronalen Netzwerken umgesetzt werden.
  • Hintergrund
  • Kanalkodierer und -dekodierer verbessern die Zuverlässigkeit von Kommunikationssystemen, wenn Daten über einen verrauschten Kommunikationskanal gesendet und empfangen werden. Im Allgemeinen nimmt ein Kodierer, der einen Fehlerkorrekturcode (oder Fehlerkorrekturcode ECC) umsetzt, eine ursprüngliche Nachricht als Eingabe und erzeugt eine kodierte Nachricht, wobei die kodierte Nachricht einige zusätzliche Datenbits im Vergleich zu der ursprünglichen Nachricht aufweist (z.B. ist die kodierte Nachricht länger als die ursprüngliche Nachricht). Diese zusätzlichen Datenbits stellen eine Redundanz derart bereit, dass wenn die kodierte Nachricht zwischen einer Übertragung von einem Kodierer und einem Empfangen an einem Dekodierer beschädigt oder anderweitig modifiziert wird, der Dekodierer die zusätzlichen Daten verwenden kann, um die ursprüngliche Nachricht wiederherzustellen, innerhalb einiger Beschränkungen bezüglich der Anzahl an Fehlern, die in Übereinstimmung mit dem ECC korrigiert werden können, der auf die ursprüngliche Nachricht angewandt wird. Beispiele für klassische Fehlerkorrekturcodes enthalten Reed-Solomon-Codes, Turbocodes, Low-Density-Parity-Check(LDPC)-Codes und Polar-Codes.
  • Die im Abschnitt „Hintergrund“ offenbarten obigen Informationen dienen lediglich dem besseren Verständnis der vorliegenden Offenbarung und können somit Informationen enthalten, die nicht den Stand der Technik ausbilden, der einem Fachmann bereits bekannt ist.
  • Kurzfassung
  • Aspekte von Ausführungsformen der vorliegenden Offenbarung beziehen sich auf Systeme und Verfahren zum Umsetzen von Kanalkodieren und Kanaldekodierern unter Verwendung von neuronalen Netzwerken und auf Systeme und Verfahren zum Trainieren von neuronalen Netzwerken zum Umsetzen solcher Kanalkodierer und Kanaldekodierer.
  • Nach einer Ausführungsform der vorliegenden Offenbarung setzt eine Verarbeitungsschaltung einen Kodierer für einen (n,k)-Fehlerkorrekturcode um, wobei der Kodierer konfiguriert ist: k Symbole von ursprünglichen Daten zu empfangen; die k Symbole von ursprünglichen Daten einem neuronalen Produktkodierer zuzuführen, der eine Mehrzahl an M neuronalen Kodierungsstufen aufweist, wobei eine j-te neuronale Kodierungsstufe der Mehrzahl an M neuronalen Kodierungsstufen ein j-tes neuronales Netzwerk aufweist, das durch eine j-te Mehrzahl an Parametern konfiguriert ist, um einen (nj,kj)-Fehlerkorrekturcode umzusetzen, wobei nj ein Faktor von n ist und kj ein Faktor von k ist; und n Symbole von kodierten Daten auszugeben, die den k Symbolen von ursprünglichen Daten entsprechen, die durch einen Fehlerkorrekturcode kodiert sind.
  • Das j-te neuronale Netzwerk kann ein vollständig verbundenes neuronales Netzwerk aufweisen, und die j-te Mehrzahl an Parametern kann eine Mehrzahl an Gewichtungen von Verbindungen zwischen Neuronen des vollständig verbundenen neuronalen Netzwerks aufweisen.
  • Ferner kann der Kodierer konfiguriert sein, die k Symbole von ursprünglichen Daten in M-dimensionale ursprüngliche Daten umzuformen, und die j-te neuronale Kodierungsstufe kann konfiguriert sein, eine j-te Dimension von kj Symbolen der M-dimensionalen ursprünglichen Daten zu kodieren.
  • Das j-te neuronale Netzwerk kann konfiguriert sein, einen reellwertigen Vektor mit einer Länge nj auszugeben.
  • Die Verarbeitungsschaltung kann in eine mobile Vorrichtung integriert sein, und die Verarbeitungsschaltung kann konfiguriert sein, die ursprünglichen Daten für eine Übertragung in Übereinstimmung mit einem Mobilfunkkommunikationsprotokoll zu kodieren.
  • Nach einer Ausführungsform der vorliegenden Offenbarung setzt eine Verarbeitungsschaltung einen Dekodierer für einen (n,k)-Fehlerkorrekturcode um, wobei der Dekodierer konfiguriert ist: n Symbole einer empfangenen Nachricht zu empfangen; die n Symbole der empfangenen Nachricht einem neuronalen Produktdekodierer zuzuführen, der eine Mehrzahl an neuronalen Dekodierungsstufen aufweist, die in eine Mehrzahl an IPipeline-Stufen gruppiert werden, wobei eine i-te Pipeline-Stufe des neuronalen Produktdekodierers eine Mehrzahl an M neuronalen Dekodierungsstufen aufweist, eine j-te neuronale Dekodierungsstufe der Mehrzahl an M neuronalen Dekodierungsstufen ein j-tes neuronales Netzwerk aufweist, das durch eine j-te Mehrzahl an Parametern konfiguriert ist, um einen (nj,kj)-Fehlerkorrekturcode umzusetzen, wobei nj ein Faktor von n ist und kj ein Faktor von k ist; und k Symbole von geschätzten ursprünglichen Daten auszugeben, die aus den n Symbolen der empfangenen Nachricht dekodiert sind.
  • Das j-te neuronale Netzwerk kann ein vollständig verbundenes neuronales Netzwerk aufweisen, und die j-te Mehrzahl an Parametern kann eine Mehrzahl an Gewichtungen von Verbindungen zwischen Neuronen des vollständig verbundenen neuronalen Netzwerks aufweisen.
  • Der Dekodierer kann ferner konfiguriert sein, die n Symbole der empfangenen Nachricht in M-dimensionale empfangene Daten umzuformen, und die j-te neuronale Dekodierungsstufe kann konfiguriert sein, eine j-te Dimension von nj Symbolen der M-dimensionalen empfangenen Daten zu dekodieren.
  • Das j-te neuronale Netzwerk kann konfiguriert sein, einen reellwertigen Vektor mit einer Länge nj auszugeben.
  • Das j-te neuronale Netzwerk kann konfiguriert sein, einen reellwertigen Vektor mit einer Länge Fnj auszugeben, wobei F eine ganze Zahl größer als 1 ist.
  • Der Dekodierer kann konfiguriert sein, die n Symbole der empfangenen Nachricht mindestens zwei der Mehrzahl an neuronalen Dekodierungsstufen des neuronalen Produktdekodierers zuzuführen.
  • Die Verarbeitungsschaltung kann in eine mobile Vorrichtung integriert sein und die Verarbeitungsschaltung kann konfiguriert sein, die empfangenen Daten zu dekodieren, wobei die empfangenen Daten in Übereinstimmung mit einem Mobilfunkkommunikationsprotokoll kodiert werden.
  • Die Anzahl an Pipeline-Stufen I kann größer sein als 1.
  • Nach einer Ausführungsform der vorliegenden Offenbarung enthält ein Verfahren zum gemeinsamen Trainieren eines neuronalen Produktkodierungssystems: Initialisieren einer Mehrzahl an Parametern einer Mehrzahl an neuronalen Kodierungsstufen eines neuronalen Produktkodierers und einer Mehrzahl an Parametern einer Mehrzahl an neuronalen Dekodierungsstufen eines neuronalen Produktdekodierers; iteratives Alternieren zwischen: Trainieren der Parameter der neuronalen Dekodierungsstufen, während die Mehrzahl an Parametern der neuronalen Kodierungsstufen fest bleibt; Trainieren der Parameter der neuronalen Kodierungsstufen, während die Mehrzahl an Parametern der neuronalen Dekodierungsstufen fest bleibt; und Ausgeben von trainierten Parametern der Mehrzahl an neuronalen Kodierungsstufen des neuronalen Produktkodierers und von trainierten Parametern der Mehrzahl an neuronalen Dekodierungsstufen des neuronalen Produktdekodierers.
  • Eine Iteration eines Trainings der Parameter der neuronalen Kodierungsstufen kann enthalten: Senden eines Stapels an Trainingssequenzen an die Mehrzahl an neuronalen Kodierungsstufen, die mit den Parametern der neuronalen Kodierungsstufen konfiguriert werden, um reellwertige Kennwörter zu berechnen; Modifizieren der reellwertigen Kennwörter basierend auf Kanaleigenschaften, um empfangene Kennwörter zu berechnen; Dekodieren der empfangenen Kennwörter unter Verwendung der neuronalen Dekodierungsstufen, die mit Parametern der neuronalen Dekodierungsstufen konfiguriert werden, um geschätzte Sequenzen zu berechnen; und Aktualisieren der Parameter der neuronalen Kodierungsstufen basierend auf Verlustwerten, die basierend auf den Trainingssequenzen und den geschätzten Sequenzen berechnet werden.
  • Eine j-te neuronale Kodierungsstufe der neuronalen Kodierungsstufen kann ein neuronales Netzwerk aufweisen, und eine j-te Mehrzahl an Parametern der Parameter der neuronalen Kodierungsstufen kann eine Mehrzahl an Gewichtungen von Verbindungen zwischen Neuronen des neuronalen Netzwerks aufweisen.
  • Eine Iteration eines Trainings der Parameter der neuronalen Dekodierungsstufen kann aufweisen: Senden eines Stapels an Trainingssequenzen an die Mehrzahl an neuronalen Kodierungsstufen, die mit den Parametern der neuronalen Kodierungsstufen konfiguriert werden, um reellwertige Kennwörter zu berechnen; Modifizieren der reellwertigen Kennwörter basierend auf Kanaleigenschaften, um empfangene Kennwörter zu berechnen; Dekodieren der empfangenen Kennwörter unter Verwendung der neuronalen Dekodierungsstufen, die mit den Parametern der neuronalen Dekodierungsstufen konfiguriert werden, um geschätzte Sequenzen zu berechnen; und Aktualisieren der Parameter der neuronalen Dekodierungsstufen basierend auf Verlustwerten, die basierend auf den Trainingssequenzen und den geschätzten Sequenzen berechnet werden.
  • Die neuronalen Dekodierungsstufen können in eine Mehrzahl an IPipeline-Stufen gruppiert werden, wobei eine i-te Pipeline-Stufe des neuronalen Produktdekodierers eine Mehrzahl an M neuronalen Dekodierungsstufen aufweist, und eine j-te neuronale Dekodierungsstufe der Mehrzahl an M neuronalen Dekodierungsstufen ein neuronales Netzwerk aufweist, und eine j-te Mehrzahl an Parametern der Parameter der neuronalen Dekodierungsstufen kann eine Mehrzahl an Gewichtungen von Verbindungen zwischen Neuronen des neuronalen Netzwerks aufweisen.
  • Das Modifizieren der reellwertigen Kennwörter basierend auf Kanaleigenschaften kann aufweisen: Anwenden eines additiven weißen Gaußschen Rauschens auf die reellwertigen Kennwörter in einem Bereich von unterschiedlichen Signal-Rausch-Verhältnis(SNR)-Werten, um die empfangenen Kennwörter zu berechnen.
  • Die empfangenen Kennwörter können einer Mehrzahl an neuronalen Dekodierungsstufen zugeführt werden.
  • Figurenliste
  • Die beigefügten Zeichnungen, zusammen mit der Spezifikation, stellen Ausführungsbeispiele der vorliegenden Erfindung dar und, zusammen mit der Beschreibung, dienen der Erläuterung der Prinzipien der vorliegenden Erfindung.
    • 1 ist ein schematisches Blockdiagramm einer Kommunikationsverbindung oder eines Kommunikationskanals zwischen einem Sender und einem Empfänger, wobei der Sender einen Kodierer in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung enthält und der Empfänger einen Dekodierer in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung enthält.
    • 2 ist eine schematische Darstellung der Verwendung eines zweidimensionalen Produktcodes in einem Kommunikationssystem, das einen Kodierer, der eine erste Kodierungsstufe und eine zweite Kodierungsstufe enthält, und einen Dekodierer, der eine zweite Dekodierungsstufe und eine erste Dekodierungsstufe enthält, enthält.
    • 3A ist eine schematische Darstellung eines zweidimensionalen Produktcodes in einem Kommunikationssystem, das einen neuronalen Produktkodierer und einen neuronalen Produktdekodierer nach einer Ausführungsform der vorliegenden Offenbarung enthält.
    • 3B ist ein Flussdiagramm eines Verfahrens zum Kodieren von Daten unter Verwendung eines neuronalen Produktkodierers nach einer Ausführungsform der vorliegenden Offenbarung.
    • 3C ist ein Flussdiagramm eines Verfahrens zum Dekodieren von Daten unter Verwendung eines neuronalen Produktdekodierers nach einer Ausführungsform der vorliegenden Offenbarung.
    • 3D ist ein Flussdiagramm eines Verfahrens zum gemeinsamen Trainieren eines neuronalen Produktkodierers und eines neuronalen Produktdekodierers eines Kodierer-Dekodierer-Paares nach einer Ausführungsform der vorliegenden Offenbarung.
    • 4A ist eine schematische Darstellung eines Kodierungstrainingszeitplans eines gemeinsamen Trainingsprozesses zum Trainieren eines neuronalen Produktkodierers und eines neuronalen Produktdekodiererpaares nach einer Ausführungsform der vorliegenden Offenbarung.
    • 4B ist ein Flussdiagramm eines Verfahrens zum Trainieren eines neuronalen Produktkodierers während einer Trainingsphase eines neuronalen Kodierers nach einer Ausführungsform der vorliegenden Offenbarung.
    • 5A ist eine schematische Darstellung eines Trainingszeitplans für eine neuronale Dekodierung eines gemeinsamen Trainingsprozesses zum Trainieren eines neuronalen Produktkodierers und eines neuronalen Produktdekodiererpaares nach einer Ausführungsform der vorliegenden Offenbarung.
    • 5B ist ein Flussdiagramm eines Verfahrens zum Trainieren eines neuronalen Produktdekodierers während einer Trainingsphase eines neuronalen Dekodierers nach einer Ausführungsform der vorliegenden Offenbarung.
    • 5C ist eine Darstellung eines Hinzufügens einer Merkmalsgröße zu einem neuronalen Produktcodedekodierer mit I = 2 Dekodierungsiterationen.
  • Ausführliche Beschreibung
  • In der nachfolgenden ausführlichen Beschreibung werden lediglich gewisse Ausführungsbeispiele der vorliegenden Erfindung durch Darstellung gezeigt und beschrieben. Ein Fachmann wird erkennen, dass die Erfindung in vielen unterschiedlichen Formen ausgeführt werden kann und nicht als auf die hierin dargelegten Ausführungsformen beschränkt ausgelegt werden soll. In der gesamten Spezifikation bezeichnen gleiche Bezugszeichen gleiche Elemente.
  • Aspekte von Ausführungsformen der vorliegenden Erfindung richten sich auf eine Umsetzung von Kanalkodierern und Kanaldekodierern unter Verwendung von neuronalen Netzwerken, die neuronale Netzwerkarchitekturen zum Umsetzen von Kanalkodierern, neuronale Netzwerkarchitekturen zum Umsetzen von Kanaldekodierern, Hardwareumsetzungen von Kanalkodierern und Kanaldekodierern unter Verwendung derart trainierter neuronaler Netzwerke enthält, und richten sich auf Systeme und Verfahren zum Anwenden von Maschinenlerntechniken zum Trainieren neuronaler Netzwerke, um Kanalkodierer und Kanaldekodierer umzusetzen.
  • Im Allgemeinen mappt ein Kanalkodierer ε eine Eingangssequenz von Informationsbits u mit einer Länge k zu einer Länge-n-Sequenz von kodierten Bits c (c = ε(u)) durch Hinzufügen einer Redundanz, um die Übertragung der Informationsbits über einen verrauschten Kommunikationskanal zu schützen. Hier werden k und n jeweils als die Codedimension und Blocklänge bezeichnet und der daraus resultierende Code wird durch einen (n, k)-Code gekennzeichnet, wobei n > k. Die Kodierungsrate R = k/n stellt eine Angabe der Effizienz des Codes bereit. In dem Fall eines Kanals mit additivem weißen Gaußschen Rauschen (AWGN) ist die empfangene Länge-n-Sequenz y = c + n, wobei n der Kanalrauschvektor ist, dessen Komponenten zufällige Gaußsche Variablen eines Durchschnitts 0 und einer Varianz σ2 sind. Das Verhältnis der Durchschnittsenergie Es pro kodiertes Symbol zu der Rauschvarianz wird als Signal-Rausch-Verhältnis (SNR) bezeichnet: SNR = Es2. Ein Kanaldekodierer D nutzt die hinzugefügte Redundanz im Kodierer aus, um eine geschätzte Nachricht u der ursprünglichen Nachricht u basierend auf den Rauschkennwörtern y (û =D(y)) zu berechnen, während er versucht, die durch das Kanalrauschen auf den Nachrichten verursachte Anzahl an Fehlern zu minimieren.
  • Abhängig von der Menge an Kanalrauschen n (z.B. abhängig vom SNR des Kanals) und abhängig von den Eigenschaften des Codes (z.B. der Anzahl an Fehlern, die durch den Code korrigiert werden können) kann der Dekodierer imstande sein, bei der Korrektur all der durch das Kanalrauschen n eingeführten Fehler erfolgreich zu sein, oder nicht. Die Fehlerrate nach der Dekodierung kann als eine Bitfehlerrate (BER) charakterisiert werden, die den Bruchteil an Bits im Block einer Größe k angibt, die fehlerhaft sind: B E R = 1 k i = 1 k P r ( u ^ i u i )
    Figure DE102022124546A1_0001
    und kann außerdem als eine Blockfehlerrate (BLER) charakterisiert werden, welche die Wahrscheinlichkeit angibt, dass der Block überhaupt fehlerhafte Bits aufweist: B L E R = Pr ( u ^ u )
    Figure DE102022124546A1_0002
  • Eine technische Herausforderung in einem Deep-Learning-basierten Design von Kodierern und Dekodierern ist ein Dimensionalitätsproblem, das im Kontext einer Kanalkodierung aufgrund von riesigen Coderäumen auftritt (es gibt 2k unterschiedliche Kennwörter für eine Nachrichtenlänge oder einen linearen Binärcode einer Dimension k). Dies ist problematisch, da lediglich ein kleiner Abschnitt aller möglichen Kennwörter vom Maschinenlernmodell (z.B. einem neuronalen Netzwerk) während eines Trainings gesehen wird (z.B. wäre eine Darstellung aller 2k möglichen Kennwörter während eines Trainings unlösbar für praktische lineare Binärcodedimensionen k). Somit wurde allgemein geglaubt, dass die trainierten Maschinenlernmodelle für die Kodierer und Dekodierer fehlschlagen würden, sich auf Kennwörter zu verallgemeinern, die während eines Trainings nicht gesehen worden sind, und, wie oben erwähnt, bilden diese ungesehenen Kennwörter den Großteil möglicher Kennwörter für große Werte von k (z.B. praktische Werte von k, die in modernen Kommunikationssystemen verwendet werden würden). Zusätzlich wurde allgemein geglaubt, dass riesige Netzwerke mit übermäßig großer Anzahl an lernbaren Parametern benötigt werden würden, um größere Codedimensionen (z.B. Werte von k, die größer sind als 100 Informationsbits) zu begründen, und dass es somit übermäßig komplex war, wenn nicht sogar unmöglich, neuronale Netzwerke zu trainieren, relativ große Kanalcodes zu kodieren und dekodieren. Darüber hinaus wurde allgemein geglaubt, dass ein gemeinsames Training eines neuronalen Kodierungsnetzwerks und eines neuronalen Dekodierungsnetzwerks diese trainierten neuronalen Netzwerke dazu veranlassen würde, sich aufgrund nicht konvexer Verlustfunktionen in ungünstigen lokalen Optima anzusiedeln, und somit beziehen sich einige Ansätze lediglich auf ein Training eines neuronalen Dekodierungsnetzwerks zum Dekodieren von Nachrichten, die unter Verwendung eines bestehenden, klassischen Fehlerkorrekturcodes, wie Reed-Solomon-Codes, Turbocodes, Low-Density-Parity-Check(LDPC)-Codes und Polar-Codes, kodiert worden sind.
  • Aspekte von Ausführungsformen der vorliegenden Offenbarung demonstrieren, dass es möglich ist, neuronale Netzwerk zu trainieren, eine Kanalkodierung und eine Kanaldekodierung für große Werte von k (z.B. größer als 100 Informationsbits) durchzuführen, und dass der neuronale Kodierer und der neuronale Dekodierer zusammen trainiert werden können.
  • Ausführlicher beziehen sich einige Aspekte von Ausführungsformen der vorliegenden Offenbarung auf eine Produktautokodiererarchitektur für ein neuronales Kodierungsnetzwerk (oder einen neuronalen Kodierer) und ein neuronales Dekodierungsnetzwerk (oder einen neuronalen Dekodierer), wobei die Produktautokodiererarchitektur große neuronale Codes unter Verwendung kleinerer Codekomponenten oder -stufen bildet. In einigen Ausführungsformen werden mehrere kleinere neuronale Kodierungs- und Dekodierungsnetzwerkkomponenten trainiert und in M Stufen (wobei M eine positive ganze Zahl ist) verbunden, wobei die Stufen Parameter (n1, k1), (n2, k2),... ,(nM, kM) derart aufweisen, dass n1n2... nM = n und k1k2... kM = k.
  • Aspekte von Ausführungsformen der vorliegenden Offenbarung beziehen sich ferner auf Systeme und Verfahren zum automatischen Entwickeln neuer Fehlerkorrekturcodes unter Verwendung eines Maschinenlernprozesses (anstelle einer manuellen theoretischen Durchgangsanalyse). Dieser Maschinenlernprozess enthält ein Anwenden eines Deep-Learning-Prozesses auf das gemeinsame Training eines neuronalen Kodierungsnetzwerks und eines neuronalen Dekodierungsnetzwerks. Das trainierte neuronale Kodierungsnetzwerk und neuronale Dekodierungsnetzwerk setzen einen Fehlerkorrekturcode um, der die als Eingabe zugeführten Informationen kodiert, zusammen mit zusätzlichen redundanten Informationen, und der die kodierten Nachrichten bei Vorhandensein von Rauschen stabil dekodiert. In einigen Ausführungsformen übertreffen diese gemeinsam trainierten neuen Fehlerkorrekturcodes (oder neuronalen Codes oder neuronalen Fehlerkorrekturcodes) die klassischen Fehlerkorrekturcodes des Stands der Technik (z.B. Turboautokodierer, Polar-Codes und LDPC-Codes) entlang Performancemetriken, wie einer Bitfehlerrate.
  • 1 ist ein schematisches Blockdiagramm einer Kommunikationsverbindung oder eines Kommunikationskanals zwischen einem Sender 1 und einem Empfänger 2, wobei der Sender 1 einen Kodierer 110 in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung enthält und der Empfänger 2 einen Dekodierer 120 in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung enthält. In der in 1 gezeigten Anordnung sollen ursprüngliche Daten 10 vom Sender 1 zum Empfänger 2 übertragen werden, wobei die ursprünglichen Daten 10 durch den Dekodierer 120 als dekodierte Daten 18 wiederhergestellt werden. Die dekodierten Daten 18 können dann von einem Datenverbraucher 20 verbraucht werden. Ausführlicher kodiert der Kodierer 110 die ursprünglichen Daten 10 zu kodierten Daten 130 und die kodierten Daten 130 werden über einen Kommunikationskanal 150 an den Dekodierer 120 übertragen. Der Dekodierer 120 dekodiert dann die kodierten Daten 130, um die ursprünglichen Daten 18 wiederherzustellen.
  • Nach verschiedenen Ausführungsformen der vorliegenden Offenbarung können der Kodierer 110 und der Dekodierer 120 jeweils als eine Kodierungsschaltung oder eine Kodierungsverarbeitungsschaltung und eine Dekodierungsschaltung oder Dekodierungsverarbeitungsschaltung bezeichnet werden und können unter Verwendung verschiedener Verarbeitungsschaltungen umgesetzt werden, wie einer Zentralverarbeitungseinheit (CPU), einem Anwendungsprozessor (AP) oder einer Anwendungsverarbeitungseinheit (APU), einem Field Programmable Gate Array (FPGA), einer anwendungsspezifischen integrierten Schaltung (ASIC), wie einer integrierten Anzeigetreiberschaltung (DDIC), und/oder einer Grafikverarbeitungseinheit (GPU) von einem oder mehreren Berechnungssystemen. Zum Beispiel können der Kodierer 110 und der Dekodierer 120 Komponenten desselben Computersystems sein (z.B. innerhalb eines einzelnen Gehäuses, wie dem Gehäuse eines Smartphones oder einer anderen Mobilvorrichtung, einem Tablet-Computer oder einem Laptop-Computer), können separate Komponenten eines Computersystems sein (z.B. ein Desktop-Computer in Verbindung mit einem externen Monitor), oder können separate Computersysteme (z.B. zwei unabhängige Computersysteme, die über den Kommunikationskanal 150 kommunizieren) oder Variationen davon sein (z.B. umgesetzt in Spezialverarbeitungsschaltungen, wie Mikrocontrollern, die konfiguriert sind, über den Kommunikationskanal 150 zu kommunizieren, wobei die Mikrocontroller Peripherien innerhalb eines Computersystems sind). Wie ein Fachmann versteht, kann die Kodierungsschaltung unter Verwendung eines Typs einer Verarbeitungsschaltung umgesetzt werden, welcher sich von der Dekodierungsschaltung unterscheidet. Zusätzlich, wie ein Fachmann versteht, können die verschiedenen Verarbeitungsschaltungen Komponenten einer selben integrierten Schaltung sein (z.B. als Komponenten eines selben Systems auf einem Chip oder SoC) oder können Komponenten von unterschiedlichen integrierten Schaltungen sein, die durch Pins und Leitungen auf einer Leiterplatte verbunden sein können.
  • Als ein konkretes Beispiel kann die Kommunikationsverbindung eine drahtlose Kommunikationsverbindung, wie eine Mobilfunkverbindung oder eine lokale drahtlose Netzwerkverbindung (z.B. Wi-Fi-Verbindung) zwischen einer Mobil-Client-Vorrichtung (z.B. einem Smartphone, Laptop oder anderen Benutzergerät (UE)) und einer Basisstation (z.B. gNodeB oder gNB in dem Fall einer SG-NR-Basisstation oder eines Wi-Fi-Zugriffspunkts oder eines Wi-Fi-Routers), wobei die Vorrichtungen unter Verwendung von Verarbeitungsschaltungen gemäß der vorliegenden Offenbarung, welche in die jeweiligen Vorrichtungen integriert werden, Daten über den Kommunikationskanal 150 senden und empfangen können, wobei die Daten in Übereinstimmung mit einem Kommunikationsprotokoll (z.B. einem Mobilfunkkommunikationsprotokoll, wie einem drahtlosen 6G- oder einem drahtlosen Netzwerkkommunikationsprotokoll, wie ein Protokoll in der IEEE-802.11-Familie an Protokollen) formatiert oder kodiert und dekodiert werden.
  • 2 ist eine schematische Darstellung der Verwendung eines zweidimensionalen Produktcodes in einem Kommunikationssystem, das einen Kodierer, der eine erste Kodierungsstufe und eine zweite Kodierungsstufe enthält, und einen Dekodierer, der eine zweite Dekodierungsstufe und eine erste Dekodierungsstufe enthält, enthält.
  • Eine Produktcodestruktur oder -architektur ermöglicht, dass ein großer Fehlerkorrekturcode oder ein großer Kanalcode aus kleineren Komponenten oder Stufen gebildet werden kann. 2 stellt ein Beispiel für einen zweidimensionalen (n, k)-Produktcode dar, der einen Produktkodierer 210 zum Kodieren eines Eingangs-k-Bit-Kennworts u 201 zu n-Bit-kodierten Nachrichten c 203 und einen Produktdekodierer 220 zum Dekodieren einer empfangenen n-Bit-Nachricht y 205 enthält, um eine geschätzte Nachricht û 207 wiederherzustellen. Konkret wird der zweidimensionale (n, k)-Produktcode aus zwei kleineren Codes gebildet: C1: (n1, k1) und C2: (n2, k2), wobei n = n1n2 und k = k1k2. Wie in 2 gezeigt, enthält der Produktkodierer 210 eine erste Kodierungsstufe 211, die den (n1, k1)-Code C1 umsetzt, und eine zweite Kodierungsstufe 212, die den (n2, k2)-Code C2 umsetzt. Im Allgemeinen setzt eine i-te Stufe einen Code Ci: (ni, ki) um, wobei ein Faktor von n und ki ein Faktor von k ist. Gleichermaßen enthält der Produktdekodierer 220 eine erste Dekodierungsstufe 221, die den Code C1 umsetzt, und eine zweite Dekodierungsstufe 222, die den Code C2 umsetzt.
  • Wie oben erwähnt, k = k1k2 und somit kann das k-Bit-Eingangskennwort u in eine k2 × k1-Matrix umgeformt werden. Da jede Zeile der Matrix k1 Symbole aufweist, wendet die erste Kodierungsstufe 211 den (n1, k1)-Code C1 unabhängig von jeder der k2 Zeilen der Eingabe an, um eine k2 × -Matrix u(1) zu erzeugen. Diese erste kodierte Zwischennachricht u(1) wird der zweiten Kodierungsstufe 212 zugeführt. Hier, da jede Spalte der ersten kodierten Zwischennachricht u(1) k2 Symbole aufweist, wendet die zweite Kodierungsstufe 212 den (n2, k2)-Code C2 unabhängig von jeder Spalte an, um eine n2 × n1-Ausgangsmatrix u(2) zu erzeugen. Da dies ein zweidimensionaler Produktcode ist, gibt es keine weiteren Stufen in dieser Pipeline von Kodierungsstufen, und diese n2 × n1-Ausgangsmatrix u(2) ist die Länge-n-kodierte Nachricht, die auf einem Kanal 250 übertragen werden soll.
  • Rauschen und andere Störungen im Kanal 250 können die Daten in der Nachricht derart modifizieren, dass der Produktdekodierer 220 eine Nachricht y empfängt, die sich von der vom Produktkodierer 210 ausgegebenen Nachricht unterscheiden kann.
  • Wie in 2 gezeigt, enthält der Produktdekodierer 220 eine Kodierungs-Pipeline, die eine erste Dekodierungsstufe 221 und eine zweite Dekodierungsstufe 222 enthält, welche die Nachricht in der umgekehrten Reihenfolge dekodieren, in welcher der Kodierer die Codes C1 und C2 angewandt hat. In dem in 2 gezeigten Beispiel, in der Pipeline des Produktkodierers 210, hat die erste Kodierungsstufe 211 Code C1 angewandt und dann hat die zweite Kodierungsstufe 212 Code C2 angewandt. Dementsprechend weist der Produktdekodierer 220 eine Dekodierungs-Pipeline auf, die zunächst die zweite Dekodierungsstufe für Code C2 anwendet (z.B. um jede Spalte von n2 Symbolen zu dekodieren) und dann die erste Dekodierungsstufe für Code C1 anwendet (z.B. um jede Zeile von n2 Symbolen zu dekodieren).
  • In dem in 2 gezeigten Beispiel verändert das Anwenden der Dekodierungsstufen nicht die Form der Daten. Zum Beispiel führt das Anwenden der zweiten Dekodierungsstufe 222 auf die Spalten der n2 × n1 -Eingabe zu einer zweiten n2 × n1-Zwischendekodierungsausgabe y n 2 × n 1 ( 2 )
    Figure DE102022124546A1_0003
    und das Anwenden der ersten Dekodierungsstufe 221 auf die Zeilen der zweiten Zwischendekodierungsausgabe y n 2 × n 1 ( 2 )
    Figure DE102022124546A1_0004
    erzeugt eine erste Zwischendekodierungsausgabe y n 2 × n 1 ( 1 )
    Figure DE102022124546A1_0005
    mit Dimensionen n2 × n1. Somit kann eine Extraktionsschaltung 260 verwendet werden, um eine Länge-k-Sequenz (z.B. eine k2 × k1-Matrix) aus der ersten Zwischendekodierungsausgabe y n 2 × n 1 ( 1 )
    Figure DE102022124546A1_0006
    zu extrahieren.
  • Zusätzlich kann eine Dekodierungsperformance unter einigen Umständen durch Anwenden eines Soft-Input-Soft-Output(SISO)-Dekodierers und außerdem Anwenden mehrere Iterationen verbessert werden, wobei die Ausgabe des Produktdekodierers (z.B. die Ausgabe der letzten Dekodierungsstufe, in diesem Fall die erste Dekodierungsstufe 221, wie in 2 gezeigt) als eine Eingabe zum Produktdekodierer 220 (z.B. die Eingabe der zweiten Dekodierungsstufe 222, wie in 2 gezeigt) zurückgeführt wird für eine eingestellte Anzahl an Iterationen (I Iterationen), bevor die geschätzte Nachricht û aus der Ausgabe des Produktdekodierers 220 extrahiert wird. Diese Iterationen können die Dekodierungsperformance verbessern, da unter einigen Umständen Fehler, die während einer Dekodierung nicht korrigiert worden sind, in einer späteren Spaltendekodierung (oder umgekehrt) oder nach mehreren Iterationen korrigiert werden können (z.B. kann ein Wiederherstellen einiger verlorener Daten ermöglichen, dass andere, bisher nicht wiederherstellbare verlorene Daten anschließend wiederhergestellt werden können).
  • Obwohl sich die obige Erläuterung zu 2 auf einen zweidimensionalen Code bezieht, sind Produktcodes nicht darauf beschränkt und können außerdem auf M-dimensionale Produktcodes mit Parametern (n, k, d) angewandt werden, die M lineare Binärblockcodes C1( C2, ..., CM verwenden. Hier kodiert jeder l-te Kodierer die l-te Dimension der M-Dim-Eingangsmatrix und jeder l-te Dekodierer dekodiert die Vektoren der l-ten Dimension der M-Dim-Ausgangsmatrix. In jedem Code (z.B. einem l-ten Code Cl: (n1, kl, dl)) mit einer Generatormatrix Gl für l = 1,2, ..., M sind die Parameter des daraus resultierenden Produktcodes: Blockl a ¨ nge : n = l = 1 M n l
    Figure DE102022124546A1_0007
    Dimension : k = l = 1 M k l
    Figure DE102022124546A1_0008
    Rate : R = l = 1 M R l
    Figure DE102022124546A1_0009
    Mindestabstand : d = l = 1 M d l
    Figure DE102022124546A1_0010
    Generatormatrix : G = G 1 G 2 G M
    Figure DE102022124546A1_0011
  • Aspekte von Ausführungsformen der vorliegenden Offenbarung bauen durch Umsetzen einer jeden Stufe eines Produktkodierers und einer jeden Stufe eines Produktdekodierers als ein separates neuronales Netzwerk auf Produktcodes auf. Diese neuronalen Netzwerke können jeweils als neuronale Kodierungsstufen und neuronale Dekodierungsstufen bezeichnet werden. Zusätzlich werden in einigen Ausführungsformen der vorliegenden Offenbarung die vom Produktdekodierer durchgeführten I Iterationen in eine Dekodierungs-Pipeline von M × I separaten neuronalen Dekodierungsstufen (z.B. M × I separate neuronale Netzwerke) abgewickelt, die in I Gruppen oder Pipeline-Stufen oder Sub-Pipelines von M neuronalen Dekodierungsstufen gruppiert werden.
  • Einige Beispiele für die vorliegende Offenbarung werden unten im Kontext von zweidimensionalen Produktcodes ausführlicher beschrieben (wobei M = 2). Obwohl die Ausführungsformen der vorliegenden Offenbarung nicht auf Fälle beschränkt sind, in denen M = 2, und außerdem Ausführungsformen enthalten können, in denen M > 2, stellt M = 2 in einigen praktischen Verwendungsfällen einen guten Kompromiss zwischen Komplexität und Performance dar.
  • Der Prozess zum Trainieren eines Paares bestehend aus einem neuronalen Kodierer und einem neuronalen Dekodierer enthält im Allgemeinen zwei Hauptschritte: (1) einen Dekodierungstrainingszeitplan; und (2) einen Kodierungstrainingszeitplan. Konkret werden die neuronalen Dekodierungsstufen während jeder Trainingsphase mehrmals trainiert (z.B. Ende-zu-Ende), während die neuronalen Kodierungsstufen fest bleiben, und dann werden die neuronalen Kodierungsstufen mehrmals trainiert, während die neuronalen Dekodierungsstufen unverändert bleiben. In einigen alternativen Ausführungsformen startet der Trainingsprozess mit den neuronalen Kodierungsstufen, gefolgt von einem Training der neuronalen Dekodierungsstufen. Nachfolgend werden zunächst die Kodiererarchitektur und dessen Trainingszeitplan beschrieben, gefolgt von der Dekodiererarchitektur und dessen Trainingszeitplan.
  • 3A ist eine schematische Darstellung eines zweidimensionalen Produktcodes in einem Kommunikationssystem, das einen neuronalen Produktkodierer und einen neuronalen Produktdekodierer nach einer Ausführungsform der vorliegenden Offenbarung enthält. Der neuronale Produktkodierer und der neuronale Produktdekodierer sind üblicherweise auf unterschiedlichen Kommunikationsvorrichtungen des Kommunikationssystems umgesetzt und kommunizieren über einen Kommunikationskanal miteinander. Zum Beispiel kann der neuronale Produktkodierer in einem Benutzergerät umgesetzt sein, wie einem Smartphone, und der neuronale Produktdekodierer kann in einer Basisstation umgesetzt sein. In vielen Fällen sind diese Kommunikationsvorrichtungen Sendeempfänger, die Daten sowohl senden als auch empfangen können. Zum Beispiel kann ein Smartphone sowohl einen neuronalen Produktkodierer als auch einen neuronalen Produktdekodierer enthalten, um jeweils Daten zu senden und zu empfangen, wobei diese dieselben neuronalen Codes (z.B. dieselben Fehlerkorrekturcodes) oder unterschiedliche neuronale Codes (z.B. unterschiedliche Fehlerkorrekturcodes) umsetzen können.
  • In verschiedenen Ausführungsformen können ein neuronaler Produktkodierer und ein neuronaler Produktdekodierer durch Verarbeitungsschaltungen einer Kommunikationsvorrichtung umgesetzt sein. Beispiele für Verarbeitungsschaltungen enthalten, sind jedoch nicht darauf beschränkt: einen Allzweckprozessorkern (z.B. enthalten in Anwendungsprozessoren, Ein-Chip-Systemprozessoren und dergleichen), ein Field Programmable Gate Array (FPGA, das einen Allzweckprozessorkern enthalten kann), eine anwendungsspezifische integrierte Schaltung (ASIC), einen Digitalsignalprozessor (DSP), einen neuronalen Beschleuniger oder eine neuronale Verarbeitungseinheit, und Kombinationen davon (z.B. Steuern eines Gesamtkodierungs- oder -dekodierungsprozesses unter Verwendung eines Allzweckprozessorkerns, der einen neuronalen Beschleuniger derart steuert, dass dieser neuronale Netzwerkoperationen durchführt, wie Vektormultiplikationen und -akkumulierungen, und nichtlineare Aktivierungsfunktionen anwendet). Der neuronale Produktkodierer und der neuronale Produktdekodierer können in Übereinstimmung mit einer Architektur und einer Mehrzahl an Parametern definiert werden, wie Gewichtungen und Vorspannungen von Verbindungen zwischen Neuronen unterschiedlicher Schichten der neuronalen Netzwerke verschiedener neuronaler Stufen des neuronalen Produktkodierers und des neuronalen Produktdekodierers. In einigen Ausführungsformen der vorliegenden Offenbarung können diese Parameter in einem Speicher gespeichert sein und die Verarbeitungsschaltungen können während einer Laufzeit darauf zugreifen, um Berechnungen durchzuführen, welche die neuronalen Stufen umsetzen. In einigen Ausführungsformen der vorliegenden Offenbarung ist die Verarbeitungsschaltung mit diesen Parametern konfiguriert (z.B. fest in einer Nachschlagetabelle oder als konstante Werte in einem Spezial-DSP, ASIC, FPGA oder einer neuronalen Verarbeitungseinheit).
  • Die in 3A gezeigte Anordnung von Komponenten ist jener aus 2 ähnlich, mit der Ausnahme, dass die erste Kodierungsstufe und die zweite Kodierungsstufe des Produktkodierers und die erste Dekodierungsstufe und die zweite Dekodierungsstufe des Produktdekodierers jeweils mit entsprechenden neuronalen Netzwerken ersetzt sind, die jeweils als eine erste neuronale Kodierungsstufe 311 und eine zweite neuronale Kodierungsstufe 312 eines neuronalen Produktkodierers 310 und eine erste neuronale Dekodierungsstufe 321 und eine zweite neuronale Dekodierungsstufe 322 eines neuronalen Produktdekodierers 320 bezeichnet werden.
  • 3B ist ein Flussdiagramm eines Verfahrens 370 zum Kodieren von Daten unter Verwendung eines neuronalen Produktkodierers nach einer Ausführungsform der vorliegenden Offenbarung.
  • Auf eine ähnliche Weise wie jene, die in 2 beschrieben wird, empfängt der neuronale Produktkodierer 310 eine Eingangsnachricht an k Symbolen (z.B. k Bits), wobei k = k1k2. Bei 371 formt der neuronale Produktkodierer 310 die Daten in eine M-dimensionale Eingabe um, z.B. in ein zweidimensionales k2 × k1-Array im aktuellen Beispiel. In einigen Ausführungsformen wird das Umformen implizit durchgeführt, wie durch Einstellen der Art und Weise, wie auf in einem Computerspeicher gespeicherte Daten zugegriffen wird, basierend auf Indizes.
  • Bei 373 wendet der neuronale Produktkodierer 310 eine Pipeline von M neuronalen Kodierungsstufen entlang jeder der entsprechenden M Dimensionen der ursprünglichen Daten an, um kodierte Daten c mit einer Länge von n Symbolen zu erzeugen. In dem in 3A gezeigten Beispiel M = 2 und somit enthält der neuronale Produktkodierer 310 eine Sequenz an oder Pipeline von zwei neuronalen Kodierungsstufen: eine erste neuronale Kodierungsstufe 311 und eine zweite neuronale Kodierungsstufe 312.
  • Die erste neuronale Kodierungsstufe 311 ist konfiguriert, eine Eingabe von k1 Symbolen (z.B. k1 Bits) zu nehmen und eine Ausgabe von n1 Symbolen (z.B. n1 Bits) zu erzeugen. Gleichermaßen ist die zweite neuronale Kodierungsstufe konfiguriert, eine Eingabe von k2 Symbolen (z.B. k2 Bits) zu nehmen und eine Ausgabe von n2 Symbolen (z.B. n2 Bits) zu erzeugen. Dementsprechend kann die erste neuronale Kodierungsstufe 311 auf der Eingabe auf einer Zeile-für-Zeile-Basis operieren, um eine k2 × n1-Matrix u(1) zu erzeugen, und die erste kodierte Zwischennachricht u(1) wird der zweiten neuronalen Kodierungsstufe 312 zugeführt. Hier, da jede Spalte der ersten kodierten Zwischennachricht u(1) k2 Symbole aufweist, operiert die zweite neuronale Kodierungsstufe 312 auf jeder Spalte unabhängig, um eine n2 × n1-Ausgangsmatrix u(2) zu erzeugen. Da diese ein zweidimensionaler Produktcode ist, gibt es keine weiteren Stufen und diese n2 × n1-Ausgangsmatrix u(2) stellt die Länge-n-kodierte Nachricht c dar, die auf einem Kanal 350 (z.B. als ein Datenpaket) übertragen werden soll. Zum Beispiel wird in einigen Ausführungsformen die reellwertige n2 × n1-Ausgangsmatrix u(2) in eine Länge-n-kodierte Nachricht c umgeformt und in diskrete Werte binarisiert (z.B. in Binärwerte umgewandelt) oder anderweitig diskretisiert. In einem praktischen Kodierungssystem wird die Länge-n-kodierte Nachricht c außerdem durch eine Sendevorrichtung in Übereinstimmung mit einem Modulationsverfahren moduliert, das einem Protokoll für physische Schichten zugeordnet ist (z.B. verschiedenen Protokollen für drahtlose Kommunikation, verdrahtete elektrische Kommunikation, verdrahtete optische Kommunikation etc.).
  • Der Kanal 350 kann die Länge-n-kodierte Nachricht c derart verzerren, dass der neuronale Produktdekodierer 320 eine Länge-n-empfangene-kodierte Nachricht y empfängt, die sich von der Länge-n-kodierten Nachricht c unterscheiden kann (wobei z.B. Unterschiede zwischen der empfangenen Nachricht y und der übertragenen kodierten Nachricht c als Fehler oder Löschungen bezeichnet werden können).
  • Wie in 3A gezeigt, ist der neuronale Produktdekodierer 320 im Wesentlichen ähnlich zum in 2 gezeigten Produktdekodierer 220, mit der Ausnahme, dass die Dekodierungsstufen unter Verwendung von neuronalen Dekodierern (z.B. trainierten neuronalen Netzwerken, wie unten ausführlicher erläutert) umgesetzt werden und dass die in 2 gezeigten I Iterationen der Produktdekodierungsstufen in I separate Dekodiererpaare abgewickelt werden. Die empfangene Nachricht y kann von einem Analogsignal demoduliert werden, das von einer Empfangsvorrichtung in einem Kommunikationssystem empfangen wird.
  • 3C ist ein Flussdiagramm eines Verfahrens 380 zum Dekodieren von Daten unter Verwendung eines neuronalen Produktdekodierers nach einer Ausführungsform der vorliegenden Offenbarung. Bei 381 formt der neuronale Produktdekodierer 320 die empfangene kodierte Nachricht y in eine M-dimensionale Eingabe um, z.B. in ein zweidimensionales n2 × n1-Array im aktuellen Beispiel. In einigen Ausführungsformen wird das Umformen implizit durchgeführt, wie durch Einstellen der Art und Weise, wie auf in einem Computerspeicher gespeicherte Daten zugegriffen wird, basierend auf Indizes. Bei 381 wendet der neuronale Produktdekodierer 320 eine Mehrzahl an Sequenzen (z.B. I Sequenzen) von M neuronalen Dekodierungsstufen an, wobei jede der M neuronalen Dekodierungsstufen entlang einer entsprechenden einen der M Dimensionen der empfangenen Daten y operiert. In dem in 3A gezeigten konkreten Beispiel M = 2 und somit wird jede Sequenz von M Dekodierern als ein Dekodiererpaar bezeichnet.
  • Jedes Dekodiererpaar enthält eine erste neuronale Dekodierungsstufe und eine zweite neuronale Dekodierungsstufe (z.B. eine neuronale Dekodierungsstufe für jede der M Dimensionen des Produktcodes), wobei jede Dekodierungsstufe konfiguriert ist, entlang einer unterschiedlichen Dimension der Eingangsdaten zu operieren (wobei z.B. die zweite neuronale Dekodierungsstufe konfiguriert ist, entlang einer Spaltendimension zu operieren, und die erste neuronale Dekodierungsstufe konfiguriert ist, entlang einer Zeilendimension zu operieren). Zum Beispiel enthält das in 3A gezeigte erste neuronale Dekodiererpaar eine erste neuronale Dekodierungsstufe 321, die konfiguriert ist, entlang einer Zeilendimension zu operieren, und eine zweite neuronale Dekodierungsstufe 322, die konfiguriert ist, entlang einer Spaltendimension zu operieren. Zusätzliche Zwischendekodiererpaare 325 mit einer ähnlichen Struktur einer zweiten neuronalen Dekodierungsstufe und einer ersten neuronalen Dekodierungsstufe, die auf entsprechenden Dimensionen der Daten operieren, sind in einer Sequenz stromabwärts des ersten Dekodiererpaares 325 angeordnet, wobei die Ausgabe des Endzwischendekodiererpaares der zusätzlichen Zwischendekodiererpaare 325 einem I-ten Dekodiererpaar zugeführt wird, das eine entsprechende erste neuronale Dekodierungsstufe 328 und eine zweite neuronale Dekodierungsstufe 329 enthält. Dementsprechend zeigt 3A anstatt dieselben Dekodierungsstufen I Mal durchzuschleifen, wie in 2 gezeigt, eine Umsetzung einer neuronalen Dekodierungsstufe, in der die Schleife in I separate Dekodierungsstufen abgewickelt wird.
  • Die Ausgabe des letzten neuronalen Dekodiererpaares (des I-ten Dekodiererpaares) wird einer Extraktionsschaltung 360 zugeführt, um die k Nachrichtensymbole bei 385 daraus zu extrahieren, um die Ausgabelänge-k-geschätzte Nachricht û 307 zu erzeugen.
  • Wie oben erwähnt, zeigt 3A ein Ausführungsbeispiel, das einen zweidimensionalen Produktcode verwendet (wobei z.B. M = 2), die Ausführungsformen der vorliegenden Offenbarung sind jedoch nicht darauf beschränkt und enthalten außerdem Ausführungsformen, in denen M > 2. In solchen Ausführungsformen würde der neuronale Produktkodierer 310 M neuronale Kodierungsstufen enthalten (z.B. M separate neuronale Netzwerke) und jedes der I neuronalen Dekodiererpaare des neuronalen Produktdekodierers 320 würde stattdessen Sequenzen von M neuronalen Dekodierern enthalten für insgesamt I × M separate neuronale Dekodierungsstufen im neuronalen Produktdekodierer 320.
  • 3D ist ein Flussdiagramm eines Verfahrens 390 zum gemeinsamen Trainieren eines neuronalen Produktkodierers und eines neuronalen Produktdekodierers eines Kodierer-Dekodierer-Paares nach einer Ausführungsform der vorliegenden Offenbarung. Das Verfahren kann von einem Trainingssystem durchgeführt werden, das zum Beispiel auf einem Computersystem umgesetzt ist, das einen Prozessor und einen Speicher enthält, wobei der Speicher Anweisungen speichert, die, wenn sie vom Prozessor ausgeführt werden, den Prozessor dazu veranlassen, die hierin beschriebenen Operationen durchzuführen. Das Computersystem kann mehrere Prozessoren und mehrere Speicher derart enthalten, dass der Trainingsprozess über die mehreren Prozessoren verteilt wird. Die mehreren Prozessoren können auf einer selben Berechnungsvorrichtung enthalten sein (z.B. mit einem selben Bus auf einer selben physischen Platte) und/oder können über mehrere Berechnungsvorrichtungen verteilt sein (z.B. mehrere Berechnungsvorrichtungen, die über ein Computernetzwerk kommunizieren).
  • Bei 391 initialisiert das Trainingssystem Parameter von neuronalen Kodierungsstufen und neuronalen Dekodierungsstufen. Wie oben erwähnt, enthalten die neuronalen Kodierungsstufen und die neuronalen Dekodierungsstufen neuronale Netzwerke, deren Verhalten durch Parameter (z.B. Gewichtungen und Vorspannungen, die Verbindungen zwischen den Neuronen in unterschiedlichen Schichten des neuronalen Netzwerks zugeordnet sind) spezifiziert werden. In einigen Ausführungsformen der vorliegenden Offenbarung ist jede der neuronalen Kodierungsstufen und jede der neuronalen Dekodierungsstufen ein vollständig verbundenes neuronales Netzwerk (FCNN). In einigen Ausführungsformen ist das vollständig verbundene neuronale Netzwerk ein Deep-Learning-Netzwerk mit mehr als einer verborgenen Schicht (Lenc > 1 verborgene Schichten). Dementsprechend initialisiert das Trainingssystem in einigen Ausführungsformen der vorliegenden Offenbarung die Parameter der neuronalen Netzwerke der neuronalen Kodierungsstufen und der neuronalen Dekodierungsstufen. In einigen Ausführungsformen können diese Parameter auf zufällige Werte (z.B. eingestellt durch einen Pseudozufallszahlgenerator) initialisiert werden. In einigen Ausführungsformen werden die neuronalen Kodierungsstufen und die neuronalen Dekodierungsstufen unter Verwendung von Parameterwerten aus zuvor trainierten neuronalen Netzwerken (z.B. zuvor basierend auf einem Satz an Trainingsdaten trainiert) initialisiert.
  • Bei 393 und 395 alterniert das Trainingssystem zwischen einem Training des neuronalen Kodierers und einem Training des neuronalen Dekodierers. In dem in 3D gezeigten konkreten Beispiel startet das Trainingssystem mit einem Training der neuronalen Dekodierungsstufen bei 393, gefolgt von einem Training der neuronalen Kodierungsstufen bei 395. Zum Beispiel trainiert oder aktualisiert das Trainingssystem bei 393 die Parameter der neuronalen Dekodierungsstufen des neuronalen Dekodierers, während die Parameter der neuronalen Kodierungsstufen fest bleiben. Gleichermaßen trainiert oder aktualisiert das Trainingssystem bei 395 die Parameter der neuronalen Kodierungsstufen des neuronalen Kodierers, während die Parameter der neuronalen Dekodierungsstufen fest bleiben. Einzelheiten bezüglich der Trainingszeitpläne für die neuronalen Kodierungsstufen und die neuronalen Dekodierungsstufen werden unten mit Bezug auf 4A, 4B, 5A und 5B ausführlicher dargestellt.
  • Bei 397 bestimmt das Trainingssystem, ob ein Training abgeschlossen ist. In einigen Ausführungsformen testet das Trainingssystem die Performance des neuronalen Kodierers und des neuronalen Dekodierers in Übereinstimmung mit neu aktualisierten Parametern. Die Performance kann gemessen werden durch: Zuführen von Eingabetestkennwörtern an das trainierte Netzwerk (z.B. in Übereinstimmung mit dem oben mit Bezug auf 3B beschriebenen Verfahren 370, um eine testkodierte Nachricht zu berechnen), dann Verzerren der Nachrichten (z.B. in Übereinstimmung mit einer Vielzahl an unterschiedlichen Signal-Rausch-Verhältnissen) und Zuführen der verzerrten Nachrichten als die empfangenen Nachrichten, wie eingegeben, an den trainierten neuronalen Dekodierer. Die Ausgabe-geschätzte Nachricht des trainierten neuronalen Dekodierers wird mit dem entsprechenden Eingabetestkennwort verglichen, um Performancemetriken zu evaluieren, wie die Bitfehlerrate (BER) und die Blockfehlerrate (BLER) des trainierten Paares bestehend aus einem neuronalen Kodierer und einem neuronalen Dekodierer. Das Trainingssystem kann basierend auf zum Beispiel Performancemetriken, die einen bestimmten Schwellenwert erreichen (z.B. BER und/oder BLER unterhalb einer bestimmten Schwellenwertrate), oder einem Abflachen einer Verbesserungsrate der Performancemetriken (z.B., wenn BER und/oder BLER zwischen der vorherigen Iteration des Trainingszyklus und der aktuellen Iteration ungefähr gleichbleiben) bestimmen, dass das Training abgeschlossen ist. Wenn ein Training nicht abgeschlossen ist, dann führt das Trainingssystem eine weitere Iteration bei 393 und 395 durch, wobei die Parameter des neuronalen Dekodierers und die Parameter des neuronalen Kodierers im Laufe von zusätzlichen Trainingsphasen weiter aktualisiert werden. Wenn ein Training abgeschlossen ist, gibt das Trainingssystem den trainierten neuronalen Kodierer und den trainierten neuronalen Dekodierer aus, die durch ihre entsprechenden Sätze an Parametern (z.B. Gewichtungen und Vorspannungen von Verbindungen zwischen Neuronen des neuronalen Netzwerks der neuronalen Stufen) dargestellt werden können.
  • 4A ist eine schematische Darstellung eines Kodierungstrainingszeitplans eines gemeinsamen Trainingsprozesses zum Trainieren eines neuronalen Produktkodierers und eines neuronalen Produktdekodiererpaares nach einer Ausführungsform der vorliegenden Offenbarung.
  • Wie in 4A gezeigt, werden die erste neuronale Kodierungsstufe 411 und die zweite neuronale Kodierungsstufe 412 des Produktkodierers durch zwei entsprechende vollständig verbundene neuronale Netzwerke (FCNNs), umgesetzt, und zwar durch E11) und E22),die jeweils durch einen entsprechenden Satz an Parametern ϕ1 und ϕ2 (z.B. Gewichtungen und Vorspannung) konfiguriert sind. Jeder j-te Kodierer, j = 1, 2, weist eine Eingangsgröße von kj, eine Ausgangsgröße von nj und Lencj verborgene Schichten einer Größe Nencj auf. Wenn ein Stapel an k2 × k1-Arrays von Informationsbits empfangen wird, mappt der erste neuronale Kodierer E1 411 jede Länge-k1-Zeile zu einem reellwertigen (z.B. einem potenzialfreien Punktwert oder einem festen Punktwert, der nicht-ganzzahlige Werte darstellen kann, wie Bruchwerte in einem Bereich zwischen 0 und 1) Länge-n1-Vektor, was zu einem Tensor u B × k 2 × n 1 ( 1 )
    Figure DE102022124546A1_0012
    führt. Die zweite neuronale Kodierungsstufe E2 412 mappt dann jeden reellwertigen Länge-k2-Vektor in der zweiten Dimension von u(1) zu einem reellwertigen Länge-n2-Vektor. In einigen Ausführungsformen ist das Mapping ein nichtlineares Mapping und somit ist der daraus resultierende Code ein nichtlinearer und nichtbinärer Code.
  • In einigen Ausführungsformen, um zu gewährleisten, dass die Durchschnittsleistung pro kodiertem Bit gleich eins ist und somit, dass das Durchschnitts-SNR gleich einem vorgegebenen SNR ist, ist der reellwertige Länge-n-Vektor c = (c1, c2, ..., cn) der kodierten Sequenz der Ausgabe des Kodierers wie folgt: c c ' : = c | | c | | 2 × n
    Figure DE102022124546A1_0013
  • Somit | | c ' | | 2 2 = n
    Figure DE102022124546A1_0014
    und somit ist die Durchschnittsleistung pro kodiertem Symbol gleich eins.
  • 4B ist ein Flussdiagramm eines Verfahrens 470 zum Trainieren eines neuronalen Produktkodierers während einer Trainingsphase eines neuronalen Kodierers nach einer Ausführungsform der vorliegenden Offenbarung. Dieses Verfahren 470 kann verwendet werden, um das Training von Parametern für neuronale Kodierungsstufen bei 395 von Verfahren 390, das in 3D gezeigt wird, umzusetzen. Bei 471 lädt das Trainingssystem einen Stapel an B Längen-k-Binärinformationssequenzen (wobei z.B. in dem Fall eines zweidimensionalen Produktcodes k = k1k2), der zu einem Tensor UB×k2×k1 geformt ist, um die Eingangsformen des neuronalen Kodierers unterzubringen. Der Stapel an B Sequenzen kann zufällig erzeugt werden (z.B. unter Verwendung eines Pseudozufallszahlengenerators). Bei 473 kodiert das neuronale Trainingssystem den eingegebenen Stapel an Sequenzen, indem es diesen der ersten neuronalen Kodierungsstufe 411 und der zweiten neuronalen Kodierungsstufe 412 des neuronalen Kodierers 410 zuführt, der basierend auf Kodierungsparametern Φ konfiguriert ist, und simuliert ein Übertragen des reellwertigen Kennworts C durch einen Kanal 450 durch Anwenden von Verzerrungen und/oder Rauschen, wie additives weißes Gaußsches Rauschen (AWGN), um die empfangenen Kennwörter Y zu erzeugen. Bei 477 dekodiert das Trainingssystem die empfangenen Kennwörter Y, indem es diese einem neuronalen Dekodierer 420 zuführt, der mit entsprechenden Dekodierungsparametern Θ (wobei diese Dekodierungsparameter während des gesamten Kodierungstrainingszeitplans fest bleiben) konfiguriert ist, dekodierte Kennwörter oder geschätzte Kennwörter ÛB×k2k1 (nach einer geeigneten Umformung) zu berechnen. Bei 479, durch Berechnen des Verlusts
    Figure DE102022124546A1_0015
    zwischen den Trainingssequenzen (den übertragenen Sequenzen) U und den geschätzten Sequenzen U ( L ( U , U ^ ) )
    Figure DE102022124546A1_0016
    unter Verwendung eines Verlustrechners 461) und Rückwärtspropagieren des Verlusts zum Berechnen von dessen Gradienten (durch einen Rückpropagator 463), unternimmt die Kodiereroptimierung einen Schritt zum Aktualisieren der Gewichtungen der NN-Kodierer (unter Verwendung eines Optimierers 465), um aktualisierte Kodierungsgewichtungen ϕ1 und ϕ2 zu berechnen. Diese aktualisierten Kodierungsgewichtungen ϕ1 und ϕ2 werden verwendet, um die erste neuronale Dekodierungsstufe 411 und die zweite neuronale Dekodierungsstufe 412 neu zu konfigurieren. Dieser Vorgang wird Tenc Mal wiederholt, um die Kodierungsgewichtungen ϕ1 und ϕ2 während jeder Iteration zu aktualisieren, während die Dekodierungsgewichtungen Θ fest bleiben (für einen festen neuronalen Dekodierer 420).
  • 5A ist eine schematische Darstellung eines Trainingszeitplans für eine neuronale Dekodierung eines gemeinsamen Trainingsprozesses zum Trainieren eines neuronalen Produktkodierers und eines neuronalen Produktdekodiererpaares nach einer Ausführungsform der vorliegenden Offenbarung.
  • Wie oben in 3 und 5A gezeigt, wird in einigen Ausführungsformen das Paar an Dekodierern (oder M Dekodierer) bei jeder i-ten Iteration durch den neuronalen Produktdekodierer 320 (i = 1, ..., I) durch ein Paar an unterschiedlichen FCNNs (oder M unterschiedlichen FCNNs in dem Fall, in dem M > 2) ersetzt, was zu 21 neuronalen Dekodierungsstufen D j ( j ) , j = 1,2
    Figure DE102022124546A1_0017
    (oder M × I neuronalen Dekodierungsstufen D j ( j ) ,
    Figure DE102022124546A1_0018
    j = 1, ..., M) führt, wobei jede durch einen entsprechenden Satz an Parametern Θ j ( j )
    Figure DE102022124546A1_0019
    (z.B. Gewichtungen und Vorspannungen) konfiguriert wird. Die M neuronalen Dekodierungsstufen, die einer i-ten Iteration entsprechen, können als eine i-te Teilsequenz oder eine i-te Gruppe von M × I bezeichnet werden. In einigen Ausführungsformen arbeiten die ersten I - 1 Paare an NN-Dekodierern an Eingabe- und Ausgabegrößen der Länge von kodierten Bits nj, während das letzte Paar an Dekodierern die Kodierungsoperation durch Reduzieren der Längen von nj auf kj zurücksetzt. Außerdem nehmen in einigen Ausführungsformen einige der Dekodierer mehrere Länge-nj-Vektoren als eine Eingabe und geben mehrere Kopien von Länge-nj-Vektoren aus, wie unten ausführlicher beschrieben wird.
  • 5B ist ein Flussdiagramm eines Verfahrens 570 zum Trainieren eines neuronalen Produktdekodierers während einer Trainingsphase eines neuronalen Dekodierers nach einer Ausführungsform der vorliegenden Offenbarung. Dieses Verfahren 570 kann verwendet werden, um das Training von Parametern für neuronale Dekodierungsstufen bei 393 des in 3D gezeigten Verfahrens 390 umzusetzen.
  • Bei 571 lädt das Trainingssystem einen Stapel an B Binärinformationssequenzen einer Länge k (wobei z.B. k = k1k2, in dem Fall, in dem M = 2) und formt in Übereinstimmung mit UB×k2×k1 . Bei 573 führt das Trainingssystem die Trainingssequenzen U einem neuronalen Kodierer 510 zu, der mit Parametern Φ konfiguriert wird, die während der Trainingsphase des Dekodierers fest bleiben. Die reellwertigen Kennwörter C durchdringen ein Modell des Kanals 550, das eine Übertragung der reellwertigen Kennwörter C durch den Kanal 550 durch Anwenden von Verzerrungen und/oder Rauschen, wie additivem weißen Gaußschen Rauschen (AWGN), simuliert, um die empfangenen Kennwörter Y zu erzeugen. In einigen Ausführungsformen wird die Verzerrung, wie AWGN, durch ein ausgewähltes (einen ausgewählten Bereich eines) Dekodierungstrainings-SNR angewandt, wie unten ausführlicher beschrieben wird. Die daraus resultierenden empfangenen Kennwörter werden dann bei 577 dem neuronalen Dekodierer 520 zugeführt, um einen Stapel an geschätzten Sequenzen oder dekodierten Kennwörtern ÛB×k2k1 zu berechnen. Nach dem Berechnen des Verlusts ( L ( U , U ^ )
    Figure DE102022124546A1_0020
    basierend auf Unterschieden zwischen den Trainingssequenzen U und den geschätzten Sequenzen Û) und dessen Gradienten berechnet der Dekodierungsoptimierer dann bei 579 aktualisierte Dekodierungsparameter Θ für die neuronalen Dekodierungsstufen. Dieser Vorgang wird Tdec Mal wiederholt, wobei jedes Mal lediglich die Dekodierungsgewichtungen Θ aktualisiert werden, während die Kodierungsparameter Φ für den neuronalen Kodierer 510 fest bleiben.
  • In einigen Ausführungsformen wird der neuronale Kodierer mit dem Kanal trainiert, der mit Anwendung von AWGN mit einem einzelnen SNR von γ dB modelliert wird, und wobei der Dekodierer mit einem Bereich von Trainings-SNR-Werten trainiert wird, bei dem während jedem Dekodierungstrainingsstapel B zufällige Werte einheitlich von innerhalb des Bereichs der Trainings-SNR-Werte ausgewählt und entsprechenden Trainingskennwörtern zugewiesen werden. In einigen Ausführungsformen wird der Dekodierer mit einem Bereich von SNR-Werten von γ - 2.5 dB bis γ + 1 dB trainiert. In einigen Ausführungsformen wird das Training mit y = 3 dB durchgeführt.
  • Die in 5A dargestellte Ausführungsform zeigt ferner gestrichelte Linien, die zeigen, dass das empfangene Kennwort y als Eingabe nicht nur der zweiten neuronalen Dekodierungsstufe des ersten Dekodiererpaares des neuronalen Dekodierers 520 zugeführt wird, sondern auch jeder anderen neuronalen Dekodierungsstufe (mit Ausnahme der letzten neuronalen Dekodierungsstufe des I-ten Dekodierungspaares).
  • Ausführlicher nimmt der erste NN-Dekodierer D 2 ( 1 ) ,
    Figure DE102022124546A1_0021
    welcher der Dekodierer von Code C2 in der ersten Iteration ist, in einigen Ausführungsformen lediglich die Kanalausgabe y einer Größe n1 × n2. Dann gibt er n1 Länge-n2-Vektoren aus, die in einer Matrix ỹ2 (1) ausgebildet sind. Alle der nächsten 2I - 2 Dekodierer D 1 ( 1 ) , D 2 ( 2 ) , ,
    Figure DE102022124546A1_0022
    und D 2 ( I )
    Figure DE102022124546A1_0023
    nehmen die Kanalausgabe y zusätzlich zu der Ausgabe des vorherigen Dekodierers. Der letzte Dekodierer D 1 ( I )
    Figure DE102022124546A1_0024
    nimmt lediglich die Ausgabe des vorherigen Dekodierers als die Eingabe. Einige Ausführungsformen enthalten ferner eine zusätzliche neuronale Dekodierungsstufe (als ein weiteres FCNN), die jeden von n1, Länge-n2-Vektoren der Kanalausgabe derart zu einem Länge-k2-Vektor mappt, dass diese mit den k2 Länge-n1-Vektoren des vorherigen NN-Dekodierers konkateniert werden können, um die k2 Länge-2n1-Vektoren bei der Eingabe des letzten Dekodierers auszubilden.
  • In einigen Ausführungsformen wird lediglich der Unterschied der Kanalausgabe und der Eingabe des Dekodierers an den nächsten Dekodierer gegeben. In diesen Ausführungsformen nimmt der erste Dekodierer D 2 ( 1 )
    Figure DE102022124546A1_0025
    lediglich die Kanalausgabe, der zweite Dekodierer D 1 ( 1 )
    Figure DE102022124546A1_0026
    nimmt die Ausgabe des vorherigen Dekodierers D 2 ( 1 )
    Figure DE102022124546A1_0027
    und die nächsten 2I - 3 Dekodierer nehmen den Unterschied der Soft-Informationen (z.B. die Unterschiede zwischen reellwertigen Ausgaben vorheriger Dekodierer). Aufgrund des Dimensionalitätsproblems bei einer Subtraktion nimmt der letzte Dekodierer D 1 ( I )
    Figure DE102022124546A1_0028
    die Ausgabe des vorherigen Dekodierers D 2 ( I )
    Figure DE102022124546A1_0029
  • In einigen Ausführungsformen gibt jeder neuronale Dekodierer (mit Ausnahme des letzten) F Vektoren anstelle von einem Vektor als die Soft-Informationen aus (z.B. als die reellwertige Ausgabe der Stufe, die Wahrscheinlichkeiten oder Vertraulichkeiten darstellen kann, dass bestimmte Bits einen Wert von 1 aufweisen). Zum Beispiel erzeugt in einigen Ausführungsformen eine j-te neuronale Dekodierungsstufe Fnj Ausgaben, zum Beispiel durch Konfigurieren des neuronalen Netzwerks, Fnj Ausgaben auszugeben (z.B. durch Aufweisen einer Ausgangsschicht oder Endschicht mit Fnj Neuronen, in dem Fall eines FCNN). Diese Fnj Ausgaben können als F Vektoren verstanden werden, von denen jeder eine Länge nj aufweist (z.B. eine F × nj-Matrix). 5C ist eine Darstellung eines Hinzufügens einer Merkmalsgröße zu einem neuronalen Produktcodedekodierer mit I = 2 Dekodierungsiterationen oder Pipeline-Stufen. Wie in 5C gezeigt, wird eine Dekodiererausgabe Y n 2 × n 1 ( 1 )
    Figure DE102022124546A1_0030
    der ersten Stufe D 1 ( 1 )
    Figure DE102022124546A1_0031
    581 und der zweiten Stufe D 2 ( 1 )
    Figure DE102022124546A1_0032
    582 einer ersten Pipeline-Stufe 580A und der zweiten Stufe D 2 ( 2 )
    Figure DE102022124546A1_0033
    589 einer zweiten Pipeline-Stufe 580B eines neuronalen Dekodierers 580 als Eingaben zugeführt, wobei die Dekodiererausgabe Y n 2 × n 1 ( 1 )
    Figure DE102022124546A1_0034
    mit der Ausgabe der vorherigen Stufe (wenn überhaupt) konkateniert wird, um die Eingabe für die nachfolgende Stufe bereitzustellen. Zum Beispiel nimmt die Eingabe in die erste Stufe D 1 ( 1 )
    Figure DE102022124546A1_0035
    der ersten Pipeline-Stufe die Kanalausgabe Y n 2 × n 1 ( 1 ) ,
    Figure DE102022124546A1_0036
    die eine Größe n2 * n1 aufweist. Dies ist äquivalent zum Aufweisen von n2 Vektoren einer Größe n1, welche durch die erste Stufe D 1 ( 1 )
    Figure DE102022124546A1_0037
    dekodiert werden müssen. Zusätzlich wird die Ausgabe der zweiten Stufe D 2 ( 1 )
    Figure DE102022124546A1_0038
    der ersten Pipeline-Stufe an die erste Stufe D 1 ( 1 )
    Figure DE102022124546A1_0039
    übermittelt und weist eine Größe Fn2 × n1 auf, die zunächst zu einem Array einer Form n2 × Fn2 umgeformt wird, bevor sie mit der Kanalausgabe Y n 2 × n 1 ( 1 )
    Figure DE102022124546A1_0040
    konkateniert, um ein Array einer Form n2 × (n1 + Fn1) auszubilden, das äquivalent ist zu n2 Vektoren einer Größe n1 + Fn1 = (F + 1)n1 (bei der Eingabe der ersten Stufe D 1 ( 1 )
    Figure DE102022124546A1_0041
    ), die jeweils mittels der ersten Stufe D 1 ( 1 )
    Figure DE102022124546A1_0042
    dekodiert werden, um n2 Vektoren einer Größe Fn1 auszugeben. Somit sind die Eingabe- und Ausgabegröße der ersten Stufe D 1 ( 1 )
    Figure DE102022124546A1_0043
    der ersten Pipeline-Stufe jeweils (1 + F)n1 und Fn1, wie in 5C gezeigt wird. Weiter stromabwärtige Stufen des in 5C gezeigte neuronalen Dekodierers 580 folgen einer ähnlichen Beziehung zwischen ihren Eingabegrößen und Ausgabegrößen.
  • Obwohl einige spezifische Ausführungsformen der vorliegenden Offenbarung oben beschrieben werden, in denen die neuronalen Kodierer und die neuronalen Dekodierer unter Verwendung von vollständig verbundenen neuronalen Netzwerken (FCNNs) umgesetzt werden, sind die Ausführungsformen der vorliegenden Offenbarung nicht darauf beschränkt und die in den neuronalen Kodierungsstufen und neuronalen dekodierungsstufen enthaltenen neuronalen Netzwerke können unterschiedliche neuronale Architekturen aufweisen, wie eine Architektur eines konvolutionären neuronalen Netzwerks (CNN), eine Architektur eines Recurrent Neural Network (RNN) oder eine neuronale Transformatornetzwerkarchitektur.
  • In einigen Ausführungsformen der vorliegenden Offenbarung werden der Optimierer 465 und der Optimierer 565 unter Verwendung des Adam-Optimierers umgesetzt (siehe z.B. Kingma, Diederik P. und Jimmy Ba. „Adam: A method for stochastic optimization“ [Adam: Ein Verfahren für stochastische Optimierung] arXiv preprint arXiv:1412.6980 (2014)). In einigen Ausführungsformen wird die Scale-Exponential-Linear-Unit(SELU)-Aktivierungsfunktion als die Aktivierungsfunktion für die verborgenen Schichten der FCNNs verwendet. In einigen Ausführungsformen verwendet die durch den Verlustcomputer 461 und 561 berechnete Verlustfunktion
    Figure DE102022124546A1_0044
    die BCE-with-Logits-Verlustfunktion, die eine Sigmoidschicht mit einem Binärkreuzentropieverlust kombiniert. Die Ausführungsformend er vorliegenden Offenbarung sind jedoch nicht auf ein Training neuronaler Kodierer und neuronaler Dekodierer unter Verwendung dieser Ansätze beschränkt, sondern es können andere Optimierer, andere Aktivierungsfunktionen und andere Verlustfunktionen in den Trainingszeitplänen des neuronalen Kodierers und dem Trainingszeitplan des neuronalen Dekodierers verwendet werden.
  • Dementsprechend beziehen sich Aspekte der Ausführungsformen der vorliegenden Offenbarung auf einen neuronalen Produktkodierer und einen neuronalen Produktdekodierer und Verfahren zum gemeinsamen Trainieren des neuronalen Produktkodierers und des neuronalen Produktdekodierers, um ein neuronales Produktkodierungssystem zu trainieren.
  • In experimentellen Versuchen haben die Ausführungsformen der vorliegenden Offenbarung, die einen neuronalen (15,10)2-Code (z.B. einen neuronalen (255,100)-Code) umsetzt, die BER des äquivalenten Polar-Codes (der durch zufälliges Punktieren von 31 kodierten Bits eines (256,100)-Polar-Codes erhalten wird) mit großem Vorsprung über alle Bereiche eines SNR übertroffen, während ungefähr dieselbe BLER wie der Polar-Code aufrechterhalten worden ist.
  • In zusätzlichen experimentellen Versuchen hat ein neuronaler Produktautokodierer, der einen neuronalen (21,14)2-Code (z.B. einen (441,196)-Code) umsetzt, nach einer Ausführungsform der vorliegenden Offenbarung einen Polar-Code mit derselben Länge unter einer SC-Dekodierung übertroffen. Der Polar-Code wurde durch zufälliges Punktieren von 71 kodierten Bits eines (512,196)-Polar-Codes erhalten. Der neuronale (21,14)2-Code mit moderater Länge hat die BER des äquivalenten Polar-Codes mit großem Vorsprung über alle Bereiche eines SNR übertroffen, während ungefähr dieselbe BLER-Performance aufrechterhalten worden ist.
  • In einigen experimentellen Versuchen sind Ausführungsformen der vorliegenden Offenbarung mit einem Polar-Under-CRC-List-SC-Dekodierer, LDPC und einem Tail-Biting Convolutional Code (TBCC) verglichen worden. Alle drei dieser klassischen Codes weisen Parameter (300,100) auf. Ein neuronaler (15,10)2-Code nach der vorliegenden Ausführungsform hat einen TBCC mit einem guten Vorsprung über alle Bereiche von Eb/N0 und jene des Polar- und LDPC-Codes für BER-Werte, die größer waren als 10-4, übertroffen. Ein fairer Vergleich erfordert das Reduzieren der Blocklänge der betrachteten klassischen Codes auf 225 Bits, z.B. durch Punktieren von 75 Bits. Zusätzlich ist ein neuronaler (21,14)2-Code nach Ausführungsformen der vorliegenden Offenbarung mit weniger als 1,5 Mal größerer Blocklänge aber beinahe zweimal so großer Codedimension dazu imstande, die klassischen Codes des Stands der Technik mit einem guten Vorsprung über alle relevanten BER-Bereiche zu übertreffen.
  • Es sollte verstanden werden, dass die Sequenz der Schritte der Prozesse, die hierin mit Bezug auf die verschiedenen Verfahren und mit Bezug auf verschiedene Flussdiagramme beschrieben werden, nicht fest sind, sondern modifiziert, in ihrer Reihenfolge verändert, unterschiedlich durchgeführt, sequenziell, zeitgleich oder simultan durchgeführt oder in jede beliebige gewünschte Reihenfolge verändert werden können in Übereinstimmung mit Abhängigkeiten zwischen Schritten der Prozesse, wie ein Fachmann erkennen wird. Ferner, wie hierin und in den Ansprüchen verwendet, soll der Ausdruck "mindestens eines von Element A, Element B oder Element C” jedes beliebige der nachfolgenden übermitteln: Element A; Element B; Element C; Elemente A und B; Elemente A und C; Elemente B und C; und Elemente A, B und C.
  • Ausführungsformen der vorliegenden Erfindung können auf eine Vielzahl von Weisen umgesetzt werden, wie ein Fachmann würdigen wird, und der Begriff „Prozessor“, wie er hierin verwendet wird, kann sich auf jede beliebige Berechnungsvorrichtung beziehen, die zur Durchführung der beschriebenen Operationen imstande ist, wie ein programmierter Allzweckprozessor (z.B. ein ARM-Prozessor) mit Anweisungen, die in einem Speicher gespeichert sind, der mit dem Allzweckprozessor verbunden ist, ein Field Programmable Gate Array (FPGA) und eine benutzerdefinierte anwendungsspezifische integrierte Schaltung (ASIC). Ausführungsformen der vorliegenden Erfindung können in einen seriellen Kommunikationscontroller (z.B. einen Universal Serial Bus oder einen USB-Controller), eine Grafikverarbeitungseinheit (GPU), eine Zwischen-Panel-Schnittstelle und andere Hardware- oder Softwaresysteme integriert werden, die konfiguriert sind, Digitaldaten zu senden und zu empfangen.
  • Obwohl die vorliegende Erfindung in Verbindung mit bestimmten Ausführungsbeispielen beschrieben worden ist, versteht es sich, dass die Erfindung nicht auf die offenbarten Ausführungsformen beschränkt ist, sondern, im Gegenteil, verschiedene Modifikationen und äquivalente Anordnungen umfassen soll, die in dem Schutzumfang der beigefügten Ansprüche enthalten sind.

Claims (20)

  1. Verarbeitungsschaltung, die einen Kodierer für einen (n,k)-Fehlerkorrekturcode umsetzt, wobei der Kodierer konfiguriert ist: k Symbole von ursprünglichen Daten zu empfangen; die k Symbole von ursprünglichen Daten einem neuronalen Produktkodierer zuzuführen, der eine Mehrzahl an M neuronalen Kodierungsstufen aufweist, wobei eine j-te neuronale Kodierungsstufe der Mehrzahl an M neuronalen Kodierungsstufen ein j-tes neuronales Netzwerk aufweist, das durch eine j-te Mehrzahl an Parametern konfiguriert ist, um einen (nj,kj)-Fehlerkorrekturcode umzusetzen, wobei nj ein Faktor von n ist und kj ein Faktor von k ist; und n Symbole von kodierten Daten auszugeben, die den k Symbolen von ursprünglichen Daten entsprechen, die durch einen Fehlerkorrekturcode kodiert sind.
  2. Verarbeitungsschaltung nach Anspruch 1, wobei das j-te neuronale Netzwerk ein vollständig verbundenes neuronales Netzwerk aufweist, und wobei die j-te Mehrzahl an Parametern eine Mehrzahl an Gewichtungen von Verbindungen zwischen Neuronen des vollständig verbundenen neuronalen Netzwerks aufweist.
  3. Verarbeitungsschaltung nach Anspruch 1, wobei der Kodierer ferner konfiguriert ist, die k Symbole von ursprünglichen Daten in M-dimensionale ursprüngliche Daten umzuformen, und
  4. Verarbeitungsschaltung nach Anspruch 1, wobei das j-te neuronale Netzwerk konfiguriert ist, einen reellwertigen Vektor mit einer Länge nj auszugeben.
  5. Verarbeitungsschaltung nach Anspruch 1, wobei die Verarbeitungsschaltung in eine mobile Vorrichtung integriert ist, und wobei die Verarbeitungsschaltung konfiguriert ist, die ursprünglichen Daten für eine Übertragung in Übereinstimmung mit einem Mobilfunkkommunikationsprotokoll zu kodieren.
  6. Verarbeitungsschaltung, die einen Dekodierer für einen (n,k)-Fehlerkorrekturcode umsetzt, wobei der Dekodierer konfiguriert ist: n Symbole einer empfangenen Nachricht zu empfangen; die n Symbole der empfangenen Nachricht einem neuronalen Produktdekodierer zuzuführen, der eine Mehrzahl an neuronalen Dekodierungsstufen aufweist, die in eine Mehrzahl an I Pipeline-Stufen gruppiert werden, wobei eine i-te Pipeline-Stufe des neuronalen Produktdekodierers eine Mehrzahl an M neuronalen Dekodierungsstufen aufweist, eine j-te neuronale Dekodierungsstufe der Mehrzahl an M neuronalen Dekodierungsstufen ein j-tes neuronales Netzwerk aufweist, das durch eine j-te Mehrzahl an Parametern konfiguriert ist, um einen (nj,kj)-Fehlerkorrekturcode umzusetzen, wobei nj ein Faktor von n ist und kj ein Faktor von k ist; und k Symbole von geschätzten ursprünglichen Daten auszugeben, die aus den n Symbolen der empfangenen Nachricht dekodiert sind.
  7. Verarbeitungsschaltung nach Anspruch 6, wobei das j-te neuronale Netzwerk ein vollständig verbundenes neuronales Netzwerk aufweist, und wobei die j-te Mehrzahl an Parametern eine Mehrzahl an Gewichtungen von Verbindungen zwischen Neuronen des vollständig verbundenen neuronalen Netzwerks aufweist.
  8. Verarbeitungsschaltung nach Anspruch 6, wobei der Dekodierer ferner konfiguriert ist, die n Symbole der empfangenen Nachricht in M-dimensionale empfangene Daten umzuformen, und wobei die j-te neuronale Dekodierungsstufe konfiguriert ist, eine j-te Dimension von nj Symbolen der M-dimensionalen empfangenen Daten zu dekodieren.
  9. Verarbeitungsschaltung nach Anspruch 6, wobei das j-te neuronale Netzwerk konfiguriert ist, einen reellwertigen Vektor mit einer Länge nj auszugeben.
  10. Verarbeitungsschaltung nach Anspruch 6, wobei das j-te neuronale Netzwerk konfiguriert ist, einen reellwertigen Vektor mit einer Länge Fnj auszugeben, wobei F eine ganze Zahl größer als 1 ist.
  11. Verarbeitungsschaltung nach Anspruch 6, wobei der Dekodierer konfiguriert ist, die n Symbole der empfangenen Nachricht mindestens zwei der Mehrzahl an neuronalen Dekodierungsstufen des neuronalen Produktdekodierers zuzuführen.
  12. Verarbeitungsschaltung nach Anspruch 6, wobei die Verarbeitungsschaltung in eine mobile Vorrichtung integriert ist, und wobei die Verarbeitungsschaltung konfiguriert ist, die empfangenen Daten zu dekodieren, wobei die empfangenen Daten in Übereinstimmung mit einem Mobilfunkkommunikationsprotokoll kodiert werden.
  13. Verarbeitungsschaltung nach Anspruch 6, wobei I größer ist als 1.
  14. Verfahren zum gemeinsamen Trainieren eines neuronalen Produktkodierungssystems, aufweisend: Initialisieren einer Mehrzahl an Parametern einer Mehrzahl an neuronalen Kodierungsstufen eines neuronalen Produktkodierers und einer Mehrzahl an Parametern einer Mehrzahl an neuronalen Dekodierungsstufen eines neuronalen Produktdekodierers; iteratives Alternieren zwischen: Trainieren der Parameter der neuronalen Dekodierungsstufen, während die Mehrzahl an Parametern der neuronalen Kodierungsstufen fest bleibt; Trainieren der Parameter der neuronalen Kodierungsstufen, während die Mehrzahl an Parametern der neuronalen Dekodierungsstufen fest bleibt; und Ausgeben von trainierten Parametern der Mehrzahl an neuronalen Kodierungsstufen des neuronalen Produktkodierers und von trainierten Parametern der Mehrzahl an neuronalen Dekodierungsstufen des neuronalen Produktdekodierers.
  15. Verfahren nach Anspruch 14, wobei eine Iteration eines Trainings der Parameter der neuronalen Kodierungsstufen aufweist: Senden eines Stapels an Trainingssequenzen an die Mehrzahl an neuronalen Kodierungsstufen, die mit den Parametern der neuronalen Kodierungsstufen konfiguriert werden, um reellwertige Kennwörter zu berechnen; Modifizieren der reellwertigen Kennwörter basierend auf Kanaleigenschaften, um empfangene Kennwörter zu berechnen; Dekodieren der empfangenen Kennwörter unter Verwendung der neuronalen Dekodierungsstufen, die mit Parametern der neuronalen Dekodierungsstufen konfiguriert werden, um geschätzte Sequenzen zu berechnen; und Aktualisieren der Parameter der neuronalen Kodierungsstufen basierend auf Verlustwerten, die basierend auf den Trainingssequenzen und den geschätzten Sequenzen berechnet werden.
  16. Verfahren nach Anspruch 15, wobei eine j-te neuronale Kodierungsstufe der neuronalen Kodierungsstufen ein neuronales Netzwerk aufweist, und wobei eine j-te Mehrzahl an Parametern der Parameter der neuronalen Kodierungsstufen eine Mehrzahl an Gewichtungen von Verbindungen zwischen Neuronen des neuronalen Netzwerks aufweist.
  17. Verfahren nach Anspruch 14, wobei eine Iteration eines Trainings der Parameter der neuronalen Dekodierungsstufen aufweist: Senden eines Stapels an Trainingssequenzen an die Mehrzahl an neuronalen Kodierungsstufen, die mit den Parametern der neuronalen Kodierungsstufen konfiguriert werden, um reellwertige Kennwörter zu berechnen; Modifizieren der reellwertigen Kennwörter basierend auf Kanaleigenschaften, um empfangene Kennwörter zu berechnen; Dekodieren der empfangenen Kennwörter unter Verwendung der neuronalen Dekodierungsstufen, die mit Parametern der neuronalen Dekodierungsstufen konfiguriert werden, um geschätzte Sequenzen zu berechnen; und Aktualisieren der Parameter der neuronalen Dekodierungsstufen basierend auf Verlustwerten, die basierend auf den Trainingssequenzen und den geschätzten Sequenzen berechnet werden.
  18. Verfahren nach Anspruch 17, wobei die neuronalen Dekodierungsstufen in eine Mehrzahl an I Pipeline-Stufen gruppiert werden, eine i-te Pipeline-Stufe des neuronalen Produktdekodierers eine Mehrzahl an M neuronalen Dekodierungsstufen aufweist, eine j-te neuronale Dekodierungsstufe der Mehrzahl anMneuronalen Dekodierungsstufen ein neuronales Netzwerk aufweist, und wobei eine j-te Mehrzahl an Parametern der Parameter der neuronalen Dekodierungsstufen eine Mehrzahl an Gewichtungen von Verbindungen zwischen Neuronen des neuronalen Netzwerks aufweist.
  19. Verfahren nach Anspruch 17, wobei das Modifizieren der reellwertigen Kennwörter basierend auf Kanaleigenschaften aufweist: Anwenden eines additiven weißen Gaußschen Rauschens auf die reellwertigen Kennwörter in einem Bereich von unterschiedlichen Signal-Rausch-Verhältnis(SNR)-Werten, um die empfangenen Kennwörter zu berechnen.
  20. Verfahren nach Anspruch 17, wobei die empfangenen Kennwörter einer Mehrzahl an neuronalen Dekodierungsstufen zugeführt werden.
DE102022124546.2A 2021-10-04 2022-09-23 Produktautokodierer für eine Fehlerkorrektur mittels Unterstufenverarbeitung Pending DE102022124546A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163252027P 2021-10-04 2021-10-04
US63/252,027 2021-10-04
US17/942,064 US20230104143A1 (en) 2021-10-04 2022-09-09 Product autoencoder for error-correcting via sub-stage processing
US17/942,064 2022-09-09

Publications (1)

Publication Number Publication Date
DE102022124546A1 true DE102022124546A1 (de) 2023-04-06

Family

ID=85570784

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022124546.2A Pending DE102022124546A1 (de) 2021-10-04 2022-09-23 Produktautokodierer für eine Fehlerkorrektur mittels Unterstufenverarbeitung

Country Status (5)

Country Link
US (1) US20230104143A1 (de)
KR (1) KR20230048615A (de)
CN (1) CN115941115A (de)
DE (1) DE102022124546A1 (de)
TW (1) TW202316810A (de)

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6069917A (ja) * 1983-09-26 1985-04-20 Pioneer Electronic Corp デ−タ伝送方式
JPH0619913B2 (ja) * 1984-03-30 1994-03-16 パイオニア株式会社 ビデオフオ−マツト信号に担持されるデ−タのエラ−訂正方式
KR100277764B1 (ko) * 1998-12-10 2001-01-15 윤종용 통신시스템에서직렬쇄상구조를가지는부호화및복호화장치
US6581178B1 (en) * 1999-02-15 2003-06-17 Nec Corporation Error correction coding/decoding method and apparatus
US7356752B2 (en) * 2000-03-14 2008-04-08 Comtech Telecommunications Corp. Enhanced turbo product codes
KR100461544B1 (ko) * 2003-02-27 2004-12-18 한국전자통신연구원 고차원의 곱부호를 이용한 레이트 호환가능 부호 구성 방법
US7415651B2 (en) * 2004-06-02 2008-08-19 Seagate Technology Data communication system with multi-dimensional error-correction product codes
US9362955B2 (en) * 2010-09-10 2016-06-07 Trellis Phase Communications, Lp Encoding and decoding using constrained interleaving
TWI500272B (zh) * 2012-12-03 2015-09-11 Nat Univ Tsing Hua 資料偵錯系統及其方法
US9515683B2 (en) * 2014-08-13 2016-12-06 Ciena Corporation Forward error correction architecture and implementation for power/space efficient transmission systems
KR101858123B1 (ko) * 2017-04-25 2018-05-17 고려대학교 산학협력단 혼합형 반복 복호 방법 및 장치
US20230079744A1 (en) * 2021-08-27 2023-03-16 Huawei Technologies Co., Ltd. Methods and systems for source coding using a neural network

Also Published As

Publication number Publication date
CN115941115A (zh) 2023-04-07
KR20230048615A (ko) 2023-04-11
TW202316810A (zh) 2023-04-16
US20230104143A1 (en) 2023-04-06

Similar Documents

Publication Publication Date Title
DE112005003790B4 (de) Verallgemeinerter Mehrschwellen-Decodierer für Codes für Paritätsprüfungen geringer Dichte
DE102009017540B4 (de) Verfahren zum Wiederherstellen verlorener und/oder beschädigter Daten
DE19630343B4 (de) Verfahren und Paket-Übertragungssystem unter Verwendung einer Fehlerkorrektur von Datenpaketen
DE102011054410B4 (de) Vorrichtung und Verfahren zur Erzeugung einer Bitfolge
DE202005021953U1 (de) Vorrichtung zum Generieren einer Paritätsprüfmatrix, Datenübertragungssystem, Codiervorrichtung, Decodiervorrichtung
DE102017130591A1 (de) Verfahren und Vorrichtung zur Fehlerkorrekturkodierung auf Basis einer Datenkomprimierung
DE102010035210B4 (de) Verfahren zur Rückgewinnung verlorener Daten und zur Korrektur korrumpierter Daten
DE102012102254A1 (de) Vorrichtung und Verfahren zur Rekonstruktion einer Bitfolge unter Vorkorrektur
DE102016102590B4 (de) Datenverarbeitungseinrichtungen und verfahren zum rekonstruieren eines puf-werts
DE102022126344A1 (de) Systeme, Verfahren und Einrichtung für künstliche Intelligenz und maschinelles Lernen für eine Physical Layer eines Kommunikationssystems
DE112005003706T5 (de) Modifizierter turbo-decodierender Nachrichtenweiterleitungsalgorithmus für Paritätsprüfcodes mit geringer Dichte
DE602005004863T2 (de) Verfahren zur Punktierung von LDPC Kanalcodes
DE102009035921B4 (de) Decoder für Fehlerkorrekturcodes
DE19539343C2 (de) Verfahren zur Fehlererkennung eines digitalen Bitdatenstroms, der von einem Sender zu einem Empfänger übertragen wird
DE102017216264A1 (de) Decodierverfahren
DE102022124546A1 (de) Produktautokodierer für eine Fehlerkorrektur mittels Unterstufenverarbeitung
DE102015111729B4 (de) Verfahren und decoder zum bestimmen eines fehlervektors für ein datenwort gemäss einem reed-muller-code
DE102022111624B4 (de) Fehlerkorrektur mit schneller Syndromberechnung
DE102023104703A1 (de) PDCCH-Dekodierung mit bekannten DCI-Bits
DE102016201408B4 (de) Verfahren zum Übertragen von Daten
DE102019200402B3 (de) Verfahren zum Überprüfen der Sicherheit eines Schlüsselpaars eines auf algebraischen Codes basierenden kryptographischen Systems
DE102017200075B4 (de) Entschlüsselungsverfahren sowie Kommunikationssystem
DE102019200941B4 (de) Decodierverfahren
DE102014218384B3 (de) Rückgewinnung eines binären Response-Musters von einem verrauschten Kanal
DE102010029113A1 (de) Verfahren zur Kanalcodierung von digitalen Daten

Legal Events

Date Code Title Description
R012 Request for examination validly filed