На форум
  Автор

Нейросимулятор

(Просмотров: 4434)
Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
1. « Сообщение №46310, от Декабрь 05, 2019, 11:16:47 AM»

Попробовал сделать простейшую однослойную сеть по аналогии с природной реализацией. Сеть состоит из сенсорной матрицы 3х3 и одного слоя нейронов.

 

Пока что реализовано:

  1. Установка чувствительности сенсоров
  2. Установка порога срабатывания нейрона
  3. Установка логики нейрона И/ИЛИ

еть настроена на распознавание простейших примитивов типа «прямой отрезок» - 6 видов: 3 горизонтальных и 3 вертикальных. Возможно расширить функциональность сети простым добавлением данных (без перепрограммирования):

  1. Увеличить размерность матрицы – теоретически до бесконечности
  2. Научить ее распознавать оставшиеся начальные примитивы (наклонные линии, дуги) – в принципе что угодно, но начального уровня, потому как сеть однослойная

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

Дальнейшее предполагаемое развитие:

  1. самообучение
  2. многослойная сеть
  3. автоматический рост сети

Среда разработки - MSSQLServer. Просто он был под рукой и не хотелось заморачиваться с визуализацией. Кроме того, данные по весам синапсов и настройкам надо где то хранить, а сама СУБД кроме хранения подразумевает и обработку данных на сервере через T-SQL и триггеры. Я изначально предполагал минимум кода на клиенте, кроме отправки данных (внешних воздействий) и получение отклика – как оно и есть в реальности. Пока что клиентского кода вообще нет, удалось простейшую логику реализовать на одном триггере и свойствах таблиц.

 

Таблицы

Sensor_layer_1 - сенсорная матрица. В ней кодируются данные сенсоров.

Поля таблицы:

  • ID_R(int) – внутренний ключ таблицы
  • R(smallint)рецептор. Принимает значение внешнего сигнала в виде целочисленных положительных и отрицательных значений.
  • Limit_sensor(smallint) – задает чувствительность сенсора в виде целочисленных положительных и отрицательных значений.
  • AKS_sensor(bit) – выдает реакцию сенсора в виде двух значений: 0 – нулевой сигнал, 1 – не нулевой сигнал.

 

Neuro_synapse – данные по весам синапсов нейронов и ключи для связи с сенсорной матрицей и нейроном. Эта таблица вместе с таблицей Neuron реализуют функционал нейрона. Сделал 2 таблицы из соображений оптимизации схемы БД, можно было нейрон реализовать в одной, но это не совсем по фэншую было бы (повторяющиеся данные).

Поля таблицы:

  • ID_S (int) – внутренний ключ таблицы
  • ID_R (int) – внешний ключ таблицы для связи с Sensor_layer_1
  • ID_N (int) – внешний ключ таблицы для связи с Neuron
  • Snp (smallint) – вес синапса в виде целочисленных положительных и отрицательных значений.

Neuronнейрон, вернее та его часть, что реагирует на внешние воздействие.

Поля таблицы:

  • ID_N (int) – внутренний ключ таблицы
  • Limit_neuro (smallint) – задает порог срабатывания нейрона в виде в виде целочисленных положительных значений.
  • AKS_neuro (bit) – выдает сигнал с нейрона в виде двух значений: 0 – нулевой сигнал, 1 – не нулевой сигнал.

Проверить работу сети можно при помощи скрипта SQLQuery_1. Он подает сигналы на матрицу на ее рецепторы 1, 2, 3 что означает примитив «горизонтальная прямая». Так же обнуляет все остальные рецепторы сенсора. Потом через «Select…» выводит данные по таблицам. В итоге видим, что если подать на эти три входа сигнал в 2 единицы, что соответствует предустановленной чувствительности сенсоров – сработает нейрон с ID_N=1 - на выходе (AKS_neuro) получим 1. Это работа логики И. А вот если поставить порог срабатывания нейрона ID_N=1 не 3, а 1 – то получим логику ИЛИ, так как для срабатывания будет достаточно потенциала от одного синапса, а не трех.

То есть порог срабатывания нейрона (Limit_neuro) задается исходя из суммы получаемых на его синапсы весов, что позволяет легко переобувать его с И на ИЛИ просто меняя его порог. А количество синапсов нейрона задается в таблице Neuro_synapse –здесь через связь «многие ко многим» задаются отношения таблиц синапсов и сенсоров к нейронам, то есть их связи. Так как одна запись в таблице сенсоров, синапсов и нейронов формирует соответственно один рецептор, синапс, нейрон – то простым добавлением записей можно легко масштабировать сеть.

 

PS:

В описании много непонятного для тех, кто не работал с СУБД, но объяснение терминологии слишком далеко увело бы от сути. Если будут вопросы, постараюсь перевести с птичьего на человечий. А пока для начала интересно, что думает Nan по этому поводу – насколько правильное попадание в его фэншуй.

Nyeyrosimulyator.rar

Syensornaya_matritca___svyazi.png



Спасибо за это сообщение! Благодарность от: nan

Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
2. « Сообщение №46312, от Декабрь 05, 2019, 12:17:02 PM»

Народ затруднится с запуском... У меня тоже нет оболочки MSSQLServer и не хочу ее ставить. По тексту вижу sql-запросы :)




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
3. « Сообщение №46313, от Декабрь 05, 2019, 12:24:02 PM»

Тогда придется больше картинок и видео с захватом экрана. Вот так выглядят забитые таблицы для распознавания примитива линия (1-2-3 сенсоры).

 

А вообще появилась наконец возможность более предметно разговаривать. Видимо придется переводить БД на локальную версию кодить логику и прикручивать визуализацию.

 

Sensor_layer_1 - в записях 1-2-3 (поле ID_R) видим, что на рецепторы (R) поступили сигналы с уровнем 3, что равно порогу срабатывания сенсора (Limit_sensor) и он сработал, выдав True (AKS_sensor). Это срабатывание выполнил триггер, реагирующий на изменение данных в поле (R) - он записал уровень 1(True) в поле выхода сенсора. И он же отправил в таблицу синапсов (Neuro_synapse) этот же уровень с весом 1 (пока не заморачиваемся дроблеными весами) в ее поле (Snp). Там он нашел нужные записи для обновления по кодам ID_N и ID_R - это таблица связей. ID_R - код записи таблицы сенсоров, ID_N - нейронов. И после этого тот же тригер сложив эти три веса и сравнив их с уровнем порога нейрона (Limit_neuro) в его таблице прописал на его выходе (AKS_neuro) уровень 1(True) - вот и вся примитивная логика. Но уже она позволяет играться с чувствительностью сенсоров, порогами нейронов и связями между нейронами и матрицей - и тем самым настраивать сеть на распознавание примитивов.

 

Реализация переключения режима нейрона (И/ИЛИ) делается очень просто: нужно лишь поставить его порог 1 - тогда сумма весов синапсов всегда будет его открывать - стало быть это ИЛИ. А если порог больше 1 - тогда нужно соответствующее кол-во синапсов с весами не меньше 1.

 

Nyeyrosimulyator_1.rar




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
4. « Сообщение №46314, от Декабрь 05, 2019, 03:11:02 PM»

Да, в таком виде это никого не затронет, а визуализировать лучше всего средствами серверного формирования html Если ты всерьез захочешь написать демо, я помогу его так реализовать и выложить на сайте.

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
5. « Сообщение №46315, от Декабрь 05, 2019, 04:53:50 PM»

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

автор: nan сообщение № 46314:
Если ты всерьез захочешь написать демо

Я представляю пока себе это так: экран-матрица, по нему водишь мышкой, рисуя примитивы а потом и фигуры - рядом другой экран где выводится распознанный примитив/фигура + тех. информация в виде таблиц, графиков, показывающая как это происходит. На это можно навернуть самообучение - проецировать на матрицу примитивы с разной периодичностью и смотреть как нейросимулятор их учится сам распознавать - и что, какой минимум для этого нужен. Тут вообще можно исследования замутить, определяя мин. условия при которых происходит уверенное распознавание: с какой частотой и степенью хаоса, за какое время и с какой точностью можно обучиться.

автор: nan сообщение № 46314:
лучше всего средствами серверного формирования html

Да пофигу. Я думал, что можно в принципе к удаленному серваку подрубаться, как мы это делали с нашими магазинами, но это не камильфо - открывать сервак. Можно было бы локальную БД юзать, тот же Access через ADO, но если можно сделать симулято на сайте с интерактивным интерфейсом - будет еще прикольнее. Только насчет БД не понял - ты имеешь в виду перевести ее на MySQL?

автор: nan сообщение № 46312:
По тексту вижу sql-запросы :)

Это скрипт БД. Если есть MS SQL - открываешь в ней скрипт, жмешь выполнить - он генерит БД с таблицами и триггером.

Я зацепился за БД потому как ассоциация с нейросетью прям таки бросается в глаза, хотя возможно лишь в мои дилетантские.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
6. « Сообщение №46316, от Декабрь 05, 2019, 05:52:44 PM»

С сервером нет проблем, у меня - выделенный, очень мощный сервер.

Да, mysql, если вообще есть смысл тормозиться запросами к БД вместо использования массивов. В БД можно записывать исходные и конечные конфигурации.

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
7. « Сообщение №46317, от Декабрь 05, 2019, 06:22:13 PM»

автор: nan сообщение № 46316:
Именно поэтому я не покушался на столь объемную модель.

Можно ведь и меньшую по объемам попробовать. Кстати, подумалось, что моя идея задавать логику нейрона через установку порога его срабатывания не только простая, но и близка к реальности. Только тут порог в не совсем моем привычном понимании, как сумма потенциалов на входе. Иначе получится, что скажем пришли на 10 входов по +5V - и тогда порог срабатывания +50V? Имхо бред. А если на каждом входе по 0,5V - это уже по сути нули - опять фигня. Если бы это была цифровая микросхема, тогда понятно, что просто комбинация 0 и 1 - а тут одни 1 да еше и с весами. Это сбивало с толку.  А сейчас думаю так:

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

Так и в моей схеме: надо сделать "И" для пяти синапсов нейрона - ставим порог 5, надо сделать "ИЛИ" при тех же синапсах - ставим 1.

 

А еще основная мотивация сделать относительно простой симулятор - понять, как собираются примитивы более высокого уровня. Ведь если просто сложить в кучу пару горизонтальных и вертикальных линий - получим кроме прямоугольника еще и варианты разных крестиков. Стало быть, нужно концы с концами соединять. Но в моей схеме я специально сделал не принципиальным нумерацию синапсов, она только для схемы в БД нужна. То есть в моей реализации сети у палки нет понятия конец и начало - есть просто палка. А складывать то их как то надо. И я подозреваю в природной нейросети так же происходит, потому как нейрон в принципе не может определить какой конкретно синапс получил сигнал - у него же нет bat-таблицы синапсов, там просто сумма весов без разницы в каком порядке и каких. Значит эти концы определяются потом, видимо на других слоях. Я думаю, что в многослойном персептроне как раз присутствует нумерация связей, что естественно для программиста - какой же дурак будет вычислять номер записи если уже изначально есть ее код в таблице. А потом начинаются пляски с бубном как из этой кучи получить распознавание. И это резко уводит в сторону от природной реализации и как результат - к затупу дальнейшего развития. Это моя гипотеза такая.

автор: nan сообщение № 46316:
если вообще есть смысл тормозиться запросами к БД вместо использования массиво

Все равно ведь где то надо хранить схему связей, пороги срабатывания - тут однозначно таблицы просятся, они на это заточены. А бегать циклами по массивам - имхо моветон для БД-шника, мужики не поймут :). 

автор: nan сообщение № 46316:
В БД можно записывать исходные и конечные конфигурации.

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




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
8. « Сообщение №46318, от Декабрь 05, 2019, 07:06:11 PM»

>>понять, как собираются примитивы более высокого уровня

Вот подумай над одним из вариантв: если по ИЛИ собрать выходы разных детекторов линий (разные наклоны, толщины, длины, цвета), то получим один детектор: “Это - линия”. – уже абстракций вне масшатов и т.п. Такой детектор может возникнуть не в случае автогенерации созревшего нейрона, а в случае, если нейрон уже установил связи с неким контекстным параметром необходимости детекции линий и, возбудясь им, начинает устанавливать связи по ИЛИ со всеми случаями активности линий. Это – реальный механизм контекстного формирования детекторов абстракций примитивов.

>>где то надо хранить схему связей, пороги срабатывания

Статически заданный массив для данной эмуляции.

>>бегать циклами по массивам - имхо моветон для БД-шника, мужики не поймут :).

Это, может, у вас в анклаве БД-шников такие понятия, а у более безграничных программеров этого прикола нет :) Если массив более эффективен, то он используется.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
9. « Сообщение №46319, от Декабрь 05, 2019, 07:47:31 PM»

автор: nan сообщение № 46318:
Вот подумай над одним из вариантв:

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

автор: nan сообщение № 46318:
Статически заданный массив для данной эмуляции.

В смысле? Сервак понятно дело молотит не переставая. Ты предлагаешь загрузить в оперативку массив? А потом ВЫКЛ - и сеть сдохла до уровня начальных параметров. В моем понимании статические параметры хранятся в файлах, но никак не в динамике. 

автор: nan сообщение № 46318:
а у более безграничных программеров этого прикола нет

Однажды мне довелось допиливать за таким умником прогу. Делал ее какой то VB-шник, судя по всем никогда не имевшим дело с БД. Там у него сплошные массивы вместо таблиц, которые получали данные из форм-редакторов и каких то модулей с константами и пробежки циклами вместо селектов. Все работало, пока эта виртуальная БД не раздулась и не стала колом. И даже на Аксе она взлетела соколом, потому как реально данных там всего на тьфу было. Ведь в массиве нет индексов, поиск самый тупой - перебором.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
10. « Сообщение №46320, от Декабрь 05, 2019, 08:43:37 PM»

автор: Palarm сообщение № 46319:
Ты предлагаешь загрузить в оперативку массив?

Да нет же :) html выдается сервером на основе скриптов, скажем, на PHP. И вот там может быть записн какой угодно массив или куча массивов. БД так же на сервере находятся в виде файлов, но,учитывая огромную нагроможденность интерфейса, обращение к фалу скрипта всегда быстрее и эффективнее. Я часто разгружаю mysql вставками на файлах и это не моветон, хотя в любом находятся те, кто считает иначе :)




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
11. « Сообщение №46321, от Декабрь 06, 2019, 03:27:04 AM»

автор: nan сообщение № 46318:
Вот подумай над одним из вариантв

Кажется я понял. Начальные примитивы вовсе не складываются в каком то строгом порядке и нужными концами, а просто группируются и сравниваются. То есть все линии группируются по общим признакам типа: прямая, наклонная, градус наклона, длина с некоторым допуском расхождения. При восприятии объекта все эти признаки групп активируются и происходит выборка из них наиболее активных.

 

Например мы видим нечто, что провоцирует активность признаков группы прямая, наклонная - они в свою очередь объединены в группу ломанная. Возникает уверенность, что мы видим что то ломанное. Начинаем уточнять, рассматривая фрагмент объекта - активируются группы наклон 35, 45, 55 градусов - среди них наиболее активна группа 45. Смотрим на объект еще внимательнее - активируются группы длина 9, 10, 11 см - с наиболее активной среди них 10 группой - и вот мы получили параметры для отрисовки прямой в полярных координатах, методом приближения среди выборки многоуровневых группировок объекта.

 

При этом понятия градус, мм - тоже группировки созданные при сравнении с неким внутренним эталоном, начальным примитивом меры длины и угла. Дискретность групп зависит от этой "внутренней линейки", от нее зависит что считать кучей, 1, 2 или 3 ореха, какая куча больше или меньше и насколько. Мы можем уверенно отличить какой отрезок больше/меньше, но вот с понятием длины уже намного хуже - отличить метровую палку от двухметровой легко, но по факту, после измерения рулеткой окажется, что к примеру метровая это 1,25м а двухметровая 2,33м.

 

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

 

PS:

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



Спасибо за это сообщение! Благодарность от: nan

Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
12. « Сообщение №46322, от Декабрь 06, 2019, 06:36:40 AM»

автор: nan сообщение № 46320:
Да нет же :) html выдается сервером на основе скриптов, скажем, на PHP. И вот там может быть записн какой угодно массив или куча массивов.

Мой опыт работы с тырнетом ограничивается парой сайтов, один на html, где через "инклуды" вставлял местами динамические фрагменты, другой на php. И вот там обратил внимание, что в шапке php прописываются вызовы других php, где например сидят глобальные функции. Ты видимо так грузишь свои массивы в страницу?

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




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
13. « Сообщение №46323, от Декабрь 06, 2019, 09:10:08 AM»

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




usr
Имеет права модератора этой темыScorcher God

Сообщений: 507
14. « Сообщение №46324, от Декабрь 06, 2019, 12:12:13 PM»

автор: Palarm сообщение № 46310:
Среда разработки - MSSQLServer. Просто он был под рукой и не хотелось заморачиваться с визуализацией.

MS SQL Server - не лучший выбор. У меня его нет на Linux-е. Завтра я посмотрю твою работу. Уверен, что её можно портировать под разные среды.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
15. « Сообщение №46325, от Декабрь 06, 2019, 01:22:38 PM»

Конечно можно, просто он под рукой был на работе. Я ее перекачаю на MySQL, там продолжу, Nan поможет.


usr
Имеет права модератора этой темыScorcher God

Сообщений: 507
16. « Сообщение №46326, от Декабрь 08, 2019, 03:12:04 PM»

Зачем ты пронумеровал нейроны 5 и 6 номерами 7 и 8?

INSERT [dbo].[Neuron] ([ID_N], [Limit_neuro], [AKS_neuro]) VALUES (7, 3, 0)
INSERT [dbo].[Neuron] ([ID_N], [Limit_neuro], [AKS_neuro]) VALUES (8, 3, 0)


Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
17. « Сообщение №46327, от Декабрь 08, 2019, 03:43:26 PM»

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


usr
Имеет права модератора этой темыScorcher God

Сообщений: 507
18. « Сообщение №46331, от Декабрь 08, 2019, 05:21:28 PM»

Разобрал работу тестового примера: там должен активироваться нейрон №1, у которого будет превышен порог возбуждения от сигналов, поступающих от рецепторов 1, 2, 3.

Схема, конечно, самая простая. Какое развитие я вижу в дальнейшем:

1. Переписать код на более распространенном языке программирования, чем язык процедур SQL Server-а. В самом простом виде можно сделать страницу с javascript-ом. Пока настольно мало данных, что всё поместится в оперативку.

2. Не просто устанавливать выход синапса в выход аксона рецепторав, а хранить вес, на который его умножать.

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

4. Не знаю, как надо соединять нейроны с рецепторами. Сейчас ты сделал 3 нейрона связаны со строками матрицы, 3 - со столбцами. Но это не догма.

5. Желательно код выкладывать на github, хранить архивами на форуме - неудобно. Могу создать репозиторий для нас.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
19. « Сообщение №46332, от Декабрь 08, 2019, 06:09:47 PM»

1. Это уже делается

2. Сейчас пока просто дублируется 1 от выхода рецептора в поле Snp таблицы синапсов. Но потом думаю в этом поле хранить вес синапса, а срабатывание нейрона делать как раз после умножение сигнала от рецептора на значение в этом поле - и только потом их складывать. Хотя вообще это может и не понадобиться, потому как в самом первом посте я описал свое понимание "веса" синапса: это не величина заряда, которую он получил или пропустил - а:

Ws = Up/Ns, где Ws - вес синапса, Up - порог срабатывания нейрона, Ns - число синапсов.

На вход синапса теоретически всегда поступает 1, и "внутрь нейрона" он не часть от 1 пропускает, как это делало бы сопротивление, а всю эту 1. Но: если для срабатывания нейрона нужно 5 таких синапсов, то вес их будет 0,2 согласно формуле. Хотя получать и "пропускать" сквозь себя они будут полноценный сигнал без потерь. Ведь они не ток пропускают, чтобы "зарядить" нейрон как конденсатор, а получив раздражающий импульс впрыскивают через синаптические пузырьки нейромедиаторы, которые служат катализаторами для электро-хим. реакции нейрона. Это мое понимание, может и не верное.

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

4. Соединение через таблицу синапсов нейрона с матрицей собственно и есть процесс обучения. Сейчас она уже как бы заранее обучена. Но в реальности такие связи должны прописаться сами - см. п.3

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

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




usr
Имеет права модератора этой темыScorcher God

Сообщений: 507
20. « Сообщение №46350, от Декабрь 14, 2019, 03:47:06 PM»

Сделал базовую версию симулятора в HTML/Javascript.

https://github.com/usr345/neuro

Реализована та же функциональность, что и у тебя в SQL. Но даже javascript больше подходит для программирования, чем язык хранимых процедур SQL Server-a. Сенсорное поле линеаризуется в вектор, который умножается на матрицу синапсов. После чего получаемый вектор проверяется на превышение порога и выводится как выход нейронов.

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

Ваши комментарии?




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
21. « Сообщение №46352, от Декабрь 14, 2019, 07:53:51 PM»

Выложу завтра или послезавтра. А пока думаю надо утрясти некоторые спорные моменты по принципам построения однослойной сети.

1. Изначально закладывался порог чувствительности сенсора, но в итоге думается лучше сделать просто: сенсор True/False на раздражитель. Сигнал на выходе всегда просто 1. Если нужно ловить мощность регистрируемого сигнала, то думаю надо просто учитывать кол-во активных сенсоров на единицу площади. Так можно повысить чувствительность до регистрации одним сенсором условно одного фотона. А размытость контура будет означать не бледность сенсоров по краям, а их рассеивание.
2. Так же предполагалось закладывать переменный порог срабатывания нейрона, но в итоге правильнее порог задать как константу для всех нейронов, а веса задавать только для синапсов. Устанавливая веса можно менять логику работы нейрона: если порог нейрона=1, то три синапса по 0,4 приведут к его срабатыванию (И), или любой из них по отдельности (ИЛИ), если поставить веса 1,1 и выше. Была идея еще попытать смешанную логику, типа пучок связей по И + несколько связей по ИЛИ. Но думается, это приведет к глюкам распознавания, потому как будет множество вариантов срабатывания на частично активные входы от "пучка" и отдельных "мощных".
3. Срабатывание нейрона определяется по принципу: если сумма весов всех его синапсов, получивших сигнал от сенсоров превысит порог - нейрон выдает 1. Лучше именно превышение а не >=. Это отсечет неустойчивые состояния. Но тогда надо бы по идее параметр погрешности - на сколько надо превысить порог, чтобы сработал нейрон.

4. В дальнейшем нужно будет прикручивать конфигурации нейрона, а именно: меняя веса группы нейронов (имитация нейромедиаторного фона) тем самым перестраивается логика распознавания элементов сети: какие то И становятся ИЛИ и наоборот.

Самообучение однослойной сети я вижу так:
1. Сенсорная матрица показывает покадрово разные примитивы в виде фигур с определенной частотой и выдержкой или группа примитивов показывается на экране в динамике: перемещаясь, вращаясь с определенной частотой и скоростью. В любом случае нужен параметр "тактовая частота".
2. Нейрон специализируется на распознавании только близлежащего от него участка сенсорной матрицы, стало быть нужен параметр, задающий область "видимых" нейроном сенсоров и по нему уже определять, реагировать ли нейрону на сигнал. Иначе получится каша одновременной специализации всего ко всему. В природной реализации это не получится ввиду невозможности нейрону физически дотянуться до всех сенсоров матрицы.
3. Вес определяется так: 1/(Nsnp*Npls) - где:
Nsnp - ко-во синапсов нейрона, получивших одновременно (за один такт) импульсы
Npls - кол-во импульсов, необходимых для фиксации веса. В итоге, если к примеру нужно 3 импульса для фиксации, и все три раза они пришли на один синапс нейрона со своей частотой - он получит вес 1. А если бы три импульса пришли разом на три синапса - 0,33. В первом случае будет логика ИЛИ, во втором И. Проще говоря синхронные сигналы формируют логику И, асинхронные - ИЛИ.
4. Слой должен закрываться после специализации нейронов для самообучения - это критически важно при многослойной логике распознавания. Признаком закрытия слоя можно например считать кол-во специализировавшихся нейронов от их общего кол-во в слое - и это тоже надо задать параметром.


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

« Последнее редактирование: 2019-12-15 07:03:36 Palarm »



usr
Имеет права модератора этой темыScorcher God

Сообщений: 507
22. « Сообщение №46353, от Декабрь 14, 2019, 09:13:49 PM»

автор: Palarm сообщение № 46352:
Выложу завтра или послезавтра.

Сделай pull request, я тебя добавлю как collaborator-а.

автор: Palarm сообщение № 46352:
Если нужно ловить мощность регистрируемого сигнала, то думаю надо просто учитывать кол-во активных сенсоров на единицу площади.

Сейчас у нас математическая модель без площади. К физике пока рано переходить. Мы еще обучение толком не построили.

автор: Palarm сообщение № 46352:
Устанавливая веса можно менять логику работы нейрона: если порог нейрона=1, то три нейрона по 0,4 приведут к его срабатыванию (И), или любой из них по отдельности (ИЛИ), если поставить веса 1,1 и выше.

Что-то здесь нелогично. Ты уверен, что говоришь про 3 нейрона, а не про 3 синапса? Как я тебя понял, в простейшем случае мы имеем: 1 нейрон, 2 синапса.

  • Порог нейрона равен нулю: вечная единица.
  • Порог нейрона меньше веса каждого из синапсов, но больше нуля - логическое ИЛИ.
  • Порог нейрона больше веса каждого из синапсов, но меньше суммы весов - логическое И.
  • Порог нейрона больше суммы весов синапсов - вечный ноль.

Я думаю, из этого ясно, почему на нейроне нельзя реализовать исключающее или.

автор: Palarm сообщение № 46352:
Лучше именно превышение а не >=. Это отсечет неустойчивые состояния. Но тогда надо бы по идее параметр погрешности - на сколько надо превысить порог, чтобы сработал нейрон.

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

Я могу сделать разные виды функций активации нейронов: после суммирования входов от синапсов, передавать значение в функцию.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
23. « Сообщение №46354, от Декабрь 15, 2019, 07:03:12 AM»

автор: usr сообщение № 46353:
Ты уверен, что говоришь про 3 нейрона

Пардон, конечно синапсы

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

Nan практически весь код запилил, я лишь немного поправил.

Нейросимулятор



Спасибо за это сообщение! Благодарность от: nan

Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
24. « Сообщение №46355, от Декабрь 15, 2019, 11:34:29 AM»

автор: usr сообщение № 46350:
Ваши комментарии?

Думаю чувствительность рецептора надо убрать, лишнее. А вообще, я буду переделывать под БД, и там видятся всего 2 таблицы вместо 3: Нейроны и Связи. В первой будут рецепторы и эффекторы, потому как уже со второго слоя нейроны предыдущего слоя становятся рецепторами для текущего. В таблице  связей коды из таблицы нейронов, показывающие их зависимости - классическая "многие ко многим". Чтобы задать первичные рецепторы надо просто в таблице связей поставить в поле кода родителя 0 - это значит что эти нейроны первичные рецепторы.



Спасибо за это сообщение! Благодарность от: nan

usr
Имеет права модератора этой темыScorcher God

Сообщений: 507
25. « Сообщение №46356, от Декабрь 15, 2019, 12:38:48 PM»

автор: Palarm сообщение № 46354:
Nan практически весь код запилил, я лишь немного поправил. Нейросимулятор

Удивительно, что независимо друг от друга мы с nan-ом сделали нечто даже внешне похожее. Где он сам кстати?

Давайте сейчас распределим задачи. Я бы хотел написать математическую модель того, что сделал nan (или он сам напишет).




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
26. « Сообщение №46357, от Декабрь 15, 2019, 02:18:13 PM»

автор: usr сообщение № 46356:
 

Предлагаю тебе, usr, актуальную прикладную мат. задачу для вывода результатов активности.

Есть рад нейронов в количестве Nштук.

Подсчитаны потенциалы на их сходах P[n], где n- текущий номер нейрона.

Активируются те нейроны, у которых P[n]> К, где К – порог срабатывания.

НО. Каждый активный нейрон тормозит соседние (до него и после него) с потенциалом = Т, где Т  где Т - вес воздействия тормозного синапса = 0.5.

Задача: найти формулу для подсчета конечного состояния потенциалов на входах всех нейронов, с учетом тормозного влияния соседей. Это – равновесный процесс.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
27. « Сообщение №46358, от Декабрь 15, 2019, 03:20:02 PM»

Есть биржи помогаторов для студентов типа Автор24. Там даже преподы вузов калымят. Можно туда скидывать сложные задачи, только надо четко растолковать с картинками, чего от них надо. Берут по слухам не дорого.


usr
Имеет права модератора этой темыScorcher God

Сообщений: 507
28. « Сообщение №46359, от Декабрь 15, 2019, 04:00:56 PM»

автор: nan сообщение № 46357:
Задача: найти формулу для подсчета конечного состояния потенциалов на входах всех нейронов, с учетом тормозного влияния соседей.

Я не понял топологию сети, есть ли возможность привести рисунок с примером?




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
29. « Сообщение №46360, от Декабрь 15, 2019, 04:30:14 PM»

автор: usr сообщение № 46359:
Я не понял топологию сети, есть ли возможность привести рисунок с примером?

Просто линейка нейронов, один за другим. Соседи влияют друг на друга, если они активны. Понятно, что если нейрон_1 подавил активность следующего своим торможением, нейрон_2 то нейрон_2 сам уже перестает влиять на нейрон_1.

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

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
30. « Сообщение №46361, от Декабрь 16, 2019, 09:35:45 AM»

А как образуются такие связи? У меня было предположение, что изначально все связи тормозные, потом при активации становятся возбуждающими. Или нейтральная связь при отсутствии или недостаточности раздражения становится тормозной. Или это заложено в геноме, какая связь какой будет.
При симуляции самообучения ведь это тоже надо заложить. Может так: на момент созревания нейрона все его синапсы с весом меньше какого то значения начинают преобразовываться в тормозные. Думаю это вполне может быть в реальности - все связи, вносящие малый процент веса в суммарный инвертируются.

Можно еще по другому сказать: имеет место инертность созревания синапса, он как бы затухает при отсутствии раздражения, и наоборот - все больше активируется при его повторяемости. Это можно сравнить такой аллегорией: если начать стучать по пластинке ксилофона, то в зависимости от частоты ударов мы получим определенной величины средний по мощности звук: чем чаще бьем - тем громче и чище он звенит и наоборот. То есть имеет место коэфф. снижения веса синапса нейрона обратно пропорциональный частое его раздражения. При большой частоте он разгоняет вес, а при небольшой понижает вплоть до смены знака. Или можно его назвать вектором, задающим направление роста веса синапса: + или -. В зависимости от частоты сигналов он крутится как стрелка компаса на 180 град.

 

В природной реализации это можно воплотить через 2 типа синаптических пузырьков с активатором и дезактиватором. Активаторы растут при раздражении, дезактиваторы наоборот - раздражение мешает их росту. В итоге получаем гонку на опережение: каких пузырьков больше нарастет и какой в итоге вес, с каким знаком, будет. И все это регулируется частотой раздражения синапса, точнее серии импульсов против долгих пауз. Может и нам надо так же ввести не один, а пару коэфф. с разным знаком и включить их в цикл прогона расчета веса.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
31. « Сообщение №46362, от Декабрь 16, 2019, 11:45:07 AM»

автор: Palarm сообщение № 46361:
У меня было предположение, что изначально все связи тормозные, потом при активации становятся возбуждающими.

У тормозного синапса - свой медиатор, у возбуждающего - свой. Синапс не может изменить свою сущьность.

автор: Palarm сообщение № 46361:
При симуляции самообучения ведь это тоже надо заложить.

Взаимное торможение соседей в слое - очень важно.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
32. « Сообщение №46363, от Декабрь 16, 2019, 12:06:10 PM»

А как ты предполагаешь определять, где какой синапс будет?
Это ведь должно происходить автоматически при созревании нейрона. Я предположил, что тип синапса формируется при созревании, и это зависит от частоты его раздражения.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
33. « Сообщение №46364, от Декабрь 16, 2019, 01:24:36 PM»

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
34. « Сообщение №46367, от Декабрь 17, 2019, 06:52:31 PM»

Если вставочные нейроны в одном слое с основными - значит они соединены не аксон с дендритом, а дендрит с дендритом? Такое разве возможно? Иначе получится, что вставочный нейрон детектирует нейрон слоя словно буфер, если будет связь аксон-дендрит.
И на что реагирует вставочный нейрон - на те же рецепторы, что основные? То есть он отличается только тем, что передает в связанный с ним нейрон тормозной нейромедиатор а не возбуждающий? Сам возбуждается как и все - но тормозит остальные?
А что тогда значит взаимное торможение? Обычный нейрон выхолит тоже тормозит тормозной такими же тормозными нейромедиаторами?

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


Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
35. « Сообщение №46368, от Декабрь 17, 2019, 08:12:52 PM»

автор: Palarm сообщение № 46367:
 

Нет, рассматривай вставочные нейроны как случачяно оказавшиеся доп. нейроны в слое. И они тоже созревают и генерят. Отличие - в тормозных синапсах, которые устанавливаются при ветвлении нейронов слоя к их аксону.

Для наглядности представим вертикальный слой нейронов.

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

Ну, может где-то будет два повернуты к верху, а где-то ни одного.

В общем, нужно исходить из того, что боковое торможение в слое есть реально.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
36. « Сообщение №46369, от Декабрь 18, 2019, 11:17:13 AM»

Shyema_lat.png

Тормозные нейроны Т1, Т2, Т3 своим отрицательным воздействием снижают суммарный вес входов у нейронов N1, N2, N3. В итоге активным остается только N2. Хотя N1 и так бы не включился, но так он уже наверняка будет заглушен. Но где тут "взаимное торможение"? Здесь только T(i) тормозят N(i) - а вот наоборот, от N(i) к T(i) никаких тормозов нет. Тоже самое во второй группе связей.

автор: nan сообщение № 46368:
один из которых повернут аксоном к верхнему нейрону слоя, а другой - к нижнему

А дендриты тормозных нейронов к чему прицеплены?




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
37. « Сообщение №46371, от Декабрь 18, 2019, 03:28:59 PM»

автор: Palarm сообщение № 46369:
Но где тут "взаимное торможение"?

Прочитай про латеральное торможение. Сейчас некогда искать конкртыне примеры...




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
38. « Сообщение №46377, от Декабрь 20, 2019, 05:27:17 PM»

Задачу с реализацией тормозного взаимовлияния в слое решил и уже реализовал. Но если предложите свой вариант, было бы интересно.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
39. « Сообщение №46409, от Декабрь 29, 2019, 09:28:27 AM»

Запилил графическое отображение нейросетки пока по типу шестигранника. Потом думаю добавить еще варианты. Потом объясню, что имею в виду.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
40. « Сообщение №46410, от Декабрь 29, 2019, 11:30:59 AM»

Выглядит красиво, но концепция мне пока непонятна: как выглядят сенсоры первого слоя? или они все - первого слоя? Еще вопрос: как задавать веса связей? хотя если использовать только режим самообучения, то они сами будут формироваться.

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

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
41. « Сообщение №46411, от Декабрь 29, 2019, 02:32:54 PM»

 2 главных момента, почему именно такая отрисовка мне кажется оптимальной:

 

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

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

 

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

автор: nan сообщение № 46410:
а прямо рисовать клиенту как элементы страницы, с подсказками, реакцией на щелчки и т.п.

Я планировал в будущем вообще убрать таблицы с экрана, оставив только такую сетку. Тогда можно сделать интерфейс активации рецептора щелчком по нему, смену веса ДБ-кликом по цифре и вводом в появившемся поле. Можно и смену связей сделать, например щелкнув один элемент, потом другой и выбрать пункт меню "установить связь". Я вообще поначалу думал сделать просто конструктор, где из меню выбираешь элемент (рецептор/аффектор или даже готовый блок со связями) - кидаешь его драг-дроп на экран, потом рисуешь связь. Но потом подумал: правильнее все же отталкивать от того, чтобы связи рисовать сразу и окончательно как оптимизированную решетку и менять только веса. В самом деле - зачем собственно иметь возможность устанавливать связь между любым рецептором/аффектором? Ведь нейрон в реальности все равно устанавливает связи только с близлежащими а не с любыми рецепторами. И так же не вижу особого смысла программировать создание связи по аналогии с реальностью: когда отросток нейрона тянется к ближайщему активному рецептору. Потому как в реальности думаю на 2/3 получается просто каша бестолковых связей - ведь соединение происходит в динамике, при постоянном мерцании рецепторов. Имхо: лучше (повторюсь) создать изначально идеализированную решетку связей, какой она была бы при идеальных условиях - и потом менять веса. Тем более, что решеток ведь может быть много вариантов.

Вообщем, думаю надо определиться с концептом: стоит ли переходить на такую структуру или оставить старую линейчатую.

 

автор: nan сообщение № 46410:
Ты используешь обновление страницы (а не AJAX)

Я лишь пару недель как более менее въехал в тему графики php, пришлось еще вспоминать свои старые наработки - а ты меня уже Аяксами пугаешь :) Я и с первой то дороги волочу насилу ноги :) Пока этот чертов алгоритм нарисовался - кстати зацени как я его через 2 процедуры на серваке закодил, а поначалу там такой писец был... Мне только вчера торкнуло: надо не из центра, а построчно рисовать, и не один элемент - а пару. Тогда все встало на свои места - и тут же появилась возможность использовать параметры сетки для рисования. Например вместо шестигранника подставить треугольник или квадрат - вообщем решеток может быть много и очень интересных. Думается, каждая из них будет задавать предрасположенность к определенной специализации, например выделять какие то частотные полосы.

автор: nan сообщение № 46410:
Как ты считаешь, возможно ли такое представление в случае матриц рецепторов и эффекторов с таблицей связей, внизу, вместо вертикальных слоев со связями?

Я тебе с самого начала про это толковал :). Но ты тогда меня не понял.

 

автор: nan сообщение № 46410:
как выглядят сенсоры первого слоя? или они все - первого слоя?

Сейчас да - это все первый слой. Зеленые аффекторы, красные рецепторы. Только надо их чуть бледнее показывать, а активные существенно ярче, чтобы выделялись. Или может не активные оттенками серого, а активные уже красный/зеленый. А второй слой думаю надо рисовать на другой странице. Имхо, отражать сразу все слои на одном листе не целесообразно - слишком много места займет. А вот на другой странице будет очень просто: зеленые кружки станут красными, а с ними уже свяжутся новые зеленые кружки второго слоя - по точно такой же решетке. А можно и по другой - тут кстати тоже поле для размышлений: стоит ли на всех слоях одну решетку использовать? Правда при такой компоновке (слои на отдельных страницах, а внизу решетки сделать например ссылки перехода по страницам типа: >) придется отказаться от нумерации элементов для каждого слоя, теперь номера будут "сквозные", то есть 10 рецептор на первом слое становится эффектором с тем же 10 номером. Иначе будет не понятно, с чем связаны аффекторы второго слоя. То есть мы просто переносим часть элементов (аффекторы) с предыдущего слоя на последующий и меняем им статус (на рецепторы). При это понятно, что решетка второго слоя будет существенно меньше, в данном случае в 6 раз, чем первого. И аффекторы с первого слоя в ней будут отражаться вокруг нового рецептора второго слоя.

автор: nan сообщение № 46410:
как задавать веса связей?

Изначально они все нулевые, при самообучении установятся конкретные значения. Потом можно их "подкрутить". То есть тут тоже концептуальный вопрос: стоит ли настраивать сеть перед обучением? Имхо не стоит, кроме как задав ей решетку. Фишка создаваемого нами симулятора (и его реального прототипа - природной нейросети) что тут ничего не задается изначально кроме некоторой предопределенности (решетка связей, параметры нейронов). Никто не может сказать точно, что получится при обучении - но в этом весь прикол. Это не программирование в привычном понимании, а развертывание сети. Про это я говорил в дневнике.

Можно в принципе и таблицу связей оставить на экране - но тогда ее надо формировать по числу связей в сетке и с прокруткой, чтобы места много не занимала. Можно и таблицу "сенсорный экран" оставить, для наглядности, если сложно организовать интерфейс активации рецептора кликом по элементу сетки. А вот таблицу результат лучше все же убрать - в ней нет особого смысла, ведь она отражает только активные/неактивные нейроны, которые и так хорошо видны в сетке.

PS:

если кому надо исходники - могу сюда выложить. Я закоментил форму установки параметров и запуск процедуры на серваке, так как там еще нет проверок ввода и чтобы не дербанить БД понапрасну - ведь данные сразу пишутся в нее, оттуда же и дергаются для отрисовки.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
42. « Сообщение №46412, от Декабрь 29, 2019, 04:33:32 PM»

автор: Palarm сообщение № 46411:
Я лишь пару недель как более менее въехал в тему графики php, пришлось еще вспоминать свои старые наработки - а ты меня уже Аяксами пугаешь

Ты круто все схватываешь, а аякс - очень прост в реализации, у тебя есть примеры.

Очень интересно, что у тебя получится в итоге. 




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
43. « Сообщение №46413, от Декабрь 31, 2019, 06:28:12 PM»

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

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

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

Вообщем может статься, что в итоге на экране от сети будет небольшой фрагмент и доп. служебная инфа.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
44. « Сообщение №46421, от Январь 02, 2020, 02:35:42 PM»

автор: Palarm сообщение № 46413:
думаю, нет смысла показывать в динамике формирование весов синапсов.

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

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
45. « Сообщение №46423, от Январь 03, 2020, 07:06:33 PM»

Я предполагаю, что прописывание тормозных связей в таблице сделает проще алгоритм расчета взаимного торможения. Ведь не надо определять, кто кого тормозит - это уже жестко определено.
Кстати придется таки действительно от простого php на js + ajax переходить, а то даже считать введенные юзером данные из поля без перегрузки страницы не выходит. Давно руки чесались web заняться, но то лень, то неохота, а теперь повод появился интригующий.


Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
46. « Сообщение №46424, от Январь 03, 2020, 07:13:07 PM»

автор: Palarm сообщение № 46423:
придется таки действительно от простого php на js ajax переходить

Это - очень просто. Если вдруг тормознешься, пиши в чате, помогу.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
47. « Сообщение №46470, от Февраль 25, 2020, 08:40:19 PM»

Вроде как получилось сделать взаимное торможение в сетке. Каждый аффектор тормозит связанные с ним аффекторы пропорционально суммарному весу на своих входах и весу тормозной связи. То есть в связке например А1(0,9) и А2(0,3) с весом тормозной связи 0,2 влияние А1 на А2 будет: А1 * 0,2 = 0,9*0,2 = 0,18. А влияние А2 на А1 соответсвенно: А2 * 0,2 = 0,3 * 0,2 = 0,06.

 

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

 

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

Хотя слышал, что есть какие то нейристоры - может это оно и есть.

2020_02_25_23_19_11.png



Спасибо за это сообщение! Благодарность от: nan

Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
48. « Сообщение №46471, от Февраль 26, 2020, 07:41:34 AM»

Рассчитывать на большое число элементов не стоит. Это всегда упрется в предел как в пузырьковой сортировке :) Вот и видна сразу разница централизованного контроля и самостоятельности работы элементов. Конечно никакой центрально-процессорный ресурс с этим не справится.

Демонстрация контрастирующего эффекта взаимного торможения очень важна, если сделаешь это наглядным, модель получит новое качество.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
49. « Сообщение №46472, от Февраль 26, 2020, 10:52:13 AM»

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

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
50. « Сообщение №46473, от Март 02, 2020, 07:47:41 AM»

автор: nan сообщение № 46471:
Конечно никакой центрально-процессорный ресурс с этим не справится.

Проблема не только в том, что нужно делать пересчет всей сетки, но и то, что приходится делать несколько прогонов - и все равно результат не точен. Подозреваю, что математически задача решаема очень тяжело если вообще решаема. Или мне просто не хватает математики в мозгах - но тогда выходит я лузерством занимаюсь, пытаясь решить методом приближения школьную задачу про пару поездов идущих навстречу другу другу с известными скоростями. Только поездов много больше чем два и взаимосвязаны они тоже более чем парой. Может есть какая то формула или теория расчета таких задач?

 

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

автор: nan сообщение № 46471:
Вот и видна сразу разница централизованного контроля и самостоятельности работы элементов

Это да - тут очень наглядно видна потребность в очень мощном компе - или хитрой математике.

 

Однако радует: идея сотовой структуры действительно оказалась удачной в плане наглядности, все веса и связи видны + взаимохват сенсоров/аффекторов ближе к реальности. И то, что в качестве инструмента была выбрана СУБД - тоже правильно: выборки, группировки, суммирование весов лучше и правильнее делать запросами. Хотя в идеале тут наверное нужен специальный тип СУБД, заточенный под нейросети.

 

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




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
51. « Сообщение №46474, от Март 02, 2020, 10:10:44 AM»

автор: Palarm сообщение № 46473:
приходится делать несколько прогонов - и все равно результат не точен. Подозреваю, что математически задача решаема очень тяжело если вообще решаема.

Да, без и тераций не решаема. Я делал 10 прогонов до отрисовки рещультата. Для небольшой сетки - ерунда, а на большую нефиг замахиваться :)

автор: Palarm сообщение № 46473:
Может есть какая то формула или теория расчета таких задач?

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

автор: Palarm сообщение № 46473:
сейчас сетка даже в относительно грубом приближении работает примерно так, как я себе представлял - эффект контрастирования ярко выражен

Это же чудесно, что еще нужно?

автор: Palarm сообщение № 46473:
Для большей уверенности стоило бы спаять ее реальный прототип из светодиодов, транзисторов

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
52. « Сообщение №46475, от Март 02, 2020, 05:43:01 PM»

автор: nan сообщение № 46474:
Это же чудесно, что еще нужно?

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




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
53. « Сообщение №46476, от Март 02, 2020, 06:48:29 PM»

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

Но не хочу тебе мешать идти так, как тебя ведет твоя эвристика.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
54. « Сообщение №46480, от Март 03, 2020, 12:36:10 PM»

автор: nan сообщение № 46476:
Сначала понимание, потом формализация.

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

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

автор: nan сообщение № 46476:
А у тебя получается, что ты делаешь предположения вне какой-то конкретной модели понимания

В рамках текущей, неполной, не проверенной модели - она еще формируется. И ты тут ничем не поможешь и не ускоришь.



Спасибо за это сообщение! Благодарность от: nan

Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
55. « Сообщение №46490, от Март 04, 2020, 09:04:45 AM»

Удалось сделать одним прогоном, но возникло сомнение: по видео видно, что при максимально длинном отрезке по идее должны активироваться аффекторы по центру (27 и 32) так как по бокам у них погасшие аффекторы, и на них теперь нет тормозного влияния. Но по сути состояние, когда центральные аффекторы взаимно гасят друг друга на пределе порога (как качеля балансирует в среднем положении) - неустойчивое и стоит дополнительно активировать рецептор в их охвате то они уверенно активируются (как потом на видео и показано) и переведут сетку в одно из устойчивых состояний. И может так и надо оставить. А может все таки сделать еще прогон чтобы активировать 27 и 32 потому как они вообще то должны быть активны.

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

Aapis_akrana__04_03_2020_10_48_15_.rar




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
56. « Сообщение №46491, от Март 04, 2020, 10:27:22 AM»

т.е. у тебя есть формула расчета (точнее алгоритм вычисления) результата взаимного торможения при данном профиле возбуждения?




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
57. « Сообщение №46492, от Март 04, 2020, 11:12:51 AM»

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
58. « Сообщение №46493, от Март 04, 2020, 12:22:22 PM»

Думаю полный алгоритм должен быть такой (после воздействия на рецептор):

1. Меняем статус рецептора на противоположный.
2. Расчет весов связанных с активными рецепторами аффекторов без учета бокового торможения. Если вес > порога то включаем аффектор.
3. Расчет весов всех аффекторов с учетом бокового торможения. Если вес < порога то выключаем аффектор.
4. Расчет весов оставшихся включенных аффекторов с учетом бокового торможения – он подрастает, так как пропало тормозное влияние выключенных.
5. Расчет весов выключенных аффекторов с учетом бокового торможения – у одних он еще больше падает, так как увеличилось тормозное влияние включенных, а у других возрастает, так как выключенные в п.3 перестали их тормозить. При этом если вес > порога то включаем аффектор.
6. Далее прогоны пп. 4-5 по условию, что хотя бы один вес у кого то изменился либо просто задать кол-во прогонов.

Сейчас только п. 1-3. И вот задумался - а нужно ли прогоны делать? Это точно будет соответствовать работе реальной физической нейросети? И еще: в этих схемах есть торможение рецепторов (CRT) - их учета в алгоритме нет. Потому как тоже сомневаюсь, что оно надо. Это ведь по сути аналогично поднятию тормозного влияния между аффекторами.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
59. « Сообщение №46494, от Март 04, 2020, 04:57:49 PM»

Мне кажется (я так реализовал), что суть алгоритма может быть такой:

делаем цикл 10 проходов. В каждом проходе добавляем 10% от воздействющих потенциалов торможения. Результат используем в следующем проходе. Так получает как бы имитация постепенного увеличения взаимовлияния без прыжком значений.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
60. « Сообщение №46495, от Март 05, 2020, 03:45:19 AM»

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

При скачкообразном расчете, как у меня, для уточнения весов приходится менять фильтры, чтобы учитывать в расчете попеременно включенные/выключенные аффекторы - для подкачки/утапливания весов включенных/выключенных. Это в итоге приводит к искажению результатов вплоть до того, что включаются задавленные ранее тормозными связями. А если повышать вес постепенно, то может этого и не случится. Но все равно тут надо иметь в виду, что тормозная связь от аффектора активируется только после его активации.

ОК, попробую по схеме постепенного повышения.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
61. « Сообщение №46496, от Март 05, 2020, 07:57:44 AM»

автор: Palarm сообщение № 46495:
Но если начать учитывать тормозное влияние при первом же прогоне от еще не активировавшихся аффекторов, то получится, что тормозная связь реализуется не через вставочные нейроны

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
62. « Сообщение №46497, от Март 05, 2020, 09:47:47 AM»

Понятно, что готовы, иначе не было бы торможения. Я про то, что у меня получается схема ПОСТСИНАПТИЧЕСКОГО взаимного торможения. А в твоей схеме выходит ПРЕСИНАПТИЧЕСКАЯ - раз тормозные нейроны начинают давить веса аффекторов с самого начала. Это возможно, если тормозные нейроны получают активирующий сигнал от рецепторов. А в моей, постсинаптической схеме тормозной нейрон активируется сигналом активировавшегося аффектора. То есть изначально, пока ни один аффектор не набрал веса для переключения, тормозные нейроны не участвуют и веса растут как если бы их не было вовсе. Но стоит только хотя бы одному аффектору активироваться - он включит связанные с его выходом тормозные нейроны и они придавят соседние аффекторы с силой прямо пропорциональной весу активировавшегося. Тем самым кто не успел набрать вес - тот опоздал, получит пинка под зад от финиша. А если активировалось сразу несколько, то взаимным торможением они уравняют свои веса - придут в равновесное состояние. Но стоит только кому то из них получить чуть больше веса - его тормозное влияние возрастет и он прихлопнет соседние нейроны, если этого тормозного возрастания окажется достаточным. В итоге получится: соседние погаснут (упадут), а он резко взлетит, потому как пропало их тормозное влияние.

 

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

 

Возникает вопрос: как правильнее? Тормозные нейроны активировать параллельно/независимо аффекторам сигналами сенсоров, чтобы они постоянно давили их, или активировать их сигналами включенных аффекторов?




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
63. « Сообщение №46498, от Март 05, 2020, 10:18:09 AM»

Нет, никакой активации от рецепторов или других слоев. Только - от соседних нейронов. Все.



Спасибо за это сообщение! Благодарность от: Айк

Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
64. « Сообщение №46500, от Март 09, 2020, 06:32:11 PM»

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
65. « Сообщение №46501, от Март 09, 2020, 08:48:26 PM»

>>Если элемент в правой матрице активен (оттенок зеленого), то он оказывает активирующие воздействие на связанный с ним рецептор, но соседние активные рецепторы оказывают тормозящее влияние и могут не позволить возбудить данный рецептор

1. Эффектор оказывает воздействие на рецептор? Или все таки наоборот?

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

3. Боковое торможение в твоей схеме позволяет "потушить" слабые сигналы, тем самым выделив из всех активных только самые активные. И это будет центр размытого пятна, где максимальная мощность эффекторов. А если это будет одинаковая по яркости фигура - то активность останется на границах, где минимум торможения.

4. У тебя связь без перекрытия? Один рецептор связан с одним эффектором. Это не позволит разбивать сложные примитивы на более простые на первом же слое детектирования.

5. У тебя реализован эффект "выстреливания" эффектора, когда тормозящие его боковые эффекторы при увеличении уровня торможения гаснут и он лишенный противодействия резко активируется еще более придавливая их? Это как качели в неустойчивом состоянии, когда стоит чуть толкнуть одну из перекладин - как одна тут же падает вниз а другая вверх.

 

Это то что сразу бросилось в глаза, исходник завтра посмотрю.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
66. « Сообщение №46502, от Март 09, 2020, 09:42:11 PM»

автор: Palarm сообщение № 46501:
Раскрашены с разной степенью интенсивности, что видимо показывает мощность их реагирования. Но если мы исходим из цифровой логики, то рецептор имеет только два состояния Вкл/Выкл - стало быть оттенков там быть не может.

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

автор: Palarm сообщение № 46501:
А если это будет одинаковая по яркости фигура - то активность останется на границах, где минимум торможения.

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

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
67. « Сообщение №46503, от Март 10, 2020, 12:04:23 PM»

>> Если элемент в правой левой матрице активен (оттенок зеленого), то он оказывает активирующие воздействие на связанный с ним рецептор эффектор, но соседние активные рецепторы эффекторы оказывают тормозящее влияние и могут не позволить возбудить данный рецептор эффектор.

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

автор: nan сообщение № 46502:
Если левая матрица - сенсоры, то интенсивность цвета показывает силу воздействующего фактора

Это то я понял. Но при этом у тебя эффектор в правой матрице срабатывает на активность рецептора больше 1. То есть будет он с интенсивностью 1 или 9 - эффектор одинаково сработает. Тогда выходит он никак не различает интенсивность рецепторов. Понятно, что оттенок означает либо силу воздействия на рецептор либо число связей из этого участка с эффекторами - то есть в этом случае там не один квадратик а несколько и все они прицеплены к одному эффектору. Но это вовсе не самоочевидно - такое графическое упрощение схемы.

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

 

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

 

А еще глядя на твой исходник пришло в голову, что я все таки рано радовался, что перенес логику работы матрицы на сервер. У меня все сильно тормозит, а у тебя летает. Потому, что у меня на каждый чих идут запросы-выборки, а у тебя все делается в простых циклах и массивах.  У тебя получается, что интерфейс часть логики работы сетки, а я пытался отделить данные от клиента, типа чтобы независимым быть реализации клиента. Получается был не прав. У тебя логика напоминает .Net  - когда на клиенте создается типа буфер порции данных с сервака и дальнейшие манипуляции с ними происходят так же на клиенте. Потом коротким запросом обновляется итоговый результат на серваке. Тормозов очевидно на порядок меньше, но не будет интерактивной работы на серваке. То есть например для многослойной работы придется либо загружать на страницу все слои, либо работать с каждым слоем отдельно-поочередно. Для демонстрашки пойдет, для реального прототипа скорее всего нет - или что то надо выдумывать.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
68. « Сообщение №46504, от Март 10, 2020, 02:44:53 PM»

И все таки логика работы торможения у тебя не совсем правильно показана. Если нарисовать прямую на матрице рецепторов (квадратики 22...26), активировать их весом 3, поставить пожестче торможение (например 5) - и начать двигать ползунок. Когда кружки эффекторов 23 и 25 погаснут, то оставшиеся 22, 24, 26 должны вернуть себе начальный вес 3 и дальнейшее увеличение коэфф. торможения уже не будет на них влиять - ведь тормозящие их эффекторы погасли. А у тебя они продолжают терять в весе при увеличении торможения.

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

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




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
69. « Сообщение №46505, от Март 10, 2020, 07:02:25 PM»

автор: Palarm сообщение № 46503:
будет он с интенсивностью 1 или 9 - эффектор одинаково сработает. Тогда выходит он никак не различает интенсивность рецепторов.

Да, перобор и недобор фильтруется. Сенсор будет выдавать один и тот же сигнал при любой силе его освещения.

автор: Palarm сообщение № 46503:
НО: тогда можно подумать, что от рецепторной матрицы от каждого рецептора к эффектору идет сигнал разной мощности - это первое, что приходит в голову уверен большинству.

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

автор: Palarm сообщение № 46503:
а если мы просто повысим порог срабатывания - не то же самое разве будет? Так же отвалятся "слабые" эффекторы.

Не то же самое, а, важно, учитываются соседи, а не просто уровень на входе, вот что контрастирует.

автор: Palarm сообщение № 46503:
я все таки рано радовался, что перенес логику работы матрицы на сервер. У меня все сильно тормозит, а у тебя летает.

У меня многослоная модель тоже рисуется на сервере, но при обучении запрос идет раз в секунду. А вот если бы я привинтил там ползунок, то совершенно недопустимо было бы посылать запросы на сервер со скоростью его смещения. Тут нужно ловить сообщения от ползунка чисто на клиентском скрипте и рулить уже без обращения на сервер. У тебя все элементы div имеют свои id, к ним можно оперативно обращаться из js а так же перерисовывать холст канвы со стрелками. И это будет происходить очень быстро.

автор: Palarm сообщение № 46504:
Если нарисовать прямую на матрице рецепторов (квадратики 22...26), активировать их весом 3, поставить пожестче торможение (например 5) - и начать двигать ползунок. Когда кружки эффекторов 23 и 25 погаснут, то оставшиеся 22, 24, 26 должны вернуть себе начальный вес 3 и дальнейшее увеличение коэфф. торможения уже не будет на них влиять - ведь тормозящие их эффекторы погасли. А у тебя они продолжают терять в весе при увеличении торможения.

Это же имитатор только эффекта контрастирования. Если бы принять не только одну связь как буд-то это несколько (какое число - столько связей), а было бы веерное перекрытие профилей соседей, то этой бы побочки не было.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
70. « Сообщение №46506, от Март 12, 2020, 02:05:06 PM»

Сделал ползунки - работает и вправду шустро, при том что число элементов довел почти до 500.

автор: nan сообщение № 46505:
Тут нужно ловить сообщения от ползунка чисто на клиентском скрипте и рулить уже без обращения на сервер.

Я это и имел в виду, говоря, что надо делать что то вроде буферных таблиц на клиенте (скорей всего массивы, как ты обычно делаешь в таких случаях), а на сервак отправлять уже результат манипуляций с сеткой. Мне по сути придется продублировать алгоритм расчета весов на клиенте или даже вообще перевести их сервака на клиент. Иначе получается, что я гоняю тяжелый многотонный самосвал для перевозки пригоршней песка. И когда я говорил, что у тебя логика работы с нейросетью подразумевает расчеты на клиенте через циклы, а не на серваке через хранимки как сейчас у меня - то получается, что клиент у тебя это уже не просто оболочка для интерфейса а часть модели. А может тут правильное решение будет 3-звенная архитектура: данные на сервере, оболочка на клиенте, расчеты в отдельном модуле. Вот тогда все будет по уставу: и скорость - и не зависимость от реализации.

 

Может статься, что придется вообще отказаться от таблиц связей, если рисовать просто одинарные прямоугольные сетки как в твоем примере. И тогда не надо ничего грузить - просто по номеру элемента справа, слева, снизу, сверху - вот и все связи. Ведь если представить сенсорный экран в виде пикселов монитора - то там их будет сотни тысяч. Ворочать таким массивом, а тем более запросом будет очень тяжко. Если же определять элемент просто по номеру + - вертикально/горизонтально - то их может быть хоть миллион, скорость реакции будет та же. Сдается мне что моя идея с SQL-запросами приведет к закономерному затупу и придется все переделывать. Сервак будет хранить только снимок последнего состояния матрицы для первой загрузки и который потребуется для передачи результата манипуляций с ней на следующий слой.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
71. « Сообщение №46507, от Март 12, 2020, 04:18:07 PM»

Ты не правильном пути, прогресс налицо! 

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




watts
Имеет права модератора этой темыFull Poster

Сообщений: 45
72. « Сообщение №46607, от Апрель 19, 2020, 03:02:27 PM»

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

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

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

https://ria.ru/20190911/1558497777.html 

Можно ли промоделировать латеральное торможение на их схемах ? 

 

 




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
73. « Сообщение №46608, от Апрель 19, 2020, 04:01:13 PM»

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

 

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

 

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




watts
Имеет права модератора этой темыFull Poster

Сообщений: 45
74. « Сообщение №46609, от Апрель 19, 2020, 06:20:42 PM»

автор: Palarm сообщение № 46608:
Без латерального торможения не получится выделять важно-значимые признаки - а это как мне думается основа принятия решения в природной нейросети.

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

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
75. « Сообщение №46642, от Май 03, 2020, 07:30:27 PM»

Допилил наконец отрисовку латерального торможения. Добавил ползунки для порога, основного и тормозного весов. Теперь можно их крутить и смотреть как происходит контрастирование примитива при изменении порога и весов. Данные пока не сохраняются, при обновлении страницы все сбрасывается.

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



Спасибо за это сообщение! Благодарность от: Айк

Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
76. « Сообщение №46643, от Май 03, 2020, 09:02:22 PM»

автор: nan сообщение № 46505:
Не то же самое, а, важно, учитываются соседи, а не просто уровень на входе, вот что контрастирует

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

Может это глюк, а может свойство заторможенной сети. Думается, это торможение еще подкинет неожиданностей. При определенных значениях параметров она выкидывает интересные кувырки.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
77. « Сообщение №46644, от Май 04, 2020, 07:16:33 AM»

Смотрел в http://p-mvap.ru/index.php?mn_id=4 не понял интерфейса, точнее не вижу описанного эффекта. Или это - не тот адрес?




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
78. « Сообщение №46645, от Май 04, 2020, 07:21:10 AM»

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

Syetka.rar

автор: nan сообщение № 46644:
Или это - не тот адрес?

Тот. Там только не прикрутил сохранение параметров. И еще одна накладка: у меня заложена возможность сохранения основных и тормозных весов для каждой связи. Но тогда не получится интерактивно крутить ползунки - это же опять дербанить БД и кроме того, уравнивать веса к одному значению из поля ползунка. Вообще тут вопрос, как правильнее: общий вес (тормозной и основной) на все элементы или каждому свой? Распознавать в принципе можно по общему значению, но по факту веса устанавливаются в момент созревания разные.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
79. « Сообщение №46646, от Май 04, 2020, 07:35:42 AM»

автор: Palarm сообщение № 46645:
Syetka.rar

Понятно, спасибо!

 

автор: Palarm сообщение № 46645:
как правильнее: общий вес (тормозной и основной) на все элементы или каждому свой?

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
80. « Сообщение №46647, от Май 04, 2020, 07:53:23 AM»

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

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




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
81. « Сообщение №46648, от Май 04, 2020, 08:59:58 AM»

Сложные и взаимновлияют сложно. Если правильно выполнена итерация взаимного торможения, то как раз по этому демо и можно предсказывать разные эффекты.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
82. « Сообщение №46649, от Май 04, 2020, 09:51:39 AM»

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
83. « Сообщение №46650, от Май 04, 2020, 12:49:09 PM»

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

 

Оно понятно было и раньше, что меняя параметры сетки можно добиться такого эффекта. Но вот какие параметры? Менять вес каждого синапса думаю технически более сложно в природной реализации. Кроме того, это дает меньший эффект разброса эффекторных рисунков, чем изменяя комбинацию порог/торможение. А это означает просто менять пороги возбуждения основного и тормозного нейронов.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
84. « Сообщение №46652, от Май 04, 2020, 03:40:33 PM»

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


Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
85. « Сообщение №46653, от Май 04, 2020, 04:14:26 PM»

автор: Palarm сообщение № 46650:
меняя через нейромедиаторы порог возбуждения основного и тормозного нейронов

Это и есть древний способ разделния стилей восприятия-поведения, который исчерпывает себя уже во вторичных зонах неокортекса.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
86. « Сообщение №46654, от Май 04, 2020, 04:41:36 PM»

Хочешь сказать что все таки порог менять надо, а не веса синапсов? Или что изначально менялся порог, а потом уже появились более продвинутые механизмы?


Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
87. « Сообщение №46655, от Май 04, 2020, 05:53:31 PM»

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
88. « Сообщение №46656, от Май 04, 2020, 06:42:23 PM»

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

То есть вопрос стоит на что дальше ориентироваться, что забить как константу, а что оставить как ручку регулятора/переключателя в симуляторе. Сейчас имеем три параметра: веса синапсов, устаканенных при созревании нейрона, тормозное влияние, порог срабатывания. Все они по отдельности в разной степени способны конфигурировать эфекторный рисунок. А их комбинации тем более. Эволюционно проверялись самые причудливые сочетания, и я подозреваю, что есть некоторые области значений этих параметров, при которых сетка наиболее стабильно, в смысле не хаотично, а предсказуемо переключается. Значит ли это, что такой механизм так и остался в первичных слоях? При этом торможение более молодой механизм, значит до него переключение стилей поведения делалось только изменением порога и весов? А самый древний механизм? В каком порядке ты бы расставил их по времени возникновения?


Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
89. « Сообщение №46657, от Май 04, 2020, 06:47:36 PM»

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
90. « Сообщение №46658, от Май 04, 2020, 07:16:24 PM»

А контекст задается сначала гомеостазом, а потом уже внутренними моделями. Стало быть вторичные структуры надо симулировать создав для начала симулятор гомеостаза. То есть модель живого организма имеющего базовые потребности. Нужно же как то модулировать (направлять) переключение моделей поведения. В первичных слоях ручки регуляторов крутит гомеостаз. Но вот какие ручки оставить, какие вывести в константы? Что выбрано в природной реализации ?




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
91. « Сообщение №46659, от Май 04, 2020, 07:39:26 PM»

Это ты замахнулся на очень сложную систему, там немало нюансов. 




Род: Мужской
Клон
Имеет права модератора этой темыInfra Real

Сообщений: 1147

92. « Сообщение №46660, от Май 06, 2020, 09:18:02 AM»

автор: nan сообщение № 46659:
Это ты замахнулся на очень сложную систему, там немало нюансов. 

Нан , хотел спросить .Как относиться к гомеостату У.Эшби?

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

Источник: https://vikent.ru/enc/7220/   Это философия или подходящая для моделирования схемотехника ?




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
93. « Сообщение №46661, от Май 06, 2020, 04:42:47 PM»

Это никак не относится к реальный природным нейросетям.



Спасибо за это сообщение! Благодарность от: Клон

Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
94. « Сообщение №46663, от Май 09, 2020, 08:25:18 AM»

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

 

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

Grafik.rar




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
95. « Сообщение №46664, от Май 09, 2020, 04:45:54 PM»

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

 

То есть предварительно такой вывод:

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
96. « Сообщение №46665, от Май 11, 2020, 07:38:20 AM»

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

 

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

 

В прицепе "№ конфигурации" показывает, сколько переключений сетки происходит - столько возможных реакций возможно при данных весах и тормозном влиянии. Можно по идее график составить в виде 3D кривой (три параметра уравнения кривой) для каждого рецепторного рисунка - как его характеристику в плане реагирования. "№ конфигурации" - это просто номера активных эффекторов собранных как строка - уникальный идентификатор эффекторного рисунка.

Konfiguratcii.rar




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
97. « Сообщение №46666, от Май 11, 2020, 12:22:05 PM»

Gashyeniye_bokovyh_affyektorov.rar

На видео показано, как происходит гашение боковых эффекторов при активации самого нагруженного (весомого). Добавляя ползунком основного веса на синапсы видно, что суммарный вес центрального и связанных с ним тормозными связями других эффекторов, на которые тоже воздействуют активные рецепторы, сначала пропорционально растут. Но как только самый нагруженный достигает порога срабатывания - он начинает их тормозить, вплоть до того, что задавливает в минус. Я специально поставил коэфф. тормозного влияния 0,6, чтобы после активации центральный заминусовал боковые. Происходит как бы резкий его "отрыв" от остальных - контрастирование возбуждения одиночного эффектора. Самый нагруженный "выстреливает", недогруженные "притапливаются".

 




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
98. « Сообщение №46676, от Май 16, 2020, 06:45:43 PM»

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
99. « Сообщение №46677, от Май 17, 2020, 06:09:20 AM»

Я сейчас как раз делаю подробное описание симулятора взаимного торможения, потом добавлю видео. По сеткам уже сделал.

Макет изменил с целью размещения на экране без прокрутки матрицы и графика, чтобы сразу было видно, как интерактивно меняется график при изменении состояния матрицы.

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

автор: nan сообщение № 46676:
Пока что не очень наглядно и как бы неинтересно поэтому

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
100. « Сообщение №46680, от Май 17, 2020, 09:23:28 AM»

Впал я так сказать в глубокую задумчивость по поводу адекватности расчета весов методом итераций. Речь о расчете неопределенных ситуаций, когда например три эффектора одинаково нагружены весами от рецепторов и по идее должны равномерно притормозить друг друга. Так и происходит, но лишь в случае, если итоговый вес все еще больше порога. А вот если ниже - тут возникает интересный момент, кто кого придушит первым. Строго математически, если три ковбоя стали в круг и направили друг на друга револьверы - погибнут все, так как шансы у всех равны. Но в реальности кто то обычно оказывается проворнее и выживает. То же самое и с сеткой. По картинке, все три эффектора должны получить вес 0,48 (при параметрах: порог 0,4, веса основной и тормозной 0,2) равномерно придушив друг друга. А на деле №27 выбыл из игры. В данном случае потому, что при расчете идет последовательный опрос эффекторов по возрастанию номеров - вот ему первому и прилетела пули от остальных.

 

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
101. « Сообщение №46682, от Май 17, 2020, 10:52:14 AM»

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

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

 

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




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
102. « Сообщение №46684, от Май 17, 2020, 11:27:41 AM»

автор: Palarm сообщение № 46680:
Речь о расчете неопределенных ситуаций, когда например три эффектора одинаково нагружены весами от рецепторов и по идее должны равномерно притормозить друг друга.

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
103. « Сообщение №46686, от Май 17, 2020, 12:39:23 PM»

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

 

Вот если бы №21, 31, 30 передавали бы вес не 0,2 а 0,15 - тогда эффектор №27 получил бы от них суммарный вес 0,45 а №117, 126 - по 0,5. Взаимное торможение с весом 0,2 тогда распределилось бы так:

 

на №27 пришло бы 0,05*2=0,1 а на №117, 126 0,05+0,045=0,095. В итоге их суммарные веса бы стали:

 

№27: 0,45-0,1=0,35 - ниже порога 0,4

№117, 126: 0,5-0,095=0,405 - выше порога 0,4

 

И тогда уже без всяких флуктуаций №27 закрылся бы, его торможение пропало  и веса №117, 126 пересчитались бы как от только взаимного влияния №117, 126 = 0,48.

 

Теперь понятно, зачем ты в своем примере вводил статусы рецепторов не просто ВКЛ/ВЫКЛ (как у меня) а градацией от 1 до 10 - так ты симулировал реальное проецирование примитива на рецепторное поле в виде уровней сигналов от рецепторов, которое практически никогда не бывает равномерным, что собственно и устраняет не однозначность расчета. Придется и мне их вводить, чтобы объяснять состояние нейросети без привлечения стреляющих друг в друга ковбоев.

 

Хотя тогда придется все равно объяснять, почему при одинаковых уровнях из тройки эффекторов выключается тот что с наименьшим номером, а при неодинаковых - с наименьшим весом. Это уже результат опроса по возрастанию при расчете сети. Но и в реальной сети тоже один из трех одинаково нагруженных вырубится - но уже из за флуктуаций. Получается, строго говоря есть две причины, почему искусственная нейросеть так распределяет веса: из за особенностей расчета и неравномерности рецепторного поля. А в природной то же самое происходит из за флуктуаций параметров и неравномерности рецепторного поля. Не будет ли это слишком сложным для понимания? Можно конечно тупнем прикинуться и просто показывать только не равновесные примитивы, и на них уже объяснять контрастирование исключительно по причине неравного распределения весов. Но вот кто нибудь нажмет одинаковые веса и ткнет пальцем: а тут тогда почему контрастирование происходит? Метод итераций  ведь не позволит избавиться от этого эффекта. А тот же самый эффект на физическом симуляторе вызовет аналогичный вопрос: тут же нет итераций, возбуждение рецепторов равномерное - откуда тогда "контрастирование"? И вот как тут объяснить, что на самом деле имеет место довольно сложный эффект из флуктуаций, особенностей расчета и собственно самого контрастирования? Когда в разных ситуациях работают их разные комбинации - но выглядит все похоже.

автор: nan сообщение № 46684:
Лучше не входить в разные варианты возможностей, а находиться в контексте системной модели нейросети.

Это значит кое что не договаривать, чтобы не сбивать с толку. В смысле не врать, а не усложнять.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
104. « Сообщение №46693, от Май 17, 2020, 06:08:52 PM»

   

Сделал возможность задавать разные веса для рецепторных связей. Точнее оно и раньше было, но сделал как у Nan - через клик по рецептору: левой кнопкой вес растет до 0,9 - правой опускается до 0. В итоге равновесие вернулось :) На первом рисунке эффекторы при равномерной нагрузке равно напряглись, на втором - задавили центральный, так как на него меньший вес пришел от рецепторов. Итерации, флуктуации - выходит нет этой проблемы, или скорей всего постепенное наращивание весов ее ослабило. Если она и будет вылазить, то при достаточно больших тормозных влияниях. Ссори...




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
105. « Сообщение №46741, от Май 20, 2020, 07:34:04 PM»

Добавил описание модели латерального торможения

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



Спасибо за это сообщение! Благодарность от: Айк

Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
106. « Сообщение №46769, от Май 23, 2020, 10:54:48 PM»

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

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

« Последнее редактирование: 2020-05-24 07:17:33 Palarm »



Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
107. « Сообщение №46774, от Май 24, 2020, 07:47:51 PM»

 

Подумалось, что вообще то число рецепторов (розовый) должно быть равно числу эффекторов (зеленый) - так получается максимально плотный равномерный охват эффекторами рецепторов. И тогда при этом один эффектор охватывает 7 рецепторов, а не 6, как сейчас в симуляторе, аналогично каждый рецептор связан с 7 эффекторами. Схема 7х7 для шестигранной  упаковки получается. При этом так же максимально плотны тормозные связи - на рисунке слева они показаны. А вот основные связи на виде сверху (лев. рисунок) не видны - они под тормозными. И центральная основная вообще не видна - она перпендикулярно вниз направлена. То есть все таки идею отражения всех связей на одной матрице придется забыть - при такой плотной упаковке не получится, разве только в 3D.

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

Придется теперь делать новую решетку, там думается кол-во конфигураций будет больше.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
108. « Сообщение №46775, от Май 24, 2020, 07:53:58 PM»

Мне кажется,ты зря придаешь такое внимание числам рецепторов и эффекторов. Это - очень условно для подобных моделей. Хотя можно было бы ввести коээфициент разветвления типа под одним кружком рецептора подразумевается, 1,2,3 ... 20 рецепторов,  и тогда учитывать такое число в итогах работы модели.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
109. « Сообщение №46776, от Май 24, 2020, 08:30:26 PM»

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

У меня уже возникли кое какие соображения по этому поводу, сформулирую и выложу. Там походу тоже вылезут интересные моменты.


Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
110. « Сообщение №46780, от Май 25, 2020, 07:44:13 PM»

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

Но даже при таком идеализированном самообучении возникает вопрос по поводу настроек сенсорной матрицы - какими их выставлять? Минимальными/максимальными? И модуль гомеостатической значимости, управляющий настройками (его еще нет, но когда будет, надо будет решить) так же пока отключен, иначе он только хаос будет вносить?

 

2. Объект по идее должен позиционироваться всегда по центру сенсорной матрицы, иначе потом придется как то объединять одинаковые проекции в разных частях экрана. Вообще это в какой то мере должно получиться автоматически уже потому, что какой бы примитив не рисовали, максимальная засветка будет ближе к центру и именно центральные рецепторы быстрее всего созреют. Чтобы позиционировать по центру нужно подключение следящего модуля к еще сырой, не созревшей матрице. Это как бы "магнитная рамка", захватывающая и удерживающая объект по центру через поворот головы, движения глаз, шевеления ушами  и т.д. - для разного типа рецепторов. Мы пока просто подразумеваем его, поэтому примитив всегда по центру.

 

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

 

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

 

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

 

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




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
111. « Сообщение №46781, от Май 25, 2020, 07:59:54 PM»

>>модуль гомеостатической значимости, управляющий настройками

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
112. « Сообщение №46782, от Май 25, 2020, 08:39:19 PM»

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

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

 

Для начала наверное надо просто сделать простое самообучение слоя статической экспозицией примитивов, их группировку на втором слое. А потом уже думать про модули "захвата примитива" и далее по нарастанию сложности.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
113. « Сообщение №46783, от Май 25, 2020, 08:47:28 PM»

автор: Palarm сообщение № 46782:
тогда от них подключается обратная связь на первичные и начинает воздействовать на параметры слоев, контрастируя из уже уверенно детектируемых примитивов "нужные".

Нет. Никакой такой обратной связи. Но есть обратные связи через вторичные зоны через гиппокамп для удержания стимула в памяти.

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
114. « Сообщение №46784, от Май 25, 2020, 09:11:01 PM»

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
115. « Сообщение №46801, от Май 28, 2020, 07:52:00 PM»

На этот раз решил пойти от обратного: сначала тщательно расписать "справку" по модели самообучения, а уже потом закодить. По сути переоткрыл для себя банальность, которые все старые кодеры уже охрипли повторять молодым: сначала расчерти блок-схему на бумаге, потом топчи клаву! Но как водится, их никто не слушает до какого то момента, как та обезьяна с пальмой и бананом на ней: кули думать, трясти надо!

И вот при пережевывании пришла мысля: в момент самообучения при активации эффектора включается латеральное торможение, притапливающее соседние эффекторы и мешающее им наращивать веса с прежней скоростью - что и приводит к неравномерному распределению весов на одном эффекторе. Другая причина - разная частота активности рецепторов связанных с данным эффектором. Но это уже зависит от конкретного рецепторного рисунка, а вот в случае с торможением сразу приходит на ум, что происходит некое автоматическое уравновешивание/распределение весов. Это то, над чем бьются персептронщики выдумывая сложные формулы расчета весов для уверенного детектирования примитива? Ведь нужно как то добиться, чтобы один и тот же набор эффекторных пикселей мог детектировать несколько примитивов, а не один - для этого надо им как то хитро расставить веса. И всяко у них есть какая то ацкая формула по этому поводу, определеяющая кроме матрицы весов еще и "емкость" самой матрицы - сколько теоретически она способна зашить в себе распознаваний при таких то весах. Но это еще предстоит проверить - какую роль играет латеральное торможение при самообучении. Может и правда - устаканивание весов?

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


Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
116. « Сообщение №46802, от Май 28, 2020, 08:16:29 PM»

В отличие от нейросетевиков задачи одним распознавателем обучить различать несколько примитивов нет. Вообще нет никакой аналогии с их проблемами.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
117. « Сообщение №46804, от Май 29, 2020, 03:49:22 AM»

Ты видимо не понял суть интриги или я не понял тебя. Представь рецепторную матрицу скажем 4х4, на которую проецируются цифры от 0 до 9. Цифра 1 включает в себя пиксели от цифры 4 и 7, 8 - от 6 и 0 и т. д. То есть один и тот же рецептор детектирует разные примитивы. А теперь представим что мы обучили распознавать цифру 1, что означает - все эффекторы, которые участвуют в ее распознавании созрели и больше не обучаются. И если мы начнем теперь обучать эту же матрицу цифре 4, то получится, что некоторые уже обученные эффекторы начнут реагировать на нее, потому как попадают в область охвата рецепторов предыдущей цифры 1 ("ножка" обоих цифр). И вот тут встает вопрос: получается это уже не обучение с нуля, а дообучение, частично цифра уже распознана.

 

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

 

И вот встает тогда главный вопрос: а нафига тогда вообще ее чему то обучать таким образом - показывая поочередно примитивы и развешивая веса? В нейросимуляторной модели латерального торможения все веса одинаковы, матрица как бы обучена фононовой засветкой. И она работает - выдает на каждый рецепторный рисунок  свой уникальный эффекторный. То есть ее реагирование просто предопределено изначальной расстановкой связей и весов. В моем понимании обученная эффекторная матрица выдает на каждый уникальный рецепторный рисунок свой уникальный эффекторный. Они вовсе не обязательно должны быть визуально похожи - главное чтобы была уникальная пара, чтобы эффекторный рисунок цеплялся только к одному рецепторному. Но получается этого можно добиться без всякого обучения - просто установив связи и веса по умолчанию, например в виде решетки и одинаковыми.

 

Или таким образом можно добиться лишь ограниченного распознавания группы примитивов, для большего разнообразия нужно уже бодаться с весами? И может тут боковое торможение как раз помогает автоматически решить вопрос уравновешивания весов? А может ты имеешь в виду, что каждый примитив детектирует своя группа нейронов? Тогда правильнее говорить не о решетке связей, а множестве параллельных решеток, подключенных к одним и тем же рецепторам. Реальный слой это как слоеный пирог. Но это приведёт лишь к тому, что при детектировании 7 и 4 будут активироваться эффекторы на разных субслоях одного слоя, что суть масло масляное. Нет никакого преимущества в плане точности распознавания цеплять параллельные слои, ведь все они подцеплены к одним и тем же рецепторам.

 

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




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
118. « Сообщение №46805, от Май 29, 2020, 07:29:25 AM»

1. Сразу распознаванию цифры природная нейросеть не специализируется. Сначала - разные элементы цифры.

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

автор: Palarm сообщение № 46804:
А может ли так случиться, что пара созревающих нейронов свяжется между собой как рецептор с эффектором?

Все эффекторы слоя созревают примерно одинаково и начинают тянуть свои дендриты именно к предыдущему слою туда, где появляется активность.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
119. « Сообщение №46806, от Май 29, 2020, 09:26:08 AM»

автор: nan сообщение № 46805:
Сначала - разные элементы цифры

В том то и дело. Обучение природной нейросети - это протягивание отростков к ближайшему активному рецептору и фиксация веса связи. А у меня то связи изначально протянуты равномерной решеткой. Остался вопрос с весами - и есть подозрение, что расставив их так же равномерно я собственно и закончу обучение. То есть для равномерно структурированной матрицы оптимальным будет обучение простой фоновой засветкой. И его можно просто заложить изначально. Это можно сравнить с ситуацией, когда ты макаешь малярную кисть и начинаешь стучать ей по забору как попало пока он весь не закрасится, а можно просто сразу взять ведро с краской и выплеснуть на забор - будет тоже самое, только намного быстрее. Если на первый слой начать проецировать разные образы, а он начнет учиться детектировать их фрагменты-примитивы, то после обучения окажется, что эффекторы соединились с рецепторами какой то корявой решеткой с некоторым разбросом весов. Останется только поправить решетку и веса - или просто сразу соединить их решеткой с равными весами связей.

 

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

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




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
120. « Сообщение №46807, от Май 29, 2020, 10:14:26 AM»

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
121. « Сообщение №46808, от Май 29, 2020, 10:26:52 AM»

Согласен. Надо сделать модель по природной реализации с протягиванием связей и посмотреть что получится. А потом уже сравнить с матрицей: действительно ли это корявая сетка или что то принципиально другое. Короче, нужен эксперимент на симуляторе.


Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
122. « Сообщение №46809, от Май 30, 2020, 07:51:40 PM»

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

 

Возможно, именно так в основном и функционирует нервная система насекомых. Спорным будет вопрос о степени вариабельности таких систем, чтобы объяснить наблюдаемое разнообразие рефлексии насекомых, от простейших поведенческих навыков до сложных взаимоотношений муравьев, пчел и т.п. Для этого нужно построить работающий по такой схеме полноценный прототип нервной системы муравья, который покажет, так ли это. Однако представляя ее как построение однотипных решеток связей с регулировкой слоев через их параметры, можно представить, как передаются по наследству такие сложные модели поведения насекомых вроде пчел. А никак они не передаются. Слои строятся «по одному чертежу», фрактальной структуре решеток связи, закодированной в геноме. Уникальные для каждого вида лишь параметры слоев, которые и определяют особенности рефлексии - вот они и идут довеском к "чертежам" в геноме, как сопроводительная записка. Это можно сравнить со сложными, иерархически структурируемыми функциями с параметрами, изменяя которые можно получать различные области решений. Гипотеза весьма смелая и мало обоснованная, кроме наблюдений за поведением слоя при изменении его параметров.

 

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




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
123. « Сообщение №46810, от Май 30, 2020, 08:22:41 PM»

Насекомые от простейших как бабочка со всего лишь считанными цепочками реагирования в зависимости от обстоятельств, выбивались в более продвинутые с каждым новым совершенно случайным мутнтным приобретением еще какой-то цепочки. И у мух-муравьев этого накручивалось очень, очень много на многие случаи. Автоматизм ЛЮБОЙ сложности можно собрать из таких цепочек, проверяя жизнями огромного числа особей за огромное количество времени.

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
124. « Сообщение №46811, от Май 31, 2020, 05:36:25 AM»

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

Ведь строгого разделения уровней на рецепторный/детекторный нет. Даже на сетчатке, которая вроде как чисто рецепторный орган имеются тормозные взаимодействия между рецепторами, позволяющие уже на уровне детекторов контрастировать воспринимаемые сигналы, например выделять цвета. Фасеточные глаза насекомых вдохновили меня на схему дуплексных решеток, и глядя на них не могу отделаться от мысли, что не могла природа не наткнуться и не использовать такую компоновку рецептор/эффектор в одном слое. Обычно представляют фасеточное видение насекомых в виде мозаичной картинки - просто разрезали изображение на участки и типа так видит мир насекомое. Но я думаю не так. Оно не видит никаких "картинок", это ведь сложные субъективные образы, для "видения" которых нужны соответствующие зоны, которых у насекомых просто нет, ввиду не надобности. Не нужны они им потому, что фасеты имеют смешанную функциональность: они возбуждаются внешними сигналами и в какой то мере возбуждают соседние фасеты, которые специализированы в большей степени как "эффекторы" и возможно даже тормозят друг друга. В итоге получается вложенные друг в друга рецептор-эффекторные слои. Это все делается слоем специальных клеток под ними, связанных с фасетами. Все это работает так же как дуплексная матрица в симуляторе латерального торможения, разбивая, выделяя, контрастируя примитивы, с гомеостатическим подруливанием. Думаю, природа выжала по максимуму из этой схемы, вплоть до способности детектировать динамические примитивы типа скорости объектов. У насекомых распознавание образов происходит в первичных структурах в большей степени за счет свойств самих этих структур: схемы компоновки элементов, схемы связей между ними и т. д. Но это конечно все предположения. Кажется невероятным, что можно построить такие сложные цепочки рефлексов да еще и как то закодировать в геноме. Но никто же не проверял, насколько вычурные каскады доминошек способна выстроить схемотехника за миллионы лет эволюции.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
125. « Сообщение №46812, от Май 31, 2020, 07:55:00 AM»

автор: Palarm сообщение № 46811:
сли возникают длительные закольцовки активностей

На рассматриваемом нами уровнях нет никаких закольцовок, а просто тупо активность отражает воздействие.

автор: Palarm сообщение № 46811:
Кажется невероятным, что можно построить такие сложные цепочки рефлексов да еще и как то закодировать в геноме.

В геноме они не закодированы. Никакой емкости бы не хватило. Как и не закодирован мозг человека. Об этом было: Наследование признаков




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
126. « Сообщение №46813, от Май 31, 2020, 08:56:25 AM»

По поводу расчета весов связей (это выдержка из будущего хелпа):

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

We = (Ur – Sum(Wtr))/Nr, где

• Ur – уровень сигнала получаемого от рецептора. В модели он установлен по умолчанию и равен 1 (?)

• Nr – номер шага цикла наращивания
• Wtr – тормозное влияние от соседних активных эффекторов

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

 

И вот тут вопрос по поводу единицы. Чтобы связать вес синапса с уровнем сигнала рецептора, можно привязаться напрямую к его величине, то есть по шагам наращивать вес синапса, где на каждый шаг идет прибавление Ur/10 (при 10 циклах обучения). Но тогда получается, рецептор - аналоговый датчик выдающий разный уровень сигнала в зависимости от уровня раздражителя. А он вроде как пороговый должен быть - выдавать только 1 или 0. Но тогда если нужна зависимость между уровнем возбуждения рецептора и выращиваемым весом - остается привязаться к частоте сигнала рецептора. Чем более он возбужден, тем больше шаг наращивания веса синапса. Этот вопрос вроде бы поднимали: что там у рецептора - аналоговая или частотная выдача? Я думаю что частотная. Рецептор генерит серию импульсов с большей частотой и/или продолжительностью - что и служит фактором определяющим скорость наращивания веса связанного с ним синапса.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
127. « Сообщение №46814, от Май 31, 2020, 09:36:45 AM»

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
128. « Сообщение №46815, от Май 31, 2020, 03:51:24 PM»

В самом деле, привязываться к уровню сигнала рецептора имеет смысл только в случае, если бы и после обучения сохранялась такая зависимость. То есть вес синаптической связи менялся бы пропорционально уровню сигнала рецептора. Но по факту он фиксируется на каком то значении. Видимо так устаканилось потому, что нет никакого преимущества реагировать на уровень сигнала от рецептора. При обучении это просто ускорит созревание связи, что не очень то и важно. А при детектировании создаст проблемы - один и тот же нейрон будет возбуждаться при разных уровнях активности рецептора, что обессмыслит попытку одним нейроном определять уровень мощности: лампочка горит и при 180, 220, 240 W - и ориентируясь только на ВКЛ/ВЫКЛ невозможно будет понять, какое там напряжение.
Поэтому если рецептор даже и генерит импульсы разной частоты и длительности - на логику работы нейрона-эффектора это никак не влияет. Хотя вполне возможно, что в ходе эволюции возникали попытки это как то использовать, но в любом случае это были дополнительные, малозначимые механизмы. Основной - простое пороговое реагирование при активации рецептора: ВКЛ/ВЫКЛ.

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


Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
129. « Сообщение №46816, от Май 31, 2020, 04:03:01 PM»

автор: Palarm сообщение № 46815:
Видимо так устаканилось потому, что нет никакого преимущества реагировать на уровень сигнала от рецептора.

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

автор: Palarm сообщение № 46815:
А насколько критично, чтобы нейроны слоя примерно одинаково созревали?

Новый слой - новая заплатка эволюции, которая появляется в череде других и поэтому ее функция разворачивается  в таком же порядке и примерно в одно и то же время.

 




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
130. « Сообщение №46819, от Май 31, 2020, 06:50:32 PM»

Сможешь прокоментировать этот блок

 Начало скрываемого блока



Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
131. « Сообщение №46820, от Май 31, 2020, 07:14:04 PM»

>>необходимо условие: образ должен быть «неподвижен» относительно рецепторов в течение некоторого времени. 

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

>>для того, чтобы нейроны могли зафиксировать связи с активными рецепторами, что не может произойти мгновенно

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

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

Вряд ли есть основание считать взаимное торможение поздним приобретением. Тут вопрос спорный.

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

Не стоит делать акцент на шестигранниках.

>>Природная нейросеть обучается послойно, формируя постепенно иерархическую структуру распознавания.

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



Спасибо за это сообщение! Благодарность от: Palarm

Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
132. « Сообщение №46821, от Май 31, 2020, 08:03:30 PM»

автор: nan сообщение № 46820:
Конечно, более повторяющиеся и неподвижные получат преимущество.

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

автор: nan сообщение № 46820:
Предшествующий рост дендритов уже многое предопределяет.

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

автор: nan сообщение № 46820:
Не стоит делать акцент на шестигранниках.

ОК, уберу, чтобы глаз не замылился этими сотами

автор: nan сообщение № 46820:
Есть качественная разница между развитием первичных нейросетей и новой коры

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

 

А что ты думаешь по поводу 3 свойств нейросети - это просто философия или действительно что то в этом есть?




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
133. « Сообщение №46822, от Май 31, 2020, 08:12:58 PM»

автор: Palarm сообщение № 46821:
что ты думаешь по поводу 3 свойств нейросети - это просто философия или действительно что то в этом есть?

Это не столько свойства нейросети, как принципы формирования ее звеньев.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
134. « Сообщение №46830, от Июнь 03, 2020, 07:01:41 AM»

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

« Последнее редактирование: 2020-06-05 08:26:19 Palarm »



Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
135. « Сообщение №46831, от Июнь 03, 2020, 07:17:23 AM»

Выглядит менее сумбурно, чем гексагональная.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
136. « Сообщение №46832, от Июнь 03, 2020, 07:34:30 AM»

Мысли постепенно выравниваются


Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
137. « Сообщение №46833, от Июнь 03, 2020, 09:54:14 AM»

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




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
138. « Сообщение №46834, от Июнь 03, 2020, 10:14:27 AM»

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
139. « Сообщение №46835, от Июнь 03, 2020, 06:01:35 PM»

Я думаю, по тем принципам построения рефлекторных сетей, что я пытаюсь сформулировать, можно создать их из чего угодно, лишь бы соблюдались эти принципы. Например, как работает распознавание патогенов в иммунной системе белыми кровяными клетками? Может быть, они тоже образуют какую то рефлекторную сеть с динамическими, не фиксированными связями с огромной вариабельностью реагирования? Что позволяет эффективно детектировать бесконечные мутации патогенов. Или как образуются устойчивые симбиозы микроорганизмов? Может быть не так уж и случайно.


Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
140. « Сообщение №46838, от Июнь 09, 2020, 01:59:44 PM»

Перелинковал сетку на ортогональную 4х4 и погонял в ней примитивы. Прямые вертикальные/горизонтальные линии не разрываются при контрастировании, потому как детектирующие их эффекторы не связаны друг с другом. А вот фигуру типа крест уже корежит при смене уровня торможения. В принципе все ожидаемо оказалось. Из новой схемы можно сделать вывод, что разрывание примитива на части это частный случай, зависящий от схемы основных/тормозных связей. Здесь ортогональные линии просто контрастируются не теряя основные активные эффекторы, только боковые. Связи на сетке пока изначально установлены, но при обучении они удалятся и должны будут "прорасти" - и тут видимо картина эффекторного рисунка тоже изменится.

 

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

Syetka_4h4.rar




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
141. « Сообщение №46839, от Июнь 09, 2020, 02:56:17 PM»

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
142. « Сообщение №46840, от Июнь 09, 2020, 03:47:02 PM»

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


Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
143. « Сообщение №46841, от Июнь 09, 2020, 05:24:04 PM»

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
144. « Сообщение №46842, от Июнь 09, 2020, 06:54:37 PM»

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

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

 




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
145. « Сообщение №46843, от Июнь 09, 2020, 07:18:57 PM»

Ты же элементы делаешь в виде div, так можно для лишних задать стиль display:none; и они исчезнут.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
146. « Сообщение №46844, от Июнь 10, 2020, 01:41:12 PM»

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

 

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

 Dvye_matritcy.rar

Хотя если нарисовать квадрат более "толсто" - то расхождение рисунков при разных режимах уже не столь выражено.

Tolstyy_kvadrat.rar




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
147. « Сообщение №46847, от Июнь 10, 2020, 04:30:56 PM»

Есть такое подозрение, что если просто взять два параллельных слоя рецептор/эффектор и залинковать их тупо как они смотрят друг на друга и до ближайшего элемента, куда могут дотянуться - то получим максимально плотную из возможных решетку, только уже не дуплексную, а простую парную, где один эффектор линкуется с 9 рецепторами, и рецептор аналогично с 9 эффекторами. Схема 9х9, + тормозных связей 8. И может статься, вся эта свистопляска с генерациями, мерцаниями пропадет. Возможно дуплексная вундервафля вовсе не такая уж чудная, как мне хотелось бы ее видеть. Точнее она просто более глючная из за более слабого охвата связями элементов. Но в то же время более дешевая в исполнении.

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

Спасибо за это сообщение! Благодарность от: nan

Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
148. « Сообщение №46857, от Июнь 12, 2020, 02:08:58 PM»

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

Ryeshyetka_9h9.rar




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
149. « Сообщение №46858, от Июнь 12, 2020, 02:16:20 PM»

При большом числе боковых участников эффект должен быть более плавным. Это можно смоделировать на https://scorcher.ru/neuronet/lateral_braking.php




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
150. « Сообщение №46862, от Июнь 12, 2020, 07:04:32 PM»

У тебя там связь между рецептор-эффектор как 1:1, то есть нет охвата рецептор/эффектор. Только торможение использует охват ближайших эффекторов. Поэтому и нет такого шалмана как у меня.

Я думаю надо просто выявить факторы, влияющие на стабильность детектирования решетки и найти оптимум. Сейчас я пока вижу 4 таких параметра: порог срабатывания, уровень торможения, радиус охвата, диапазон значений параметров, при которых не меняется пара рецепторно-эффекторных рисунков. Причем еще вопрос - делать ли одинаковым например охват для рецептор/эффекторной линковки и тормозных связей. Может все три типа связей надо делать по разному, в смысле не 4х4х4 а 6х4х3 к примеру. На 1 рецептор 4 эффектора, на 1 эффектор 3 рецептора, тормозные связи между эффекторами как триады. Это просто пример от балды. И при каждых комбинациях эффекторная реакция будет сильно отличаться - это уже очевидно из опытов с гексогонально-ортогональными дуплексами и двойной 9х9. Главное свойство решетки, показывающее ее качество - способность генерировать уникальную пару РЭ-рисунков в некотором диапазоне плавания параметров. Чем уже диапазон - тем менее помехоустойчива и стало быть более глючная решетка. И есть подозрение, что чем больше охват, тем больше итераций надо на вычисление веса при торможении, потому как решетка становится более чувствительна к изменению параметров. Это как если толкнуть простую качелю или сложно связанные между собой кучи маятников - там все начнет ходуном ходить.

Понятно, что в реальности при самообучении связи вытянутся не равномерно с разными весами и может быть эффект взаимовлияния будет не так глючно выражен. Можно было бы и не заморачиваться по поводу почему эффекторные рисунки так пляшут. Но если мы говорим об искусственном прототипе распознавателя, причем о его реальном воплощении например в виде интегральной микросхемы или программного модуля - тогда нужно четкое понимание, как влияют вышесказанные свойства на качество детектирования. Иначе как ее улучшать, если не понимаешь в полной мере как и почему она именно так работает?




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
151. « Сообщение №46864, от Июнь 12, 2020, 07:28:33 PM»

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

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

 

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

Sravnyeniye_ryeshyetok.rar

« Последнее редактирование: 2020-06-13 12:37:17 Palarm »



Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
152. « Сообщение №46866, от Июнь 12, 2020, 08:28:12 PM»

автор: Palarm сообщение № 46864:
тормозные связи устанавливаются изначально перед обучением. Но по какой схеме? С каким охватом?

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
153. « Сообщение №46873, от Июнь 13, 2020, 07:07:49 AM»

автор: nan сообщение № 46866:
Видимо, их концентрация в слове как-то оптимизируется эволюционным отбором.

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

 

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

 

в ней изначально проведены все дорожки связей, как основные так и тормозные, но с разрывом, который заполнен спец. веществом, которое в "сыром виде" работает как диэлектрик. При подаче напряжения оно "спекается" и становится проводником с определенным сопротивлением, зависящим от величины напряжения. Процесс не мгновенный, что симулирует время прорастания дендритов. А напряжение на каждый "разрыв" симулирует частоту/уровень сигнала от рецептора. В итоге  когда все дорожки "спекутся" получим связи с разными весами.

 

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




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
154. « Сообщение №46875, от Июнь 13, 2020, 08:01:55 AM»

автор: Palarm сообщение № 46873:
Вопрос только - почему они не тянутся к настоящим рецепторам.

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

автор: Palarm сообщение № 46873:
надо будет определиться: прописывать ли тормозные связи изначально в виде решетки или так же проращивать при самообучении

А вот дендриты - да, растут в сторону локальной активности.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
155. « Сообщение №46891, от Июнь 21, 2020, 08:42:30 AM»

Причина слишком активных переключений сетки при изменении уровня торможения - расчет весов через последовательный обход. На первом рисунке эффекторы 136,147,157,148 активны уже на пороге (0,1) переключения (суммарный вес 0,114). И при повышении торможения они должны были выключиться все 4, но выключились только 2, исказив тем самым эффекторный рисунок. Потому, что расчет весов происходит через последовательный опрос элементов матрицы по возрастанию их номеров, в данном случае это эффекторы в порядке: 136,137,138,146,147,148,156,157,158. И при каждом шаге происходит пересчет веса текущего элемента.  В итоге 137 как первый в списке вырубается, оставшиеся элементы лишившись его тормозного влияния подрастают в весах, 146,148 уже не выключаются, а последний из группы 157 вырубается потому, что подросшие в весе 146,148 его задавливают, не смотря на то, что он тоже подрос после выключения 137 (двое против одного). То есть правильнее надо не включать/выключать эффекторы на каждом шаге опроса матрицы, а на шаге итераций: выключать их группами а не по одному.

В гексогональной решетке этот эффект слабо проявлялся, а здесь, при таком массированном охвате основных/тормозных связей вылез более явно. Это поправлю. Но опять же это интересно как пример, как легко повестись на множество спец. эффектов, возникающих при сложном взаимодействии нейросети. У меня косяк программный, а там тоже самое может быть из за нестабильности параметров нейронов, ложных связей. Тут тебе и переключения рисунков, и даже генерации колебаний - от всего этого можно напридумывать множество вполне рабочих схем, и вполне может быть, в природной реализации они даже имеются, но... идут в никуда. То есть что то прицепилось к мельтешению эффекторного рисунка, возникла рефлекторная цепочка, которая ни с чем не связана, просто генерит вхолостую. И это отражается на энцефалограмме и вводит в ступор исследователей - чтобы это значило? А ничего это не значит, как свисты и хрипы приемника при настройке волны. Не зная принципа передачи радиосигнала можно легко насочинять "правдоподобных" объяснений, связывающих например свисты с настройкой на частоту. Типа раз всегда чистому звучанию предшествует шипения и хрипы - значит они играют какую то важную роль и без них никак не получится попасть на волну. Вот и получается, что не имея теории, где четко показано, что есть главное, что второстепенное, принципиально не возможно понять принцип действия устройства, и тем более смоделировать и развить его. Исследователи которые этого не понимают подобны обезьяне трясущей пальму.



Спасибо за это сообщение! Благодарность от: nan, Клон

Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
156. « Сообщение №46894, от Июнь 29, 2020, 01:12:33 PM»

Решил более наглядно проследить, что происходит при активации нейрона, вернее как она происходит в «замедленной съемке». Ведь расчет методом итераций по сути и показывает как бы по кадрам этот процесс, с некоторой погрешностью конечно. И выяснилось, что там такие же «скачки напряжения» как и в самой сетке. То есть суммарный вес эффектора растет не линейно, а в виде колебаний. Это означает, что он несколько раз превышает/падает порог, пока окончательно не устанавливается итоговое значение. Как маятник покачался и успокоился. Это потому, что по мере роста веса меняется равновесие решетки, что им вызывает колебания ВКЛ/ВЫКЛ. То есть эффектор не мгновенно получает итоговый вес, а за некоторый промежуток времени, за который он разряжается серией импульсов. Может в этом причина, почему нейроны реагируют не простым ВКЛ/ВЫКЛ, а короткими сериями колебаний? Потому, что они связаны тормозными связями. Или правильнее сказать нейроны, как генераторы колебаний, разряжаются серией импульсов модулированной по амплитуде частотой, которая зависит от схемы тормозных связей между ними.

 

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

 

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

 

Еще пришла такая мысль: в квантовом компьютере вместо понятия "Бит" используется "Кубит", который означает не 0 и 1, а все бесконечно возможные значения между ними. То есть логика квантового компьютера заточена как раз на работу с областями решений, "неоднозначностями", которых как все больше выясняется, полно в нейросетях. Правда я не очень понял, как квантовый компьютер выдает в итоге решение, но возможно именно на нем можно будет замутить полноценный ИИ в чисто виртуальном исполнении.

Vyes_ityeratciy.rar




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
157. « Сообщение №46895, от Июнь 29, 2020, 04:48:46 PM»

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

Т.е. попробуй составить список таких выводов и их обоснование конкретным поведением модельных нейросетей. Это было бы очень полезно и круто.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
158. « Сообщение №46896, от Июнь 29, 2020, 06:01:18 PM»

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

Спасибо за это сообщение! Благодарность от: nan

Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
159. « Сообщение №46897, от Июнь 30, 2020, 12:42:34 PM»

Более наглядная схема пульсаций эффектора при наращивании им суммарного веса. При изменении значения порога и уровня торможения меняется расстановка весов в сетке. На примере эффектора №112 видно как его при этом корежит. В матрице эффекторов что справа мы видим только его ВКЛ/ВЫКЛ, а на самом деле практически перед каждым переключением он выдает серию из 1-2-3 импульсов, то есть он "мерцает". Для общей схемы латерального торможения важны лишь его конечные состояния, но возможно при дальнейшем изучении эти мерцания позволят глубже понять, как происходит решение "неопределенных состояний" переключения. А может и нечего не даст - просто флуктуации, которые гасятся инертностью нейрона и ни на что не влияют.

 

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

Pulsatciya_affyektora.rar



Спасибо за это сообщение! Благодарность от: nan

Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
160. « Сообщение №46899, от Июль 06, 2020, 05:01:07 AM»

Оказывается идея "разрывов" в соединениях микросхем, которую я толкал как вариант реализации нейроплат, не новая. Уже давно пытаются сделать оптические соединения




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
161. « Сообщение №46905, от Июль 15, 2020, 05:37:13 PM»

Посмотрел на твой пример закольцовки в конструкторе - и сразу вопрос: если 4 нейрона образующих закольцовку лежат в разных слоях, то как образовалась обратная связь между 4 и 1? Разве возможно прицепиться снизу вверх к созревшем слою? Думаю что нет. Стало быть должен быть специальный коммутатор, который это делает и который не показан на схеме. И думаю что зря. Иначе возникает ложное представление, что нейроны могут как угодно связываться, хотя на самом деле они вяжутся строго по слоям по мере их созревания. Или это не везде и не всегда? Вообщем, если коммутатор условно не показан, то думаю имеет смысл подумать, как его ввести в схему. Может в виде специального элемента.
Хотя возможно это уже излишне для упрощенных схем, где показывается логика работы, а не конкретная схема связей. Это как КМ и КМД чертежи: в первом схема, во втором деталировка.

Но самый интригующий вопрос: а как вообще возникают такие закольцовки? Почему нейроны разных слоев связываются в определенной последовательности?




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
162. « Сообщение №46906, от Июль 15, 2020, 05:58:33 PM»

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
163. « Сообщение №46907, от Июль 15, 2020, 06:12:50 PM»

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




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
164. « Сообщение №46908, от Июль 15, 2020, 07:49:45 PM»

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
165. « Сообщение №46909, от Июль 16, 2020, 08:39:58 AM»

Я их скорее воспринимаю как эскиз механизма, где показана его принципиальная схема работы. На его основе нужно спроектировать "рабочий чертеж". Сложность тут в том, что связи и веса должны "протянуться и расставиться сами". То есть инженер-нейротехник создает многослойную матрицу-заготовку и определяет какими внешними воздействиями прошить в ней нужные связи и веса. Так надо делать потому, что иначе не получится встроить модуль в уже готовую нейросистему как апгрейд. Он должен после рецепторной активации "развернуться" и приобрести нужный функционал. Иначе придется всю нейросеть перепроектировать при каждой модернизации. Потому, что в ней заложен принцип послойного созревания и встраивание нового модуля по сути имитирует созревание и специализацию новой группы нейронов на базе существующих слоев.


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

 

Интересно, насколько такое предположение окажется близким к реальному и по какой методике будут проектироваться нейроплаты? Ясно, что не методом тыка и не простым разведением дорожек "как надо". Потому, что никто не сможет сказать как конкретно в этой нейросети "надо", чтобы заработало и не конфликтовало с предыдущими модулями - стало быть встраиваемые модули должны как то самонастраиваться.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
166. « Сообщение №46910, от Июль 16, 2020, 08:57:38 AM»

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

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




usr
Имеет права модератора этой темыScorcher God

Сообщений: 507
167. « Сообщение №46911, от Июль 17, 2020, 04:02:16 PM»

nan, почему ты не выложишь симулятор на github? Мы могли бы улучшать код.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
168. « Сообщение №46912, от Июль 17, 2020, 05:03:51 PM»

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

На внешние ресурсы распыляться не буду.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
169. « Сообщение №46913, от Июль 17, 2020, 07:28:43 PM»

Я думаю, дальнейшее развитие конструктора такое:

1. сделать ортогональную разводку линий связей вместо косых по принципу: движение по Х, потом по Y, или наоборот. Это ИЛИ определяется по принципу чтобы линии связей не пересекались и между ними было минимальное расстояние (задается константой). Вообщем сделать так, как в схеме данных СУБД MS SQL - там нет хаоса линий, хотя схемы могут быть очень сложными.
2. Сделать возможность создания блоков. То есть рисуешь схему, объявляешь ее блоком. В итоге создается элемент (например в виде прямоугольника с надписью внутри как имя блока) с входами - первичными рецепторами, и выходами - конечными эффекторами. Его потом можно в другую схему вставить. Ее так же можно объявить блоком и т. д. - до какого то уровня вложения. По сути это будет одна общая схема, но графически просто разбитая на модули.

Так можно рисовать очень сложные и подробные читабельные схемы.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
170. « Сообщение №46914, от Июль 17, 2020, 07:53:53 PM»

Что-то я не загорелся... :)




usr
Имеет права модератора этой темыScorcher God

Сообщений: 507
171. « Сообщение №46915, от Июль 17, 2020, 10:18:35 PM»

автор: nan сообщение № 46912:
Могу тебе дать исходный код, если хочешь.

Давай, я посмотрю, как всё устроено.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
172. « Сообщение №46916, от Июль 18, 2020, 08:58:26 AM»

Вот  neuronet_designer.zip




Род: Мужской
linuxoid
Full Poster


Сообщений: 41
173. « Сообщение №46917, от Июль 18, 2020, 03:41:54 PM»

автор: Palarm сообщение № 46913:
Сделать возможность создания блоков.

Можно просто добавить возможность вставлять одни схемы внутрь других, чтобы не перерисовывать всё, хотя вариант с объявлением блоков наверняка будет более оптимален по использованию ресурсов.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
174. « Сообщение №46918, от Июль 18, 2020, 05:54:12 PM»

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

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

Конструктор - это просто модель для изучения типовых схем, как сам Nan и сказал. Там нельзя ничего "выращивать", только рисовать готовое. Но можно это сделать более удобным и наглядным, где введение блоков и ортогональной разводки связей может этому помочь.



Спасибо за это сообщение! Благодарность от: nan

Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
175. « Сообщение №46919, от Июль 19, 2020, 08:08:44 AM»

Сделал пример моего понимания принципов построения самоадаптирующихся нейросхем. Принципиальное отличие от привычного рисования блок-схем - построение нового слоя только после созревания предыдущего. То есть строится первый фрагмент "Сытость-Голод" и запускаем симулятор реальности, чтобы он прокачал веса связей. Так как он согласно сценарию будет возбуждать их поочередно, сформируется логика ИЛИ. Аналогично для второго блока "Съедобно-Не Съедобно". Оба блока возникли путем случайных мутаций, в нашем случае - их просто нарисовали, сэкономив тем самым несколько миллионов лет случайных тыков. Потом добавляем блокирующую и новую связующую связь между блоками (которые тоже случайно-эволюционно возникли) и запускаем симулятор, прокачивая связи. Теперь уже рецепторы Голод/Съедобно должны активироваться одновременно, тогда возникнет связь И. Симулятор пока виртуальный, в голове, но думаю, если прокачивать веса у простейших блоков и их связок - так оно и будет в реальности. Чем проще блок, тем больше вероятность его случайного возникновения - это ведь тоже важно учитывать при ответе на вопрос: как такое могло нарисоваться само? И этого же правила надо придерживаться конструируя нейросхемы - прокачивание весов у сложной схемы приведет к множеству вариантов ее адаптации. Так происходит развертывание схемы - ее постепенное усложнение. Это похоже на проращивание семени - положил в подходящий грунт, создал нужные условия - оно начало само расти. Нейроинженер периодически вмешивается, имитируя процесс эволюции и раскручивание ДНК, добавляет связи, меняет внешние условия - задает векторы разворачивания фракталов нейросети.

 

Проблему графической запутанности связей можно пока решить просто разбивая схему на фрагменты.  Но тогда надо обязательно указывать имя элемента с идентификатором, то есть не просто R, а R1, R2 и т. д. Потому что в разбитых на части схемах будут дублироваться элементы с одинаковым номером, что показывает, что на самом деле это один и тот же элемент показанный в разных частях. Их можно соединить дополнительной связью, которой на самом деле нет, это как бы связь разрыва схемы. Может ввести такое понятие и изображать ее в виде пунктирной линии - то есть при создании связи дать возможность выбора: основная или разделительная.

Еще простое дополнение при такой разбивке: добавить возможность ввода надписей над фрагментом, чтобы пояснять разделение слоев и фрагментов.



Спасибо за это сообщение! Благодарность от: nan

Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
176. « Сообщение №46920, от Июль 19, 2020, 11:37:16 AM»

Надо будет внимательно посмотреть, когда освобожусь...




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
177. « Сообщение №46921, от Июль 19, 2020, 12:56:59 PM»

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

 

А пока, на примере этой схемы тут просятся две несложных доработки:

  1. сделать таблицу-сценарий внешних воздействий с кнопкой запуска. В ней 3 поля:
    1. № шага
    2. Список рецепторов через пробел, которые активируются на этом шаге
    3. Время активации в мсек
  2. в карточке нейрона рядом с полем "короткое название" добавить поле "код связи". Оно заполняется автоматически и не доступно для ручного ввода. Работает так: ввожу короткое имя R1 - и если элемент с таким именем в схеме уже есть, тогда вылетает мессага с вопросом: "Установить связь между созданным ранее R1?" Если "Да" - то втыкает его код (ID). И поправить код - теперь все элементы, где в доп. поле стоит одинаковый код будут считаться  элементом, чей код туда воткнули.

Это позволит разносить схему на части, сделав ее намного читабельнее и симулировать реальность. В данном случае если например на первом шаге сценария написать R1, то на втором уже будет только R4, потому, что насекомое дернуло голову вверх и активировался рецептор R4. То есть сценарий показывает как будут активироваться рецепторы в реальности - если конечно правильно расписать все строки. А если еще добавить возможность создания списка сценариев, тогда в этой схеме можно будет наглядно показать различные варианты ситуаций воздействия.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
178. « Сообщение №46922, от Июль 19, 2020, 04:59:33 PM»

Добавил возможность вставки из сенса-заготовки схемы в текущий сеанс.

Чтобы вставить содержимое какого-то сеанса (заготовки) в текущий сеанс, нужно выбрать из выпадающего списка сеанс заготовки и нажать OK. Будет вставка схемы сразу внизу самого последнего элемента.

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
179. « Сообщение №46923, от Июль 19, 2020, 05:38:47 PM»

Это хорошо, теперь можно делать вставку типовых схем типа И, ИЛИ, НЕ, ХОR - из них и собирать как из кирпичей новые схемы. Только по идее, надо еще придумать как их можно делать публичными, чтобы любой мог воткнуть их в свою схему.

В старых схемах косяк вылазит

А сложно сделать перемещение поля с весом так, чтобы общая линия разламывалась бы? Тогда не надо будет ортогональных линий связей. Такое разламывание позволило бы разносить линии связей, уменьшив их загромождение.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
180. « Сообщение №46924, от Июль 19, 2020, 05:50:54 PM»

автор: Palarm сообщение № 46923:

адо еще придумать как их можно делать публичными, чтобы любой мог воткнуть их в свою схему

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

автор: Palarm сообщение № 46923:
А сложно сделать перемещение поля с весом так, чтобы общая линия разламывалась бы?

Ничего не понял...




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
181. « Сообщение №46925, от Июль 19, 2020, 05:55:47 PM»

автор: Palarm сообщение № 46923:
В старых схемах косяк вылазит

Исправил.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
182. « Сообщение №46926, от Июль 19, 2020, 06:09:30 PM»

автор: nan сообщение № 46924:
Ничего не понял..

Чтобы линии связей можно было "разламывать" потянув за поле веса

 




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
183. « Сообщение №46927, от Июль 19, 2020, 06:13:21 PM»

автор: nan сообщение № 46925:
Исправил.

теперь в другом месте

 

 




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
184. « Сообщение №46928, от Июль 19, 2020, 06:18:32 PM»

автор: Palarm сообщение № 46927:
теперь в другом месте

У меня не воспроизводится. Попробуй обновить кэш.

автор: Palarm сообщение № 46926:
Чтобы линии связей можно было "разламывать" потянув за поле веса

Понятно, поставлю в очередь, подумаю... но это не просто.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
185. « Сообщение №46930, от Июль 19, 2020, 06:35:55 PM»

автор: Palarm сообщение № 46927:
теперь в другом месте

Исправил.




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
186. « Сообщение №46951, от Август 02, 2020, 06:57:05 PM»

Я все не могу в толк взять, что ты имеешь в виду, уже не первый раз говоря о том, что распознавание таких свойств примитивов как толщина, угол наклона и т.п. происходит в новой коре. Получается, когда этой коры не было, ничего из этого не распознавалось? Или распознавалось иначе, например как я показывал на примере решеток, где происходит автоматическое разбиение на более простые части при контрастировании, и группировки таких фрагментов на следующих слоях?

Например, ты пишешь в своем примере распознавания цифры:

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

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

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

А то получается, образ объекта без новой коры вообще не возможно воспринять.

« Последнее редактирование: 2020-08-03 03:52:34 Palarm »



Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
187. « Сообщение №46952, от Август 03, 2020, 08:36:09 AM»

автор: Palarm сообщение № 46951:
получается, образ объекта без новой коры вообще не возможно воспринять

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
188. « Сообщение №46953, от Август 03, 2020, 05:35:10 PM»

С этим теперь более менее ясно. Другой вопрос: геном и внешние факторы определяют свойства организма. Цвет глаз, волос и т.п с этим все понятно. Но вот как через геном синхронизируется в каком месте тела какие клетки появляются и правильно связываются. Когда стал искать на эту тему, то пришел к выводу, что нет устоявшегося понимания. Безусловно геном в этом учавствует, но по поводу конкретных механизмов есть много теорий. Я так понял, что основная идея - клетки как то взаимодействуют друг с другом, споры о механизмах такого взаимодействия. Напрашивается теория децентрализованной нервной системы, которая скорей всего идет от древнейших сообществ клеток, предтеч многоклеточных. То есть колонии клеток постепенно синхронизируя свою жизнедеятельность и отрабатывая механизмы такой синхронизации постепенно формировали устойчивые колонии, а впоследствии многоклеточный организм, который вобрал в себя удачные наработки синхронизации - предтечи нервной системы. Она была не только децентрализованной, но и с динамическими связями. То есть клетки выделяют какие то вещества, которые через водную среду попадая к другим клеткам провоцируют их специфическую реакцию, например включают/блокируют гены. Это пара рецептор-эффектор. Такая "динамическая нейросеть" способна детектировать простейшие примитивы, через дефрагментацию и контрастирование. И она вполне может синхронизировать деление клеток. И множество других функций, например формировать иммунный ответ.

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

 




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
189. « Сообщение №46954, от Август 03, 2020, 05:43:40 PM»

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
190. « Сообщение №46955, от Август 03, 2020, 05:55:56 PM»

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

 

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

 

С позиции эволюции все очень даже логично выглядит. И то что клетки продолжили развивать свою "коммуникабельность" в уже многоклеточном тоже думаю ничего криминального не содержит. Я собственно почему вопрос поставил: вот если я соберу решетку типа 100х100, имитирующую связи всех со всеми, как если бы какие то вещества выделялись клеткой и служили бы катализаторами/деактиваторами для каких то процессов в других клетках, и такая схема выдала бы мне сотни уникальных пар РЭ рисунков, при движении  ползунков параметров, что имитировать бы разные химические вещества выделяемые клеткой - что бы это значило? То что такая вроде бы суммбурная нейросеть действительно может быть в реальности и функционирует?




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
191. « Сообщение №46956, от Август 03, 2020, 06:48:34 PM»

В чем собственно преимущество колонии с "нервной с системой" и просто кучей клеток? В том, что "нейро-колония" способна к сложным реакциям, принципиально невозможных для отдельных клеток. Чтобы организовать простейшую нейросеть нужны два типа элементов: рецептор и эффектор. И какой то способ активно/тормозных связей между ними. В простейшем случае рецептор/эффектор это одна и та же клетка, а связь - хим. вещества выделяемые в окружающее пространство. Подбор нужных веществ и реакций - дело эволюции.

 

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

 

Можно конечно все привычно списать на миллионы лет эволюции и случайные удачные мутации. Но мне такой подход не нравится, потому как похож на уход от ответа: что заставило клетки объединяться, в чем была фора?

 

Но все эти мысли могут иметь смысл, если решетка 100х100 покажет себя так, как я предполагаю. А если это будет какой то хаос - тады ой.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
192. « Сообщение №46957, от Август 03, 2020, 07:15:35 PM»

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
193. « Сообщение №46958, от Август 03, 2020, 07:31:48 PM»

Клетка выделила вещество, оно воздействует одинаково на другие клетки. Получается связь один рецептор на условно 100 эффекторов. Подвергнувшиеся воздействию клетки в ответ тоже выделили вещества и они так же воздействуют на другие клетки. Вещества могут чего то запускать или блокировать. По сути это схема связей 1 ко многим между клетками, где как таковой связи в жестком соединении нет. Поэтому я и назвал ее динамической решеткой. Гормональные регулирование это уже позднее приобретение для многоклеточных и это централизованное управление, где не клетки между собой, а нервная система через гормоны их регулирует. А в простейшем и думаю более древнем исполнении это была децентрализованная система регуляции между клетками. Как то же им надо было взаимно реагировать. Я предположил, что именно это была главная причина, зачем они вообще объединились - совместная синхронизированная реакция. Объединенные активно-тормозными связями клетки способны более сложно реагировать, в этом их фора.




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
194. « Сообщение №46959, от Август 03, 2020, 07:52:00 PM»

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




Род: Мужской
Palarm
Имеет права модератора этой темыInfra Real

Сообщений: 2254
195. « Сообщение №46960, от Сегодня 07:09:03 AM»

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

 

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

 

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




Род: Мужской
nan
Имеет права полного администратора сайта - админ

Сообщений: 11538


E-Mail
196. « Сообщение №46961, от Сегодня 07:24:51 AM»

автор: Palarm сообщение № 46960:
как гены задают сценарий построения организма

Вполне таки есть

автор: Palarm сообщение № 46960:
как конкретно удается закодировать рост аксонов в нужном направлении

вот как: 1, 2, 3 

автор: Palarm сообщение № 46960:
наверное не стоит углубляться в эти механизмы

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



Спасибо за это сообщение! Благодарность от: Palarm