Jeden gorący

Dziesiętny Dwójkowy jednoargumentowy Jeden gorący
0 000 00000000 00000001
1 001 00000001 00000010
2 010 00000011 00000100
3 011 00000111 00001000
4 100 00001111 00010000
5 101 00011111 00100000
6 110 00111111 01000000
7 111 01111111 10000000

W obwodach cyfrowych i uczeniu maszynowym jeden gorący to grupa bitów , wśród których dopuszczalne kombinacje wartości to tylko te z jednym wysokim (1) bitem i wszystkimi pozostałymi niskimi (0). Podobna implementacja, w której wszystkie bity są równe „1” z wyjątkiem jednego „0”, jest czasami nazywana one-cold . W statystyce zmienne fikcyjne reprezentują podobną technikę reprezentacji danych kategorycznych .

Aplikacje

Obwody cyfrowe

Kodowanie typu one-hot jest często używane do wskazywania stanu maszyny stanowej . Podczas korzystania z binarnego do określenia stanu potrzebny jest dekoder . Jednak maszyna jednostanowa nie potrzebuje dekodera, ponieważ maszyna stanowa jest w n- tym stanie wtedy i tylko wtedy, gdy n- ty bit jest wysoki.

Licznik pierścieniowy z 15 sekwencyjnie uporządkowanymi stanami jest przykładem maszyny stanów. Implementacja „one-hot” miałaby 15 przerzutników połączonych szeregowo z wyjściem Q każdego przerzutnika podłączonym do wejścia D następnego i wejściem D pierwszego przerzutnika podłączonym do wyjścia Q 15. przerzutnika . Pierwszy przerzutnik w łańcuchu reprezentuje pierwszy stan, drugi reprezentuje drugi stan i tak dalej, aż do piętnastego przerzutnika, który reprezentuje ostatni stan. Po zresetowaniu maszyny stanów wszystkie przerzutniki są resetowane do „0”, z wyjątkiem pierwszego w łańcuchu, który jest ustawiony na „1”. Następna krawędź zegara docierająca do przerzutników przesuwa jeden „gorący” bit do drugiego przerzutnika. Bit „gorący” przesuwa się w ten sposób do stanu 15, po czym automat stanów powraca do stanu pierwszego.

Dekoder adresu konwertuje z reprezentacji binarnej na jedną gorącą. Koder priorytetowy konwertuje z reprezentacji jednokierunkowej na binarną.

Porównanie z innymi metodami kodowania

Zalety
  • Określenie stanu ma niski i stały koszt dostępu do jednego przerzutnika
  • Zmiana stanu ma stały koszt dostępu do dwóch przerzutników
  • Łatwy do zaprojektowania i modyfikacji
  • Łatwe do wykrycia nielegalne stany
  • Wykorzystuje liczne przerzutniki FPGA
  • Używanie implementacji one-hot zazwyczaj pozwala maszynie stanowej działać z większą częstotliwością zegara niż jakiekolwiek inne kodowanie tej maszyny stanowej
Niedogodności
  • Wymaga większej liczby przerzutników niż inne kodowania, co czyni go niepraktycznym dla urządzeń PAL
  • Wiele stanów jest nielegalnych

Przetwarzanie języka naturalnego

W przetwarzaniu języka naturalnego jeden gorący wektor to macierz 1 × N (wektor) używana do odróżnienia każdego słowa w słowniku od każdego innego słowa w słowniku. Wektor składa się z 0 we wszystkich komórkach z wyjątkiem pojedynczej 1 w komórce używanej jednoznacznie do identyfikacji słowa. Jednokrotne kodowanie zapewnia, że ​​uczenie maszynowe nie zakłada, że ​​wyższe liczby są ważniejsze. Na przykład wartość „8” jest większa niż wartość „1”, ale to nie czyni „8” ważniejszym niż „1”. To samo dotyczy słów: wartość „śmiech” nie jest ważniejsza niż „śmiech”.

Uczenie maszynowe i statystyka

W uczeniu maszynowym kodowanie na gorąco jest często stosowaną metodą radzenia sobie z danymi kategorialnymi. Ponieważ wiele modeli uczenia maszynowego wymaga, aby ich zmienne wejściowe były numeryczne, zmienne kategorialne muszą zostać przekształcone w części przetwarzania wstępnego.

Kodowanie etykiet
Nazwa żywności kategoryczny # Kalorie
Jabłko 1 95
Kurczak 2 231
brokuły 3 50
Jedno gorące kodowanie
Jabłko Kurczak brokuły Kalorie
1 0 0 95
0 1 0 231
0 0 1 50

Dane kategoryczne mogą być nominalne lub porządkowe. Dane porządkowe mają uporządkowaną kolejność wartości i dlatego można je konwertować na dane liczbowe za pomocą kodowania porządkowego. Przykładem danych porządkowych mogą być oceny w teście od A do F, które można uszeregować za pomocą liczb od 6 do 1. Ponieważ nie ma związku ilościowego między poszczególnymi wartościami zmiennych nominalnych, użycie kodowania porządkowego może potencjalnie stworzyć fikcyjną porządek porządkowy w danych. Dlatego do zmiennych nominalnych często stosuje się kodowanie jednokierunkowe w celu poprawy wydajności algorytmu.

W tej metodzie dla każdej unikalnej wartości w oryginalnej kolumnie kategorialnej tworzona jest nowa kolumna. Te fikcyjne zmienne są następnie wypełniane zerami i jedynkami (1 oznacza PRAWDA, 0 oznacza FAŁSZ).

Ponieważ ten proces tworzy wiele nowych zmiennych, jest podatny na tworzenie problemu „dużego p” (zbyt wiele predyktorów), jeśli w oryginalnej kolumnie jest wiele unikalnych wartości. Inną wadą kodowania na gorąco jest to, że powoduje współliniowość między poszczególnymi zmiennymi, co potencjalnie zmniejsza dokładność modelu.

Ponadto, jeśli zmienna kategorialna jest zmienną wyjściową, warto przekonwertować wartości z powrotem na postać jakościową w celu przedstawienia ich w aplikacji.

W praktycznym użyciu ta transformacja jest często wykonywana bezpośrednio przez funkcję, która pobiera dane kategoryczne jako dane wejściowe i wyprowadza odpowiednie zmienne fikcyjne. Przykładem może być funkcja dummyVars biblioteki Caret w R.


Zobacz też