Меня зафрахтовал заказчик очередной банальной задачей: сделать бот—агент для чата его биллинга. Ну, можно поискать готовенькие роботы, наверняка выложили. У Билайна в чате такая гадость сидит, не нейросеть, конечно, никакая, а тупо смотрит по ключевым словосочетаниям и на них реагирует. Яндексовская Алиса – тоже не нейросеть, а столь же банальная самоделка, хотя они в нее вбухали чудовищные ресурсы и время.
Конечно, заказчик тоже получит простейшую хрень, тем более, что хочет результат через неделю.
Но подумалось, а возможно ли сделать чат-бот в самом деле разумным на основе уже имеющегося выделенного сервера и посильного времени?
phpуже не пойдет, нужно делать на ГО (гугловская golang– который выдает загружаемый на сервер exe-файл проекта, работающий с производительностью конечного ассемблера). И на нем можно было бы попробовать реализовать сначала послойное обучение примитивам восприятия и примитивам ответов, а потом – добавлять все более адаптивные принципы вплоть до системы реагирования на новые ситуации.
Будет единственный сенсор – анализатор слов – как анализатор пикселей сетчатки глаза. Первый слой распознавателей формирует все самые простые словосочетания, которые попадаются в реальных текстах (эти тексты нужно скармливать на время формирования слоя). Первый слой становится теперь сенсором: в нем при восприятии фразы активируются распознанные словосочетания. Никакой значимости, никакой обратной коррекции пока нет.
На основе первого слоя запускается формирования второго – более сложных словосочетаний, за счет все тех же текстов. Теперь тексты подбираются уже по тематикам и эмоциональным доминантам.
У системы уже заранее нужно сформировать первый слой системы значимости с общей основой – плохо-хорошо. И, когда идет текст ужастика, нужно заранее активировать соответствующий эмоциональный контекст. Это – как бы аналог вторичной зоны коры. Разница в том, что если в состоянии голода воспринимаются типичные картины недостаточности еды, а в состоянии наелся – картины только что съеденного, то для искусственного развития нужно будет подставлять тексты в соответствии с заранее включенным состоянием.
Уже на этом этапе сложность: машине пофиг еда, но, чтобы она понимала человечьи тексты, ей придется имитировать и человечьи состояния.
Пожалуй, это – самое сложное различие, потом, когда основы системы значимости будут сформированы, остальное уже не будет иметь различия.
Так что так можно было бы пройти стадию формирования условных рефлексов и перейти к стадии адаптивности к новым ситуациях на основе уже имеющегося задела.
Все это видится дико сложным во всех этапах реализации, хотя сама реализация позволяет делать все постепенно, а не сразу конструировать конечную систему. Т.е. бот можно развивать поэтапно. Это – уже большой плюс. Но никакой промежуточный результат никому не нужен и никого не убедит, а чтобы пройти путь до конца нужно не представимое время.
Если у меня появился совершенно ясное, до уверенности, понимание как реализовать пока смутные моменты, то я, пожалуй, смогу решиться начать делать эту штуку. Заодно получше освою Го :)
Palarm личная фото-галерея 2020-12-20 16:59:21 |
Так это можно делать и не как заказ. Запустил в сеть химеру - и пусть она себе там растет, а ты наблюдай и думай дальше. По поводу сложности и времени - если делать понемногу каждый день, через год будет сделано очень много. Я всегда полагал, что без прототипа все разговоры об ИИ - просто трескотня, даже если она и адекватная. Кроме того, прототип придаст смысл всей твоей многолетней деятельности. Ты же не для того столько килотонн инфы перемолотил, чтобы просто умничать где сознание начинается, а где кончается. По поводу значимости - согласен. Все начинается с определения базовых постулатов, что такое хорошо и что плохо. А это думается никак не возможно без имитации искуственного гомеостаза, так же закрученного на жизни и смерти. Что продлевает жизнь хорошо, что укорачивает плохо. Для бота "пища" - это информация, пища продлевает жизнь, голод укорачивает. Но еда бывает разная. Стало быть, надо икуственно заложить свойства продукта продлевающего/укорачивающего жизнь. То есть сделать информацию съедобной/не съедобрной - вплоть до ядовитой. Что именно считать ядом - не суть. Но это задаст вектор развития бота, его первичный центр рая и ада, от которого потом можно выстроить сколь угодно сложную рефлексию. Для меня пока более менее очевидны 2 начальных слоя формирования первичных примитивов: на первом происходит дефрагментация проецируемых объектов по логике И, на втором группировка фрагментов по логике ИЛИ. Все делается полностью автоматически при условии одновременного показа на матрице однотипных макроэлементов. То есть проецируя на нее квадраты разных размеров и повернутыми под разными углами дефрагментированные вертикальные/горизонтальные прямые определятся на втором слое как принадлежащими одной группе. Но вот как потом определить, что активация этих прямых означает именно квадраты, а не прямоугольники, решетки или просто закрашенный сплошной фон? Для этого нужны допонительные маркеры типа опорных точек, фиксация координатной сетки, активация определенных узлов которой и покажет вероятность, что фигуры скорее квадраты чем прямоугольники. Так же очевидна необходимость обратной связи, регулирующей параметры нейросети: порог возбуждения, тормозные связи, и возможно коэфф. веса связей, имитирующий электротонический способ передачи возбуждения в сетчатке. Кроме того, я думаю модель зрительного анализатора универсальна и наглядна для описания любой другой сенсорной матрицы. То есть все принципы распознавания графических фигур справедливы и для распознавания текстов, звуков и прочего потому, что все это можно представить в виде графических примитивов. |
linuxoid личный сайт личная фото-галерея 2020-12-20 21:53:06 |
А проблема с латеральным торможением до сих пор не решена? Приходится довольствоваться циклом? |
Palarm личная фото-галерея 2020-12-21 04:35:30 |
Её не возможно в принципе решить централизованным расчётом в децентрализованной нейросети. Нужно запараллелить расчёты для каждого элемента, число ядер процессора сделать по числу узлов решётки. |
nan личный сайт личная фото-галерея 2020-12-21 07:09:27 |
Решение - только в создании сети на дискретных элементах, а не программной эмуляции. |
nan личный сайт личная фото-галерея 2020-12-21 16:31:12 |
Все упирается в огранизацию системы значимости у бота и я пока не вижу достаточно приемлемого решения. Т.к. на него воздействуют только слова, то нет сдвигов его "гомеостата", а чтобы добраться до смысла слов, нужна именно базовая значимость. Яндекс для Алисы распознает эмоциональный контекст, точнее тему по фразам, т.е. там заранее задаются возможные темы, для которых пишутся "навыки" Алисы. Это, конечно, неприемлемо. Зато ясно каким должен быть сенсор, вот тут просто. Это - массив с индексами в виду слов и со значениеми - просто порядкового номера сло. Т.е. - матрица, активирующаяся при появлении слов в воспрнимаемой фразе. Тут и начинается нейросеть. |
watts 2020-12-21 17:43:14 |
Не очень понятно - бот должен воспринимать по человечески (иметь личный гомеостаз) или оценивать гомеостаз как результат коммуникации с человеком ? Значимость для чего ? |
Palarm личная фото-галерея 2020-12-21 18:10:34 |
Живые организмы подвержены воздействию внешней среды, что запускает адаптацию. В природе заложены физические законы, например если сунуть руку в огонь она сгорит. Возникает адаптация не делать этого. Надо создать виртуальный мир для бота со своими законами. Если вся его вселенная это буквы и слова, значит они должны обладать свойствами повышающими или понижающими степень комфорта бота. Они для него не абстракция, а реальные сущности. Чтобы стать абстракциями во вселённую бота надо ввести сущности более высокого порядка, например картинки. Тогда слова станут описаниями картинок и например слово яд станет просто словом, а картинка яд - настоящим ядом. И так далее, все более углубляя вселённую бота, ты будешь провоцировать его создавать все более глубокие абстракции. Вообщем у бота должны быть проблемы при взаимодействии с объектами. В реальности ведь так и есть. В раю не может быть интеллекта в принципе. |
Palarm личная фото-галерея 2020-12-21 18:31:36 |
Это кстати ещё один довод в пользу физического прототипа. Там то проблемы с базовыми значимостями нет. Не зарядил вовремя аккумулятор - сдох, полез куда то по лестнице и свалился, поломав манипуляторы - опять не камильфо. У бота ничего этого изначально нет. Создавать виртуальный ИИ без виртуальной вселенной это значит отправить его в пустоту. |
watts 2020-12-21 18:43:10 |
По-видимому нужно сделать пустую шкалу гомеостаза и на нее обучать глубокую сетку - нужен всего лишь миллион китайцев для тестовой выборки с разметкой вручную.) Но это все равно топорная эмуляция. |
nan личный сайт личная фото-галерея 2020-12-21 19:11:25 |
Никакой глубокой сетки с обучением сразу всей, только послойное развие. |
Palarm личная фото-галерея 2020-12-21 19:12:58 |
Не все так страшно на самом деле. Если речь о простейшем боте, то и мир его восприятия простейший. Например забить ему в параметры вселенной алфавит из 33 букв, поделив их на две группы: плохие и хорошие. У каждой буквы свой уровень плохости/хорошести. И пусть он глотая слова переваривает их, определят вкусовые оттенки и получая соответствующие степени комфорта/дискомфорта. Это позволит создать ему свои абстракции и выработать стили поведения. То есть для начала можно попытаться сделать примитивную амебу. Потому как сто пудов по ходу дела вылезет множество любопытных неожиданностей, которые надо будет осмыслить. Поэтому сразу эволюционно прыгать вперёд не стоит. |
nan личный сайт личная фото-галерея 2020-12-21 19:21:25 |
Нет, не алфавит, а ~5000 выбранных слов. У меня уже есть прога для такой выборки. И то невозможно отнести какие-то слова к плохому и хорошему. А важно, чтобы уже при формирования второго слоя были такие привязки. Обычно они происходят в зависимости от текущего контекста значимости, а вот как его задавать если нет ничего адекватно отражающего состояние бота?,. Думал, уже о скармливании заведомо тематических текстов и каждый раз чтобы задавалась фоновая значимость: читаешь ужастики, читаешь про любовь, читаешь кулинарию и т.п. И тогда можно было бы создать множество тем.ю в контексте которых создавались бы характерные для них примитивы словосочетаний. Но что-то это вырисовывается не слишком убедительно. |
Palarm личная фото-галерея 2020-12-21 20:54:00 |
У бота может быть усталость, постепенно нарастаюшая по мере чтения. И если ты в начале, когда он свеж и бодр будешь подсовывать ему веселые тексты, а в конце, когда он начинает уставать грустные, он и свяжет свое состояние с теми примитивами, которые там определит, поделив их на плохие/хорошие в разной степени. |
watts 2020-12-21 22:55:34 |
Nan , кстати , возможно с помощью латерального торможения получить сетку столь же точную как глубокие ? То есть понятно что смысл в нее другой вложен , но в принципе - возможно или нет ? |
Palarm личная фото-галерея 2020-12-22 03:49:33 |
Думаю любому ИИ, даже самому примитивному виртуальному, обязательно наличие фазы сна для гашения активностей, к этому и надо прицепиться, введя еще дополнительный параметр усталости и получив тем самым простейшую модель гомеостаза с возрастанием/убыванием активности, что будет означать цикличность внутренних состояний плохо/хорошо. И дальше уже строится цепочка, например: от длиных слов быстрее устаешь - они хуже коротких. Самые хорошие это которокие звуки. И т. д. Бот сам определит, что способствует нагнетанию усталости, мешает сну, а что наоборот возбуждает. |
nan личный сайт личная фото-галерея 2020-12-22 16:40:01 |
Просто тупо посчитал по минимуму число нейро-объектов в слоях (в третичном рефлекторном 100 000 - т.е. на все возможные условия все сочетеания - мизер), при минимальном размере одного нейро-объекта (~600 бит) и времени опроса каждого из нейро-объектов на Go в условиях конкретного моего сервера и даже близко не получается бот в реальном времени реагирования. Это без учета каких-либо проблем. Что уже давно было прикинуто для программной реализации. |
Palarm личная фото-галерея 2020-12-22 16:58:31 |
Проблему можно теоретически решить, если проектировать распредленную нейросеть, использующую множество компов в сети. Тогда будет и параллельный режим, и гигантские ресурсы. |
nan личный сайт личная фото-галерея 2020-12-22 17:17:26 |
И как ты организуешь последовательное сканирование всех объектов? А если какой-то кома будет недоступн? Даже кластеная огранизация у яндекса сильно сбоила пока они нее сильно не резервировали. |
Palarm личная фото-галерея 2020-12-22 18:07:54 |
С сетью и правда выйдет лажа, если это не личная локалка. Тогда другая мысля уже на одиночном серваке: а на фига всю сеть сканировать? Пусть рецепторы посылают сигнал в промежуточный служебный слой, сообщая об изменении статуса. Так мы симулируем on/of рецепторы, реагирующие на изменение состояния. Система лезет сначала в системный слой, смотрит номера нейронов изменивших статус, и только их сканирует, а прочие статусы берет из предыдущего измененого состояния. Думаю это существенно сократит расчёт. Области где не было изменений вообще не затрагиваются. По крайней мере считается что так разгружается зрительный канал. А вторая мысля, начать надо с простого, без вторичных и третичных зон. Там и без них есть о чем задуматься. Например, как прошивать первичные примитивы? В утробе детёнышу никто ничего не показывает, но он вываливается уже с множеством сформированых рефлексов. Стало быть имеет наработанную начальную базу, на основе которой строится уже все остальное. А у тебя получается бот рождается абсолютно тупым. В природе такого нет, и видимо не спроста. Нужна начальная прошивка, и надо понять какая и почему. |
nan личный сайт личная фото-галерея 2020-12-22 18:53:20 |
>>А у тебя получается бот рождается абсолютно тупым. Ты затронул базовую огранизацию системы рефлексов, начиная с безусловных. На самых первых, наследственно предопределнных, возникают следующие и так - вплоть до самых крутых автоматизмов. Да, начальные безусловные рефлексы нужны,иначе не на чем будет строить остальные. И это, прежде всего, рефлексы гомеостаза. >>и только их сканирует, Чтобы значть, кто возбудился, нужно сначала просканировать сенсоры, потом по существующим связям - зависимые от них нейроны. Но ведь при обучении нет еще каких-то связей, а готовность их установить возникает. В нейроконструкторе этот момент вообще не затронут, хотя ты пытался меня на это мотивировать. Короче, никакие ухищрения сильно не помогут. Яваскрипт довольно шустр когда он кеширован и сильно большая схема на компе, даже очень шустром смоем компе, уже тормозила при всего-то нескольких десятках элементах. Графику обеспечивала тоже не хилая видеокарта, так что оптимизма у меня нет даже если бы вся сеть была всего из 10 тысяч элементов. Тут кизяк,который вижу очень отчетливо. |
Palarm личная фото-галерея 2020-12-22 20:23:36 |
>Чтобы значть, кто возбудился, нужно сначала просканировать сенсоры, потом по существующим связям - зависимые от них нейроны. Но ведь при обучении нет еще каких-то связей, а готовность их установить возникает Это системный слой, конкретно например динамический массив, куда пишется ID изменившего статус нейрона. Связи с ним не имеют отншения к связям между слоями. Его объем всегда меньше чем массив исходных сенсоров. При его чтении не происходит никаких других расчетов, как при сканировании исходной матрицы, где нужно сразу пересчитывать веса. Думаю, такая схема уменьшит загрузку, но не в разы конечно. |
Palarm личная фото-галерея 2020-12-23 18:43:39 |
Можно вернуться к методу итераций, там по крайней мере нет бесконечного цикла. Кроме того, отказаться от онлайн режима, пусть система запускается короткими импульсами раздражения, как бы покадрово смотреть на процесс. С точки зрения изучения, это даже более предпочтительно, получать статические снимки, чем глядеть на мельтешение активностей, ничего не понимая в них. Пусть оно хоть пол дня пересчитывается, но будет зато наглядный стимулятор. Вернёмся к временам, когда чтобы прогнать программу на ЭВМ надо было подавать заявку на ЦП, и потом часами разбирать дырки в перфоленте. |
nan личный сайт личная фото-галерея 2020-12-23 19:14:25 |
Все печальнее картина :) Надо сначала победить Омерику, развить экономику и культуру чтобы было много бабала и каждый мог бы не пахать на чужих по 8-10 часов, включая выходные, вот тогда будет время и оптимизм :) |
watts 2020-12-24 00:29:36 |
Немного отходя от темы , появляются вот такие штуки , так что все не так уж безнадежно в будущем. https://fossi-foundation.org/2020/06/30/skywater-pdk
|
nan личный сайт личная фото-галерея 2020-12-24 07:14:38 |
Тут не просто нужно свой чип иметь, а чип с синаптическим коммутатором. В общем-то такие уже есть. |
Palarm личная фото-галерея 2020-12-24 07:43:00 |
Имеешь в виду это https://www.itweek.ru/infrastructure/news-company/detail.php?ID=165276 Получается, все опять упирается в доступ к технологиям. Нам морочат головы сверточными сетями, а сами ударными темпами штурмуют нейроплаты. |
linuxoid личный сайт личная фото-галерея 2020-12-24 15:46:11 |
А если попробовать сделать сеть как можно проще количественно, но качественно до механизмов сознания? Взять один десяток первичных рецепторов (пускай это будут цифры, например), сделать пару-тройку слоёв, пусть уже будет 50 нейронов. Рецепторов гомеостаза пусть 5, можно сделать одним слоем пять состояний от очень хорошо до очень плохо. Сочетания первичных и гомеостатических будут как собственно образами, так и контекстами значимости. Уже 250 нейронов для всевозможных связей. Количество нейронов новизны будет равно произведению количества слоёв в третичных зонах на количество образов. Для двух слоёв это уже 500, тогда всего 750. Каждому третичному образу нужно по два переключателя: для самоподдержания и подключения к лобным долям. Это уже 1750. Отведём 250 на эффекторы и 1000 на лобные доли, включая зеркальные нейроны. Итого 3000 нейронов -- это слишком много? Я не представляю, как реализовать функциональность зеркальных нейронов, но по крайней мере можно дойти до условных рефлексов (около 1000 нейронов). Естественно, всё это без учёта формирования связей. Мне кажется, это был бы ценный шаг в создании ИИ, близкого к природному. |
nan личный сайт личная фото-галерея 2020-12-24 16:15:49 |
Это была бы просто програманая демо-формализация модели, которая никого ни в чет не убедит. Есть тест Тюринга, который уже вполне проходят (ну, если не придираться, с натяжкой) всякие Алисы и Кортаны, и все, больше нет способа показать проявления разума. Ну и вообще бы такая модель толком бы ничего не делала, как модели в конструкторе. |
linuxoid личный сайт личная фото-галерея 2020-12-24 18:21:47 |
Слово разум до сих пор строго не определено, так что ему всё ещё можно давать свои определения в рамках некоторых условий. Здесь на сайте есть тест, позволяющий проверить наличие сознания. Насколько серьёзно к нему можно относиться? Можно создать некий упрощённый аналог этого теста для рассматриваемой модели. Сейчас это точно ни в чём не убедит, потому что с моделью психики дела обстоят плохо. Меня больше интересует сама возможность. Какой минимум распознавателей должен быть, чтобы организовать функциональность сознания? Как эта схема будет себя вести в разных "вселенных"? |
nan личный сайт личная фото-галерея 2020-12-24 18:30:26 |
А ты насколько зашел в тему сознания, чтобы можно было это обсуждать? Самый основной функционал внимания к актуальному новому создать вовсе и не так сложно. Его можно было бы промоделитьвать вообще без нейросети. Но создать самоформирующиуюся в воздействующих условиях индивидуальную адаптивность можно только нейросетью. Почему, тут ты уже достаточно продвинут, чтобы видеть это. >>Здесь на сайте есть тест, позволяющий проверить наличие сознания. Насколько серьёзно к нему можно относиться? Этот текст так же не строг, а носит демонстрационный характер, его эффекты можно было бы имитировать и без сознания.
|