Среди всего разнообразия корректирующих кодов не удается обнаружить таких, которые позволяют не только восстанавливать данные, утерянные в процессе передачи, но и те данные, которые были утрачены до того, как поступили на кодер.
Интуитивно понятно, что требование восстановить данные, которые вообще никак не присутствовали в канале связи, является абсурдным и нереализуемым. В то же время наличие устройства, которое по данным телеметрии продолжает давать достоверные данные об остатке, например, топлива в баках, несмотря на полный отказ датчиков уровня, было бы мечтой многих проектировщиков, не говоря уже о пользователях.
Примем как аксиому то, что корректирующему коду, в сущности, все равно какую информацию передают при его поддержке. Для него имеет значение лишь соответствие переданных данных поверочным символам или попадание в соответствующие поля. Информация же, передаваемая с его помощью, может быть любой. И в этом, конечно, состоит преимущество универсального и строгого решения задачи – безошибочной в итоге передаче любых мыслимых данных.
В то же время любое универсальное решение имеет и свои недостатки, обусловленные отсутствием анализа передаваемых данных. Если, например, два телеграфиста могут договориться о том, что бессмысленные телеграммы они не доставляют получателю или даже не передают вообще, то автоматическая система на принятие такого решения не способна. Точно так же телеграфисты могут не передавать повторную телеграмму, смысл (но не обязательно текст) которой идентичен предыдущей, а ограничиться только сообщением о повторении первой.
Т.е. в идеале поведение системы передачи должно зависеть от того, какие данные транслируются по ее каналам связи. Если это цифровые данные, имеющие характеристики шума и никак не коррелированные между собой (т.е. имеющие нулевую марковость), то изобретение велосипеда представляется бессмысленным, следует использовать, например, коды Рида-Соломона. Но если передаваемая информация имеет внутренние корреляции, или хоть какие-нибудь, в том числе и не обнаруживаемые, закономерности, то имеет смысл оптимизировать корректирующий код с учетом имеющегося бесплатного поверочного потенциала. Если же реконструкция данных на приемном конце может быть произведена не с абсолютной, а лишь c достаточной точностью, то попытка использовать внутренние корреляции передаваемых данных тем более представляется вполне осмысленной.
Рассмотрим возможность коррекции потерянных данных на примере передачи электрокардиограммы (ЭКГ) по симплексному каналу связи. Уточним, что речь идет не о данных, потерянных в процессе передачи, а о данных, не полученных прибором – обрыв электрода, например. В таком случае на кодер поступают не данные об оцифрованной ЭКГ, а хаотичные отсчеты, обусловленные наводками различных сигналов на «висящий в воздухе» провод.
Согласно ТЗ, система представляет собой электрокардиограф, передающий цифровую ЭКГ по телефонному каналу связи. Имеется 8 предварительных усилителей, регистрирующих сигнал по 8 независимым каналам, мультиплексор, АЦП, процессор, который обеспечивает адаптивную дифференциальную импульсно-кодовую модуляцию, кодирование дискретного отсчета приращения ЭКГ (частотной посылкой определенной длительности и частоты) и передачу сигнала на выходной УНЧ, нагруженный на акустический излучатель.
После прохождения телефонного (радиочастотного) канала связи, сигнал попадает на декодирующее устройство, представляющее собой спектроанализатор реального времени со скользящим окном данных. (При таком решении оптимизация приема обеспечивается сверткой сигнала с его копией и получением на выходе отклика, представляющего собой взаимнокорреляционную функцию этих сигналов.)
Затем зафиксированная частотная посылка преобразуется в код соответствующий исходному, который позволяет восстановить отсчет ЭКГ. Многократное повторение такой процедуры приводит к полному и неискаженному отображению электрокардиограммы на приемном узле системы.
Таким образом, для каждой существующей в данный момент времени частотной посылки, реализуется алгоритм поэлементного приема, где обеспечивается функция идеального наблюдателя, выбирающего вариант сообщения из априори известных. Апостериорная вероятность ошибки решения легко вычисляется с помощью сопоставления главной спектральной компоненты посылки с суммой остальных (относящихся к частотам других вариантов посылок).
Но, согласно условиям использования оборудования, в частности: передачи через акустический канал мобильного телефона с неизбежным вокодером стандарта GSM, регулярными оверквоттингами системы и невозможностью квитирования (т.к. время задержки квитанции составляет в этом случае время до единиц секунд), применение классических корректирующих кодов оказалось неоптимальным. Нужно учитывать, что ожидаемое количество потерянных байтов неизвестно, более того, оно может быть много больше, чем количество правильно переданных, да еще и подряд. В таком случае использование кодов Рида-Соломона привело бы к тому, что количество служебной информации, заложенное в расчете на столь неприятные казусы, оказалось бы неприемлемым в смысле падения скорости передачи. Реализация корректирующих кодов с «перемешиванием» блоков информации во времени (равно как и «длинных» пакетов) неизбежно привела бы к задержке появления и отображения электрокардиограммы, что противоречит исходному требованию о минимизации задержки отображения ЭКГ с целью ургентной диагностики. Поэтому система использует только передачу контрольной суммы и простейший SEC_DED код для единичных ошибок, а также для поддержки фазовой синхронизации окна спектроанализатора.
Что же касается коррекции значительного количества ошибок при передаче данных, то с учетом требования не абсолютной, а разумно достаточной точности коррекции, она выполнена следующим образом:
Т.к. для каждого мгновенного отсчета 8-ми канальной электрокардиограммы можно сформировать слово, описывающее величину приращения ЭКГ, то именно оно становится объектом анализа, т.е. поэлементный прием трансформируется в «прием в целом» для данной последовательности байтов. Исходя из того, что приращение для каждого канала описывается тремя битами, суммарное слово представляет собой 24-битную последовательность, проверка которой производится с помощью дополнительных служебных 6 бит.
Т.к. при использовании дифференциальной ИК модуляции корреляционная связь между последующим и предыдущим отсчетом разрушается, у нас остается единственная область поиска скрытых корреляций – внутри самого 24-битного слова, описывающего текущий отсчет 8-канальной ЭКГ. Но с учетом того, что поиск скрытых закономерностей всегда представляет собой сложную математическую задачу, которая совершенно не обязательно решается, имеет смысл использовать сравнение анализируемого слова с теми, которые имеются в базе знаний и представляют собой результат предыдущих регистраций многих ЭКГ.
В конечном итоге функция коррекции весьма похожа на известное восстановление написанного с ошибкой слова, которое используют практически все современные текстовые редакторы. Отличие заключается только в использовании апостериорной вероятности ошибки для каждого принятого символа. Т.е. вес ошибки символа нам известен и при коррекции мы его учитываем. В текстовом варианте это будет выглядеть примерно так: неправильно написанное слово «рышающий» дает варианты (Word) «решающий», «рыдающий», «рыгающий», «рыкающий». Если же нам известно, что апостериорная вероятность ошибки символа «ы» в данном слове больше, чем у других символов, то, с высокой степенью вероятности, мы выберем единственно правильный вариант: «решающий».
Программная реализация данного алгоритма выглядит следующим образом:
Результат использования этого алгоритма коррекции представлен на Рис.1.
Рис.1 Электрокардиограмма, переданная через акустический канал мобильного телефона стандарта GSM. Красными линиями отмечены отсчеты ЭКГ, которые были восстановлены не корректирующим SEC-DED кодом (т.к. ошибка была многократной), а методом поиска наиболее вероятного «слова».
Однако, реальность такова, что качество цифровых телефонных линий стандарта GSM неуклонно и катастрофически понижается, во всяком случае, на Украине. Причина заключается в том, что компании, предоставляющие данные услуги, конкурируют между собой и понижают цены, что приводит к увеличению нагрузки на систему. Ну, а потребное увеличение количества приемных станций означает уменьшение количества «бабла», которое «рубит» хозяин. В результате все работает с дикой перегрузкой, вокодеры автоматически переключаются на минимальный цифровой поток и клиенты общаются с промежуточными междометиями, которые одни только и помогают понять, что же хотел сказать абонент.
Но если общение индивидов из «общества потребления» не очень страдает от подобного качества связи (т.к. они друг друга «сердцем чуют»), то с цифровой передачей ЭКГ (а больницы и станции скорой помощи используют наиболее дешевых и, как следствие, наиболее гнусных провайдеров), дело обстоит примерно так, как показано на Рис.2.
Рис.2 Электрокардиограммы разных пациентов, переданные в условиях перегрузки системы мобильной связи, т.н. «оверквоттинга». Количество ошибок передачи очень велико, тем не менее, система коррекции успешно справляется с задачей.
А в том случае, когда больница использует еще и «цифровую телефонную линию» т.е. берутся 2 стандартных модема и с их помощью делается канал на 30 телефонных номеров… С учетом сжатия в этом канале плюс оверквоттинг в мобильной связи…
В общем, результат использования данного решения представлен на Рис. 3.
Рис. 3 Передаче ЭКГ – капут. Не помогает никакая коррекция. Если в процессе передачи прослушать телефон, то слышно не чередование тональных последовательностей, а хрип удавленника с периодической остановкой дыхания.
Как ни парадоксально, но данный результат наиболее желателен для медицинских учреждений, использующих транстелефонную ЭКГ. Дело здесь в том, что руководители полагают, что врачам за прием и анализ десятков ЭКГ в сутки доплачивать не нужно. Доктора, понятно, с такой глубиной мысли власть предержащих не очень согласны и, не имея возможности отстоять свою точку зрения, мечтают об одном: чтобы эта система сдохла.
Ну, а если она подыхать не хочет, то ее можно просто не использовать.
Диалог производителя с пользователем в этом случае примерно таков:
- А как у Вас используется оборудование?
- Та воно ж нэ робэ!
- Скажите, пожалуйста, как и когда возникла неисправность?
- Га?
- Можете ли Вы описать неисправность и сообщить время выхода прибора из строя?
- Та я ж и говорю, шо воно нэ робэ!
Впрочем, перспективы развития транстелефонной ЭКГ на Украине при нынешнем интеллектуальном и профессиональном уровне руководителей понятны. То, что некоторые области пока еще успешно эксплуатируют «Телекард» - чудо сие велико есть! Так что имеет смысл посмотреть: нельзя ли снять с покойника сапоги и хотя бы их использовать по назначению?
Т.е. речь может идти об использовании системы, которая на основании своего предыдущего опыта (словаря) способна не только корректировать данные, поврежденные в процессе передачи, но и восстанавливать те, которые утрачены вследствие отказа датчиков. На Рис. 4 представлена запись аналогового генератора – имитатора электрокардиограммы.
Рис. 4. Имитатор электрокардиограммы. Его сигнал известен системе по предыдущим записям, т.е. «слова» его мгновенных отсчетов занесены в «словарь».
Попробуем моделировать неисправность в виде последовательного выхода датчиков из строя.
Рис. 5. Последовательный отказ датчиков (физическое «закорачивание на землю»)
Однако, если система передачи будет настроена на «подозрительное» отношение к поступающим данным и начнет проверять их на соответствие «словарю», то при передаче будет получен результат, показанный на Рис.6.
Рис.6. Результат коррекции переданных данных, т.е. отказ датчиков не приводит к потере информации.
Разумеется, такое приятное положение дел не может сохраняться при дальнейших прогрессирующих отказах.
Рассмотрим вариант коррекции при отказе 4-го, 5-го и 6-го датчиков (из 8-ми).
Рис.7. Продолжающиеся отказы и прекращение нормальной работы системы. Следует учесть, что вследствие ошибочной коррекции теряются уже и сигналы с датчиков, работающих нормально (NB!). Впрочем, она боролась до последнего.
Следует сразу уточнить, что системе ни в каком случае не были заранее известны те сигналы, которые были поданы на вход устройства. Знание «слов», представляющих собой мгновенные значения отсчетов сигнала генератора, совершенно не означает, что в «словаре» имеется именно такой сигнал. Т.е. если на вход подавать электрокардиограмму пациента с одним - тремя оборванными проводами электродов, то она будет восстановлена так же. Демонстрация подобных «фокусов» производит глубокое впечатление на специалистов, занимающихся ЭКГ, но практическое применение таких методов вряд ли когда-либо будет востребовано.
Рассмотрим возможные варианты применения подобных корректирующих кодов. Для автомобиля, который иногда имеет скверное свойство ломаться, можно привести пример выхода из строя индикатора уровня топлива. Водитель понимает, что через несколько километров после заправки бак не может внезапно опустеть, если его не пробили или не порвали патрубок. И он приходит к выводу, что, скорее всего, отказал датчик. Но для такого вывода необходим, увы, интеллект.
Впрочем, если количество датчиков составляет тысячи, а взаимосвязь между отображаемыми параметрами неочевидна, то ситуация резко усложняется, и требование повышения надежности индикации становится совершенно необходимым. Решение может быть в виде дублирования и даже многократного резервирования систем, что применяется в военной технике и приводит к усложнению и удорожанию аппаратуры. Можно также обеспечить систему самоконтроля каждого датчика, что сравнимо по затратам с резервированием. Кроме того, можно попытаться спроектировать систему анализа и контроля на базе жестких решающих правил, например: показатель уровня топлива учитывает, кроме данных уровня в баке, еще и время последней заправки, и пробег автомобиля после нее. Такой подход будет дороже в разработке, но дешевле в массовом производстве т.к. вместо каналов резервирования будет использован один дополнительный процессор, а может быть даже всего лишь дополнительная программа к основному.
Но система на базе жестких решающих правил будет требовать серьезного исследования т.к. выявить закономерности и неочевидные корреляционные связи между функционированием узлов проектируемого изделия далеко не просто.
Значительно выгоднее решить задачу предлагаемым способом. Действительно, если у нас есть нормально функционирующее изделие (автомобиль и т.п.) то в процессе его испытаний и опытной эксплуатации мы можем пополнять «словарь» состоящий из «слов», описывающих мгновенное состояние датчиков. В результате в «словаре» будут зафиксированы практически все возможные комбинации состояний датчиков, характерные для их нормального функционирования. И в случае выхода любого датчика из строя мы будем иметь информацию об отказе именно этого канала и, кроме того, продолжающуюся индикацию параметра, который он был обязан отображать (точно так же, как было показано на примере электрокардиограммы).
При этом на стадии разработки нам не потребуется проводить серьезную аналитическую работу ни в смысле составления решающих правил, ни в варианте анализа корреляционных зависимостей т.к. эта информация автоматически сформируется в нашем «словаре», что по существу является развитием и одновременным упрощением метода «Data Mining».
Но вернемся к исходному: метод заведомо нельзя применять при отсутствии корреляционных связей между отображаемыми параметрами. А для того, чтобы зафиксировать факт их наличия, нужно провести исследовательскую работу. Вроде бы круг замкнулся, и метод никакого выигрыша не обещает.
Но это не так. К счастью, уже во время заполнения «словаря» можно определить ожидаемую эффективность работы системы. Т.к. от структуры входных данных будет зависеть закон заполнения (имеется в виду, что в «словарь» копии уже имеющихся «слов» не записываются).
Для электрокардиограммы использовалось 24 битное слово, количество комбинаций которого составляет 2^24 = 16777216. Во время заполнения словаря было выяснено, что количество комбинаций этого слова для ЭКГ не превышает нескольких десятков тысяч. Т.е. словарь заканчивает заполнение очень рано, и если ввести понятие «вероятности новизны слова» при регистрации ЭКГ, то выясняется, что эта вероятность очень мала относительно истинно случайных величин (т.е. если бы слова, описывающие ЭКГ подчинялись бы случайному закону).
Для системы же, имеющей нулевую корреляцию между показаниями датчиков (когда их сигналы ортогональны), «вероятность новизны слова» будет велика и пополнение «словаря» будет идти медленно с асимптотическим приближением к нулю «вероятности новизны» в окрестностях максимального значения слова. Т.е. для зашифрованных, например, показаний датчиков такая система будет заведомо непригодна.
Но, так как любые многоканальные системы имеют огромное количество зачастую даже не предполагавшихся корреляционных связей между каналами, то предлагаемые коды с восстановлением не переданных данных будут, весьма вероятно, востребованы.
В сущности, все опять свелось к избыточности Шеннона и расстояниям Хэмминга. Но если задача хочет решаться сама, то зачем тратить силы на ее принудительное решение нейронными сетями?