One-hot - One-hot

Binär Grauer Code One-hot
000 000 00000001
001 001 00000010
010 011 00000100
011 010 00001000
100 110 00010000
101 111 00100000
110 101 01000000
111 100 10000000

In digitalen Schaltkreisen und beim maschinellen Lernen ist ein One-Hot eine Gruppe von Bits, unter denen die zulässigen Wertekombinationen nur diejenigen mit einem einzelnen High-Bit (1) und allen anderen Low-Bits (0) sind. Eine ähnliche Implementierung, bei der alle Bits außer einer '0' '1' sind, wird manchmal als One-Cold bezeichnet . In Statistiken , Dummy - Variablen repräsentieren eine ähnliche Technik für die Darstellung von kategorischen Daten .

Anwendungen

Digitale Schaltung

One-Hot-Codierung wird häufig verwendet, um den Status einer Zustandsmaschine anzuzeigen . Bei Verwendung von Binär- oder Gray-Code wird ein Decoder benötigt, um den Status zu bestimmen. Eine One-Hot - Zustandsmaschine, jedoch braucht keinen Decoder , wie die Zustandsmaschine in dem ist n - ten Zustand , wenn und nur wenn die n - te Bit hoch ist .

Ein Ringzähler mit 15 sequentiell geordneten Zuständen ist ein Beispiel für eine Zustandsmaschine. Eine "One-Hot" -Implementierung hätte 15 in Reihe geschaltete Flip-Flops , wobei der Q-Ausgang jedes Flip-Flops mit dem D-Eingang des nächsten und der D-Eingang des ersten Flip-Flops mit dem Q-Ausgang des 15. Flip-Flops verbunden sind . Das erste Flip-Flop in der Kette repräsentiert den ersten Zustand, das zweite repräsentiert den zweiten Zustand und so weiter bis zum 15. Flip-Flop, das den letzten Zustand repräsentiert. Beim Zurücksetzen der Zustandsmaschine werden alle Flip-Flops auf '0' zurückgesetzt, mit Ausnahme des ersten in der Kette, das auf '1' gesetzt ist. Die nächste Taktflanke, die an den Flip-Flops ankommt, rückt das eine "heiße" Bit zum zweiten Flip-Flop vor. Das 'heiße' Bit rückt auf diese Weise bis zum 15. Zustand vor, wonach die Zustandsmaschine in den ersten Zustand zurückkehrt.

Ein Adressdecoder konvertiert von Binär- oder Gray-Code in eine One-Hot-Darstellung. Ein Prioritätscodierer konvertiert von einer One-Hot-Darstellung in Binär- oder Gray-Code.

Vergleich mit anderen Codierungsmethoden

Vorteile
  • Das Bestimmen des Zustands hat niedrige und konstante Kosten für den Zugriff auf ein Flip-Flop
  • Das Ändern des Zustands hat die konstanten Kosten für den Zugriff auf zwei Flip-Flops
  • Einfach zu entwerfen und zu modifizieren
  • Leicht zu erkennende illegale Staaten
  • Nutzt die zahlreichen Flip-Flops eines FPGA

Durch die Verwendung einer One-Hot-Implementierung kann eine Zustandsmaschine normalerweise mit einer schnelleren Taktrate ausgeführt werden als jede andere Codierung dieser Zustandsmaschine.

Nachteile
  • Benötigt mehr Flip-Flops als andere Codierungen, was es für PAL- Geräte unpraktisch macht
  • Viele der Staaten sind illegal

Verarbeitung natürlicher Sprache

Bei der Verarbeitung natürlicher Sprache ist ein One-Hot-Vektor eine 1 ×  N- Matrix (Vektor), mit der jedes Wort in einem Vokabular von jedem anderen Wort im Vokabular unterschieden wird. Der Vektor besteht aus Nullen in allen Zellen mit Ausnahme einer einzelnen 1 in einer Zelle, die eindeutig zur Identifizierung des Wortes verwendet wird. One-Hot-Codierung stellt sicher, dass beim maschinellen Lernen nicht davon ausgegangen wird, dass höhere Zahlen wichtiger sind. Zum Beispiel ist der Wert '8' größer als der Wert '1', aber das macht '8' nicht wichtiger als '1'. Gleiches gilt für Worte: Der Wert „Lachen“ ist nicht wichtiger als „Lachen“.

Maschinelles Lernen und Statistik

Beim maschinellen Lernen ist die One-Hot-Codierung eine häufig verwendete Methode zum Umgang mit kategorialen Daten. Da für viele Modelle des maschinellen Lernens die Eingabevariablen numerisch sein müssen, müssen kategoriale Variablen im Vorverarbeitungsteil transformiert werden.

Etikettencodierung
Name des Lebensmittels Kategoriale # Kalorien
Apfel 1 95
Hähnchen 2 231
Brokkoli 3 50
Eine Hot-Codierung
Apfel Hähnchen Brokkoli Kalorien
1 0 0 95
0 1 0 231
0 0 1 50

Kategoriale Daten können entweder nominal oder ordinal sein. Ordnungsdaten haben eine Rangfolge für ihre Werte und können daher durch Ordnungscodierung in numerische Daten umgewandelt werden. Ein Beispiel für Ordnungsdaten wären die Bewertungen eines Tests im Bereich von A bis F, die anhand von Zahlen zwischen 6 und 1 eingestuft werden könnten. Da zwischen den Einzelwerten der Nominalvariablen keine quantitative Beziehung besteht, kann die Verwendung der Ordnungscodierung möglicherweise zu einer Fiktion führen Ordnungsbeziehung in den Daten. Daher wird häufig eine One-Hot-Codierung auf nominale Variablen angewendet, um die Leistung des Algorithmus zu verbessern.

Für jeden eindeutigen Wert in der ursprünglichen kategorialen Spalte wird in dieser Methode eine neue Spalte erstellt. Diese Dummy-Variablen werden dann mit Nullen und Einsen gefüllt (1 bedeutet WAHR, 0 bedeutet FALSCH).

Da bei diesem Prozess mehrere neue Variablen erstellt werden, kann ein großes p-Problem (zu viele Prädiktoren) auftreten, wenn die ursprüngliche Spalte viele eindeutige Werte enthält. Ein weiterer Nachteil der One-Hot-Codierung besteht darin, dass sie eine Multikollinearität zwischen den einzelnen Variablen verursacht, was möglicherweise die Genauigkeit des Modells verringert.

Wenn es sich bei der kategorialen Variablen um eine Ausgabevariable handelt, möchten Sie die Werte möglicherweise wieder in eine kategoriale Form konvertieren, um sie in Ihrer Anwendung darzustellen.

In der Praxis wird diese Transformation häufig direkt von einer Funktion ausgeführt, die kategoriale Daten als Eingabe verwendet und die entsprechenden Dummy-Variablen ausgibt. Ein Beispiel wäre die dummyVars-Funktion der Caret-Bibliothek in R.


Siehe auch

Verweise