Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Можно ли применять нейронные сети для улучшения сжатия данных без потерь?

ТехнологииМедиа и коммуникации+3
Константин П.
  ·   · 1,0 K
Экс-преподаватель msu.ai, специалист образовательн...  · 3 дек 2021
По моему опыту, один из наиболее часто встречающихся типов архитектур нейронных сетей - автокодировщики (автоэнкодеры). Они могут быть использованы для широкого спектра задач, в том числе: обнаружение аномалий, очищение данных от шумов, машинный перевод и так далее... Среди решаемых ими задач, к счастью, есть и сжатие без потерь.
Архитектуры, относящиеся к данному типу, как бы состоят из двух нейронных сетей, обучаемых совместно: энкодера и декодера.
Энкодер (E) - модуль нейронной сети, принимающий на вход данные X и неким образом преобразующий их в представление Z, имеющее меньший размер. То есть, если в качестве входных данных у Вас было изображение X размером 1024*1024, энкодер вполне может преобразовать его в вектор меньшего размера - к примеру, размером 1024, тем самым значительно уменьшая количество памяти, требуемое для хранения данного представления.
Декодер (D) - модуль нейронной сети, принимающий на вход представление Z, и пытающийся преобразовать его в некоторое представление Y, при этом размер Y больше, чем размер Z. В общем случае, ничто не мешает потребовать, чтобы Y было равно исходным данным X. Более того: так и поступают в случае с задачами обнаружения аномалий, очищения данных от шума и, наконец, сжатия.
То есть, нередко задача состоит в том, чтобы X превратить в набор данных меньшего размера с помощью нейронной сети - энкодера - E, и затем обратить это преобразование с помощью другой сети - декодера - D.
Ниже показана общая структура автоэнкодера. Изображение подготовлено специалистами msu.ai и используется в наших лекциях.
По сути, целью сжатия является создание некоторого описания входных данных, которое бы занимало меньше места, чем сами входные данные, и при этом могло быть использовано для воссоздания входных данных. Для сжатия без потерь появляется дополнительное условие - необходимо идеально воссоздать исходные данные.
Для идеального воссоздания данных автоэнкдером используется переобучение (да-да, переобучение может быть полезным) - то есть, создаётся автоэнкодер, который идеально воссоздаёт исходные данные X из создаваемого промежуточного представления Z. Для других данных он, скорее всего, работать не будет, но не это важно.
Используя переобученный автоэнкодер, мы получаем представление Z, имеющее меньший размер, из которого можно без потерь воссоздавать входящие данные X. Кому-то может показаться, что проблема сжатия решена: Z меньшего размера чем X, из Z можно идеально воссоздать X... Но можно ли?
Для воссоздания X из Z необходим не только вектор Z. Необходим ещё и переобученный декодер D, который может воссоздать X из Z. В общем случае, нам придётся передавать не только Z, но и ключевую информацию о декодере D. Что это за информация?
Нейронная сеть однозначно воссоздаётся из информации об архитектуре (какие слои, какого размера и т.п.) и информации о параметрах, находящихся в её слоях. Если нам повезло, мы заранее договорились со всеми потенциальными получателями заархивированной информации об архитектуре используемого декодера D - в таком случае, нам достаточно передать информацию о параматрах модели. Однако в общем случае нам, конечно, придётся передавать информацию как об архитектуре декодера D, так и о его параметрах.
Казалось бы, нам необходимо отправить Z, информацию об архитектуре D, параметры D... Точно ли мы можем достичь хоть какого-то сжатия, не будет ли вся эта информация больше, чем X? И если да, будет ли сжатие лучше, чем в случае с методами, не использующими нейронные сети?
Ответ на оба вопроса: да. В наши дни, самыми лучшими методами сжатия без потерь являются методы, опирающиеся на нейронные сети. Широкому их применению препятствует высокая вычислительная сложность как архивирования (обучения автоэнкодера), так и разархивирования (использования декодера для получения исходных данных) данных. Однако я верю, что спустя 5-10 лет развитие технологий приведёт к тому, что на каждм компьютере будет аналог WinRAR, позволяющий использовать архивирование с помощью нейронных сетей.
P.s. я предложил лишь один из возможных методов и дал довольно поверхностный обзор задачи, с более подробной информацией Вы можете ознакомиться здесь. О нейронных сетях - в конце поста.
Я слабо представляю, что нейронная сеть может гарантировать сжатие без потерь для "незапомненных" данных. Там, где... Читать дальше