Обработка распределений и данных из реального мира

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

Похожая проблема существует и в отношении временных паттернов. Узел должен определить обобщенные последовательности пространственных паттернов, но должен делать это, основываясь на распределении пространственных паттернов. Он никогда не увидит чистых данных, как показано на Рисунке 6b.

Тот факт, что узел всегда видит распределения, обозначает, что в общем случае надо не просто перечислить и сосчитать пространственные и временные паттерны. Должны быть использованы вероятностные методики. Например, идея последовательности в HTM в общем случае не такая ясная, как последовательность нот в мелодии. В мелодии вы можете точно сказать, какой длины последовательность и сколько в ней элементов (нот). Но для большинства причин в мире не ясно, когда начинается и заканчивается последовательность, и возможно отклонения в любом элементе. Аналогией могло бы быть хождение по улицам знакомого города. Выбираемый вами путь – это последовательность событий. Однако, нет набора путей по городу. «Последовательность» улиц в городе может изменяться, поскольку вы можете повернуть направо или налево на любом перекрестке. Также, не очевидны начало и конец последовательности. Но вы всегда знаете, в каком месте города вы находитесь. Пока вы передвигаетесь по улицам, вы уверены, что находитесь в том же самом городе.

Другая проблема возникает сама по себе при изучении последовательностей. Для того, чтобы сформировать последовательность, узел должен знать, когда приходит новый паттерн, то есть, где начинается элемент последовательности. Например, когда вы слышите мелодию, каждая новая нота имеет резкое начало, которое четко отмечает начало нового пространственного паттерна. Мелодия – это последовательность пространственных паттернов, где каждый паттерн отмечен началом новой ноты. Некоторые сенсорные паттерны подобны мелодиям, но большинство – нет. Если вы медленно вращаете объект, когда смотрите на него, сложно сказать, когда возникает новый пространственный паттерн. Узлы HTM должны решать, когда изменение во входном паттерне достаточно для того, чтоб отметить начало нового элемента.

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

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

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

Далее мы обсудим, почему для обучения необходима изменяющаяся во времени информация.

5. Почему время так необходимо для обучения?

Ранее мы уже утверждали, что HTM могла бы выдвигать гипотезы относительно «статических» сенсорных паттернов; основным примером может являться зрение. (Вы можете распознавать изображения, когда они мелькают перед вашими глазами). Однако, мы также утверждали, что для обучения необходима изменяющаяся во времени информация. Даже системе статического зрения необходимо подавать изображения объектов, движущиеся в визуальном поле, чтоб она правильно обучалась, чтобы обнаруживала причины. Почему обучение требует изменяющейся во времени информации?

Частично мы уже дали ответ на этот вопрос. Поскольку каждый узел запоминает обобщенные последовательности паттернов, единственный способ сделать это – предоставить узлу последовательности паттернов во времени. Очевидно, что единственный путь понять язык, музыку или прикосновения – это изучение и распознавание последовательностей. Однако что насчет статического зрения? Зачем нам было бы необходимо тренировать HTM движущимися изображениями, если в конечном счете, все, что нам нужно – это распознавание статических изображений? Также, что узел будет делать со статическим паттерном, если он запомнил последовательности? Ниже мы хотим обсудить ответы на эти вопросы.

На самом базовом уровне, распознавание паттернов влечет за собой отнесение неизвестного входного паттерна к одной из нескольких категорий. Скажем, у нас есть система искусственного зрения, умеющая распознавать 1000 объектов или категорий. Существует практически неограниченное число возможных изображений, которые мы могли бы показать нашей системе и надеяться, что она отнесет каждое неизвестное изображение к правильной категории. Если «лошадь» - это одна из категорий, которые может распознать наша система, есть миллиарды визуальных паттернов, в которых вы немедленно бы распознали «лошадь». Мы хотели бы, чтобы наша система искусственного зрения делала то же самое.

Следовательно, распознавание паттернов это задача отображения «многие-к-одному». В одну категорию отображаются множество входных паттернов. Введем новый термин для описания отображения многие-к-одному: «пулинг». Пулинг обозначает назначение одного обозначения многим паттернам, то есть складывание их в один и тот же пул.

Каждый узел в HTM должен выполнять пулинг, поскольку иерархия в целом предназначена для выдвижения гипотез. Каждый узел должен делать это, даже если он просто распознает пространственные паттерны. Мы уже видели два механизма для пулинга, хотя мы и не называли таковыми. Пространственное квантование – это механизм пулинга, основанный на пространственном подобии. В этом случае мы берем неизвестный паттерн и определяем, насколько близко он к каждой из точек квантования. Два паттерна, которые в достаточной степени «перекрываются», рассматриваются как один и тот же. Таким образом, множество возможных паттернов подвергаются пулингу к точкам квантования. Это слабая форма пулинга, и сама по себе она недостаточна для решения большинства задач по выдвижению гипотез. Второй метод пулинга – это изучение последовательностей. В этом случае узел отображает множество точек квантования к единой последовательности. Этот метод пулинга более мощный, поскольку он допускает произвольное отображение. Он позволяет узлу группировать различные паттерны, которые пространственно не перекрываются. Он допускает произвольные отображения многие-к-одному.

Рассмотрим, например, распознавание изображения арбуза. Арбуз снаружи совсем не похож на внутренности арбуза. Но если бы вы увидели два изображения, одно – арбуз снаружи, а другое – внутренности арбуза, вы бы оба идентифицировали как арбуз. Нет существенного «пространственного» перекрытия между двумя этими изображениями или даже между частями изображений, так что в этом смысле это «произвольное» отображение. Откуда HTM «знает», что эти два паттерна представляют одну и ту же вещь? Кто ей сказал, что паттерн A и паттерн B, которые совершенно различны, должны рассматриваться как один и тот же? Ответ – время. Если вы держите срез арбуза в руке, двигаете его, вертите и т.п., вы видите непрерывный поток паттернов, который прогрессирует от созерцания наружной стороны арбуза к созерцанию внутренностей. Самая исходная причина, «арбуз», остается постоянной во времени по мере того, как паттерны изменяются.

Конечно, ни один узел в HTM не помнит всю последовательность целиком. Узлы внизу иерархии запоминают довольно короткие последовательности, что вызвано небольшой областью паттернов, которые он может увидеть. Узлы на следующих уровнях более стабильны. Они запоминают последовательности последовательностей от предыдущего уровня. Стабильность возрастает по мере того, как паттерны поднимаются по иерархии. При достаточном обучении вы обнаружите, что выход самого высшего узла иерархии остается стабильным в течение всей последовательности. Каждый узел в иерархии выполняет пространственный и временной пулинг. Без временного пулинга (то есть, изучения последовательностей) HTM сама по себе не смогла бы узнать, что наружная сторона и внутренности арбуза имеют общую причину.

Этот аргумент верен для большинства возможных высокоуровневых причин в мире, являются ли они по своей сути временными (такие как речь, музыка и погода), или могут быть распознаны статически (такие, как зрение). Таким образом, изменяющаяся во времени информация необходима для изучения причин мира.

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