В информатике и электронике существует довольно много способов представления данных, часто называемых схемами кодирования. У каждого есть свои цели, преимущества и недостатки. В этой короткой статье мы рассмотрим горячую кодировку и посмотрим, что это такое, как оно сравнивается с другими аналогичными схемами и его приложениями.
Что такое горячее кодирование?
Одноразовое кодирование - это разреженный способ представления данных в двоичной строке, в которой только один бит может быть равен 1, а все остальные - 0. Это отличается от других схем кодирования, таких как двоичный код и код Грея, которые позволяют использовать несколько битов. быть 1 или 0, что обеспечивает более плотное представление данных.
Несколько примеров быстрого кодирования могут выглядеть так:
000010
001000
100000
000100
Эту концепцию можно лучше понять, сравнив представление чисел 0-4 в двоичном коде, коде Грея и одном горячем:
Десятичный Двоичный Код Грея Один горячий
0 000 000 0000000 1 001 001 0000001 2 010 011 0000010 3 011 010 0000100 4 100 110 0001000 5 101 111 0010000 6 110 101 0100000 7 111 100 1000000
Обратите внимание, насколько требуется больше цифр, чем в двух других представлениях. Расположение каждой цифры может относиться только к одному номеру и не может использоваться для представления каких-либо других чисел. Из-за этого быстрое кодирование n цифр может представлять только n значений. В то время как двоичная кодировка, например, с n цифрами может представлять 2 ^n^ значений.
Приложения One-Hot Encoding
Итак, если однократное кодирование имеет такое строгое ограничение на объем данных, которые могут быть переданы в двоичной строке, какое практическое применение оно имеет на самом деле? На самом деле, довольно много важных. Его важность хорошо объясняется Википедией :
Быстрое кодирование часто используется для индикации состояния конечного автомата. При использовании двоичного кода или кода Грея для определения состояния необходим декодер. Однако автомат с одним горячим состоянием не нуждается в декодере, поскольку конечный автомат находится в n- м состоянии тогда и только тогда, когда n- й бит имеет высокий уровень.
Машинное обучение
Нейронные сети и глубокое обучение стали самыми быстрорастущими дисциплинами в области информатики, и не зря. Эти методы машинного обучения позволили решить исторически трудные или даже невозможные проблемы информатики. И, что может быть удивительно, важную роль в этом играет однократное кодирование.
Нейронные сети и, следовательно, глубокое обучение, вдохновлены нейронными сетями, из которых состоит наш мозг. Они состоят из простых нейронов и связей между нейронами. Выходные данные каждого нейрона обычно представляют собой число, которое используется во всей сети для вычислений. Хотя это число теоретически может иметь любое значение, обычно оно приводится к 1 или 0 для представления категориальных данных.
Например, предположим, что у нас есть нейронная сеть, которая может сказать нам, принадлежит ли входное изображение кошке или собаке. Поскольку нейронная сеть использует только числа, она не может выводить слова «кошка» или «собака». Вместо этого он использует горячую кодировку для представления прогноза:
{.ezlazyload .img-responsive}
В этом примере выход верхнего нейрона на изображении выше может представлять предсказание «кота», а выход нижнего нейрона может представлять предсказание «собаки». Какой бы результат ни был, 1 будет указывать на прогноз.
Электроника
В электронике часто используется одноразовое кодирование для очень похожих сценариев, как в машинном обучении. Аналоговая или цифровая выходная линия может представлять значение с использованием напряжения.
Например, схемы логических вентилей очень похожи на нейронные сети в том смысле, что они состоят из большой сети взаимосвязанных «узлов», с цифровыми входами, создающими некоторый соответствующий цифровой выход. Хотя двоичное представление широко распространено в электронике, one-hot может быть лучшей альтернативой для представления состояния выхода без необходимости какого-либо декодирования.
{.ezlazyload .img-responsive}