Ознакомьтесь с Условиями пребывания на сайте Форнит Игнорирование означет безусловное согласие. СОГЛАСЕН
ВХОД
 
 
Привет! Правила | Свежее | Чат | Подписка
Чтобы оставлять сообщения нужно авторизоваться.

Тема форума: «Бот на ГО»

Сообщений: 600 Просмотров: 35889 | Вся тема для печати

Это тема – только для причастных к пониманию модели  МВАП  и текущим проблемам предметной области «Схемотехника адаптивных нейросетей». Прошу посторонним быть очень корректным и зря не спамить. Здесь будет обсуждаться текущая реализация последовательности развития прототипа индивидуальной системы адаптивности Beast.


Страницы:    22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
 
nan
Имеет права полного администратора сайта - админ

Род: Мужской
Сообщений: 12231


E-Mail
личная фото-галерея
Оценок: 39
список всех сообщений
clons
Сообщение № 47852 показать отдельно Апрель 23, 2022, 12:50:02 PM
ответ -только после авторизации

У меня Хорошо - при улучшении, где бы это не случилось, если только было хоть как-то Плохо. И тогда Хорошо просто меняет знак значимости Плохо: Если было предельно Плохо -10, то становится предельно Хорошо +10. С улучшением состояния значимость Хорошо уменьшается.



p.s. Допускаю, что мое утверждение может быть неверно, поэтому прошу показывать, что именно и почему неверно и запрашивать объяснения, если что-то непонятно.
Метка админа:

 
Palarm
Имеет права полного администратора сайта - админ

Род: Мужской
Сообщений: 2761

личная фото-галерея
Оценок: 6
список всех сообщений
clons

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

 

Насколько я разобрался в твоем коде определения базового состояния, оно происходит в 4 этапа:

  1. Оценка состояния по срабатывания компаратора базовой потребности (БП):
    1. при перешагивании порога (у энергобаланса в минус, у остальных в плюс) срабатывает компаратор. При этом фиксируется величина от порога до текущей. Если текущее состояние БП "Хорошо", то смотри тся его время, и если оно > 50 сек, то переключается на состояние БП "Норма", а если меньше то на "Плохо".
    2. если текущее значение до порога (у энергобаланса справа, у остальных слева) то обнуляется величина расхождения с порогом и состояние БП переключается в "Норма". При этом опять идет проверка "Хорошо" на 50 сек, где тоже переключается в "Норма".
  2. Оценка состояние по изменению текущего значения БП: если было перешагивание порога, то приближение к нему активирует состояние БП "Хорошо" (стало лучше), а еще большее удаление о порога активирует "Плохо" (стало хуже)
  3. Зафиксированные при перешагивании порогов БП отклонения складываются с перемножением на значимость БП, чтобы учитывать их влияние в общей оценке, и получается итоговая значимость состояния "Плохо" по всем БП - базовая эмоция БЭ. Она сравнивается с порогом БЭ "Плохо" и:
    1. при его превышении: если текущая БЭ была "Хорошо", то при превышении времени нахождения в ней в 50 сек, БЭ переключается в "Норма", иначе в "Плохо"
    2. если не было превышения порога БЭ, то переключается в "Норма". Тут тоже проверка на "Хорошо+50" с переключением в "Норма".
  4. Если текущая суммарная по всем БП значимость БЭ состояния "Плохо" больше предыдущей (оцененной ранее), то активируется состояние БЭ "Плохо" (стало хуже), если меньше - состояние БЭ "Хорошо", которое потом затухнет через 50 сек.

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

автор: nan сообщение № 47852:
У меня Хорошо - при улучшении, где бы это не случилось, если только было хоть как-то Плохо.

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

« Последнее редактирование: 2022-04-24 08:57:32 Palarm »

Метка админа:

 
Palarm
Имеет права полного администратора сайта - админ

Род: Мужской
Сообщений: 2761

личная фото-галерея
Оценок: 6
список всех сообщений
clons
автор: nan сообщение № 47852:
Если было предельно Плохо -10, то становится предельно Хорошо 10

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

Здесь работают два датчика: один срабатывает при значениях ниже порога как датчик критического минимума, другой при изменениях значений БП в сторону приближения к порогу (возврату в норму) - датчик "стало лучше". По вертикали значимость от -10 до +10, по горизонтали величина БП. Если сработал пороговый датчик, то активируется состояние "Плохо", значимость которого определяется по нижнему графику. Если после этого было изменение величины БП как приближение к порогу, то срабатывает второй датчик и переключает графики, делает актуальным верхний. То есть по сути он просто меняет знаки текущей значимости состояния БП. И тогда получится: чем сильнее "Плохо", тем сильнее будет "Хорошо" при изменении уровня БП. А после перешагивания порога в зону избытка будет просто "Норма", и реагирования датчика изменений не будет влиять на значимость, так как она все время будет 0. Еще добавляется затухание "Хорошо 50+", которое графически не отобразишь.

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

Я только втупляю, какое уравнение у этой кривой. Потому как просится именно кривая, а не прямая как сейчас: x = y. В смысле

BadValue[id] = -lib.Round(float64((diff * 10) / compLimit))

вместо diff должна быть функция типа Ln(x) или что то такое. Чтобы значимость определялась не просто как величина отступа от порога. Хотя для начала можно и так.

BAD_detector.rar


Метка админа:

 
nan
Имеет права полного администратора сайта - админ

Род: Мужской
Сообщений: 12231


E-Mail
личная фото-галерея
Оценок: 39
список всех сообщений
clons
Сообщение № 47856 показать отдельно Апрель 24, 2022, 03:12:04 PM
ответ -только после авторизации

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

логика учитывания приближения/удаления от порога, но только если уже было его перешагивание

Да, это – важно.

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

Насколько я разобрался в твоем коде определения базового состояния, оно происходит в 4 этапа ...

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

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

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

Так и должно быть. Если в каких-то случаях это – не так, то лаже нужно править.

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

чем сильнее "Плохо", тем сильнее будет "Хорошо"

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

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

Я только втупляю, какое уравнение у этой кривой. Потому как просится именно кривая, а не прямая как сейчас: x = y 

А нужны ли такие точности?



p.s. Допускаю, что мое утверждение может быть неверно, поэтому прошу показывать, что именно и почему неверно и запрашивать объяснения, если что-то непонятно.
Метка админа:

 
Palarm
Имеет права полного администратора сайта - админ

Род: Мужской
Сообщений: 2761

личная фото-галерея
Оценок: 6
список всех сообщений
clons
Сообщение № 47857 показать отдельно Апрель 24, 2022, 03:17:58 PM
ответ -только после авторизации
автор: nan сообщение № 47856:
А нужны ли такие точности?

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


Метка админа:

 
Palarm
Имеет права полного администратора сайта - админ

Род: Мужской
Сообщений: 2761

личная фото-галерея
Оценок: 6
список всех сообщений
clons
Сообщение № 47858 показать отдельно Апрель 24, 2022, 03:28:42 PM
ответ -только после авторизации
автор: nan сообщение № 47856:
В целом верно, но у меня еще есть лажа (буду думать): при включении бота если даже вообще нет энергии, то горит Норма.

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


Метка админа:

 
nan
Имеет права полного администратора сайта - админ

Род: Мужской
Сообщений: 12231


E-Mail
личная фото-галерея
Оценок: 39
список всех сообщений
clons
Сообщение № 47859 показать отдельно Апрель 24, 2022, 05:06:40 PM
ответ -только после авторизации
автор: Palarm сообщение № 47858:
Но может все таки это делается на более высоком уровне, когда из за накрученной гиперзначимости такого нахождения в негативе произвольно поддерживается состояние "Норма", как если бы порог был сдвинут.

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

автор: Palarm сообщение № 47858:
Убрать "Норма" по умолчанию и активировать его только если нет превышения порога, как по графику и выходит. То есть "Хорошо" после 50 сек в "Норма" не переключается, а только в "Плохо". "Норма" это просто показатель, что уровень БП в зоне комфорта.

да, верно.



p.s. Допускаю, что мое утверждение может быть неверно, поэтому прошу показывать, что именно и почему неверно и запрашивать объяснения, если что-то непонятно.
Метка админа:

 
Palarm
Имеет права полного администратора сайта - админ

Род: Мужской
Сообщений: 2761

личная фото-галерея
Оценок: 6
список всех сообщений
clons
Сообщение № 47860 показать отдельно Апрель 24, 2022, 05:53:41 PM
ответ -только после авторизации

Вот еще небольшие изменения:

Добавил в Go:

 

outStr +="#|#"+gomeostas.GetCurGomeoStatus()+"#|#"+gomeostas.GetCurContextActive() + "#|#" + strconv.Itoa(gomeostas.CommonOldBadValue).

 

и php (pult_gomeo.php 141 - 148):

 

title="Плохо " + p[3];

title="Хорошо " + p[3];

 

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

 

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

BAD_detector_242057.rar


Метка админа:

 
nan
Имеет права полного администратора сайта - админ

Род: Мужской
Сообщений: 12231


E-Mail
личная фото-галерея
Оценок: 39
список всех сообщений
clons
Сообщение № 47861 показать отдельно Апрель 24, 2022, 06:30:37 PM
ответ -только после авторизации
автор: Palarm сообщение № 47860:
уточняем: я ведь правильно понимаю, что рефлексы/автоматизмы никак не могут менять значение энергобаланса, это возможно будет только действиями с пульта

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



p.s. Допускаю, что мое утверждение может быть неверно, поэтому прошу показывать, что именно и почему неверно и запрашивать объяснения, если что-то непонятно.
Метка админа:

 
Palarm
Имеет права полного администратора сайта - админ

Род: Мужской
Сообщений: 2761

личная фото-галерея
Оценок: 6
список всех сообщений
clons
Сообщение № 47862 показать отдельно Апрель 25, 2022, 10:19:16 AM
ответ -только после авторизации

Схема с двумя порогами имеет особенность:

При пульсации происходит ритмичное нарастание/убывание параметра и это приводит к тому, что например при возрастании до первого порога сначала состояние улучшается, затем стабилизируется, и при выходе из второго порога ухудшается. При убывании наоборот. Вряд ли такая логика соответствует гомеостазу, поэтому скрутил один из порогов до границы зоны, у энергобаланса, который убывает 30-100, у остальных, которые нарастают 0-80.


Метка админа:

 
nan
Имеет права полного администратора сайта - админ

Род: Мужской
Сообщений: 12231


E-Mail
личная фото-галерея
Оценок: 39
список всех сообщений
clons
Сообщение № 47863 показать отдельно Апрель 25, 2022, 12:36:22 PM
ответ -только после авторизации

Чем меньше приманных сущностей, тем лучше :) и без этого хватает проблем.



p.s. Допускаю, что мое утверждение может быть неверно, поэтому прошу показывать, что именно и почему неверно и запрашивать объяснения, если что-то непонятно.
Метка админа:

 
Palarm
Имеет права полного администратора сайта - админ

Род: Мужской
Сообщений: 2761

личная фото-галерея
Оценок: 6
список всех сообщений
clons

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

 

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

« Последнее редактирование: 2022-04-26 06:36:13 Palarm »

Метка админа:

 
nan
Имеет права полного администратора сайта - админ

Род: Мужской
Сообщений: 12231


E-Mail
личная фото-галерея
Оценок: 39
список всех сообщений
clons
Сообщение № 47865 показать отдельно Апрель 26, 2022, 06:48:52 AM
ответ -только после авторизации
автор: Palarm сообщение № 47864:
Но чаще всего они все будет в пределах нормы, потому как пороги там задраны довольно высоко.

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

автор: Palarm сообщение № 47864:
Еще такой прикол: скрутил движок энергии на минус порога, активировались контексты "пищевой" и "поиск", скрутил на плюс порога - контексты остались. Хотя по факту насыщение то произошло.

Да, это нужно исправить. Но крутить слайдеры во время нормальной жизни Бота не следует, прямо написано: "Управление жизненными параметрами не использовать в качестве ответа на действия Бота". Они - на вретя разного рода тестирования и проверок.



p.s. Допускаю, что мое утверждение может быть неверно, поэтому прошу показывать, что именно и почему неверно и запрашивать объяснения, если что-то непонятно.
Метка админа:

 
Palarm
Имеет права полного администратора сайта - админ

Род: Мужской
Сообщений: 2761

личная фото-галерея
Оценок: 6
список всех сообщений
clons
Сообщение № 47866 показать отдельно Апрель 26, 2022, 08:05:59 AM
ответ -только после авторизации

Думаю перепилить baseContextUpdate() по следующему алгоритму для каждой БП:

  1. антагонисты делятся на те, что задаются в справочнике как уникальные особенности гомеостаза и те, что определяются правилом: что активируется при "Хорошо" должно быть погашено при "Плохо", и наоборот. У тебя второй момент не учтен.
  2. при активации "Норма" гасятся контексты, активированные при "Плохо". Гашение не мгновенное, а с задержкой например 10 сек (dinamicTimeFromBad/5)

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

И кстати, а почему у тебя контексты гасятся дважды: в baseContextUpdate() и потом в for id, v := range BaseContextActive?


Метка админа:

 
nan
Имеет права полного администратора сайта - админ

Род: Мужской
Сообщений: 12231


E-Mail
личная фото-галерея
Оценок: 39
список всех сообщений
clons
Сообщение № 47867 показать отдельно Апрель 26, 2022, 09:55:36 AM
ответ -только после авторизации

Я просто вставил в начале функции обнуление всех контекстов, чтобы потом активировались нужные:

func baseContextUpdate(){
// сначала все контексты выключены:
for id, _ := range BaseContextWeight {
BaseContextActive[id]=false
}
...

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

 

 



p.s. Допускаю, что мое утверждение может быть неверно, поэтому прошу показывать, что именно и почему неверно и запрашивать объяснения, если что-то непонятно.
Метка админа:

 
Страницы:    22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Статистика:
Всего Тем: 1923 Всего Сообщений: 47822 Всего Участников: 5157 Последний зарегистрировавшийся: selmary
Страница статистики форума | Список пользователей | Список анлимитов
Последняя из новостей:
Схемотехника адаптивных систем - Путь решения проблемы сознания.
Все новости

Создан синаптический коммутатор с автономной памятью и низким потреблением
Ученые Северо-Западного университета, Бостонского колледжа и Массачусетского технологического института создали новый синаптический транзистор, который имитирует работу синапсов в человеческом мозге.
Все статьи журнала

Тематическая статья: Как образумить Beast?

Рецензия: Статья П.К.Анохина ФИЛОСОФСКИЙ СМЫСЛ ПРОБЛЕМЫ ЕСТЕСТВЕННОГО И ИСКУССТВЕННОГО ИНТЕЛЛЕКТА
Пользователи на форуме:

Из коллекции изречений:
>>показать еще...