Формула энтропии Шеннона. Помоги моей растерянности.
мое понимание формулы энтропии заключается в том, что она используется для вычисления минимального количества битов, необходимых для представления некоторых данных. Обычно это формулируется по-другому, когда определено, но предыдущее понимание-это то, на что я полагался до сих пор.
вот моя проблема. Предположим, у меня есть последовательность из 100 '1', за которой следует 100 '0' = 200 бит. Алфавит {0,1}, основание энтропии 2. Вероятность символа "0" равна 0,5, а "1" - 0,5. Поэтому энтропия 1 или 1 бит для представления 1 немного.
однако вы можете запустить-длина кодирует его с чем-то вроде 100 / 1 / 100 / 0 где это количество бит для вывода, за которым следует бит. Кажется, у меня представление меньше, чем данные. Особенно, если вы увеличите 100 до гораздо большего числа.
Я использую:http://en.wikipedia.org/wiki/Information_entropy как ссылка на данный момент. Где я ошибся? Это вероятность, присвоенная символам? Я не думаю, что это неправильно. Или я ошиблась ли связь между сжатием и энтропией? Что-нибудь еще?
спасибо.
редактировать
после некоторых ответов мое следующее: Вы бы применили формулу энтропии к конкретному экземпляру сообщения, чтобы попытаться узнать его информационное содержание? Было бы правильно принять сообщение "aaab" и сказать, что энтропия равна ~0.811. Если да, то какова энтропия 1...10....0, где 1s и 0s повторяются n раз с использованием формула энтропии. Ответ 1?
Да, я понимаю, что вы создаете случайную величину ваших входных символов и угадываете функцию массы вероятности на основе Вашего сообщения. Я пытаюсь подтвердить, что формула энтропии не учитывает положение символов в сообщении.
4 ответов
или я неправильно понял связь между сжатием и энтропией?
вы довольно близки, но это последний вопрос, где была ошибка. Если вы можете сжать что-то в форму, которая была меньше, чем ее исходное представление, это означает, что исходное представление имело по крайней мере некоторую избыточность. каждый бит в сообщении не передать 1 бит информации.
потому что избыточные данные не способствуют информационному наполнению сообщения, также не повышают его энтропию. Представьте, например, "генератор случайных битов", который возвращает только значение"0". Это не передает никакой информации вообще! (На самом деле, он передает undefined количество информации, потому что любое двоичное сообщение, состоящее только из одного вида символа, требует деления на ноль в Формуле энтропии.)
напротив, если бы вы смоделировали большое количество случайных переворачиваний монет, это было бы очень трудно уменьшить размер этого сообщения на много. Каждый бит будет участвовать около 1 бита энтропии.
при сжатии данных можно извлечь избыточности. Взамен вы платите единовременную цену энтропии, разрабатывая схему, которая знает, как сжимать и распаковывать эти данные; это само по себе требует некоторой информации.
однако вы можете выполнить кодирование длины с чем-то вроде 100 / 1 / 100 / 0 где это количество битов для вывода, а затем бит. Кажется, у меня представление меньше, чем данные. Особенно, если вы увеличите 100 до гораздо большего числа.
подводя итог, тот факт, что вы могли бы разработать схему, чтобы сделать кодирование данных меньше исходные данные говорит вам что-то важное. А именно, он говорит, что ваши исходные данные содержали очень мало информации.
более дальнеишее чтение
для a более тщательная обработка этого, включая точно, как вы вычисляете энтропию для любой произвольной последовательности цифр с несколькими примерами, проверьте эта короткая белая бумага.
посмотреть сложность Колмогорова
минимальное количество битов, в которые строка может быть сжата без потери информации. Это определяется относительно фиксированной, но универсальной схемы декомпрессии, заданной универсальной машиной Тьюринга.
и в вашем конкретном случае не ограничивайте себя алфавитом {0,1}. Для примера используйте {0...0, 1...1} (сто нулей и сто единиц)
ваша кодировка работает в этом примере, но можно представить одинаково допустимый случай: 010101010101... что бы быть закодирован как 1 / 0 / 1 / 1 / ...
энтропия измеряется по всем возможным сообщениям, которые могут быть построены в данном алфавите, а не только патологические примеры!
Джон Феминелла правильно понял, но я думаю, что есть еще что сказать.
энтропия Шеннона основана на вероятности, а вероятность всегда находится в поле зрения наблюдателя.
Вы сказали, что 1 и 0 одинаково вероятны (0.5). Если это так, то строка из 100 1s, за которой следует 100 0s, имеет вероятность 0,5^200, из которых-log(base 2) составляет 200 бит, как вы и ожидали. Однако энтропия этой строки (в терминах Шеннона) - это ее информационное содержание, умноженное на ее вероятность, или 200 * 0.5^200, все еще очень небольшое число.
Это важно, потому что если вы выполняете кодирование длины выполнения для сжатия строки, в случае этой строки она получит небольшую длину, но усредненную по всем 2^200 строкам, это не будет хорошо. Если повезет, в среднем получится около 200, но не меньше.
с другой стороны, если вы посмотрите на свою исходную строку и скажете, что она настолько поразительна, что тот, кто ее создал, скорее всего, создаст больше подобных ей, тогда вы действительно говорите его вероятность больше 0,5^200, поэтому вы делаете разные предположения о исходной вероятностной структуре генератора строки, а именно, что она имеет меньшую энтропию, чем 200 бит.
лично я нахожу эту тему очень интересной, особенно, когда вы смотрите на Колмогорова (алгоритмическом) информации. В этом случае информационное содержимое строки определяется как длина наименьшей программы, которая может его генерировать. Это приводит ко всевозможным озарениям в программную инженерию и языковой дизайн.
Я надеюсь, что это помогает, и спасибо за ваш вопрос.