GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.9 (14)<< < Пред. | След. > >>   Поиск:  
 Автор Тема: На: Проект Projetc-CNS
tac
Сообщений: 2601
На: Проект Projetc-CNS
Добавлено: 25 сен 11 2:39
Цитата:
Автор: mozgobrain



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

Нормальный интеллект не будет оперировать столькими сенсорами и эффекторами. Жук должен обучится двум вещам без относительно того где находится пища:
1. Пройти по прямой 1 метр (условно в зависимости от требуемой точности)
2. Повернуться на 5 градусов (условно в зависимости от требуемой точности)

Эти подпрограммы можно выучить просто наблюдая как он это делает (вход-выход).

Затем ему элементарно хватает включать ту или иную программу, в зависимости от первых 4 сенсоров, 1 и 2 как включение той или иной программы, 3 как мотивирование, 4 как ограничения.

Если же ЖУК изначально не умеет ходить - то это совсем другая задача, и ее надо решать отдельно. и тогда пища тут совсем не причем.

[Ответ][Цитата]
mozgobrain
Сообщений: 35
На: Проект Projetc-CNS
Добавлено: 25 сен 11 17:32
Цитата:
Автор: daner
Каждый "предсказатель" у вас оказывается в весьма убогом положении с отсутствием знаний о действиях других эфекторов. Получается для предсказания ему необходимо решать задачу несравненно более сложную, чем вариант, когда действие есть совокупность состояний всех эфекторов и реакция среды зависит только от них.

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

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

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

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

Да, речь идет об одномоментных значениях, выше я расписал это на примере.

Цитата:
Автор: daner
П.С.
Если почитаете те книги ссылки на которые я вам дал, вы поймете, что после формализации вашей задачи, она окажется весьма стандартной и достаточно хорошо изученной.
Обыкновенная задача обучения с подкреплением, правда с весьма скудной (разряженной) функцией награды и достаточно большими группами действий и состояний но при этом (на сколько я понял вашу задачу) все в рамках MDP.

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

Вобщем углублюсь в Reinforcement Learning'и и прочие MDP. Спасибо за ссылки!!
[Ответ][Цитата]
mozgobrain
Сообщений: 35
На: Проект Projetc-CNS
Добавлено: 25 сен 11 17:48
Цитата:
Автор: tac
Нормальный интеллект не будет оперировать столькими сенсорами и эффекторами.

Как раз будет. Реальный интеллект оперирует огромным количеством сенсоров и эффекторов. Зрение - это огромное количество сенсоров. И теоретически человек способен сокращать мыщцы вплоть до отдельных связок (а может даже волокон?)
Но это на низком уровне иерархии, а на верхнем он порой не способен пошевелить отдельным пальцем на ноге - только всеми сразу.
Это такая более общая задача - создать ЦНС который можно внедрить в любой creature с определенным интерфейсом, и тот (ЦНС) самообучается им управлять. Выстраивает иерархии эффекторов, добавляет супер-эффекторы, супер-сенсоры и проч.
Цитата:
Автор: tac
Жук должен обучится двум вещам без относительно того где находится пища:
1. Пройти по прямой 1 метр (условно в зависимости от требуемой точности)
2. Повернуться на 5 градусов (условно в зависимости от требуемой точности)

Эти подпрограммы можно выучить просто наблюдая как он это делает (вход-выход).

Затем ему элементарно хватает включать ту или иную программу, в зависимости от первых 4 сенсоров, 1 и 2 как включение той или иной программы, 3 как мотивирование, 4 как ограничения.

Если же ЖУК изначально не умеет ходить - то это совсем другая задача, и ее надо решать отдельно. и тогда пища тут совсем не причем.


Жук изначально ходить не умеет.Пища тут всё-таки причём. Т.к. это какая-никакая мотивация. Можно сделать мотивацией даже сам процесс движения к этой пище.
А вот эти подпрограммы "Сдеать шаг" и "Повернуться на Н градусов" -
мне хочется, чтобы ЦНС сам сформировал такие более высокоуровневые операции и затем ими ..гм.. оперировал. В общем задача не то, что бы жук дошел до пищи, а именно что-бы сам научился к ней идти.
[Ответ][Цитата]
mozgobrain
Сообщений: 35
На: Проект Projetc-CNS
Добавлено: 25 сен 11 17:57
Затем я хотел бы добавить жуку типа "зрение"
Например такой набор сенсоров:

Где каждая ячейка это сенсор.
Затем усовершенствовать "организм" жука, или создать совсем другого Крича, использовать тот же ЦНС. Конечно хочется создать что-то, чтобы потом "оно всё само".
[Ответ][Цитата]
tac
Сообщений: 2601
На: Проект Projetc-CNS
Добавлено: 25 сен 11 19:55
Цитата:
Автор: mozgobrain

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


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

Модель_внутреннего_устройства

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

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

Таким образом, нужен ОБЯЗАТЕЛЬНО еще один сенсор - болевые ощущения, например, когда две ноги идут в разном направлении - чем больше растягиваются друг от друга, тем большую боль должен ощущать жук. Так же нужно понимать когда жук падает - может и тут понадобится еще сенсоры.

[Ответ][Цитата]
tac
Сообщений: 2601
На: Проект Projetc-CNS
Добавлено: 25 сен 11 20:24
Цитата:
Автор: mozgobrain


Как раз будет. Реальный интеллект оперирует огромным количеством сенсоров и эффекторов.


Имелось введу, что интеллект переведет сигналы отдельных сенсоров, в программы верхнего уровня. Мы не думаем как скоординировать ноги, чтобы идти вперед - мы идем. Но до этого учимся ходить, но практически бессознательно. Т.е. аналитически не наблюдаем как ставить ноги - когда случайно получается, просто закрепляем навык и все.
[Ответ][Цитата]
tac
Сообщений: 2601
На: Проект Projetc-CNS
Добавлено: 25 сен 11 21:19
А вообще скачал проект, как-то грустно - непонятно, какая-то точка движется вбок медленно при нажатии кнопки множество раз и регулировка непонятно чего, и ни на что не влияющая ... вообщем визуализация хромает еще как
[Ответ][Цитата]
shuklin
Сообщений: 2053
На: Проект Projetc-CNS
Добавлено: 26 сен 11 0:07
Цитата:
Автор: mozgobrain


Как раз будет. Реальный интеллект оперирует огромным количеством сенсоров и эффекторов.

Кроме этого интеллект оперирует событиями во времени, строит из этих событий структуры растянутые во времени, прогнозирует тенденции, ...
[Ответ][Цитата]
Andrey
Сообщений: 128
На: Проект Projetc-CNS
Добавлено: 26 сен 11 12:46
Может быть, есть смысл упростить модель? Убрать ноги, ввести "движитель", который управляется всего несколькими командами, такими как:
1. Совершить поворот вправо/влево на n градусов;
2. Сделать шаг вперед на дистанцию, равную s.
[Ответ][Цитата]
tac
Сообщений: 2601
На: Проект Projetc-CNS
Добавлено: 26 сен 11 18:01
Цитата:
Автор: Andrey

Может быть, есть смысл упростить модель? Убрать ноги, ввести "движитель", который управляется всего несколькими командами, такими как:
1. Совершить поворот вправо/влево на n градусов;
2. Сделать шаг вперед на дистанцию, равную s.


Именно и получим задачу, которую я давно описал

FindTable

но и там есть похожая задача

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

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

т.е. и тут нужна предварительная внутренния калибровка механизма (в задачи с ногами соответствует "научится ходить")
[Ответ][Цитата]
mozgobrain
Сообщений: 35
На: Проект Projetc-CNS
Добавлено: 26 сен 11 19:30
Цитата:
Автор: tac
Тут некоторые размышления о необходимом минимальном устройстве жука, который изначально ничего не умеет.

Модель_внутреннего_устройства

Очень там мало
Мысль про то, что в программах этапу самообучения управления собственным телом не уделяется времени весьма правильна )
Потом идет набор высокоуровневых сенсоров/эффекторов
Потом про "быструю память"
В Project-CNS память организована просто - каждый момент времени записываются все значения сенсоров/эффекторов.

Цитата:
Автор: tac
Тогда в частном случае (когда учимся ходить, а не смотреть ) - устройство может быть таким:

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

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

3) ну и третий - штатный режим

Цитата:
Автор: tac
2. Есть стабилизатор движений, который следит за случайными движениями, и налагает ограничения на генератор случайности.
3. На основании сенсоров от зрения стабилизатор движения решает какие ограничения накладывать на генератор случайности.

А на чем этот стабилизатор основывается?

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

Да, примерно так и нужно сделать.
Поощрение - если жук сделал какое то продвижение в сторону пищи - это "хорошо"
Наказание предусмотрены следующие - голод и усталость.
Т.е. голод - это постоянно падающий во времени показатель.
Усталость растет при интенсивных движениях экспоненциально.
Т.е. если двигать ногой со значением эффектора 100 - то усталость растёт на 0,015
Если двигать со значением эффектора 200 - то усталость растет с 0,2 т.е. в 13 раз быстрее. (примерно так, я сейчас точно не помню)

Ну и собственно как осуществляется движение -
Поворот совершается если ногу опустить до касания земли и двигать вправо-влево -
то будет осуществляться поворот. Нога имеет крайнее положение, т.е. для продолжительного поворота её требуется поднять и двигать в обратную сторону.

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

Если ноги справа движутся в одну а ноги слева движутся в другую - то осуществляется шаг.

Цитата:
Автор: tac
Таким образом, нужен ОБЯЗАТЕЛЬНО еще один сенсор - болевые ощущения, например, когда две ноги идут в разном направлении - чем больше растягиваются друг от друга, тем большую боль должен ощущать жук. Так же нужно понимать когда жук падает - может и тут понадобится еще сенсоры.

Отличная мысль! В настоящий момент у меня если жук "идет в разные стороны" то в итоге движение суммируется и он движется в ту сторону, в которую он "идет сильнее"
Если он идет во все стороны одинаково - то он просто стоит на месте.
Сенсор боли позволит избежать непроизводительных движений.
Ну и если реализовать ЦНС в железе, он же действительно может ..ээ.. порваться.
Касательно сенсора падения - в настоящий момент жук упасть не может т.к. постоянно лежит на пузе.
[Ответ][Цитата]
mozgobrain
Сообщений: 35
На: Проект Projetc-CNS
Добавлено: 26 сен 11 19:42
Цитата:
Автор: tac
Имелось введу, что интеллект переведет сигналы отдельных сенсоров, в программы верхнего уровня. Мы не думаем как скоординировать ноги, чтобы идти вперед - мы идем. Но до этого учимся ходить, но практически бессознательно. Т.е. аналитически не наблюдаем как ставить ноги - когда случайно получается, просто закрепляем навык и все.

Но ведь на нижнем-то уровне кто-то ведь думает! На нижнем уровне ведь тоже интеллект!

Цитата:
Автор: tac
А вообще скачал проект, как-то грустно - непонятно, какая-то точка движется вбок медленно при нажатии кнопки множество раз и регулировка непонятно чего, и ни на что не влияющая ... вообщем визуализация хромает еще как

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

Касательно визуализации.. Я над ней пока не работал, а то что есть - это так, для дебага.
Точка красная показатель двух сенсоров какой-то ноги. Её координата по горизонтали - это угол ноги по горизонтали, - по вертикали - соответственно угол ноги по вертикали. Кнопка прокручивает среду вперед на один момент времени.
[Ответ][Цитата]
mozgobrain
Сообщений: 35
На: Проект Projetc-CNS
Добавлено: 26 сен 11 19:48
Цитата:
Автор: Andrey

Может быть, есть смысл упростить модель? Убрать ноги, ввести "движитель", который управляется всего несколькими командами, такими как:
1. Совершить поворот вправо/влево на n градусов;
2. Сделать шаг вперед на дистанцию, равную s.

Упрощать нельзя! Ведь задача не в том, чтобы жук съел еду. Задача как раз в том, чтобы ЦНС научился управлять телом жука.
Там например есть такая фишка - на каждую ногу, для движения в одном направлении приходиться два эффектора (две мышцы). Если двигать только одной с интенсивностью 200 (значением эффектора - 200), а можно двумя но с интенсивностью 100. Скорость движения ноги будет одинакова - но усталость будет расти в 13 раз быстрее.
Также жук может поворачивать одной ногой, а может и всеми - опять же кардинально сказывается на усталости. И т.д. Хочется, что-бы жук всё это учитывал.
[Ответ][Цитата]
daner
Сообщений: 4593
На: Проект Projetc-CNS
Добавлено: 26 сен 11 22:08
>> mozgobrain
напишите мне на почту, я вам скину две статьи в которых описаны решения задач почти 100% совпадающие с тем что вы делаете. Если цель чему-то научиться, а не просто "весело" потратить лишнее время, то в них вы найдете больше полезного чем на любом форуме.
[Ответ][Цитата]
Андрей
Сообщений: 3943
На: Проект Projetc-CNS
Добавлено: 26 сен 11 22:47
Цитата:
Автор: mozgobrain
действительно может не добраться до еды быстрее чем помрет с голоду
Очень правильная затея затеялась в этом топике. Но мне кажется, сейчас сворачивает в какую-то неправильную сторону... Рискну скорректировать.

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

Цитата:
Автор: mozgobrain
В Project-CNS память организована просто - каждый момент времени записываются все значения сенсоров/эффекторов.
Всё-таки напрасно Вы не хотите читать Бернштейна. Он очень правильные и далеко не очевидные вещи пишет.
Нельзя делать жука как бы "интеллектом в себе" - решать все задачи актом, своим действием. Мне показалось, Вы пытаетесь каждой задаче (значению сенсоров) поставить в соответствие действие (выставлять эффекторы). А нужно действие ставить в соответствие противоречию между прогнозом и ожиданием (или скажем по Вашему - планом и реальностью). Например, если я, извне, буду руками двигать ноги жука так, что он будет "ползти" к пище, то жуку необходимо просто расслабиться и ничем не двигать, иначе он будет только мешать. Его прогноз оправдается и так.

Зацитирую всё-таки краеугольную мысль Бернштейна:
"движение возможно лишь при условии тончайшего и непрерывного, непредусмотримого заранее согласования центральных импульсов с явлениями, происходящими на периферии тела и зачастую зависящими от этих центральных импульсов в количественно меньшей степени, нежели от внешнего силового поля". Это значит, что жук не должен на 100% управлять своим телом в буквальном смысле этого слова, он должен только корректировать траектории своих эффекторов, если их всякими силами заносит "не туда".
[Ответ][Цитата]
 Стр.9 (14)1  ...  5  6  7  8  [9]  10  11  12  13  14<< < Пред. | След. > >>