GotAI.NET

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

 

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

 Все темы | Новая тема Стр.1 (27)След. > >>   Поиск:  
 Автор Тема: Программирование поведения робота без доступа к коду
r
Сообщений: 837
Программирование поведения робота без доступа к коду
Добавлено: 24 авг 16 6:02
Тред посвящен проблеме описания неподготовленным человеком правил поведения робота. И, вероятнее всего, используя при этом язык близкий к естественному.
[Ответ][Цитата]
r
Сообщений: 837
На: Программирование поведения робота без доступа к коду
Добавлено: 24 авг 16 6:05
Изменено: 24 авг 16 6:19
Перенесено из темы "Планировщик задач (построитель алгоритмов) для робота"

Цитата:
Автор: Vpolevoj
Цитата:
Автор: Vpolevoj
Кто сумеет написать программу...
Цитата:
Автор: r
Вот этим как раз и занимаюсь

Дело в том, что я для себя (как и обещал) такую программу уже написал, поскольку не считаю эту задачу настолько сложной, чтобы посвящать ей отдельную тему. Поэтому и удивляюсь, почему человек, который задал этот вопрос, сам еще не дошел до конечного результата - до программной реализации. Что мешает?
[Ответ][Цитата]
r
Сообщений: 837
На: Программирование поведения робота без доступа к коду
Добавлено: 24 авг 16 6:12
Изменено: 24 авг 16 6:23
Перенесено из темы "Планировщик задач (построитель алгоритмов) для робота"

Интересен вариант реализации, можно ознакомиться? Могли бы снять видео с демонстрацией.
Мы сейчас о проблеме 1 или о проблеме 2? П.1 сложная с точки зрения трудозатрат. А п.2 сложная еще и алгоритмически. Эта ветка именно по п.2.
Мешает, как обычно, нехватка времени. Мне не только программирование интересно, периодически приходится полностью переключаться.
[Ответ][Цитата]
r
Сообщений: 837
На: Программирование поведения робота без доступа к коду
Добавлено: 24 авг 16 6:13
Изменено: 24 авг 16 6:22
Перенесено из темы "Планировщик задач (построитель алгоритмов) для робота"

Цитата:
Автор: Vpolevoj
Цитата:
Автор: r
Интересен вариант реализации, можно ознакомиться? Могли бы снять видео с демонстрацией.

Я сейчас как раз думаю над этим.
Думаю, как можно показать работу программы, но при этом не раскрывать, так сказать, некоторые её "особые моменты" (ноу-хау), которые мне не хотелось бы разглашать. Как придумаю - покажу.

Цитата:
Автор: r
Мы сейчас о проблеме 1 или о проблеме 2? П.1 сложная с точки зрения трудозатрат. А п.2 сложная еще и алгоритмически. Эта ветка именно по п.2.

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

Но, разумеется, наибольший интерес для нас представляет П.2. (Возможность у робота составления плана своих действий самостоятельно.)

И правильным, на мой взгляд, является разбиение этой задачи на две независимые подзадачи (П.1 и П.2), так как, очевидно, что вторая задача решается посредством первой.

Потому что, если "обычный человек" сможет объяснить роботу "правильную", с его точки зрения, последовательность действий (алгоритм), и робот его поймет, и станет выполнять эту последовательность (пусть и с плачевными для себя результатами, но ведь мы же знаем, что "на ошибках учатся", и хорошо бы, если при этом еще и "на чужих"), то это означает, что и сам робот сможет, если ему дать такую возможность, составлять сам для себя подобные последовательности, руководствуясь какими-то своими внутренними соображениями.

Потому что, если сам механизм "внешнего формирования" алгоритма уже существует, то для перехода к САМО-(программированию) достаточно подменить этот "внешний источник" (Человека) на "внутренний", которым может выступать, скажем, блок Целеполагания робота (или какой-нибудь другой, более правильный, и специально для этого предназначенный). То есть, когда процедура "внешнего задания" алгоритма уже отработана, то остаётся лишь продумать способ "подмены" слов, которые якобы говорит роботу Человек, на точно такие же слова, только сгенерированные самим роботом для себя. И получится этакое "внутреннее" "внешнее" программирование.

САМО-программирование.

Что мы и хотим, собственно, сделать.
[Ответ][Цитата]
victorst
Сообщений: 821
На: Программирование поведения робота без доступа к коду
+1
Добавлено: 24 авг 16 6:25
Язык_действий
Там различают языки описания действий и языки запроса действий.
[Ответ][Цитата]
Vpolevoj
Сообщений: 1408
На: Программирование поведения робота без доступа к коду
Добавлено: 24 авг 16 6:31
Зачем эта задача была вынесена в отдельную тему?
Я же специально написал:
Цитата:
Автор: Vpolevoj
...поскольку не считаю эту задачу настолько сложной, чтобы посвящать ей отдельную тему

Разве кто-то будет её поддерживать? Будет обсуждать?
Кого-то еще (кроме r) интересует вопрос "программирования" робота без программирования - на естественном (близком к обычному) человеческом языке?

Если да, то напишите, какие Вы видите для себя трудности при решении этой задачи? И есть ли они - эти трудности?

И нужно ли дополнительно разбирать мелкие частные вопросы, с этим связанные?

Да, задача такая существует (и мы её уже обсуждали ранее).
Но решение у неё, на мой взгляд, довольно простое.

Поэтому, если кто готов (у кого есть время и желание) - то сделайте, пожалуйста, свой вариант решения этой задачи. Возьмите и напишите такую программу.

А мы потом их обсудим и сравним.
Поскольку, только в этом случае, на мой взгляд, будет о чем говорить.
[Ответ][Цитата]
r
Сообщений: 837
На: Программирование поведения робота без доступа к коду
Добавлено: 24 авг 16 6:38
Изменено: 24 авг 16 6:44
Цитата:
Автор: Vpolevoj
Думаю, как можно показать работу программы, но при этом не раскрывать, так сказать, некоторые её "особые моменты" (ноу-хау), которые мне не хотелось бы разглашать.
Детали реализации раскрывать не обязательно ведь. Достаточно будет того, как выглядит интерфейсная часть для человека, как происходит диалог, при помощи каких инструкций. То есть достаточно такой информации, которая в любом случае будет общедоступна, если такую систему будут использовать.

Цитата:
Автор: Vpolevoj
Зачем эта задача была вынесена в отдельную тему?
В новой ветке есть смысл. Ее все равно пришлось бы создавать когда мне будет что показать. Да и ни моя ни ваша теперешние разработки к той другой теме прямого отношения не имеют.
[Ответ][Цитата]
r
Сообщений: 837
На: Программирование поведения робота без доступа к коду
Добавлено: 24 авг 16 6:56
Изменено: 24 авг 16 6:58
Я бы не волновался по поводу того, кто будет это обсуждать. Ув. кот (и его копии) наклепал здесь кучу веток и преспокойно в них сам с собой обсуждает.

Вижу как минимум два способа реализации, со своими плюсами и минусами:
Первый основан на том, что те инструкции, которые задает человек становятся исходным кодом как бы непосредственно (напрямую) и робот на них повлиять не может. Этот способ выбрал я.
Второй основан на том, что инструкции проходят некоторую обработку роботом, и на основе них робот генерирует исходный код. В этом случае, машина может вмешаться, внести свои коррективы. Склонен предположить, что вы выбрали этот способ.
[Ответ][Цитата]
victorst
Сообщений: 821
На: Программирование поведения робота без доступа к коду
Добавлено: 24 авг 16 7:03
Изменено: 24 авг 16 7:04
Логично было бы вначале разобраться с существующими имплементациями языков описания действий и языков запроса действий.
Что-то из готового попробовать или переписать на свой лад, используя чужой опенсурсный опыт.
И уже после этого сделать ЕЯ надстройку над языком запросов действий.
Думаю, это даст всем нам с вами намного больше конструктива, чем пустая болтовня и демонстрация возможностей API непонятно чего непонятно к чему.
[Ответ][Цитата]
гость
78.25.121.*
На: Программирование поведения робота без доступа к коду
Добавлено: 24 авг 16 7:11
r> Первый
> Второй

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

[Ответ][Цитата]
Vpolevoj
Сообщений: 1408
На: Программирование поведения робота без доступа к коду
Добавлено: 24 авг 16 10:29
Цитата:
Автор: r
Детали реализации раскрывать не обязательно ведь. Достаточно будет того, как выглядит интерфейсная часть для человека, как происходит диалог, при помощи каких инструкций. То есть достаточно такой информации, которая в любом случае будет общедоступна, если такую систему будут использовать.

В этом-то и заключается проблема (для меня).

Я, когда взялся реализовывать эту задачу (сразу после того нашего разговора), то изначально задумывал делать эту программу как демонстрационную, и поэтому по-максимуму старался вывести все внутренние процессы наружу, сделать их по-возможности наглядными. Но по ходу работы, как водится, всплыли всякие разные мелкие проблемы, которые мне пришлось решить. Но теперь, когда всё заработало, то стоит лишь посмотреть (только взглянуть) на интерфейсную часть, чтобы сразу стало понятно, как работает эта программа.

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

Я не знаю, что мне делать. Специально портить и искажать свою программу? Но я не хочу этого делать (да и неправильно это). Выложить её на всеобщее обозрение (в том виде, в каком она есть)? Считаю, что для этого еще слишком рано (пусть для начала кто-нибудь сделает что-то похожее). Тогда "на миру и смерть будет красна".

И что остается? Остается лишь подобрать такой пример, который бы, с одной стороны, показал бы возможности моей программы, но с другой, не раскрыл бы некоторые её "уникальные" стороны. То есть, мне нужно прямо сейчас решить, что я уже готов показать, а что - еще не готов. И попробовать самому уложиться в это придуманное мною же "прокрустово ложе" (если получится).

Цитата:
Автор: r
В новой ветке есть смысл. Ее все равно пришлось бы создавать когда мне будет что показать. Да и ни моя ни ваша теперешние разработки к той другой теме прямого отношения не имеют.

Ладно - создал и создал, что теперь...

А вот что касается отношения Первой задачи ко Второй, то я уже об этом написал.

Вторая задача (само-программирование робота) решается опосредованно через Первую (программирование робота внешним источником с использованием языка близкого к естественному). И - только так. Только такой путь возможен.

Я совсем недавно утвердился в этой мысли (до этого пользовался этим приемом лишь как наиболее простым, как своего рода "обходным"). Сейчас же я считаю, что никаким другим способом задачу Само-программирования не решить. Никакие само-копания в собственных мозгах не помогут. Так как Робот не может непосредственно залезать в код своей программы и произвольно менять его. Такое вот моё теперешнее убеждение.

То есть, у робота должен быть блок "внешнего" программирования, но к которому он может обращаться сам, подменяя тем самым собой легальный "внешний источник" указаний - Человека. И на языке (близком к естественному) он сам себе будет давать указания, тем самым формируя внутри себя новые алгоритмы своего поведения, как бы ПРОГОВАРИВАЯ его. Это - наиболее безопасный путь, и к тому же, он - единственно возможный.

(Это пока что всего лишь моё ИМХО, но я над этим усиленно думал, и готов отстаивать это своё мнение.)
[Ответ][Цитата]
Vpolevoj
Сообщений: 1408
На: Программирование поведения робота без доступа к коду
Добавлено: 24 авг 16 10:58
Изменено: 24 авг 16 11:07
Цитата:
Автор: r

Вижу как минимум два способа реализации, со своими плюсами и минусами:

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

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

Нет. Я пошел другим путём (прямо как В.И.Ленин ).

Чтобы Человек ни задумал, какому бы Алгоритму он ни захотел обучить Робота, всё равно у меня всегда используется один и тот же Алгоритм (так называемый "Универсальный Алгоритм", пример которого я приводил в своей ветке). Поэтому при любом действии Человека в памяти всегда создаётся один и тот же объект, работа с которым описана программно полностью, от и до. И поскольку это "Универсальный алгоритм", и состоит он всегда из одних и тех же блоков, да и их количество тоже всегда одинаково, то оказалось очень удобным запихнуть их все в БД, поэтому любой новый Алгоритм - это всего лишь еще одна запись в БД.

А сам этот Алгоритм изначально состоит из "заглушек", поэтому он работает всегда, с самого момента своего создания. А потом Человек просто конкретизирует - заменяет те или иные "заглушки" какими-то значениями, и алгоритм обретает плоть (но по-прежнему работает). Программа лишь отслеживает правильность ввода команд и соответствие условий и значений (чтобы не было косяков), но никакого "программирования", по сути дела, нет.

Просто создается новый объект - "Универсальный алгоритм", состоящий из "заглушек". А Человек потом заменяет некоторые из его блоков своими значениями, и всё работает. Причем, сам Человек даже не обязан знать, что и где поменялось, а что - осталось невостребованным.

Скажем, человек сказал: "Если идёт дождь - возьми зонтик". В "заглушках" поменялся один блок с условием с изначально стоявшей там логической единицей на проверку "Если идёт дождь", и один исполнительный блок, там, где это условие выполняется, на "возьми зонтик". Все остальные блоки в УА остались как и были - в виде "заглушек".

Как видите, программа (Робот), воспринимает любые указания Человека как прямые инструкции, ничего в них не меняя, но в то же время, они проходят какие-то проверки на вписываемость в Алгоритм и на соответствие.

Просто так получается, что у меня Человек лишен возможности что-либо "испортить" в коде самой программы. Он может лишь нарушить связанность или неправильно составить сам Алгоритм (скажем, у него может получиться так, что робот будет брать зонтик не тогда, когда идёт дождь, а наоборот, когда дождя нет), но при этом "испортить" работу самой программы он всё равно не сможет. Универсальный Алгоритм по-любому будет исполняться, в любом случае.
[Ответ][Цитата]
r
Сообщений: 837
На: Программирование поведения робота без доступа к коду
Добавлено: 24 авг 16 16:43
Изменено: 24 авг 16 16:46
Цитата:
Автор: Vpolevoj
В этом-то и заключается проблема (для меня).
Общедоступные вещи при реальном использовании скрыть от пользователя вряд ли получится. Формат диалога с машиной менять не планируете? Есть ли в планах какие-то доработки?

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

Цитата:
Автор: Vpolevoj
пусть для начала кто-нибудь сделает что-то похожее
Что-то я очень в этом сомневаюсь.

Цитата:
Автор: Vpolevoj
Вторая задача (само-программирование робота) решается опосредованно через Первую (программирование робота внешним источником с использованием языка близкого к естественному). И - только так. Только такой путь возможен.
Ну как бы да. Теоретически, можно было бы перекомпилировать отдельные процедуры динамической библиотеки и переподключать ее. Но это если бы алгоритм полностью строился, а потом выполнялся. Мне же больше нравится идея выполнять алгоритм кусками и строить его по мере выполнения, как бы копая тоннель к цели: копнул лопатой - смотришь результат, копнул - смотришь результат, наткнулся на твердую породу - временно отклоняешься от курса, углубляешься в сторону.
[Ответ][Цитата]
TimKruz
Сообщений: 323
На: Программирование поведения робота без доступа к коду
Добавлено: 25 авг 16 8:11
Изменено: 25 авг 16 11:56, автор изменений: r
Цитата:
Кого-то еще (кроме r) интересует вопрос "программирования" робота без программирования - на естественном (близком к обычному) человеческом языке?

Меня интересует. Я считаю это ключом к универсальному ИИ.

Цитата:
Если да, то напишите, какие Вы видите для себя трудности при решении этой задачи? И есть ли они - эти трудности?

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

Цитата:
И нужно ли дополнительно разбирать мелкие частные вопросы, с этим связанные?

Все вопросы, решение которых не очевидно, должны быть рассмотрены.

Цитата:
Но решение у неё, на мой взгляд, довольно простое.
Поэтому, если кто готов (у кого есть время и желание) - то сделайте, пожалуйста, свой вариант решения этой задачи. Возьмите и напишите такую программу.

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

Цитата:
Так как Робот не может непосредственно залезать в код своей программы и произвольно менять его.

Если робот написан на интерпретационном языке, то нет ничего проще прочитать и на лету изменить код. Но даже если он написан на компилируемом (в байт-код или машинный код) языке, всё равно имеется возможность менять код прямо в оперативной памяти, но для этого нужно знать язык Ассемблера или соответствующий язык байт-кода. Учитывая то, что робот должен научиться языку программирования сам, то нет никакой разницы, на каком языке его писать - все языки теоретически могут менять свой исходный код на лету. Вот только антивирусам это дело не понравится, да и доступ к коду в RAM - штука опасная... А вот с интерпретируемыми языками всё просто и безопасно. Так что предлагаю писать на PHP/JS/Python/Ruby/etc, не имеет значения.

Цитата:
любой новый Алгоритм - это всего лишь еще одна запись в БД.
А сам этот Алгоритм изначально состоит из "заглушек"

Можно было бы использовать скриптовый ЯП, так многие игры делают. Программа анализирует текст и конвертирует его в текст скрипта, заносит скрипт в БД, а по необходимости исполняет с помощью встроенного интерпретатора. Такой подход минимизирует расход памяти - никаких лишних "заглушек" записывать в БД не нужно.

Цитата:
Скажем, человек сказал: "Если идёт дождь - возьми зонтик". В "заглушках" поменялся один блок с условием...

Каким образом программа разделяет предложения на условия и действия? Это очень нетривиальная задача для естественного языка. Если кто-то её полностью решит, то можно сказать - СИИ изобретён, останется только натянуть этот алгоритм на скелет...

Цитата:
Теоретически, можно было бы перекомпилировать отдельные процедуры динамической библиотеки и переподключать ее.

Юзай интерпретируемые языки, бро! И перекомпилировать не придётся (но скорость снизится).

***

А теперь я расскажу о своём варианте решения этой задачи.

Его суть заключается в подражании действиям человека или любого другого меняющегося во времени объекта - эту функцию в мозгу некоторых животных и человека исполняют малоисследованные зеркальные нейроны. Но я не использую нейросети.

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

Эта идея вовсе не нова - уже давно существуют программы, записывающие "макросы" с действий пользователя, но что-то они малопопулярны. Макрос - это такая программа, которая совершает действия над программами в ОС за пользователя, если кто не знал. Макросы обычно пишут на ЯП (например, AutoIt! Script), но, как я уже говорил, можно записать действия пользователя и повторять их по нажатию кнопки или событию в системе.

Т.к. моя программа универсальна, её можно будет встроить в робота, и тогда чтобы научить робота, например, танцевать, нужно будет расположить его конечности и тело в пространстве так, как захочется, и тогда робот поймёт, какие действия ему нужно выполнять, когда он услышит фразу "танцуй!" (будет создана ассоциативная связь между получением этой фразы и последовательностью требуемых действий).

Это тоже не новая идея, в программах для анимации, например, в Blender, так создаётся анимация - пользователь выставляет "кости" модели в ключевых позициях, и программа составляет анимацию, экстраполируя ключевые позиции.

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

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

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

Такие дела, ребятки.
[Ответ][Цитата]
Эгг
Сообщений: 13015
На: Программирование поведения робота без доступа к коду
Добавлено: 25 авг 16 8:24
Изменено: 25 авг 16 11:56, автор изменений: r
Два ключа дам.

Большой разницы между компилируемыми и интерпретируемыми языками нет. Самое главное понимать, что текст, который существует как программа (инструкция, скрипт, операционная цепочка, технология) в какой-то момент преобразуется к некоторому выполняемому коду. Который можно условно считать эффекторным слоем системы.

Программирование на естественном языке не просто возможно, но уже есть реальные макетики, на которых это хозяйство демонстрируется (на ограниченном ЕЯ), даст Б-г покажу. Но надо очень четко понимать, что естественный язык - это не более, чем интерфейс, за которым лежат более глубокие, фундаментальные и мощные инструменты. Мышление к языку не сводится.
[Ответ][Цитата]
 Стр.1 (27): [1]  2  3  4  5  ...  27След. > >>