GotAI.NET

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

 

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

 Все темы | Новая тема Стр.1 (9)След. > >>   Поиск:  
 Автор Тема: Что должно быть в языке высокого уровня для создания ИИ?
Kek
Сообщений: 1133
Что должно быть в языке высокого уровня для создания ИИ?
Добавлено: 05 окт 14 3:57
Изменено: 05 окт 14 4:03
Навеяно темой про кто на чем пишет.
Вопрос нужный на самом деле. Мне кажется современная мысль в этом направлении движется. Ибо инструмент для решения любой проблемы должен соответсвовать этой проблеме. Вот моё понимание в том, что современные языки содержат много лишнего с одной стороны и не имеют чего-то главного.
И так.

Здесь получше читать.


1. Необходимо отменить типизирование вообще. А как же x=3.14 спросите вы? А никак. Основу языка должны составлять иерархии. В самом низу целые числа, а в верхах безразмерные массивы массивов.
2. Операция типа A=B, где A и B одноранговые массивы должна выполняться, как присвоение элементов массива, а не как присвоение указателей. Если массивы имеют разный размер, то эта операция должна происходить со смещением. В итоге больший массив B заменяет свои элементы элементами меньшего массива A
3. C=Коньюнкция(A,B,x). В массивах A и B есть одинаковые элементы x. Массив С – содержит их порядковые номера. Так же определяются другие логические операции из теории множеств.
4. Ранговость. Одноранговый массив: R1=(2,45,32,3,767) – набор целых чисел. R2=(0,56,76,3,45,89,5678); Двухранговый массив M состоит из двух одноранговых массивов M[0]=R1; M[1]=R2;
5. Гетерогенный массив G[0] = R1; G[1] = M; G[2]=0;
В дальнейшем разработать операции с гетерогенными массивами: сложение, вычитание, конъюнкция и т.д. Перестановка и изменение рангов, изменение иерархиезации и т.д. Все это с одной стороны напоминает ИНС, с другой – базы. На основе таких массивов можно строить онтологии, не заботясь о типах данных, можно ввести понятие «возбуждение» элементов массива, когда определенная низовая одноранговая группа элементов есть ничто иное, как состояния сенсоров. Любые самые сложные сенсорные состояния в итоге есть целые числа, т.к. в основе их аналого-цифровой преобразователь. Изображение, звук, тензо-датчики, температура – все целочисленное в своей основе. Можно еще озаботится об обратных связях с верхних рангов в нижние, так же в виде целочисленных состояний. В итоге мы получим инструмент, с помощью которого можно будет описывать ИНС с изменяющейся структурой.
Чем этот подход отличается от ИНС-строительства? Здесь массив – это целый слой сети. А вся сеть тоже гетерогенный массив. Свертки, весовые коэфы – все это элементы массива, которые транслируются, передаются, копируются все целиком на подобие объектов и классов в системе ООП.
И еще важный момент нетипизированности. Здесь конечно одна сложность заменяется другой. Вместо типов данных вводится понятие ранговости или размерности массива. И понять как гетерогенные массивы «живут» пока не ясно. Живут в смысле взаимодействуют друг с другом изеняют свою структуру. Но если это преодолеть, то получится два момента:
1. Для строгого копирования иногда необходимо уменьшить размерность массива. Для этого надо отбросить часть его элементов. Или нарастить. Не находите аналогии? С фрагментами ДНК, например.
2. Все это легко перекладывается в железо. Просто на раз-два. При этом трудности сохраняются конечно. Как перекладывать функции и процедуры. А вот здесь надо сказать, что мне видится не просто RISC-архитектура, а XRISC (eXtendet Reduced Instruction Set Computer). Если уж мы типы отменили, то можно и операции сократить, оставить необходимое и достаточное их количество.
Это всего лишь мысли вслух. Все это навеяно моей работой над Soud-Agent. Конечно все это приходится «лепить» и создавать на языке высокого уровня и на это уходят человеко-часы.
[Ответ][Цитата]
Slava
Сообщений: 3070
На: Что должно быть в языке высокого уровня для создания ИИ?
Добавлено: 05 окт 14 4:06
Цитата:
Автор: Kek

Навеяно темой про кто на чем пишет.
Вопрос нужный на самом деле. Мне кажется современная мысль в этом направлении движется. Ибо инструмент для решения любой проблемы должен соответсвовать этой проблеме.


ИИ надо писать на нормальном естественном языке
Остальное - от лукавого
[Ответ][Цитата]
Kek
Сообщений: 1133
На: Что должно быть в языке высокого уровня для создания ИИ?
Добавлено: 05 окт 14 4:10
Изменено: 05 окт 14 4:10
Цитата:
Автор: Slava
ИИ надо писать на нормальном естественном языке
Остальное - от лукавого

Согласен. Только таковыми программистами выступают родители, воспитывающие ребенка. Они именно так действуют. Здесь не род-дом.
[Ответ][Цитата]
гость
5.138.130.*
На: Что должно быть в языке высокого уровня для создания ИИ?
Добавлено: 05 окт 14 4:25
***Необходимо отменить типизирование вообще.

Можно использовать только текст. Есть два решения - преобразовывать текст в числа и наоборот или эмулировать математические операции с цифрами(символьным представлением чисел) без преобразований.

Но...Ни что тебе не мешает оперировать на асемблере исключительно байтами, что и есть отсутствие типизации, в том числе писать можно в один столбец без отступов, скобочек. бегин - ендов и прочей шелухи, что делает текст программы не только безтиповым но и монолитным.
[Ответ][Цитата]
гость
5.138.130.*
На: Что должно быть в языке высокого уровня для создания ИИ?
Добавлено: 05 окт 14 4:26
Ты можеш преобразовывать все данные как заблагорассудится и не важно цифра была сложена с буквой или массив из одного элемента с объектом класса ХХХ.
[Ответ][Цитата]
Vpolevoj
Сообщений: 1408
На: Что должно быть в языке высокого уровня для создания ИИ?
Добавлено: 06 окт 14 0:35
Изменено: 07 окт 14 4:15
Сергей (Kek), я тоже считаю, что вопрос о специализированном языке для разработчиков ИИ имеет место. И тоже об этом время от времени думаю. Так что, твой вопрос действительно актуальный.

Но вот в чем, как мне кажется, дело...

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

Так вот, поскольку ИИ никто еще не создал, то и говорить о том, каким должен быть язык для написания этого ИИ, пока рано. Если сама задача пока еще не оформилась, то как можно говорить о СРЕДСТВАХ решения этой задачи? Сначала нужно определиться с тем, ЧТО мы собираемся делать, и лишь только затем - КАКИМИ СРЕДСТВАМИ, то есть, для начала следует определиться с тем, ЧТО мы хотим сделать, и лишь затем - что нам для решения этой задачи может потребоваться и КАК мы будем её решать.

А пока это не выяснено, то, я так считаю, не имеет ровно никакого значения, на каком именно языке решается эта задача В ПЕРВЫЙ РАЗ (хоть на ассемблере). Я вот лично пишу эти свои программы на Дельфи, хотя ничуть не ограничен в выборе языка, просто, используя Дельфи, я меньше отвлекаюсь на вопросы связанные с конкретной реализацией и за счет этого больше уделяю внимания вопросам смысловым, и поэтому трачу свои силы и время не на то, КАК сделать, а на то, ЧТО следует делать. И на данном этапе я считаю это для себя очень важным. А если вдруг у меня возникнет необходимость в разработке специальных средств или в использовании специализированного языка программирования, то я, во-первых, об этом скажу (заявлю открыто), а во-вторых, обязательно воспользуюсь этими средствами (прибегну к ним).

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

Например, и там и там я начинаю "плясать" от потребности. А это означает, что я решаю такие, к примеру, вопросы: в чем заключается та или иная потребность, которую я собираюсь моделировать, как я её буду задавать, в чем измерять, от чего она у меня будет зависеть, что на неё будет влиять, как мой Субъект будет её удовлетворять, то есть, какими конкретно действиями эта потребность будет уменьшаться, когда будет считаться, что потребность полностью удовлетворена (достигла насыщения), и в связи с этим, как будет оцениваться эффективность того или иного действия с точки зрения влияния этого действия на эту текущую потребность и т.д.

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

Но это пока всего лишь мечты.

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

=======================================
Несколько вопросов по твоему тексту.

Необходимо отменить типизирование вообще.

Как это - отменить типизирование? Работать без учета типов (как это делается в Си или в ассемблере)? Или же можно использовать разные типы данных, но работать с ними на уровне массивов как с данными вообще, не обращая внимание на конкретное наполнение? Ты это имел ввиду?

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

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

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

То есть, ты все же хочешь описывать ИНС? И именно для этого проектируешь свой инструментарий? Тогда так прямо и говори.

Чем этот подход отличается от ИНС-строительства? Здесь массив – это целый слой сети. А вся сеть тоже гетерогенный массив. Свертки, весовые коэфы – все это элементы массива, которые транслируются, передаются, копируются все целиком на подобие объектов и классов в системе ООП.

Идея понятная. Осталось лишь решить, как это всё должно работать, впрочем, ты и сам об этом пишешь.

И еще важный момент нетипизированности. Здесь конечно одна сложность заменяется другой. Вместо типов данных вводится понятие ранговости или размерности массива. И понять как гетерогенные массивы «живут» пока не ясно. Живут в смысле взаимодействуют друг с другом изменяют свою структуру.

Вот в этом, как мне кажется, и кроется основная загвоздка. Как сделать так, чтобы эти массивы начали "жить"? То есть, по каким внутренним правилам они должны взаимодействовать друг с другом, и что из этого должно получаться? Что мы от них хотим?

Что ты сам хочешь, чтобы с ними было? И что должно быть на выходе? Как думаешь?
[Ответ][Цитата]
kondrat
Сообщений: 4026
На: Что должно быть в языке высокого уровня для создания ИИ?
Добавлено: 06 окт 14 0:43
Должны быть средства описания рефлексов, высокий уровень реализации (естественного) параллелизма компилируемого кода, к объектной парадигме должны быть добавлены сильные механизмы рекурсивного описания рефлекса, ну, или средства декомпозиции сложных рефлексов в элементарные(машинные).
[Ответ][Цитата]
kondrat
Сообщений: 4026
На: Что должно быть в языке высокого уровня для создания ИИ?
Добавлено: 06 окт 14 0:43
Изменено: 06 окт 14 0:46
Ну и саму машинную архитектуру надо сильно переделать.
Числа - это отдельная песня.
[Ответ][Цитата]
daner
Сообщений: 4593
На: Что должно быть в языке высокого уровня для создания ИИ?
Добавлено: 06 окт 14 1:08
что должно быть в натуральном языке, что бы писать интересные детективы?

какая разница, какой язык использовать? нужно модель процесса составить, хоть на бумаге, после на основе математических и логических компонент этой модели, подбирать язык.
Если модель будет на основе матриц -- значит и в языке должны быть удобные операторы матричных манипуляций.
Дальше уже можно прикинуть, может такое уже есть, может достаточно будет библиотеки (т.е. остаться в рамках существующего языка, но с доп. функциями)
Ну или уж если парадигма совсем иная будет, тогда и язык потребуется особенный.
Теоретически, язык программирования всего-лишь инструмент описания вычислительной модели. Любой из основных языков имеет тьюринговую полноту, а значит универсален и подойдет под любые придуманные вами модели.
Дальше, все синтаксический сахар, а значит его (т.е. сахар) нужно подбирать ТОЛЬКО относительно поставленной цели, т.е. придуманной (**уже** придуманной и формализованной) модели.
До формальной модели, любые разговоры о языке программирования для ее воплощения, пустое разглагольствование.
[Ответ][Цитата]
Валентин
Сообщений: 4536
На: Что должно быть в языке высокого уровня для создания ИИ?
Добавлено: 06 окт 14 1:09
Цитата:
Автор: Slava ИИ надо писать на нормальном естественном языке
Остальное - от лукавого

- Во всяком случае при этом думать на нём.
Функции: "если-то,-иначе" вполне достаточно!
[Ответ][Цитата]
Kek
Сообщений: 1133
На: Что должно быть в языке высокого уровня для создания ИИ?
Добавлено: 06 окт 14 1:13
>Vpolevoj
"Что ты сам хочешь, чтобы с ними было? И что должно быть на выходе? Как думаешь?"
Цель формирует средства, потом средства детализируют цель. Так и язык для ИИ.
Я тоже все реализую на Delphi. Мои технические трудности лежат как раз в области работы с массивами.
Дальнейшее покажет как взаимодействуют гетерогенные массивы и что от них надо. Пока все на уровне догадок.
[Ответ][Цитата]
Slava
Сообщений: 3070
На: Что должно быть в языке высокого уровня для создания ИИ?
Добавлено: 06 окт 14 2:15
Цитата:
Автор: Валентин

- Во всяком случае при этом думать на нём.
Функции: "если-то,-иначе" вполне достаточно!


Думаю, что и в первом и втором вы сильно заблуждаетесь
[Ответ][Цитата]
Vpolevoj
Сообщений: 1408
На: Что должно быть в языке высокого уровня для создания ИИ?
Добавлено: 06 окт 14 4:21
Изменено: 06 окт 14 4:23
Цитата:
Автор: Kek

Цель формирует средства, потом средства детализируют цель.

Вот поэтому-то я и акцентирую постоянно ваше внимание на определении Цели. Потому что Цель определяет Средства, а не наоборот.

А что касается Средств, то разве нельзя ОДИН раз в ОДНОЙ программе запрограммировать алгоритм так, как тебе нужно. Ну да, приходится попотеть, поизвращаться и повыеживаться, но зато получится именно то, что требуется. Ведь для одного-то раза вовсе необязательно писать универсальные классы, создавать специализированные библиотеки и пр. Для одной задачи вполне достаточно реализовать задуманное ОДИН РАЗ, и в том виде, в каком оно само получится, и как получится. Задача же оптимизации возникает (если до этого, конечно, доходит дело) потом, когда к той же задаче (или к подобного класса задачам) ты возвращаешься во второй раз, в третий раз и т.д. Вот тогда, действительно, начинаешь задумываться о СРЕДСТВАХ, о подборе средств или же о разработке специальных средств - под эту ЗАДАЧУ.

И все-таки я возвращаюсь к своему вопросу: что ты хочешь получить, задумывая эту свою концепцию?

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

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

Попробуй все же сформулировать искомый результат, который ты хочешь получить. А там, глядишь, и средства у тебя сами собой определятся.
[Ответ][Цитата]
Kek
Сообщений: 1133
На: Что должно быть в языке высокого уровня для создания ИИ?
Добавлено: 06 окт 14 5:24
Валера, я кручусь вокруг цели, которую сформулировал давно и ты ее знаешь. Это попытка реализовать кластеризацию потока. Так как любой поток иерархичен, то модель должна эту иерархию реализовывать. Отсюда массивы массивов массивов... Но это только структурно отражает суть. Для отображения функционала нужен "движитель". У меня это новизна. Критерии и граничные условия воздействия новизны определены. Остается понять что надо делать по этим критериям с массивами для реализации сходимости.
Сходимости в смысле максимизации целевой функции.
Для этого нужна упрощенная модель, потому что звук очень богат и там можно зарыться и не увидеть закономерностей.
Знаю как, знаю что надо сделать... но на пути технические чисто сложности. Отсюда мой вопль относительно языка.
Можно долго говорить, чего-то объяснять, но лучше всего это покажет упрощенная действующая модель. И не ИИ... а процесса реагирования системы на сложный поток.
[Ответ][Цитата]
Kek
Сообщений: 1133
На: Что должно быть в языке высокого уровня для создания ИИ?
Добавлено: 06 окт 14 5:52
Изменено: 06 окт 14 6:16
Цитата:
Автор: Vpolevoj
Попробуй все же сформулировать искомый результат, который ты хочешь получить. А там, глядишь, и средства у тебя сами собой определятся.

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



- Поле, размер назначается, по умолчанию 16Х16 клеток
- Количество объектов 16, можно назначить
- Размер объектов.
Нажимаем Пуск - броуновское движение.
Стоп, затем галочка "слипание" и Пуск.
У объектов одна целевая функция - объединиться.
Объекты могут только двигаться по случайному закону до слипания.
Когда они слиплись начинается "метафизический" переход.
То образование, которое получилось случайным образом и есть иерархический объект.
Он живет по другим законам. У него получились эмерджентные свойства. Он мало того, что может двигаться, он может вращаться, он может менять свою внутреннюю форму, т.е. перераспределять прилипшие к нему объекты вокруг назначенного центра, не отпуская их от себя.
Так как это иная форма, нежели просто частица, у нее возникает вопрос: а кто в этой аморфной группе - главный? Кто принимает решения? Кто центр? И я подумал, что центр принятия решений - может быть блуждающий по случайному закону. Этот центр принимает решение на свою модификацию.
Далее можно было бы ожидать интересные взаимодействия этих аморфных тел, например при соединении большее по размеру тело отнимает в свою пользу элементы и т.д.
Но целевая функция здесь - это укрупнение объема. А можно придумать и не только это, а приобретение симметрии, как более сложной задачи, но тоже, понимаешь, энтропийка...
Кто хочет может подумать над кучей аналогий, которые здесь можно придумать. Исходники прилагаются.
Я сделал только основу, все что описал предстоит реализовать.
[Ответ][Цитата]
 Стр.1 (9): [1]  2  3  4  5  ...  9След. > >>