Технический форум по робототехнике.
Nesenin » 25 авг 2012, 23:04
самая флеймовая тема. еще законы Азимова вспомните.
"хорошо", "плохо" как и "вред", "безопасность" понятия растяжимые. зависят от среды,ситуации,взаимодействующих объектов и собственно самого субъекта, делающего определения (_______добавить условие)
Duhas » 25 авг 2012, 23:19
Dead, имхо, тут все куда интереснее. Например, зарядка в среде где плохо (сыро/жарко/итд), и хорошо и с некоторых уровней заряда АКБ необходимо.. что в случае просто хорошо может легко быть отвергнуто по причине сыро/жарко/итд..
хотя это все опять же оффтоп.. вопрос был о самих факторах, как с ними работать каждый думает сам.. кто то конструкцию на ИФах замутит, кто то нечеткую логику прикрутит.. а кому ИНС подавай.. я так вообще другой путь собираюсь избрать..
=DeaD= » 25 авг 2012, 23:36
Duhas, может оно конечно и "куда интересней", только если есть нормально определенное "плохо", то хорошо можно определить по указанной мной формуле. То что ты описываешь - это уже попытка разобрать причинно-следственную связь. А с точки зрения "хорошо-плохо" для обучения нейросети нужно лишь оценивать "отработанный промежуток времени" на предмет комфортности (там нет планирования - что будет хорошо, а что будет плохо, там только постфактум корректировка связей).
Добавлено спустя 1 минуту 47 секунд:Nesenin писал(а):самая флеймовая тема. еще законы Азимова вспомните.
Вот этого не надо. Тут надо будет разбирать причинно-следственные связи.
Топикстартеру для обучений нейронки всего лишь надо проинтегрировать показания датчиков "плохости" за нужный интервал и выдать интегральный показатель "плохости" на вход обучалки.
gar_anat » 26 авг 2012, 00:06
=DeaD= писал(а):gar_anat, ну вы даёте, если у вас известно, что "плохо" от 0% до 100%, то очевидно, что "хорошо" можно определить так: хорошо=100%-плохо.
С формулой не согласен. Если объект будет находится в пустом помещении и сработает нейрон, отвечающий за команду...допустим захватить предмет, сеть решить что решение 100% правильное. Плохого же ничего не произошло, следовательно 100%-0=100%. Так он и будет стоять и хватать воздух, думая, что все правильно делает

Верный ответ: Хорошего - 0, Плохого - 0. Реакция - ослабить весовое значение.
Что-то я уже сам понял, что какую-то философскую тему запустил, а не предметную. Придется искусственно стимулировать.
Всем большое спасибо, не ожидал столько внимания и такой оперативности.
=DeaD= » 26 авг 2012, 01:16
Неверно. Если он будет стоять и хватать воздух просто так, значит через некоторое время у него кончится питание, а значит это плохо. Вопрос лишь в том, какой прошедший интервал вы оцениваете при обучении.
Добавлено спустя 23 минуты 54 секунды:gar_anat писал(а):Так он и будет стоять и хватать воздух, думая, что все правильно делает

Верный ответ: Хорошего - 0, Плохого - 0. Реакция - ослабить весовое значение.
И да, если вы говорите "ослабить весовое значение", значит вы уже считаете, что это "плохо".
Просто не хотите себе в этом признаться
Добавлено спустя 1 минуту 37 секунд:И еще - когда вы перегружаете робота заранее определенным безумно длинным списком "это хорошо, это плохо" - считайте, что вы уже занимаетесь его прямым программированием, зачем вам нейросеть - становится не совсем ясно, берите тогда нечеткую логику и вперед

Fayras » 26 авг 2012, 03:14
gar_anat писал(а):И вот на этой самой бумажке у меня возникло требование: для обучения гипотетического нейрона необходимо подкреплять действия нейрона положительным/отрицательным стимулом. По принципу, получилось хорошо – закрепить рефлекс, нехорошо – ослабить.
вообще, самое простое - берем любой датчик и в зависимости от того что мы хотим иметь и что контролировать, делим его выходной сигнал на 2 части - условное хорошо\плохо, конечно интерпритацию выхода некоторых датчиков можно оставить на усмотрение сети.
С другой стороны роботу важно реагировать на отрицательные сигналы и для обучения отрицательных сигналов как правило более чем достаточно - фундоментальные механизмы памяти изучали как раз на отрицательном подкреплении, что строго говоря есть не более чем наша интерпритация, поскольку в живых сетях нет разделения стимулов на хорошо и плохо.
kran » 26 авг 2012, 07:55
Жить - хорошо (а хорошо жить - ещё лучше). Отсюда следует, что наоборот - плохо.
Казалось бы - чистая философия (да ещё в несколько юмористической форме). Но на практике применется элементарно:
gar_anat писал(а):Если объект будет находится в пустом помещении и сработает нейрон, отвечающий за команду...допустим захватить предмет, сеть решить что решение 100% правильное. Плохого же ничего не произошло, следовательно 100%-0=100%. Так он и будет стоять и хватать воздух, думая, что все правильно делает

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

esisl » 27 авг 2012, 16:22
Э... По поводу ресурсов. Без специализированного "железа" в нейросетях ИМХО ловить нечего. Писал такую штуку для обработки видеоизображений. Трёхслойная нейросеть 25-25-1 (для матрицы 5Х5) обучалась на 2ГГц проце НЕДЕЛЮ круглосуточной непрерывной работы, чтобы отслеживать края букв. В принципе работает. Но...
=DeaD= » 27 авг 2012, 16:48
Нейросети вроде неплохо должны реализовываться на OpenCL или CUDA.
Fayras » 27 авг 2012, 18:15
esisl писал(а):Э... По поводу ресурсов. Без специализированного "железа" в нейросетях ИМХО ловить нечего. Писал такую штуку для обработки видеоизображений. Трёхслойная нейросеть 25-25-1 (для матрицы 5Х5) обучалась на 2ГГц проце НЕДЕЛЮ круглосуточной непрерывной работы, чтобы отслеживать края букв. В принципе работает. Но...
Процесс обучения может быть существенно более ресурсоемким чем функционирование уже обученной сети.. все это очень вареабельно, можно и один нейрон неделю общитывать.. и да, CUDA сейчас в моде
esisl » 27 авг 2012, 22:41
Дело в том, что математика там:
а) в принципе нехитрая
б) в чистом виде ни каких параллелирующих хитростей не допускающая
Потому, ядро алгоритма, будет отличаться у разных систем категорически непринципиально и занимать пару экранов текста

Возможны однако хитрости типа включения в библиотеки предобученных на типовые задачи сетей. Но их можно использовать только именно в таком качестве. Например, для предварительной "очистки" сигнала от типовых типов шума.
=DeaD= » 28 авг 2012, 00:14
Нейросеть не допускает распараллеливания? Круто.
ALV » 28 авг 2012, 01:42
gar_anat писал(а):моя цель сделать сеть из нескольких штук нейронов, не более 10.
Немого странно: обычно рассматривают сеть нейронов. Сам по себе нейрон - это некий триггер с определенным пороговым значением. И интересен результат срабатывания именно сети (комбинации), причем из довольно большого количества нейронов.
Если вы имеете в виду другое - используйте, пожалуйста, иную терминологию.
CFox » 28 авг 2012, 06:30
Если более обобщить всё, то хорошо это выжить\функционировать для робота =) + припоять ему какую нить цель, дурацкую какую нибудь, но цель. Начинать можно и с 1го нейрона, какой будет 1й такой будет и миллионный. Сам этим занимаюсь и это очень интересно и весело. Желаю всяческих успехов автору
esisl » 28 авг 2012, 18:34
Реализация нейросети на Фон-Неймановской машине параллелить не позволяет. Во всяком случае на классических, даже вот многоядерных машинках ничего не распараллелишь. Там считат особо нечего, там надо данные постоянно передовать по "все-ко-всем".
Для параллеки городят всякие эрзацы типа "неполносвязных графов". Оно работает, но это не для самодельщиков. Пока
