Слово о процессах, или все мы немного контрамоты.
Продолжения размышлений на тему разума как естественного, так и искусственного (ИИ), Первая часть здесь
Вопрос на засыпку: живет ли человек в сейчас? Не, когда мы идем по улице и непосредственно созерцаем окружающий мир мы действуем более или менее realtime… Хотя на самом деле — пока то, что мы видим, пройдет обычные механизмы распознавания/классификации — все это будет недавним, но все-таки прошлым. Т.е. человек живет в прошлом?
На примере: вы идете по улице, видите собаку. Или машину. В любом случае, если мы говорим о моменте — эта информация уже устарела. Если мы будем оперировать данными, прошедшими все наши когнитивные механизмы (а мозг — далеко не самый быстродействующий вычислитель!) мы просто не будем успевать за миром! Собака нападет или наоборот — убежит, и ваше желание потрепать ее за ухом останется нереализованным, а машина собьет вас, или проедет мимо, хотя именно эту машину вы и хотели «поймать».
Но так слава богу не происходит, и вот почему: мозг работает иначе. Единицей восприятия является не объект, и даже не совокупность объектов, а процессы. Собака бежит. К вам или от вас. Или не бежит, а лежит, например. Машина так же — неподвижна (на парковке), или движется в определенном направлении. Во всех случаях вы воспринимаете процесс, имеющий протяженность во времени и, соответственно, определенное развитие в будущем. Когда я говорю, что мы воспринимаем события развернутыми во времени — это не фигура речи. Проведите эксперимент — возьмите десяток фотографий (т.е. моментальных слепков реальности) и опишите, что видите. Вот несколько людей в комнате, они ссорятся, или вот человек идет по улице, или вот сидит — смотрит телевизор, а тот — читает книгу. Это все протяженные во времени процессы! Вы воспринимаете моментальный слепок, как нечто имеющее протяженность. Вы не умеете по-другому, потому, что мозг так и работает: он натренирован опознавать процессы, а не разрозненные объекты на сцене. Так же, как не глаза-нос-рот, а лицо в комплексе (привет, сверточные нейронные сети).
Мир состоит из процессов, а не из объектов. Если спросить у вас, что такое яблоко, то взрослые люди в большинстве скажут, что это плод/фрукт, а дети — что это еда. Но и то и другое — процессное описание, потому, что первое означает, что оное яблоко растет на дереве, и служит дереву для размножения, а второе — что оно съедобно. Ни то, ни другое не связано с непосредственными признаками яблока — формой, цветом, размером… Потому, что признаки позволяют идентифицировать, но не позволяют использовать, или понять где оно используется в окружающем мире, т.е. определить именно процессы.
Если взять типичный диспут о природе времени, то классическими будут постулаты о неизменности прошлого (вне контекста путешествий во времени), важности настоящего (есть только миг… 😉 ), и будущем, которое пока не существует, а значит его можно изменить. Когда мы говорим об объективной реальности — очень даже может быть, что так оно и есть. Однако человек живет в своей, субъективной модели мира, а там все почти наоборот!
Прошлое далеко не так неизменно, как хотелось бы. Постоянно получая новую информацию, человек перестраивает прошлое, что бы исключить противоречия (вы думали Петр Степаныч на симпозиуме, а он вон из стрип-клуба выходит… Это значит никуда, он, затейник, не ездил и вообще… ). В то же время ваше субъективное будущее во многих аспектах является константой (что бы там ни было, а в пятницу у меня пиво и футбол!). Мало того — имея определенную цель в будущем, вы не только выстраиваете цепочку процессов в обратном порядке (Что бы стать директором крупной компании, нужно закончить престижный вуз с дипломом, для этого в него надо сначала поступить, для этого надо хорошо сдать ЕГЭ, марш учить уроки!), но и вполне вероятно — уходите в этом процессе в прошлое (у не было ли у нас друзей/знакомых, которые сейчас поднялись и обросли связями и могли бы помочь ребенку с ВУЗом) — чем не контрамоция? 😉
Впрочем, я немного отвлекся. Все-таки главное, на чем я хотел сосредоточить внимание — это процессы. Я глубоко убежден, что потенциальный ИИ нужно обучать не на фото и даже не на видео. Сверточная сеть имеет два уровня (минимум) — и по сути это две разные сети: одна обучена находить в сырой картинке некие графические паттерны, вторая имеет дело — с выходом первой — т.е. с уже обработанной и подготовленной информацией. Для того, чтобы успешно взаимодействовать с миром ИИ нужно тоже самое: на каком-то (далеко не первом) уровне должна присутствовать сеть, получающая на вход развернутую во времени карту процессов. Концепции «начала» и «конца», «движения», «трансформации», «слияния» и «разделения» — это то, с чем должна научится работать сеть.
Я почти уверен, что те, кто занимаются ИИ игр, вроде Альфа Го, это так или иначе понимают. Возможно подходы там несколько иные, но суть та-же: текущая ситуация на доске (причем в развертке на несколько последних ходов) — анализируется на предмет того «что вообще происходит». И в зависимости от того, насколько то, что происходит соответствует тому, что должно происходить — подбираются собственные ходы.
Очень сложно говорить о стратегии/поведении, когда на входе картинка с сенсоров. И наоборот — подготовленный вектор, содержащий полный расклад по текущему состоянию поля в играх с полной информацией (считай полная картина мира) — вполне посильная задача, как показывает практика. Однако, если сверточная сеть первых уровней идентифицировала объекты, а следующие уровни анализируют эти объекты в динамике, идентифицируя процессы (знакомые по обучению, например) дополняет данные, полученные ранее, то с этим уже кажется можно работать…
Вопросы знатокам:
Насколько реально, учитывая текущие наработки по нейронным сетям сделать примерно следующее:
На входе, допустим, непрерывный видеосигнал, возможно стерео. Как вариант: с несколькими степенями свободы (возможность поворачивать камеру — произвольно, или по схеме). Впрочем, при необходимости видеосигнал может быть дополнен/заменен любыми другими способами пространственного восприятия — от сонара до лидара.
На выходе:
- Карта глубин (если камера статична) или карта окр. пространства (динамическая камера/лидар, etc.);
Для чегоНеобходимо, если мы хотим иметь реальное пространственное расположение объектов для оценки их взаимодействия. В таком случае картинка с камеры есть лишь двумерная проекция пространства большей размерности, и нужны дополнительные преобразования.
- Выделение отдельных объектов (с учетом карты глубин/пространства, а не только/не столько видимых контуров);
- Выделение движущихся объектов (скорость/ускорение, построение/предсказание траектории(?));
- Иерархическая классификация объектов по любым извлекаемым признакам (формы/габаритов/цвета/нюансов движения/Составных частей(?)). Т.е. по сути извлечения метрик для Гилбертова пространства.
про иерахиювозможно слово «Иерархическая» не вполне уместно в данном случае. Я хотел подчеркнуть, возможность в любой момент подобрать метрики так, что бы Расстояние Хеминга между ними позволило считать два различных набора метрик суть одним понятием. Как «красная машина» и «Синий автобус» должны быть обобщены в понятие «транспорное средство», например.
Важно: по возможности система не предобученная. Т.е. какие-то базовые вещи могут быть заложены (например — сверточная сеть первого слоя, для выделения контуров/геометрии), но выделять объекты и позднее распознавать их должна научится сама.
- Ну и, наконец, построение развертки (на основе пп 1,4, т.е. пространственной карты с учетом метрик) во времени (пока, на этом этапе видимо непосредственно наблюдаемого периода), с целью провести анализ по пунктам 2-4, с дабы выявить: процессы/события (являющиеся по сути своей изменениями во времени п.3) и их кластерной классификации (п.4).
Еще раз: из картинки с сенсоров мы сначала извлекаем описание мира в более подготовленном виде, размеченном по извлекаемым признакам и разделенном не на пиксели, а на объекты. Затем разворачиваем мир, состоящий из объектов во времени и полученную «картину мира» подаем на вход следующей сети, которая работает с ней так, как работали предыдущие слои с сенсорной картинкой. Там, где выделялись контуры объектов, теперь будут выделяться «контуры» происходящих процессов. Взаиморасположение объектов в пространстве подобно причинно следственной связи процессов во времени… Как-то так.
Предположительно после этого система должна быть способна опознавать процессы по их части (как способна опознавать образы, имея лишь их фрагмент, или как написание продолжения текста по образцу), и как следствие — предсказывать оные, как вперед, так и назад во времени, расширяя модель п.5 неограниченно в обе стороны. Так же, предположительно, имея представление о составных процессах, система может выявлять по нескольким связанным локальным процессам более масштабные, глобальные и как следствие — неявные, скрытые процессы, являющиеся составной частью выявленных глобальных, но не воспринимаемых непосредственно.
Ну и последнее: имея в будущем фиксированное состояние системы (где зафиксированы только значимые элементы гилбертовых метрик, при свободной трактовке остальных, не существенных значений) — способна ли сеть «домыслить» остальное?
Ну т.е. если бы это было изображение, в котором заданы только два несвязанных фрагмента — может ли сеть, обученная на какой-то выборке достроить «непротиворечивое» полное изображение? Выборка в данном случае — аналогичные временные интервалы из опыта, фрагменты — текущее и заданное состояния. Результат: непротиворечивая «история», связывающая одно и второе…
Мне кажется, это уже будет вполне существенная база для дальнейших экспериментов:
- включение в «историю» собственных действий, если возможно/необходимо
- приоритет «закономерных» причинно-следственных паттернов над неконтролируемыми стохастическими выбросами (проблема рулетки)
- какой-то вариант любопытства, т.е. активное познание закономерностей через действие… etc
P.S. Вполне допускаю, что я только что изобрел велосипед, и знающие люди давно уже применяют эти принципы на практике. 😉 В таком случае прошу меня «ткнуть носом» в соответствующие разработки. И уж совсем будет замечательно, если есть подробное описание фундаментальных проблем такого подхода либо обоснование, почему он в принципе не работает.
P.P.S. Я отдаю себе отчет, что текст сырой, и мысль перепрыгивает с одного на другое, но я очень хотел задать паре человек эти вопросы (раздел «вопрос знатокам»), а это трудно сделать без хоть какого-то изложения. Прошлый текст (а я его сейчас перечитывал, и понял что он очень сложный для восприятия) свою задачу выполнил: я получил несколько ценных для меня дискуссий… Надеюсь и в этот раз прокатит! 😉