roboforum.ru

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

Пробуем создать общительного робота.

Re: Пробуем создать общительного робота.

Scorpio » 19 сен 2020, 19:11

А с робофорумботом чем закончилось?

Re: Пробуем создать общительного робота.

Виктор Казаринов » 19 сен 2020, 19:45

Scorpio писал(а):А с робофорумботом чем закончилось?

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

Re: Пробуем создать общительного робота.

Scorpio » 19 сен 2020, 19:52

Будем ждать. Хотелось бы еще в этой жизни, конечно, успеть с ним пообщаться )))

Re: Пробуем создать общительного робота.

Виктор Казаринов » 20 сен 2020, 08:55

Здесь в популярной форме рассказано о технологическом барьере, который отделяет современные чат-боты типа Siri или Алиса от системы, понимающей смысл текста:


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

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

Re: Пробуем создать общительного робота.

Scorpio » 20 сен 2020, 18:36

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

Re: Пробуем создать общительного робота.

Виктор Казаринов » 21 сен 2020, 08:36

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

Дайте ссылку на прототип такого чат-бота.

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

Re: Пробуем создать общительного робота.

PavelZ » 27 сен 2020, 17:48

Даже самые продвинутые системы, как та же Алиса, в состоянии только отвечать на вопрос заранее запрограммированным набором фраз, плюс приводить, как бы релевантные выборки информации из разнообразных баз знаний. Я больше скажу, не много людей смогут сразу дать исчерпывающий ответ, даже в той области знаний, в которой они компетентны, тем более если вопрос задан витиевато, нельзя сразу определить контекст и серьёзность. Проще всего детям и подросткам, которым не сложно что-то придумать по ходу, заменив знание фантазией... "Думающей машине" нужно не просто уметь моделировать окружение, но и иметь свою собственную систему качественной оценки, как отдельных образов, так и во взаимодействии их между собой в коллекциях. Только реализация Языка Образов и аналога чувственного восприятия в интеллектуальном агенте позволит решить вопрос. Жалко, что мне приходится одному работать над этим, помощь иногда приходит со стороны, но её не достаточно. Виктор делает свою собственную систему моделирования окружения и её качественной оценки. Он так же работает один, а с учётом сложности задачи, маловероятно, что он сможет её решить в одиночку в ближайшем будущем...

Добавлено спустя 2 минуты 58 секунд:
Да и самое главное, это не просто ответы на вопросы, а способность системы задаваться такими вопросами самостоятельно. Прогнозировать развитие событий, в будущем, по различным сценариям, с оценкой их вероятности и нравится интеллектуальному агенту это или нет)

Re: Пробуем создать общительного робота.

Scorpio » 27 сен 2020, 19:07

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

Re: Пробуем создать общительного робота.

smur » 11 окт 2020, 14:23

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

Re: Пробуем создать общительного робота.

Scorpio » 13 май 2023, 19:42

Scorpio писал(а):Для начала надо конкретизировать задачу. Например чат-бот для робофорума, который будет давать ответы в теме для новичков "Задал вопрос - получи!". Сначала он будет просто ругаться на новичков и гнобить их (как сейчас и делают форумчане), но потом, постепенно будет умнеть, накапливать знания и учиться толерантности. Назвать можно соответственно РОБОБОТ.

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

Вопрос из темы «Вопросы новичка»:
какой посоветуете минимальный набор программ/утилит для написания программ на C++(желательно с поддержкой 11 стандарта) для успешной компиляции и прошивки микроконтроллера. Конечно было бы неплохо если бы это была некая надстройка над IDE Eclipse.
Ответ Chat GPT:
Для разработки программ на C++ с поддержкой стандарта C++11 для компиляции и прошивки микроконтроллеров, вы можете использовать следующий минимальный набор программ и утилит:
1. Компилятор C++: Может быть GCC (GNU Compiler Collection) или Clang. Они оба поддерживают C++11 стандарт и имеются в составе многих различных IDE и инструментальных наборов.
2. Среда разработки (IDE): Eclipse IDE for C/C++ Developers - это бесплатная и популярная среда разработки, которая поддерживает C++ и имеет множество плагинов и расширений для работы с микроконтроллерами.
3. Библиотеки и заголовочные файлы: Для разработки программ для микроконтроллеров, вам может потребоваться набор библиотек и заголовочных файлов, специфичных для вашего микроконтроллера или платформы. Они предоставляют API и функциональность для взаимодействия с аппаратными компонентами микроконтроллера.
4. Программа для загрузки прошивки: Для прошивки микроконтроллера вам понадобится программа для загрузки прошивки на микроконтроллер. Например, для многих популярных микроконтроллеров можно использовать программу STM32CubeProgrammer или AVRDUDE для микроконтроллеров AVR.
5. Отладчик: Для отладки программ на микроконтроллерах может потребоваться отладчик, который позволяет отслеживать выполнение программы на уровне исходного кода. Например, для микроконтроллеров STM32 можно использовать программу STM32CubeIDE, которая предоставляет интегрированную среду разработки с отладчиком.
Помимо вышеперечисленных программ и утилит, также может быть полезным изучение документации, примеров кода и сообществ разработчиков, специализированных на микроконтроллерах, которые вы используете. Это поможет вам получить полное представление о процессе разработки и решении проблем, связанных с конкретной платформой микроконтроллера.

Вопрос из темы «Вопросы новичка»:
Допустим у меня есть led шкала (на 10 диодов), каждый диод я подключил напрямую к плате (резисторы и т.п. в схеме присутствуют), но я тем самым занял почти все пины на плате, допустим если я захочу добавить ещё 1 шкалу в некоторое абстрактное устройство - я не смогу его подключить к плате?
Ответ Chat GPT:
Если вы уже используете большинство пинов на плате для подключения светодиодной шкалы и вам нужно добавить ещё одну шкалу, то возможно у вас не останется достаточно свободных пинов для подключения новой шкалы напрямую к плате.
В этом случае у вас есть несколько вариантов:
1. Используйте расширительные модули: Вы можете использовать специальные расширительные модули, такие как модули расширения портов GPIO (General Purpose Input/Output), которые позволяют увеличить количество доступных пинов для подключения устройств. Эти модули обычно подключаются к основной плате через интерфейсы, такие как I2C, SPI или UART, и могут предоставить дополнительные пины для вашей светодиодной шкалы.
2. Используйте мультиплексирование: Мультиплексирование (multiplexing) - это техника, которая позволяет управлять несколькими устройствами, используя меньшее количество пинов. Вы можете использовать мультиплексирование для подключения нескольких светодиодных шкал к ограниченному количеству пинов на плате. Техника мультиплексирования требует дополнительной логики и программного управления для выбора конкретной шкалы в определенный момент времени.
3. Используйте другую плату или микроконтроллер: Если у вас не хватает пинов на текущей плате, вы можете рассмотреть возможность использования другой платы или микроконтроллера с большим количеством доступных пинов. Это может потребовать дополнительной работы по переносу вашего программного кода и настройке нового устройства.
4. Разработайте свою собственную плату: Если ни один из вышеуказанных вариантов не подходит, вы можете разработать собственную плату или расширительный модуль с нужным количеством пинов и функциональностью, соответствующей вашим потребностям.
Важно тщательно спланировать аппаратную архитектуру и ресурсы заранее, чтобы иметь достаточно пинов и возможностей для подключения всех необходимых устройств в вашем конечном устройстве.

Вопрос из темы «Вопросы новичка»:
Можешь помочь оптимизировать этот код:
Код: Выделить всёРазвернуть
////////////////////////
//
// Arduino UNO
//
////////////////////////
//
// Программа плавное зажигание на 4 светодиода /
// с переменной частотой нарастания /

unsigned int k;
unsigned int n;
unsigned int i;


void setup()
{
   
    for ( n = 1; n <= 4; n++)
    {
        pinMode(n, OUTPUT);
        digitalWrite(n, LOW);
    }
}

void loop()
{
         for ( k = 100; k <= 1000; k=k+100)
    {
            for (n = 1; n <= 4; n++)
         {
               for (i = 1; i <= k; i=i+1)
            {
                 digitalWrite(1, HIGH);
                 digitalWrite(2, HIGH);
                 digitalWrite(3, HIGH);
                 digitalWrite(4, HIGH);
                   delay(n);
                 digitalWrite(1, LOW);
                 digitalWrite(1, LOW);
                 digitalWrite(2, LOW);
                 digitalWrite(3, LOW);
                 digitalWrite(4, LOW);
                   delay(5-n);
            }
         }
    }
}

//
// Конец /
//
////////////////////////

Ответ Chat GPT:
Конечно! Вот оптимизированный код:
Код: Выделить всёРазвернуть
////////////////////////
//
// Arduino UNO
//
////////////////////////
//
// Программа плавное зажигание на 4 светодиода /
// с переменной частотой нарастания /

const unsigned int numLEDs = 4;
const unsigned int fadeIncrement = 100;

void setup()
{
    for (unsigned int pin = 2; pin <= 5; pin++)
    {
        pinMode(pin, OUTPUT);
        digitalWrite(pin, LOW);
    }
}

void fadeLEDs()
{
    for (unsigned int i = 0; i <= 255; i++)
    {
        for (unsigned int pin = 2; pin <= 5; pin++)
        {
            analogWrite(pin, i);
            delay(5);
        }
    }

    for (unsigned int i = 255; i > 0; i--)
    {
        for (unsigned int pin = 2; pin <= 5; pin++)
        {
            analogWrite(pin, i);
            delay(5);
        }
    }
}

void loop()
{
    for (unsigned int k = fadeIncrement; k <= 1000; k += fadeIncrement)
    {
        fadeLEDs();
    }
}

//
// Конец /
//
////////////////////////

Основные оптимизации:
1. Заменена функция digitalWrite на analogWrite для достижения плавного изменения яркости светодиодов. Для этого соответствующие пины должны быть подключены к ШИМ-совместимым пинам (например, пины 3, 5, 6, 9 и 10 на Arduino UNO).
2. Использован цикл for для управления инкрементом значения яркости и упрощения кода. Таким образом, необходимость в переменных k, n и i и циклах while была устранена.
3. Значение переменной numLEDs используется для определения количества светодиодов и для установки пинов вывода в цикле for.
4. При изменении яркости светодиодов используется задержка delay(5), чтобы обеспечить плавное изменение яркости

Обратите внимание, что для использования функции analogWrite для управления яркостью светодиодов, они должны быть подключены к ШИМ-совместимым пинам на Arduino, как указано в коде (пины 3, 5, 6, 9 и 10 на Arduino UNO).

И так далее...
Интересно, можно ли прикрутить API Chat GPT к движку форума?

Re: Пробуем создать общительного робота.

Виктор Казаринов » 14 май 2023, 10:58

Scorpio писал(а):Посмотрим, как с этой задачей справляется новомодная игрушка.

К сожалению, в трансформерах имеется один фундаментальный порок. Они много врут или по культурному - галлюцинируют. Это не дает возможности применять их в промышленных проектах, медицине, управлении и т.д. Над решением этой проблемы бьются. Но т.к. в GPT в принципе отсутствуют некоторые компоненты из тех, что по моему мнению должны быть в искусственных мыслящих системах, то построение сильного искусственного интеллекта еще не произошло.
В игрушечных задачах ChatGPT хорош. Однако уже собираются создавать профессию промпт-инженера по уговариванию GPT, чтобы он правильно "понимал" и исполнял.
В профильной группе телеги я общаюсь с непосредственными разработчиками российских аналогов ChatGPT, поэтому в курсе множества тонкостей организации подобных систем. И все-таки я продолжаю разработку системы на собстенном подходе на основе онтологий, которые перед нейросетями имеют как недостатки, так и преимущества.
Эта работа идет с трудом. Но идет. В конце января я разработал операционную систему FEMTOS на ассемблере x86-64 с экзоядром для основы моей системы ИИ. И на эту ОС перенес онтологический движок.
На основе ранее здесь описанного AIGod Personal Assistant веду разработку системы, которая с помощью голосового диалогового общения смогла бы сначала проектировать 3D детали, а затем распечатывать их на 3D принтере.

Re: Пробуем создать общительного робота.

Scorpio » 14 май 2023, 18:00

Интересно!

Добавлено спустя 2 часа 35 минут 56 секунд:
Виктор Казаринов писал(а): Они много врут

Да, даже в моем примере это заметно:
Заменена функция digitalWrite на analogWrite для достижения плавного изменения яркости светодиодов. Для этого соответствующие пины должны быть подключены к ШИМ-совместимым пинам (например, пины 3, 5, 6, 9 и 10 на Arduino UNO).
Хотя в программе продолжает использовать пины 2 и 4, которые работать не будут.
Использован цикл for для управления инкрементом значения яркости и упрощения кода. Таким образом, необходимость в переменных k, n и i и циклах while была устранена.
Хотя никакого while в изначальном коде не было.
Но, GhatGPT способен вести диалог и учиться на своих ошибках, если ему на них указывать.
Виктор Казаринов писал(а):веду разработку системы, которая с помощью голосового диалогового общения смогла бы сначала проектировать 3D детали, а затем распечатывать их на 3D принтере.

Даже словесно описать 3D деталь уже задача не простая для пользоваталя. С другой стороны, если деталь выбирается из огромной БД готовых моделей, с небольшими модификациями, то задача для ИИ не такая уж и сложная. Другой вариант - переводить голосовые команды в язык какого-нибудь OPENSCAD, что тоже кажется не сложно. Хочу сказать, что может и не нужны онтологии для такой задачи.

Re: Пробуем создать общительного робота.

Виктор Казаринов » 15 май 2023, 13:55

Scorpio писал(а):Даже словесно описать 3D деталь уже задача не простая для пользоваталя. С другой стороны, если деталь выбирается из огромной БД готовых моделей, с небольшими модификациями, то задача для ИИ не такая уж и сложная. Другой вариант - переводить голосовые команды в язык какого-нибудь OPENSCAD, что тоже кажется не сложно. Хочу сказать, что может и не нужны онтологии для такой задачи.

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


Rambler\'s Top100 Mail.ru counter