roboforum.ru

Технический форум по робототехнике.

Что такое хорошо, а что такое плохо?

Обсуждаем рождающиеся мысли и результаты экспериментов.

Re: Что такое хорошо, а что такое плохо?

Сообщение kran » 31 авг 2012, 17:48

=DeaD= писал(а):Удачные фрагменты жизни желательно оценивать при жизни, это называется обучение на ходу, зачем его исключать?
На принципиальных схемах роботов с самообучением рисуют блок "критик", или модуль "набор правил", везде по разному, но цель в этот блок/модуль должна задаваться извне. Робот не может сам себе "смысл жизни" придумать. Сам он только кластеризации какой-нибудь научится.
Аватара пользователя
kran
 
Сообщения: 220
Зарегистрирован: 13 июл 2012, 05:07
Откуда: Челябинск
прог. языки: C++
ФИО: Дмитрий Толмачёв

Re: Что такое хорошо, а что такое плохо?

Сообщение =DeaD= » 31 авг 2012, 17:59

Смысл жизни это одно, а "мне хорошо\плохо" - чуть другое.

Добавлено спустя 42 секунды:
Хотя связь между этими вещами безусловно есть, но не знак равенства.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Что такое хорошо, а что такое плохо?

Сообщение kran » 31 авг 2012, 18:14

"Мне хорошо" - это уже биология. :)
Роботу должно быть "хорошо", когда он достигает цели.

Самообучение выберет топик-стартер или классику с обучающей выборкой - цель всё равно надо задать.

Вообще создалось впечатление, что цель - "выжить", прожить как можно дольше. Т.е. как топик-стартер изначально описывал - жрать батарейки и избегать опасностей, и ничего не делать, может даже просто стоять в зоне спокойствия. Абсолютно бесполезная для создателя цель, но мало у нас что ли непрактичных роботов делают?
Аватара пользователя
kran
 
Сообщения: 220
Зарегистрирован: 13 июл 2012, 05:07
Откуда: Челябинск
прог. языки: C++
ФИО: Дмитрий Толмачёв

Re: Что такое хорошо, а что такое плохо?

Сообщение =DeaD= » 31 авг 2012, 18:46

Если цель конечная, а не регулярная, то это не даст обучения нейросети.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Что такое хорошо, а что такое плохо?

Сообщение gar_anat » 01 сен 2012, 22:40

В Ваших постах я увидел критику в мой адрес по поводу того, что не дал четкое ТЗ и не обозначил свой интерес. Прошу прощения.

Немного попробую внести ясность.

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

Почему ИНС? Потому что нейрон – универсальный программный блок, ИМХО. Меняя архитектуру ИНС, можно добиться различных результатов.

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

Что я уже имею:
1. Некий прообраз нейрона. Его я так называю нейроном, т.к. он схож по внешнему строению.
2. Общее понимание взаимодействия нейронов в сети, решающих данную задачу.

Почему не нейрон с википедии:
1. Реакция у него однозначная, либо сработать либо нет. Мне нужен такой, который с состояния «не знаю» мог перейти в состояние «скорее сработаю, чем не сработаю», «конечно сработаю», «не сработаю» и т.д.
2. Или не понял, или он не срабатывает в комбинации «или - или», «и - или».
3. Не понял, как ему настраивать весовые значения, чтобы выполнялся пункт 2.
Основная проблема реализации – в процессе проработки алгоритма взаимодействия всплывают всевозможные подводные камни в понимании процесса, например, сейчас думаю, как избавиться от шума, поступающего с внешней среды.

Могу объявить требования к моим нейронам без элемента «плохо»:
1. Прежде чем действовать, слой нейронов должен запросить «разрешение» у элемента, стоящего выше. Самый первый слой «просит» разрешение у блока «хорошо/плохо». Остальные слои запрашивают разрешение у вышестоящих слоев.
2. Реакция на сигналы у нейрона происходит случайным характером, по принципу, если должно быть «хорошо», то вероятность срабатывания выше, если никак, то ближе к нулю, но не ноль. Соответственно, в процессе обучения вес варьируется от «ближе к нулю», до максимального значения.
3. Весовые диапазоны нейрона должны растягиваться или сужаться в зависимости от частоты положительного подкрепления. Например, если элементов «хорошо» много, то диапазон сужается. А если между «хорошо» и «хорошо» необходимо долго работать вхолостую, весовые диапазоны растягиваются.
4. Если ни один нейрон в слое не сработал, слой «дает разрешение» нижестоящему слою решить задачу. Необходимо для сложных действий, например, если есть задача оттолкнуться «ногой», то для начала эту ногу нужно подтянуть под себя и упереться.

Алгоритм:
1. Запросить разрешение на активацию нейрона
2. Считать входные показатели
3. Срабатывание (0/1)
4. Выполнение команды
5. Проверка блока удовольствия/боли (оценка реакции)
6. Корректировка весовых значений
7. Возвращение в исходное состояние

К вопросу реализации:
Продолжайте кидать в меня камни, но я владею поверхностно только Delphi (в мое детство еще в школе давали азы программирования, было интересно – немного освоил)

Поэтому, реализация для начала, алгоритмы и блок схемы. Вопрос, где эти алгоритмы реализовывать не рассматривается, т.к. это уже следующий шаг.
Дорогу осилит идущий.
gar_anat
 
Сообщения: 11
Зарегистрирован: 16 окт 2009, 02:57
Откуда: Биробиджан

Re: Что такое хорошо, а что такое плохо?

Сообщение Fayras » 01 сен 2012, 23:32

gar_anat писал(а):Почему не нейрон с википедии:
1. Реакция у него однозначная, либо сработать либо нет. Мне нужен такой, который с состояния «не знаю» мог перейти в состояние «скорее сработаю, чем не сработаю», «конечно сработаю», «не сработаю» и т.д.

это определяется функцией активации нейрона, м.б. стоит полистать чтото более существенное, есть доступные материалы и для новичков
gar_anat писал(а):2. Или не понял, или он не срабатывает в комбинации «или - или», «и - или».
3. Не понял, как ему настраивать весовые значения, чтобы выполнялся пункт 2.

никак, для это этого нужно больше одного слоев

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

сеть сама избавиться от шума, либо под "шумом" вы имеете чтото другое
gar_anat писал(а):Могу объявить требования к моим нейронам без элемента «плохо»:
.....

изучение уже существующих достижений в этой области даже на уровне новичка избавило бы вас от необходимости изобретать велосепед (по крайней мере трехколесный) и существенно ускорило прогресс,
впрочем соглашуть что и самому доходить до всего занятие увлекательное :)
Fayras
 
Сообщения: 118
Зарегистрирован: 15 дек 2010, 16:43
Откуда: Тверь
прог. языки: С++

Re: Что такое хорошо, а что такое плохо?

Сообщение gar_anat » 02 сен 2012, 00:22

1. «это определяется функцией активации нейрона, м.б. стоит полистать чтото более существенное, есть доступные материалы и для новичков.»
С функцией активации у меня проблем нет. По крайней мере пока.

2. «никак, для этого нужно больше одного слоев»
А в моей версии все это должно быть в одном нейроне. Результирующий выход один. По сути, в моей версии программный нейрон – это некое устройство (функция), выдающее 0/1 на выходе и должна быть применима к исполняющему устройству (мотор, например). Пока играюсь с двумя/тремя входами, пытаясь организовать внутри логику «И/ИЛИ». Элемент «НЕ», почему-то вообще не смог туда воткнуть.

3. «сеть сама избавиться от шума, либо под "шумом" вы имеете что-то другое»
У меня не избавляется :(, смотрю в сторону "установки" предварительного фильтра сигналов, фильтрующих шум.

4. Последний пост.
Если «рожу» сам, буду прыгать от счастья.
Дорогу осилит идущий.
gar_anat
 
Сообщения: 11
Зарегистрирован: 16 окт 2009, 02:57
Откуда: Биробиджан

Re: Что такое хорошо, а что такое плохо?

Сообщение Fayras » 02 сен 2012, 00:52

gar_anat писал(а): С функцией активации у меня проблем нет. По крайней мере пока.
откуда тогда проблема №1?
gar_anat писал(а):А в моей версии все это должно быть в одном нейроне. Результирующий выход один. По сути, в моей версии программный нейрон – это некое устройство (функция), выдающее 0/1 на выходе и должна быть применима к исполняющему устройству (мотор, например). Пока играюсь с двумя/тремя входами, пытаясь организовать внутри логику «И/ИЛИ». Элемент «НЕ», почему-то вообще не смог туда воткнуть.

боюсь некоторые ограничения нейрона преодолеть невозможно, в противном случае это будет уже не нейрон, а некая узкозаточенная программая схема с которой вам уже никто не поможет..
Fayras
 
Сообщения: 118
Зарегистрирован: 15 дек 2010, 16:43
Откуда: Тверь
прог. языки: С++

Re: Что такое хорошо, а что такое плохо?

Сообщение gar_anat » 02 сен 2012, 01:26

Fayras писал(а):
gar_anat писал(а): С функцией активации у меня проблем нет. По крайней мере пока.
откуда тогда проблема №1?
gar_anat писал(а):А в моей версии все это должно быть в одном нейроне. Результирующий выход один. По сути, в моей версии программный нейрон – это некое устройство (функция), выдающее 0/1 на выходе и должна быть применима к исполняющему устройству (мотор, например). Пока играюсь с двумя/тремя входами, пытаясь организовать внутри логику «И/ИЛИ». Элемент «НЕ», почему-то вообще не смог туда воткнуть.

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


Проблема №1 - это отсутствие у меня должного уровня знаний и некорректная формулировка :sorry:
В общем. Мой нейрон имеет N входов и один выход.
Задачи "ядра":
1. Определить какие комбинации входов являются значимыми, убирая не значимые входы и шум.
2. Определить насколько полученные комбинации являются полезными/вредными. Соответственно, реакция меняется от уровня полезности.
В пункте 1 комбинаций входов может быть несколько, и они должны выстроиться в четкую структуру "И"/"ИЛИ". Например: (вход 1 и вход 2) или вход 3 = хорошо для срабатывания этого нейрона. Реакция: сработать с вероятностью 75%.
Насчет узкоточечной программной схемы - так и есть, это узконаправленный программный процессор, сеть из которых и будет моей будущей НС.
Про помощь - тему-то я другую делал, и ответ я получил еще на второй странице. Но что-то закрутилось тут...до сих пор дискутируем, очевидно вопрос применения ИНС живет в умах многих.
Дорогу осилит идущий.
gar_anat
 
Сообщения: 11
Зарегистрирован: 16 окт 2009, 02:57
Откуда: Биробиджан

Re: Что такое хорошо, а что такое плохо?

Сообщение Fayras » 02 сен 2012, 01:36

gar_anat писал(а):
Задачи "ядра":
1. Определить какие комбинации входов являются значимыми, убирая не значимые входы и шум.
2. Определить насколько полученные комбинации являются полезными/вредными. Соответственно, реакция меняется от уровня полезности.

вы пытаетесь впихнуть в один нейрон то что обычно решает сеть нейронов,
с учетов ваших знаний и общих навыков программирования я бы рекомендовал вам чего полегче
Fayras
 
Сообщения: 118
Зарегистрирован: 15 дек 2010, 16:43
Откуда: Тверь
прог. языки: С++

Re: Что такое хорошо, а что такое плохо?

Сообщение Angel71 » 02 сен 2012, 01:36

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

:) это будет просто конечный автомат
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Что такое хорошо, а что такое плохо?

Сообщение Fayras » 02 сен 2012, 01:44

Angel71 писал(а): :) это будет просто конечный автомат

можно и на нейронах гибридов напридумывать, дело вкуса и фантазии..
Fayras
 
Сообщения: 118
Зарегистрирован: 15 дек 2010, 16:43
Откуда: Тверь
прог. языки: С++

Re: Что такое хорошо, а что такое плохо?

Сообщение gar_anat » 02 сен 2012, 01:58

"я бы рекомендовал вам чего полегче"
(Так я и не научился вставлять кусок цитаты)
Хотелось бы, но полегче не входит в мое ТЗ :pardon:
Дорогу осилит идущий.
gar_anat
 
Сообщения: 11
Зарегистрирован: 16 окт 2009, 02:57
Откуда: Биробиджан

Re: Что такое хорошо, а что такое плохо?

Сообщение =DeaD= » 02 сен 2012, 03:31

gar_anat, если вы придумаете "настолько свой" нейрон, то следом вам придется придумывать свои алгоритмы обучения вашей сети. А это мягко говоря - не так уж и просто.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Что такое хорошо, а что такое плохо?

Сообщение Duhas » 02 сен 2012, 03:53

люди, перестаньте говорить "ты не сможешь", "это сложно".. человек выбрал свой путь..
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Пред.След.

Вернуться в Идеи

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6