Virtual Laboratory Wiki
Advertisement

Постановка проблемы[]

Ниже будем оперировать одним мысленным экспериментом, который я надеюсь направит усилия на поиск нужных принципов. Сразу договоримся, что условия и поставленные специально технические или конструкционные ограничения - обсуждать не будем. Но зато ответ на задачу предполагает не только Решение, но и признание того, что задача в таких условиях НЕ имет решения. Если удастся получить именно последние и это будет обоснованно, то считаю это большим успехом, чем найти ОДНО ИЗ решений.

В дальнейшем условия задачи я буду совершенствовать и изменять и конкретизировать по ходу обсуждения - но для начала думаю хватит.

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

Как Вы можете догадаться это вырожденный эксперимент по чистому обобщению.

Задача "Муха"[]

Итак мысленный эксперимент: "Муха на стекле" Представим себе, что мы лежим на кровати и наблюдаем муху ползающую по стеклу. Представим себе, что наблюдает не человек с развитым зрением, а гипотетическая букашка умеющая отличить только черные пятна на белом фоне. Т.е. муха - это единственный черный пиксель на фоне с разрешением 10х10 точек. Рассуждения начнем с того, что нейронная сеть букашки - это перцептрон Розенблатта. Отталкиваясь от этого нужно ввести какие угодно элементы (минимально необходимые - т.е. чем меньше тем лучше - бритва Оккама) и какие угодно алгоритмы. Уточнение: муху в движении мы не наблюдаем, т.е. траектории не известны, известно только то, что муха может появится в любом месте окна.

Цель: Как можно проще и единообразно отличать муху независимо от ее положения на стекле.

Вопрос можно сформулировать и по другому:

  1. Что здесь инвариант ? (т.е. что позволяет нам знать что это именно муха)
  2. Как реализовать этот инвариант в ИНС ? (ограничения я определю затем более точно когда будет ответ на первый вопрос)

Решения типа "поочереди проверим все точки стекла" - наверное, понятно, что не интересны :)

Подходы к решению[]

Virtual_Graph Я так понял, что задача состоит в следующем: есть черная точка на сетчатке или нет? Первое. От последовательного перебора никуда не денетесь, будь то пикселы или последовательно моделируемые нейроны Второе. Для этого не нужна ИНС Третье. Если планируется обработка движения, в модели ИНС необходимо вводить временнЫе параметры, откуда сразу выплывает вопрос по алгоритму их обучения... Как?

ИНС для этого нужна по условию задачи, в мозгу у нас не может быть последовательного перебора. Т.е. ИНС нам нужна ВСЕГДА - других мозгов у нас нет ...

Первое утверждение не верно ! НО главное отметить, что нас не интересует оптимальность решения, т.е. сравнение последовательных алгоритмов и параллельных - здесь мы ступили на протоптанную почву - Минский убидительно доказал, что практически любая ИНС, а точнее параллельный алгоритм в задачах на инвариантность ПРОИГРЫВАЕТ по оптимальности последовательным алгоритмам. Но ИНС обладает различными отличиями - например, способностью к обучению, распределенной памяти - следствием чего является устойчивость при повреждении ... Именно поэтому мы хотим занятся этим с использованием ИНС - а главное у нас ВООБЩЕ нет модели ИНС которая могла бы с этим справится ... И еще напомню - нам ВАЖНО НЕ РЕШИТЬ задачу, а рассмотреть все варианты.

Nemo А почему "последовательный перебор". Если задача в том есть черная точка или нет, то она решается логическим ИЛИ, где 1 - наличие синала о черной точке от рецептора, 0 - отсутствие сигнала.

Вот это уже ближе ... Здесь мы видим, что используется ИНС

Теперь, задам уточняющие вопросы:

  1. Вы занялись решением, но не ответили на вопрос - что в этой задаче является ИНВАРИАНТОМ ?
  2. "логическое ИЛИ", которое вы хотите применять - от скольких аргументов ?

Nemo Ну, например, здесь инвариант - скачек яркости при переходе от светлого участка к темному.

Хочу, чтобы Вы подумали вместе со мной Прежде чем я выложу все по полочкам - хочу понять пойдете ли Вы по тем же мысленным путям размышления, что и я (могут ли быть принципиально другие)

Кроме того, окончательного решения у меня конечно НЕТ, поэтому и томлю, чтобы затем Вы могли подхватить мой мысль и развивать дальше ... А вот готовые и проверенные мысли я обычно публикую

1. Ответ про Инвариант - хотел было сказать, что неправильный, но подумал и понял, что это тоже вариант (вот видите, результаты Мозгового штурма уже появляются ) - надеюсь условия задачи ясны - картинка черно-белая, т.е. скачек между черным и белым при сканировании стекла ...

Но мой вариант Инварианта - Размер ... мне кажется более точный ... но могу ошибаться ... можете сравнить ?

2. Жду ответа на второй вопрос про число аргументов у операции ИЛИ ... хотелось бы чтобы полностью вникли бы в проблему, иначе дальше на понимание надеятся будет поздно

Nemo Я собственно без всякой хитрости - поле 10 на 10 и входов соотв 100. Можно конечно комбинации из нескольких элементов, но сути это не меняет. Эту задачу можно решить форулой OUT=SUM(INi), где - INi значения входов, 1 - если темная точка. Это будет последовательный способ обработки, и в чем тут разница с параллельным в результатах?

О! Казалось бы думать не о чем ... вариантов нет, или все эквивалентные ... Так ?

Но тем ни менее рассмотрим варианты:

1. имеем один считывающий элемент - сенсор. Последовательно, наводим его на каждую точку стекла и если обнаружили черный цвет добавляем 1, иначе 0. - Вот это классический последовательный алгоритм. (занимает 200-201 такт времени = 100 на движение сенсора, 100 на сложение (или 100 на if + 1 на сложение))

2. имеем матрицу 100 сенсоров. Уже сенсоры не двигаем, и получаем параллельно все состояния сенсоров. Вот здесь и есть иллюзия параллельности: получить параллельно получилось, но анализировать вынужденны все равно последовательно, т.е. имеем один нейрон, который связан с 100 сенсоров, каждая связь имеет силу 1, а нужный нам порог срабатывания для нашего Размера мухи 1. Назовем такой нейрон "Стабилизатором Размера". Вот он и работает считая по Вашей формуле - и НИКАК не может сложить результат паралллельно. (101 такт = 1 на поступление сигналов, 100 на сложение)

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

2а. Является ли это проблемой моделирования или же это проблема и в биологических организмах тоже (?) - получение реальной параллельности, а не псевдопараллельности. Наверное излишне говорить, что биологическое считывание ближе ко второму варианту, чем к первому - глаз обладает больше чем одним сенсором. Но есть ли такая же проблема при обработке нейронов. Казалось бы, возбуждение приходит параллельно и нейрон при определенном пороге срабатывает и посылает ответ дальше. Посмотрим аналогию - текет река и в одном месте образовалась природная плотина платина - потока воды нехватает и вода через барьер не текет. Но тут мы открываем 100 мелких речушек которые вливаются в реку - спрашивается будет ли осуществляться реальный подсчет количества воды поступившей с речушек или когда шлюзы откроются ОДНОВРЕМЕННО (параллельно) река преодолеет платину (или если не хватит нет) - т.е. займет ли этот процес один такт времени или 100 ? Уместна ли такая аналогия для биологии ?

2б. Если в варианте 2б - аналогия уместна и мы в аппаратной реализации можем повторить такой пороговый элемент - то мы получили для случая 2 - РЕАЛЬНУЮ параллельность. Здесь рассмотрим вариант если это не так. Почему это может быть не так ? Если опустится на уровень ниже в случаи с водой на уровень молекул, в случаи с нейрвной системой на уровень числа рецепторов, которые активировали G-белки и несутся к ядру чтобы сообщить ... В случаи с белками, которые стремятся в одно место мы получим снова же псевдопараллельность, т.к. будет образуется очередь пока каждый белок поочереди вызовет реакцию. В случаи с молекулами воды - наверное будет нечто другое - и все будет зависеть от ширины реки - если бы река была бы из одного слоя молекул, то наверное результат был бы псевдопаралельность, но так как такого нет - то поступившие с разных речушек молекулы - подтолкнули бы 100 или более слоев молекул в реке - и прорыв был бы мгновенным - т.е. реально параллельным .. НО для этого нужно иметь в реке 100 слоев ...

Выбор между вариантами 2а и 2б - мне сделать сложно - т.е. не представляю, что на самом деле будет в жизни .. Но есть мнение, что все зависит от уровня на котором мы рассматриваем - кажущаяся паралельность на верхнем уровне - может просто гарантироваться последовательностью на более низком уровне, который или не виден как в случае с белком или обеспечиваться ибыточным распараллеливанием как в случае с водой.

3. Видим, что при первом варианте надеятся на параллельность не приходится, а второй если и возможен, то только не в моделировании на компе. Здесь рассмотрим третий вариант - срабатывание сигнала. Если сенсоры у нас не просто передают что видят, а так же имеют порог срабатывания, то сигнал у нас будет формироваться, только тогда когда насыщенность точки будет высока - в нашем случае 1, и только такой сигнал (один или 5-6 в зависимости от количества мух) достигнет решающего нейрона, и ему прейдется сложить только 1 или 5-6 цифр. Это имеет смысл и при моделировании. Но здесь тоже не все так однозначно. Мы просто переместили ответственность, теперь каждый сенсор регистрирует ЛОКАЛЬНУЮ область, и только в случае необходимости отправляет информацию на ГЛОБАЛЬНУЮ обработку. Казалось бы что изменилось - количество операций осталось тоже или даже несколько возрасло. НО заметим, что в случае 2 мы имеем матрицу сеносров 100 шт - а они срабатываю параллельно, т.е. за один такт времени, а за следующие такт прибавляется уже первая цифра - т.е. для нашей задачи мы добились РЕАЛЬНОЙ параллельности, но если бы мух было бы 5-6, то тактов нам понадобилось бы на один больше, т.е. уже НЕ ЧИСТАЯ параллельность, но все равно более оптимально.


Думаю я перечислил все варианты ... критикуйте, конечно хотелось бы имееть комбинацию 3+2а = в аппаратной реализации, и хотя бы 3 - при моделировании ... Вот это мой ответ - Коннективиста Символистам ... и на этом математический или программный перебор считаю неприемлемым в ИИ, а эвристики на таких задачах не придумаешь - поэтому как минимум в подобных задачах - коннективизм впереди

Virtual_Graph Проведите мысленный эксперимент

1. Смоделируйте некую ИНС программно, т.е. путем последовательного пересчета параметров формальных нейронов. Для этого разработайте класс нейрона, создайте в нем процедуру Neuron::Run() и т.д.

2. Смоделируйте ту же ИНС аппаратно на ПЛИСе, с теми же параметрами и процедурами. Загрузите прошивку в ПЛИС. Пересчитайте эти нейроны параллельно.

В чем разница? В степени параллелизма. А в чем проблема? Ни в чем - реакция на муху - совершенно одинаковая. Или не так? А как?

Думаю, Выше мой ответ тоже относится и к Вам. Но здесь следует добавить: разница в скорости, в той степени параллелизма которую можно достигнуть в такой задаче (как бы Вы не старались бы задача не решается за один такт ), а ГЛАВНОЕ - в принципах, которые мы получили выбрав оптимальный вариант - угадайте на что похоже то устройство, которое у меня получилось в оптимальной варианте №3 И замедте пока только минимум добавлений - т.е. все в соответствии с бритвой Оккама ...

Да, а все проблемы из-за того - что нацелены на результат, а не на процесс ...

Пока Вы усиленно размышляете (я все таки на это надеюсь ), сформулируем два тезиса:

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

Задача "Оса"[]

Теперь сделаем ПЕРВОЕ усложнение задачи. Допустим все мухи вымерли, и прилетели осы - Оса - это уже не одна черная точка, а три точки в любом из направлений. Задача прежняя - определить есть ли оса.

Решение даю сразу

  1. Имея Инвариант Размер - мы сразу догадались - нужно поднять порог с 1 до 3 - и все !
  2. Если бы мы имели бы инвариант "Скачек яркости" - скачек бы был - но то что это оса мы бы не заметили бы ...
  3. Сравнительно замедте, что пришлось бы сделать Символистам ... Им пришлось бы не настроить единственный параметр, а ИЗМЕНИТЬ алгоритм. Конечно, Вы скажите, что они параметризовали бы - введя параметр который определял бы размер - но также замедте, что если бы они учли бы вопросы параллельности - то им прешлось бы, правда совсем по другим мотивам - реализовать однослойный перцептрон (ув, какое противное слово - таких не бывает, но ничего, думаю скоро перейдем к реальному перцептрону Розенблатта).

Задача "Ориентация Осы"[]

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

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

Подходы к решению[]

Virtual_Graph Я ж Вам толковал про примитивы... Вы считаете, что это не в тему. Ну а я считаю, что отличное от этого - не в тему

В этой теме я Вам такого не говорил Скорее, для ориентации осы - в тему ... только я хочу конкретнее - КАКИЕ примитивы, сколько, как между собой связаны, как реализованны на ФН ? Из этой конкретики - я постараюсь затем показать, а может Вы и сами увидите, что примитивами сыт не будешь ... и нужно иметь не кучу примитивов - а лишь определенные Стабилизаторы, более универсальные чем примитивы (!) ... но не будем опережать события ...

Virtual_Graph Говорилось уже... 1-й слой - моделирует точки. Каждый нейрон 1 слоя имеет рецептивное поле с центром и периферией. Например, центр - 2х2 точек, периферия 6х6 точек сетчатки. Все они сходятся на один нейрон 1-го слоя. Веса центра - возбуждающие, периферии - тормозящие. Это нейрон с ON-центром. С OFF-центром - наоборот. Эти поля перекрываются, например с шагом 1 точка. Почему так - не знаю. Необходимо искать оптимальные поля. Или поручить их формирование некому алгоритму. 2-й слой - надо думать, но очевидно, что это будут линии

Замысловато конечно ... это Вам биологии рассказали, что так устроен глаз ? Незнаю как вообще, но для задачи "ориентация осы" - думаю крайне излишне ...

Virtual_Graph Само собой излишне. Фишка в том, что это универсальная система. А в случае с осой - будет более специализированная. А значит - с более узким диапазоном использования.

Но самое интересное - получается, что вероятность НЕ возбуждения на порядок больше, т.е. анализирующий нейрон ON-типа возбуждается ТОЛЬКО тогда когда есть яркий контраст, по сравнению с ближлежащей областью, но т.к. близлежайшая область дает больший вклад (т.к. занимает 32 точки по сравнению с 4), то ее суммарный вклад может полностью "перебить" наличие яркого контраста в центре. Если в близлежайшей области будет некий шум больший чем 4 нейрон не возбудится. Наверное, это есть смысл использовать при анализе на СВЯЗНОСТЬ фигуры, т.е. такие нейроны легко позволяют выделить границы фигуры (?) ... понять что с чем связанно ... тут я еще подумаю ...

Virtual_Graph Насчет контуров - это Вы верно догадались

Но для нашей сетчатки 10х10 нужно 100 нейронов ON-типа и 100 нейронов OFF-типа. Каждый из них будет иметь по 36 связей из которых 32-тормозящих (или наоборот) и 4 - возбуждающих ... Так ?

Virtual_Graph Верно Замечу, что разные типы нейронов нужны для различения светлых точек на темном фоне -on и темных - на светлом -off. Еще замечу, что у линий (2 слой) рецептивные поля д.б. больше по площади - в 2-4 раза. В след слое - еще больше и т.д.

Знаете довольно забавно получается ... OFF-нейроны будут активироваться когда наша оса попадет на край периферии, что превлечет внимание, а ON-нейрон возбудится только тогда когда оса будет позиционирована в центр ! Это очень хорошо ... это очень хорошо ... правда незнаю какую выгоду с этого поиметь пока еще сыровато ...

Думаю это может иметь влияние и моделировать - фокусировку взгляда ... Как на Ваш взгляд правдоподобно ли, что нейроны не статически покрывают всю сетчатку, а динамически перемещая связи (тогда нужно на порядок меньше нейронов, и быстро оказываешься в центре привлекшего внимания (как правило движущегося) объекта) ?


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

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

Вы тут про Хокинса упоминули, помойму это у него объясняется, что неокортекс не имеет дела с примитивами - линии, углы и т.п., т.к. есть другие модальности - звук, вкус и т.п. Чтоже тогда такое линия для звука ? Вот и там дальше он пишет, что есть только временной и пространственный контекст для любой из модальностей (что неплохо согласуется с Кантом ) - это и будет основа стабилизаторов - стабилизаторы пространства и стабилизаторы времени, т.е. те нейроны которые дают прямой сигнал, не зависимо от пространства и времени (точной формулировки у меня пока нету, поэтому мое понятие стабилизатора немного будет плавать).

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

Virtual_Graph Не смешивайте примитивы и модальности. У любой модальности есть свои примитивы. Что такое "линия для звука" - не знаю. Но могу предположить, что это - одна из гармоник звука после преобразования Фурье. Т.е. ее частота и амплитуда. Частота кодируется номером канала - нейроном, амплитуда - силой его выхода. Пространственно-временной контекст - это все верно Только вот в ФН временных операций Вы не найдете, только пространственные

Тогда это (то что примитивы у модальностей разные) указывает на то, что они реализованны не в неокортексе, а непосредственно рядом с устройством (глаз, ухо, вистибулярный аппарат), а вот далее уже поступаю сигналы, приведенные к одной форме - и там примитивы могут быть ТОЛЬКО пространство и время (примерно о том же говорит и Хокинс).


Итак, что же нам нужно, по сравннению с задачей Муха на стекле ...

1. Одного стабилизатора Размера здесь будет мало. 2. Введем три новых инварианта - горизонталь, вертикаль, диагональ ... 3. Реализуем их с помощью соответствующих стабилизаторов: 3а. Для нашего поля 10х10 нужно 10 шт. горизонтальных стабилизаторов имеющих связи с 10 точками для каждого - горизонтальная линия. 3б. Тоже самое для вертикали 3в. Нужно 20 шт. - 10 для диоганали в одном направлении, и 10 в обратном. Для диагонали число связей будет разное главная диагональ имеет 10 связей, 2 по 9, 2 по 8 и т.д.

Итого, имеем 5-ти кратное перекрытие всей сетчатки - 1 нейрон - стабилизатор размера, и 4*10 нейронов стабилизаторы направления.

Теперь если мы установим порог всех этих нейронов в 2, то все они будут фиксировать осу, а выходы этих нейронов одназначно покажут: 1. размер превышает 2 2. Оринтацию осы 3. Точное расположение - номер линии или диагонали.

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

Например, может быть стабилизатор размера можно переместить на второй слой, например получающий сигналы от 10 стабилизаторов горизонтали ... будет ли выгода ?

Задача "Ориентация Ос и Пчел"[]

Следующие усложнение задачи будет таким:

1. Кроме ос, на сетчатке могу появится пчелы, меньшие размером, если оса была 3 точки, то пчела 2. 2. Требуется различить осу от пчелы, и как и раньше их размер и ориентацию.

Здесь места для творчества уже на порядок больше ! Но только давайте именно об адекватном алгоритме, а не вообще на все случаи жизни (они не имею такой ценности при анализе).

Подходы к решению[]

Для решения это задачи есть два варианта:

1. Добавим сдвоенный набор, т.к. на нужно судить не только о размере и ориентаци осы, но и пчелы. В итоге сеть будет 82 нейрона 1000 связей и 100 сенсоров. Половина будет иметь порог 2 и судить о пчеле, а вторая половина порог 3 и судить о осе. Заметим еще, что этого будет мало и нужно реализовать еще один инвариант "больше-меньше", без него при появлении осы она будет давать нормальный ответ, а вот если появится пчела - задействуются нейроны определяющие и пчелу и осу, поэтому нужно ввесмти несколько тормозных нейронов блокирующие активность большего по размеру объекта ... определить точную реализацию я предоставлю Вам, но думаю достаточно будет одного нейрона с определенными связями ...

2. Вообще не будем ориентироваться на инварианты, а просто запомним все положения осы и пчелы - 200 примеров стимул-реакция, понадобится классический перцептрон Розенблатта. Заметим, что число нейронов в среднем слое будет около 150 по 10 связей каждый.

Теперь если сравнить - отметим, что особой разницы НЕТУ. Первый вариант ПОКА ЕЩЕ выигрывает по оптимальности где-то в два раза, но он менее универсальный, т.к. о каждом инварианте мы позаботились вручную, в то время как во втором варианте об инвариантах думать вообще не нужно. Но главное, что в такой реализации первый вариант ошибется очень быстро - стоит прилететь трем мухам (точкам), и сесть на одну линию, то получим ответ - оса, в то время как во втором варианте - мы получим что объект не известен. Чтобы исправить ситуацию ДОПОЛНИТЕЛЬНО прейдется вводить реализацию инварианта связаность (например, предложенный здесь вариант с ON OFF нейронами, но заместим, что только этим инвариантом и заканчивается преймущество таких нейронов) - что совсем сведет на нет оптимальность, и запомнить ВСЕ варианты будет на порядок удобнее и оптимальнее.

Теперь вы говорите, что можно реализовать инварианты - "разный угол, разную ширину, длину и разный цвет - оттенки серого" - конечно можно, НО запомнить все варианты - БУДЕТ ОПТИМАЛЬНЕЕ ! Вот именно поэтому все идеи с жестким моделированием примитивов - БЕЗПОЛЕЗНЫ, и уж точно не отражают биологических систем, как бы не утверждали биологи (ваш Хьюбел, например) ...

И замедти, не нужно большого ума, чтобы сделать такую прикидку - описаная Вами (и Хьюбелом) архитектура НЕРАБОТОСПОСОБНА.

Если и нужно говорить об инвариантах, то совсем не в статическом смысле и не отдельно друг от друга ... нейроны должны ОДНОВРЕМЕННО реализовавать разные инварианты, они должны динамически получаться, и иметь НЕ ИЕРАРХИЧЕСКУЮ структуру как Вами описывалось, А СЛУЧАЙНУЮ (для наблюдателя и как минимум при "рождении", но тем ни менее умеющую себя оптимально настроить), только тогда это будет универсальная система ... Иерархия не дается сразу, аппараты реализующие инварианты не имеют симметриии ... НО далее уже другой и более сложный разговор, который имеет смысл вести когда Вы откажитесь от таких примитивных и линейных представлениях о запоминании образов ...

Промежуточный итог[]

1. вариант - перцептрон, запоминающий все возможные положения;

2. вариант - готовые инваринаты (признаки), число которых близко к всевозможным положениям, что и понятно, т.к. каждый объект можно уникально характеризовать только хотя бы одним различающимся инвариантов.

Таким образом, имеем два крайних случая, которые нужно некоторым образом объединять !! (Предполагаю идеями об это дальше и обмениваться)

Задача "Осы-пчелы в пространстве"[]

Теперь далее, если усложнить нашу задачу таким образом: 1. Каждая точка это градация серого от 0 (белый) до 255 (черный) 2. Оса и пчела увеличились и стали обладать вторым пространственным измерением, т.е. оса прямоугольник 2х3, а пчела 2х2 ...

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

Как бы мог быть реализован такой инвариант ? (Жду от Вас помощи)

Замечу лишь, что наверное оптимально было бы уметь получить две проекции на икс и игрек, что и дало бы размеры ... (но как это реализовать ???) Еще есть вопрос, что при это считать ПРОЗРАЧНЫМ, а что считать ГРАНИЦЕЙ. Думаю, что если происходит постепенное увеличение серости, например 2,4,5,7,8,11,7,5,7, ... то мы не можем говорить о каких либо границах - и должны признать что в среде просто находится туман, если же у нас есть резкий скачек 2,4,5, 60, 58, 56, 7,4,9, - то это и есть граница !? Для этого нужно то же реализация - нейрон который бы смог находить такой скачек - какие его особенности ?

Кстати, улавнивание скачка цвета (прозрачность) и определение размерности - вот уже и две различные модальности ... на необходимость которых здесь указывали ...

Возможные подходы[]

  • Отвечая на вопрос "Как бы мог быть реализован инвариант Размерности с отражением размера по ширине и по длине ?" вспомним, что в задаче "Ориентации осы" мы ввели стабилизаторы направления, в частности отражающие вертикальное и горизонтальное направление ... Для нашего поля 10х10 нужно 10 шт. горизонтальных стабилизаторов имеющих связи с 10 точками для каждого - горизонтальная линия. Там же был задан вопрос: "может быть стабилизатор размера можно переместить на второй слой, например получающий сигналы от 10 стабилизаторов горизонтали ... будет ли выгода ?"
  • Теперь на это вопрос можно ответить утвердтельно. Действительно, если стабилизатор ширины соединить с 10-ю вертикальными стабилизаторами, а стабилизатор высоты соединить с 10-ю горизонтальными стабилизаторами, то на выходах стабилизаторов Размерности мы получим соответственно ширину и высоту занимаемую объектом - причем это и будет две проекции на ось икс и игрек.
  • Единственно, возможны варианты, что объект будет не связаным, т.е. на сетчатке будет присутствовать два или более объектов - и стабилизаторы размеров будут омечать общую ширину и высоту, занимаемые этими объектами. Но разделение данных объектов выходит за приделы поставленной задачи.

}}

Задача "Позиционирование ос и пчел"[]

Дальнейшее усложнение задачи будет сложно для восприятия (особенно для тех кто не следил за всем ходом обсуждения) без графического представления. Поэтому начнем с рисунка.

PerceptronBio S

Предполагается, что мы условно (потому-что в ряде случаев мы будем отходить от биологичности, когда это будет иметь технологические преимущества) моделируем одно рецептивное поле.

Итак, на сетчатке имеем 100 колбочек условно занимающих размер 10х10. Связи от них идут к синапсам первого слоя нейронов. На сетчатке одновременно присутствуют 2 объекта (изображенны фиолетовым цветом): "Оса" слева-внизу занимающая объем 2х3 и "Пчела" справа-сверху занимающая непрямоуголный размер 4х3 с исключением двух точек слева-внизу.

В центре изображенна проекция того, как воспринимает сетчатку ON-нейрон, а именно - он занимает квадрат 6х6, центр которого 2х2 возбуждающие связи (красные), остальные тормозящие (синие). OFF- нейрон располагается там-же, только "виденье у него инвертированно" центр тормозящий, а переферия - возбуждающая.

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

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

PerceptronBio S2
PerceptronBio S3

Решение от С.Яковлева[]

Обсуждение[]

Задача, приближенная к реальности "Выделение объектов"[]

Если ранее, мы говорили о моделировании одного рецептивного поля, то здесь попробуем разобраться на примере полноценной задачи, где потребуется минимум 768 рецептивных полей размером 10х10. Это количество без пересечений покрывает стандартный размер изображения (320х240) получаемый от веб-камеры, которые зачастую могут размечаться на промышленных роботах. Ниже представленные изображения получены в среде Microsoft Robotics Studio в начальный момент моделирования и через секунду, когда робот немного развернулся.

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

Entity1
Entity2

Решение от С.Яковлева[]


© Сергей Яковлев, 2009

Использование этой информации в коммерческих целях запрещенно. Но Вы можете копировать и перерабатывать данную статью в научных и образовательных целях, с последующим предоставлением результата на тех же правах. Для подробной информации см. Авторское право.



Здесь планируется объединить результаты полученные в разделе "Задача "Позиционирование ос и пчел"" и результаты моей статьи Предварительная обработка в системе видеонаблюдения на основе искуственных нейронных сетей 2007 г..

Compare
CompareEnd

Обсуждение[]

См. также[]

Advertisement