Технический форум по робототехнике.
Самоцитирование:=Dead= писал(а):kran, вы можете оценить по этой картинке, правильно ли работает программа из этих классов?
Оценивать правильность обучения можно другими средствами. А графики выводить только для правильных попыток обучения.kran писал(а):Разумеется, по ней нельзя сказать, что делает программа, правильно сделала или нет.
В MatLab'е можно сделать всё. Тут недавно swarm обсуждали, так я, погуглив, нашёл рой агентов, реализованный в MabLab. Стая "птиц" из вытянутых тетраэдров летала между цилиндрических "скал", 3D, почти в реальном времени. Но всё-таки специализированный софт делает специальные вещи удобнее и быстрее. Особенно всяким чайникам. А любой начинающий всегда чайник, по определению.Duhas писал(а):я бы вообще всем не брезгующим "веществами" посоветовал выкачать с торрентов Matlab.. удобная среда с кучей тулбоксов..
kran писал(а):Возможно, визуально будет заметно, чем правильные отличаются от неправильных. И даже отличать одни неправильные от других неправильных.
=DeaD= писал(а):kran писал(а):Возможно, визуально будет заметно, чем правильные отличаются от неправильных. И даже отличать одни неправильные от других неправильных.
Напоминает:
- Как делают кораблики в бутылках?
- В бутылку засыпают разные щепки, клей и всякую фигню, а потом трясут. Иногда получаются кораблики.
Да нет же, напоминает обучение человека: показывают ему 10 бутылок с корабликами... Нет, это жестоко. Показывают просто 10 наборов щепок и 10 корабликов, собранных из этих наборов (первый из первого, второй из второго). Тренируют на этих 10 наборах, пока не будет получаться (током его, током... и напряжение зависит от кривизны рук). А потом дают другой набор щепок, которого нет в предыдущих 10. Одинадцатый набор. И говорят: "сделай кораблик". Если не получилось, то никакого тока. Тока расстрел на месте.=DeaD= писал(а):Напоминает:
- Как делают кораблики в бутылках?
- В бутылку засыпают разные щепки, клей и всякую фигню, а потом трясут. Иногда получаются кораблики.
kran писал(а): Но всё-таки специализированный софт делает специальные вещи удобнее и быстрее. Особенно всяким чайникам. А любой начинающий всегда чайник, по определению.
kran писал(а):Т.е. топик-стартер должен не просто сказать "показания датчика влажности > 20% - плохо".
kran писал(а):Я бы ещё добавил на входы сети несколько предыдущих значений S, сохранённых в памяти. Надеюсь, это не противоречит теории.
kran писал(а):Я знаю, я всё очень сильно упростил, это частный случай. Но я не слишком перестарался с упрощением, в принципе верно ведь?
kran писал(а):А потом дают другой набор щепок, которого нет в предыдущих 10. Одинадцатый набор. И говорят: "сделай кораблик". Если не получилось, то никакого тока. Тока расстрел на месте.
Насколько я успел понять, суть не в том, знаем ли мы вектор по одному измерению. Для датчика влажности как раз отлично знаем: "чем влажнее, тем хуже". Но нельзя так напрямую программировать для многомерного пространства, где ИНС обычно применяют.=DeaD= писал(а):Это если мы умеем учить по 1 итерации и знаем, какой целевой вектор нам нужен.
Почти всегда мы этого не знаем, иначе прямо бы запрограммировали всё
Я сначала напомню, с чего началось:=DeaD= писал(а):Можно еще замыкать выходы сети на входы и строить прочие нелинейные нейросети.kran писал(а):Я бы ещё добавил на входы сети несколько предыдущих значений S, сохранённых в памяти. Надеюсь, это не противоречит теории.
Фактор времени меня беспокоит. Оценка настоящего по прошлому. Вот почему я решил, что целесообразно на входы нейросети добавлять предыдущие показания датчиков (5 секунд назад, 30 секунд назад). Иначе как определить, что робот БЫЛ в воде, а СЕЙЧАС на суше? Ну и тут ещё датчик заряда надо приплести, сейчас и раньше. И эталонный расход в спокойном положении для текущего положения заряда, учитывая режим разряда. Чтобы робот не нервничал, что у него заряд БЫЛ больше, а СЕЙЧАС - меньше. Если расходуется как ему положено расходоваться - значит "хорошо" (в сочетании с другими "хорошими" параметрами, всё оценивается в комплексе, сам себе напоминаю).gar_anat писал(а):1. «Поедание» пальчиковых батареек. Сам процесс зарядки априори хорошо, но ежели бот найдет пальчиковую батарею и «съест» ее, это хорошо, очень напоминает систему питания живых существ.
2. Выход из зоны раздражения в спокойную зону. Если робот стоит по самый клиренс в воде и выбрался на сушу – думаю это хорошо.
3. Дальше придумать не могу….
Нашёл парочку. Neural Network Toolbox и OXlearn. В руководстве к последнему написано, что можно легко заглянуть под капот и заточить под себя. Надо полагать, что тулбоксы пишутся целиком на языке MatLab?Duhas писал(а):а и говорил что там есть тулбоксы.. в частности для ИНС..kran писал(а): Но всё-таки специализированный софт делает специальные вещи удобнее и быстрее. Особенно всяким чайникам. А любой начинающий всегда чайник, по определению.
Хм. А действительно интересно. Вот имеем мы статистику жизни роботов. Какие состояния из каких жизней считать хорошими? Опять возвращаемся к вопросу топика.=DeaD= писал(а):Оценивать качество работы ИНС по времени жизни особи - не очень понятный вариант.
Вот это не понял. Я тут немного инструментарий посмотрел на скриншотах. Вроде как строго разделяют этапы: обучаем, валидируем, тестируем. Т.е. математическая сеть потом не учится сама. Самообучаемые агенты на нейросетях, которые по жизни учатся, они есть, но они более сложную схему имеют, там не одна только сеть.=DeaD= писал(а):Внутри жизни ей бы тоже нужно учиться, если мы хотим брать за основу природу.
Опять не понял. Сеть существует вне времени. Обучалки так устроены, что состояния не зависят друг от друга. Нет никаких последовательностей, состояния можно перемешать как угодно. Нет, не так? Иначе ведь придётся оперировать не состояниями, а последовательностями состояний. И тогда нужно подавать какие-то сигналы "начало новой последовательности", или иметь параметр "длина последовательности". А ничего подобного я пока не встречал. Пример: распознавание букв - буквы показываем по одной, распознаём по одной. А не слова и "Войну и мир" распознаём.=DeaD= писал(а):И по памяти - там надо будет скорее допиливать обучалку, чтобы она могла поощрять или колбасить связи, которые сработали 5-10-15-20 секунд назад, потому что это привело к "плохо" сейчас.
Я предлагал оценивать именно состояния, но по признаку принадлежности к удачному фрагменту удачной жизни. И в обучающую выборку будут попадать состояния из жизней, а не жизни целиком. И все состояния в выборке можно будет перемешать как угодно перед обучением.=DeaD= писал(а):kran, вы всё смешали
Оценивают "прожитую жизнь особи" целиком обычно при генетических алгоритмах.