IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   Искуственный интелект, может все-таки поможете. (https://www.imho.ws/showthread.php?t=34581)

Anton "InVooDoo" Anisimov 17.07.2003 13:26

Искуственный интелект, может все-таки поможете.
 
Меня интересует небольшая информация как вообще создается ИИ?

Trever 17.07.2003 13:47

Посмотри здесь:
http://www.eidolon.euro.ru/

Вообще довольно сложная тема. ИМХО одному с ней не справиться.

Anton "InVooDoo" Anisimov 17.07.2003 15:24

Trever
Пасибки.

RaZEr 17.07.2003 17:52

Врядли тебе это подойдет ...

dr.goo 17.07.2003 18:12

RaZEr

погоди, он еше "Скайнет" напишет :)

Anton "InVooDoo" Anisimov 17.07.2003 18:31

dr.goo
>> погоди, он еше "Скайнет" напишет :)

Это как понимать? Ты меня подкалываешь?

А может быть и такое, я ж ведь сам незнаю, что меня ждет впереди. Может быть я вообще программить не буду. :)

BRULIK 17.07.2003 19:09

Anton "InVooDoo" Anisimov

Дерзай мужик
Я за тя в стену плача бамажку засуну ( это без насмешки )

Попадется что то незаумное ,понятное только автору, крикни

Anton "InVooDoo" Anisimov 18.07.2003 09:45

BRULIK
Спасибо за поддержку.

BRULIK 18.07.2003 09:51

Anton "InVooDoo" Anisimov

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

BRULIK 18.07.2003 09:53

как букву "ge" Инглиш-буквами составить ?

Anton "InVooDoo" Anisimov 18.07.2003 10:48

BRULIK
Ну если тебе стало просто не интересно, то это понятно, но если тебе это интересно, то надо это делать. Пусть даже просто для себя. Зато сколько опыта будет. :)

BRULIK 18.07.2003 10:52

Anton "InVooDoo" Anisimov

Ну так давай вместе етим займемся

Anton "InVooDoo" Anisimov 18.07.2003 11:57

BRULIK
Слушай, а хорошая идея. :) Давай сделаем. :)
Надо только хорошую документацию найти по ИИ, чтобы не облажатся.

BRULIK 18.07.2003 12:00

главное начать :) а дальше видно будет
на каком языке предпочитаеш ?

Anton "InVooDoo" Anisimov 18.07.2003 12:09

BRULIK
C++, я его хорошо знаю и уже 4 года на нем програмлю.

BRULIK 18.07.2003 12:14

Anton "InVooDoo" Anisimov

ок
но мне тебя прийдется догонять.
у мениа с С++ практики маловато.

Anton "InVooDoo" Anisimov 18.07.2003 12:52

BRULIK
Ниче, как ты говоришь, главное начать. :)

BRULIK 18.07.2003 12:56

ну
счастливого пути нам :)

Иа так понимаю - в Висуал Студио 6 быдет все проишодить.

итак
для начала зделаем графическую оболочку - доска , шашки и т.д.

думаю с класса Пешка и начнем

ты как ?

Anton "InVooDoo" Anisimov 18.07.2003 13:00

BRULIK
Начнем с самго главного, давай будем по мылу переписываться, а то не удобно через имхо.вс
мой invoodoo@mailgate.ru.
Кинь мне писмецо, а я теб раскажу план действий.

Melkor 19.08.2003 14:54

http://www.eidolon.euro.ru/ua20874f.htm
http://artin.narod.ru/
vot esho paroshka dovolno interesnih sajtov, prishem na vtorom est ssilki na anglojaz. resursi.

aleh 19.08.2003 17:28

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

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

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

Однако оба подхода имеют одно но -- они очень ресурсоёмки...

gregp 19.08.2003 20:53

Я тут давеча (пару месятсев назад) накатал нарды на С++.

Ничего получилось, но писать тяжело и даже очень!

Тема ИИ делится на много специфических подразделов, например:
лингвистика и понимание текста
Перевод с различних язиков
Теория игр (то что вас интересует в данном случае)
Принятие различных решений (decision support)

Для того чтоб машина заиграла во что нибудь нужны две весчи -
Евристики и алгоритм который "смотрит вперед"

Первые можно найти готовые или искать самому, отвечая себе каждый раз на вопрос "А почему я пошел сейчас именно так а не иначе?!"

Второй - ето обычно модификация МИНИМАКСА - о нем можно найти море инфы.

Удачи, и если есть вопросы - пишите:)

Melkor 19.08.2003 22:29

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

Принятие различных решений (decision support)
алгоритм который "смотрит вперед"

gregp 19.08.2003 22:50

Одна из интересних тем в ИИ ето поиск пути внутри лабиринта.
А в механике - есть цель, есть препятствие - мы то догадаемся что делать а вот роботу придется весьма не легко!

Цитата:

алгоритм который "смотрит вперед"
Я имел ввиду алгоритм который прочитывает ситуацию на несколько ходов вперед.

Melkor 19.08.2003 23:21

gregp
Цитата:

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

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

DeToNaToR 23.08.2003 13:33

Искуственный интелект.
Смотря в чем он будет применятся.
Для игр не нужны нейронные сети и т.д.
Очень сложно и будет нехватка вычислительных мощностей.

В играх как правило все строится на шаблонах.
Т.е. например игра где есть главный герой и враги.
Цель врагов убить главного героя, ну и каждый враг будет приближаться к главному герою, стрелять в него.
Что бы ИИ был умнее, то у объектов, которыми он управляет, должны какие то параметры.
Жизнь например. Если объект ранен, то он отступает и т.д. Чем больше параметров тем "умнее" будет ИИ.

Pirog 26.08.2003 06:09

Вот статейка мож вас на ченебудь на ведет !
(c)НЕЗНАЮ так что извините !
=================================
Я не верю, что возможно обсудить все принципы и методы создания
искусственного интеллекта ( AI ) или механизмов самообучения в
компьютерных программах. Поэтому Вашему вниманию будут предложены
лишь их часть, а вернее всего два алгоритма создания AI в компьютерных
программах.

Алгоритм нейрона


Это наименее сложный из алгоритмов. Рассмотрим вначале схематичное
изображение нейрона:

Dendrite Дендрит | ------------ |

(Ввод) ----------------- O | | Аксон - один

. их может быть | Тело нейрона | O ---------------

. несколько | cell body | Axon (вывод)

(Ввод) ----------------- O | |

|--------------|



Где O - synapse. Синапс служит для соединения контактов между собой и
исполнительными механизмами.


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

Определим механизм работы с нейроном, который позволит нам моделировать AI
( самообучение ).


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


- установите коэффициенты w и порог срабатывания t в нашем рассмотрении
к неким произвольным значениям.

- установите на каждый ввод x(0), x(1), x(2),...., x(n-1)
( прим. перев. Я здесь не понял - видимо надо дать на каждый ввод
либо 1 либо 0 :( )

- вычислите сработал ли вывод сравнив пороговое значение и
сумму коээфициентов ввода

n - 1
-----
\
Сумма коэфф. = w (i) * x (i)
/
-----
i = 0

- измените коэффициеты,

для подтверждения правильных решений и устранения неверных.
( прим. перев. Я не понял как менять эти коэффициенты,
на основании чего ? :( )
Алгоритм Кохенена, или алгоритм Сети

Этот алгоритм, назван в честь профессора T. Kohonen с факультета
Информатики в Университете Helsinki, Финляндия. Вместо сравнения
входных коэффициентов к порогу срабатывания, ( как в случае с алгоритмом
нейрона ) Кохонен сравнил коэффициенты всех выходов, и выбрал набор
выходов имеющих коэффициенты, которые близко соответствовали
(согласовались) с коэффициентами входов.

Вот ссылка на его работу:
Kaelbling, Leslie Pack
Learning in Embedded Systems
The MIT Press, Cambridge, Massachusetts
(c) 1993
ISBN 0-262-11174-8

Самоообучающаяся сеть состоит из матрицы выходов j, которые все
соединяются с каждым входом i.

----------------

\ O O O \

\ \

выхода j \ O O O \

\ \

\ O O O \

----------------

Входа i O O



Алгоритм позволяет определить выход-"победитель" - j*, который точно
подходит к ожидаемому выходу, как определенно входами i.
Изменение коэффициента j* и его окружения будет создавать желаемые
результаты.

Кохенен успешно реализовал эту методику для системы распознования речи
в середины восьмедисятых годов XX века. Вот его алгоритм:

1. Инициализация сети

- определите матрицу w(ij) (0 <= i <= n-1) которая определяет коэффициенты
от входа i во выход j. Установите минимальные значения коэффициентов
n входов. Установите радиус окружения вокруг выхода j, N(j),
к некоторому большому значению.

2. Установите входа
- Установите входа x(0), x(1), x(2),...., x(n-1), где x(i) - ввод i.
3. Вычислите расстояние
- Вычислите расстояние d(j) между входами i и каждым выходом j по формуле:

n - 1
-----
\
d(j) = (x(i) - w(ij))^2
/
-----
i = 0

4. Выберите минимальное расстояние и обозначите выход j с минимумом d(j) - j*.

5. Обновите веса
- обновите вес для узла j* и его окружения как определено размером границы N(j).
w(ij) = w(ij) + M * (x(i) - w(ij))
Коэффициент M используется чтобы управлять корректировкой коэффициентов выходов. Его значение должно устанавливаться в диапазоне [0.5, 1] и затем постепенно уменьшаться, по линейной функции от номера цикла обучения.

6. Если ожидаемое решение не было обнаружено, повторите обучающийся цикл ( шаги 2-5 ).

7. Решение устанавливает S-сеть, которую можно использовать компьютеру против игрока.

Например, сеть состоит из 16 выходов, 4 входов и размер окружения равен 4, алгоритм Кохенена может разработать стратегию действий
всего за 216 ходов ( 9 * 4! ), что очень хорошо.

Примечание
А вот алгоритм выдранный из переписки.
- cut -
Newsgroups: fido7.other.nice.sources
From: George Korablev <George.Korablev@p72.f207.n5020.z2.fidonet.org>
Date: Fri, 22 Nov 96 20:05:40 +0300
Subject: [News] Re: Самообучающиеся программы

Сердечно приветствую,дорогой Alexey!

Wednesday November 20 1996.В 03:58, Alexey Efimov изрек из своих недр в адрес
George Korablev следующее:
GK>> Да ты не рубишь разницу между обучающейся экспертной системой и
GK>> обучающейся программой. Хотя игра м.б. построена по принципу
GK>> экспертной системы и экспертная система по принципу игры. Могу
GK>> поделиться мыслями - как построить экспертную системы (плагиат из
GK>> одноименной книжки - валяется в библио-глобусе)
AE> Попpобуй... поделись.
Все-таки Sorry за плагиат, но раз уж просят...
Допустим есть система из двух объектов, имеющих по три свойства.
Hапример птица и самолет. Пусть "1" - это присутствие признака, а
"0" - наоборот.

Крылья Оперение Шасси

Птица 1 1 0

Самолет 1 0 1

Заводим внутри программы массивы 2х3 и 1х3, изначально прописанные нулями. Массив 1х3 будет вектором наших вопросов.

Режим обучения/отгадывания:
Мы говорим системе: што есть "крылья"+"шасси" (1,0,1). Система при
отгадывании выполняет следующую манипуляцию:

1. умножает вектор наших вопросов на все строки в массиве признаков
по очереди.
2. Получаем два результата.
3. Выбираем максимальный. (это и есть ответ на наш вопрос)
Т.к. все были нули, программа говорит: "Птица?", вы отвечаете "Нет".
Далее происходит следующий алгоритм:
1. Если программа не угадала, то ваш вектор ответов вычитается из
строке массива соответствующему овтету, а к остальным прибавляется.
2. Если программа угадала, то ничего не происходит.
В нашем случае после первых наших вопросов имеем:

Птица -1 0 -1
Самолет 1 0 1

Задаем след. вопрос: што есть "крылья"+"перья" (1,1,0)?
Программа:
Птица : -1+0+0 = -1
Самолет : 1+0+0 = 1
ответ: Самолет
Вы: неверно
Программа:
Птица 0 1 -1
Самолет 0 -1 1

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

типа "ноги" при вариантах ответов 1 :), 2, 3 :), 4 и т.д. тоже
будет работать и намного точнее.
P.P.P.S ;)

Приведенный пример экспертной системы - одноуровневый. о можно на ее
основании построить N-мерную модель. Hапример каждый элемент плоского
массива - это результат по поискам максимальных элементов из других массивов.
- cut -

cd19 27.08.2003 00:27

Раз зашла речь о нейросетях, ссылка по теме:
http://alife.narod.ru/lectures/neural/Neu_index.htm


Часовой пояс GMT +4, время: 21:15.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.