Горячий - 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

В цифровых схемах и машинного обучения , А один горячий представляет собой группу битов , среди которых юридические комбинации значений являются только те , с одним высоким (1) бит и все остальные низкого уровня (0). Похожая реализация, в которой все биты равны «1», кроме одного «0», иногда называется холодным . В статистике , фиктивные переменные представляют собой аналогичную технику для представления категориальных данных .

Приложения

Цифровая схема

Быстрое кодирование часто используется для индикации состояния конечного автомата . При использовании двоичной или коды Грея , A декодер необходим для определения состояния. Однако конечный автомат с одним горячим концом не нуждается в декодере, поскольку конечный автомат находится в n- м состоянии тогда и только тогда, когда n- й бит имеет высокий уровень.

Кольцевой счетчик с 15 последовательно упорядоченных состояний является примером конечного автомата. В реализации с одним горячим вариантом будет 15 триггеров, соединенных последовательно, причем выход Q каждого триггера соединен с входом D следующего, а вход D первого триггера соединен с выходом Q 15-го триггера. . Первый триггер в цепочке представляет первое состояние, второй представляет второе состояние и так далее до 15-го триггера, который представляет последнее состояние. После сброса конечного автомата все триггеры сбрасываются в «0», кроме первого в цепочке, который установлен в «1». Следующий фронт тактовой частоты, приходящий на триггеры, продвигает один «горячий» бит ко второму триггеру. «Горячий» бит продвигается таким образом до 15-го состояния, после чего конечный автомат возвращается в первое состояние.

Декодер адрес обращенных из двоичного кода или серого до одного горячего представления. A приоритетного кодер преобразует из одного горячего представления в двоичный или код Грея.

Сравнение с другими методами кодирования

Преимущества
  • Для определения состояния требуется низкая и постоянная стоимость доступа к одному триггеру.
  • Изменение состояния требует постоянной стоимости доступа к двум триггерам.
  • Легко проектировать и модифицировать
  • Легко обнаружить незаконные состояния
  • Использует преимущества многочисленных триггеров FPGA

Использование однократной реализации обычно позволяет конечному автомату работать с более высокой тактовой частотой, чем любое другое кодирование этого конечного автомата.

Недостатки
  • Требует больше триггеров, чем другие кодировки, что делает его непрактичным для устройств PAL.
  • Многие состояния незаконны

Обработка естественного языка

При обработке естественного языка одним горячим вектором является матрица (вектор) размером 1 ×  N, используемая для различения каждого слова в словаре от любого другого слова в словаре. Вектор состоит из нулей во всех ячейках, за исключением единственной единицы в ячейке, используемой для уникальной идентификации слова. Одноразовое кодирование гарантирует, что машинное обучение не предполагает, что более высокие числа важнее. Например, значение «8» больше, чем значение «1», но это не делает «8» более важным, чем «1». То же самое и со словами: значение «смех» не важнее, чем «смех».

Машинное обучение и статистика

В машинном обучении часто используется метод быстрого кодирования для работы с категориальными данными. Поскольку многие модели машинного обучения требуют, чтобы их входные переменные были числовыми, категориальные переменные необходимо преобразовывать в части предварительной обработки.

Кодировка метки
Название еды Категориальный # Калорий
яблоко 1 95
Курица 2 231
Брокколи 3 50
Одно горячее кодирование
яблоко Курица Брокколи Калорий
1 0 0 95
0 1 0 231
0 0 1 50

Категориальные данные могут быть как номинальными, так и порядковыми. Порядковые данные имеют ранжированный порядок значений и поэтому могут быть преобразованы в числовые данные с помощью порядкового кодирования. Примером порядковых данных могут быть рейтинги в тесте от A до F, которые могут быть ранжированы с использованием чисел от 6 до 1. Поскольку нет количественной связи между отдельными значениями номинальных переменных, использование порядкового кодирования может потенциально создать вымышленный порядковые отношения в данных. Поэтому к номинальным переменным часто применяется одноразовое кодирование, чтобы улучшить производительность алгоритма.

Для каждого уникального значения в исходном категориальном столбце в этом методе создается новый столбец. Затем эти фиктивные переменные заполняются нулями и единицами (1 означает ИСТИНА, 0 означает ЛОЖЬ).

Поскольку этот процесс создает несколько новых переменных, он может создать большую проблему p (слишком много предикторов), если в исходном столбце много уникальных значений. Еще одним недостатком «горячего» кодирования является то, что оно вызывает мультиколлинеарность между отдельными переменными, что потенциально снижает точность модели.

Кроме того, если категориальная переменная является выходной переменной, вы можете захотеть преобразовать значения обратно в категориальную форму, чтобы представить их в вашем приложении.

На практике это преобразование часто выполняется непосредственно функцией, которая принимает на вход категориальные данные и выводит соответствующие фиктивные переменные. Примером может служить функция dummyVars библиотеки Caret в R.


Смотрите также

Рекомендации