November 2nd, 2020

  • mns2012

Несимметричность классификации по критерию функции

Так случилось, что я только что перечитывал вот этот обмен сообщениями с livelogic. А ещё случилось так, что я в данный момент работаю с бинарным классификатором изображений. Мне резко бросилась в глаза несимметричность классификатора, соответствующая несимметричности дизайн-распознавания, о которой мы говорили с livelogic (здесь и ниже). Конечно, это соответствие здесь неспроста: распознавание образов и распознавание дизайна в биологии -- это в принципе одно и то же. Под несимметрией я имею в виду вот что.

Предположим, что мне нужно научить модель отличать изображения кошек от изображений собак. На практике (без потери общности) на самом деле система учится распознавать кошек и не-кошек. В класс не-кошек поэтому попадают не только собаки, но и весь остальной окружающий мир за исключением, естественно, самих кошек. В дизайн-распознавании некоторой биологической функции f, которую можно представить функциональной строкой (скажем нуклеотидной или аминокислотной), происходит то же самое.

Поясню на примере. Пусть роль языка описания выполняет для наглядности великий и могучий русский язык. Рассмотрим знаменитое: "казнить нельзя помиловать". Если условиться, что наша функция f состоит в сообщении палачу казнить осуждённого, то функциональную информацию будет нести только строка "казнить, нельзя помиловать" (если, конечно, не принимать во внимание синонимичные строки с тем же смыслом, например, "казнить! нельзя помиловать"). В то же время, строка "казнить нельзя, помиловать" будет для нас в контексте f иметь такой же смысл, что и "не кочегары мы, не плотники" или даже "фывапролдже".

И в заключение скажу, что относительно нашей пенитенциарной функции f строка s = "казнить, нельзя помиловать" несёт функциональную информацию, а строка "казнить нельзя, помиловать" не несёт, хотя в обеих количество шенноновской информации одно и то же. Для подсчёта количества функциональной информации в s используется формула:

I_f(s) = - log (число функциональных строк / число всех возможных строк)

Если не учитывать синонимичные строки, то из расчёта 43 символов (русский алфавит + синтаксические символы) и длины строки s, равной 26, получим:

I_f(s) = - log (1 / 43^26) = 141.1 функциональных бит.

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

См. также: