Концепция предсказания пронизывает практически все уровни современной информатики — от физической архитектуры процессоров до сложных алгоритмов машинного обучения. В широком смысле, предсказание (или прорицание) — это сообщение о некотором событии, которое с большой долей вероятности произойдёт в будущем. Однако в контексте информатики и компьютерных наук это понятие обретает строгий математический и алгоритмический смысл. Это процесс, часто основанный на научном исследовании, по расчету прогноза или разработке прогнозной модели.
В узком смысле под прогнозированием в информатике понимают предсказание будущих значений временного ряда на основе его значений в прошлом и, возможно, дополнительной информации. Прогнозирующее кодирование — это также теория нейробиологии и когнитивных наук, согласно которой мозг постоянно генерирует прогнозы сенсорных сигналов и обновляет их на основе фактических данных. Этот биологический принцип сегодня активно заимствуется в ИИ.
Разновидности прогностической деятельности
Следует отличать предсказание от смежных понятий. Выделяются три главных разновидности прогностической деятельности:
- Предсказание — процесс получения достоверных сингулярных высказываний-описаний будущих событий (категоричное утверждение о том, что произойдет в будущем).
- Прогнозирование, вероятностное описание будущего, часто с оценкой рисков и вариантов развития.
- Футурология (Futures studies) — разработка футурологических сценариев, глобальный взгляд на тенденции технологий и общества.
Предсказание ветвлений на аппаратном уровне
Одно из самых критичных применений предсказания в информатике происходит на уровне микропроцессоров. Современные ЦП используют длинные конвейеры для обработки инструкций. Величина задержки зависит от длины конвейера (например, для процессора Intel Core i7 глубина конвейера составляет 14 стадий).
Когда процессор встречает инструкцию условного перехода (if/else), он не может продолжать выполнение, пока не вычислит условие. Чтобы конвейер не простаивал, используется модуль предсказания переходов (Branch Prediction Unit). Его цель, сделать предположение о том, по какому пути пойдет выполнение программы, до декодирования и выполнения инструкции перехода.
Спекулятивное выполнение
На основе предсказания процессор начинает выполнять инструкции по предполагаемому пути — это называется спекулятивным выполнением. Если предсказание оказалось верным, процессор экономит драгоценное время. Если ошибочным — конвейер очищается (flush), и процессор возвращается к правильной ветви, что стоит дорого в плане производительности. Следует отличать предсказание переходов от предсказания адреса перехода, цель которого состоит в выборе адреса условного или безусловного перехода.
Предсказание в машинном обучении и Data Science
На уровне программного обеспечения предсказание — это основа Data Science. Python и инструменты Data Science раскрывают потенциал данных для предсказания будущего. Умозаключение в алгоритмах позволяет компьютеру находить закономерности или повторяющиеся шаблоны в данных, что помогает в обнаружении аномалий или предсказании будущих событий.
Инструменты и методы
- Метод линейного предсказания — превращает сложные данные в простые, точные прогнозы.
- Алгоритм экспоненциального сглаживания (ETS), рассчитывает будущее значение на основе существующих (ретроспективных) данных с использованием версии AAA алгоритма.
- Взаимная информация (Mutual Information, MI), понятие из теории информации, тесно связанное с задачей прогноза, позволяющее оценить зависимость переменных.
Для автоматизации этого процесса существуют специализированные среды. Например, GUI rattle — графический пользовательский интерфейс, обеспечивающий полный цикл машинного обучения: предварительный анализ данных (data mining), подгонку 6 типов моделей, предсказание по этим моделям и оценку результативности. Все действия пользователя протоколируются на языке R для дальнейшего воспроизведения.
Алгоритм предсказания в коммуникационных системах
В сетевых технологиях предсказание также играет важную роль. Например, для адаптации скорости передачи данных используются алгоритмы предсказания модуляционно-кодирующей схемы (MCS). Шаги алгоритма могут выглядеть так:
Для каждого шага к U 1, U 2,… выполнять:
- Установить MCS A(w) предсказания нейросети по формулам (1) или (2);
- Получить и заменить самые старые значения буфера: метки АСК или NACK (a о, 1) и признаки CQI (c 1,… ,n), SINR (s Rm), MCS (1,…, k);
- Если к mod N = 0, тогда выполнить корректировку модели.
Проблема чёрного ящика и истинная случайность
Многие трейдеры пытаются использовать алгоритмы для прогнозирования рынка, однако даже самые продвинутые модели не могут дать 100% гарантии, что рост или падение актива произойдет именно в ожидаемый момент. Это наглядно показывает, как люди стремятся найти закономерности там, где их нет, и насколько сложно предсказать поведение сложных систем.
Хотя наука предлагает методы анализа случайных процессов, полное предсказание истинной случайности остается невозможным. Допустим, при бросании игральной кости мы с точностью 100% можем предсказать, что выпадет число от 1 до 6. На основании показателя 100% можно сделать вывод, что наше предсказание является достоверной информацией. Но предсказать точное значение на кубике (от 1 до 6) детерминистически невозможно.
Непрозрачность нейросетей
Проблема усугубляется непрозрачностью современных нейросетей, которую называют проблемой чёрного ящика. Даже сами разработчики не всегда до конца понимают, как именно ИИ приходит к тому или иному выводу. Это делает практически невозможным предсказание и предотвращение непредвиденных решений системы. Лучшие нейронные сети, обыгрывающие человека в покер, Го, шахматы и Доту, обладают одной общей чертой — они умеют предсказывать ближайшее будущее в рамках своей среды, но их внутренняя логика часто скрыта от человека.
Предсказание в информатике, это не магия, а строгий математический и инженерный аппарат. От аппаратного предсказания ветвлений, спасающего конвейеры процессоров от простоев, до сложных нейросетевых моделей, анализирующих временные ряды,, все это попытки систем взглянуть за горизонт событий. И хотя анализ временных рядов помогает понять набор данных, а прогнозирование, предсказать его, мы всегда должны помнить о границах вероятности и невозможности абсолютного предвидения истинно случайных процессов.