| imho.ws |
![]() |
|
|
|
# 21 |
|
Junior Member
Регистрация: 27.12.2002
Адрес: Belarus
Сообщения: 129
![]() |
Обчно работы в области ИИ граничат с нейронными сетями и эволиционирующими алгоритмами. Если теория нейронных сетей достаточно хорошо проработана (ну просто передрали у природы
), то с эфолюционирующими алгоритмами чуточку сложнее, хотя идея ещё проще чем с нейронами, только здесь копируется не поведение нейрона, а ДНК и обмен генами.Нейронные сети нужно учить. Обчно их "умственные" способности шаблонны. Т.е. после того как сеть натренирована на шаблонах, то она в основном только их и распознаёт. Если появляется что-то новое и незнакомое, то результат непредсказуем (обычно ересь). Эфолюционные алгориты обычно используется для нахождения экстремумов функции от n-неизвестных. Часто данный метод наиболее эффективен (и быстр, 7 дней упорных расчётов вместо недели ).Однако оба подхода имеют одно но -- они очень ресурсоёмки... |
|
|
|
|
# 22 |
|
Junior Member
Регистрация: 28.07.2003
Адрес: IL
Сообщения: 93
![]() |
Я тут давеча (пару месятсев назад) накатал нарды на С++.
Ничего получилось, но писать тяжело и даже очень! Тема ИИ делится на много специфических подразделов, например: лингвистика и понимание текста Перевод с различних язиков Теория игр (то что вас интересует в данном случае) Принятие различных решений (decision support) Для того чтоб машина заиграла во что нибудь нужны две весчи - Евристики и алгоритм который "смотрит вперед" Первые можно найти готовые или искать самому, отвечая себе каждый раз на вопрос "А почему я пошел сейчас именно так а не иначе?!" Второй - ето обычно модификация МИНИМАКСА - о нем можно найти море инфы. Удачи, и если есть вопросы - пишите
|
|
|
|
|
# 23 |
|
Full Member
Регистрация: 25.11.2001
Адрес: Imho.ws
Сообщения: 941
![]() ![]() ![]() ![]() ![]() ![]() |
интересно, а как это работает в механических системах? То есть есть система, и допустим надо ей функционировать в автоматическом режиме, например двухногий механизм (функция хотьбы) то есть может встречаться куча ситуаций не предусмотренных в шаблонах (ну хотя бы сохраниние равновесия в условиях переменной массы). Куча внешних датчиков само-собой.
то есть из пред. поста: Принятие различных решений (decision support) алгоритм который "смотрит вперед"
__________________
Когда умираешь, да еще так долго и трудно, очень хочется хоть немного насолить живым, просто невозможно удержаться от искушения! М.Фрай |
|
|
|
|
# 24 | |
|
Junior Member
Регистрация: 28.07.2003
Адрес: IL
Сообщения: 93
![]() |
Одна из интересних тем в ИИ ето поиск пути внутри лабиринта.
А в механике - есть цель, есть препятствие - мы то догадаемся что делать а вот роботу придется весьма не легко! Цитата:
|
|
|
|
|
|
# 25 | ||
|
Full Member
Регистрация: 25.11.2001
Адрес: Imho.ws
Сообщения: 941
![]() ![]() ![]() ![]() ![]() ![]() |
gregp
Цитата:
Цитата:
__________________
Когда умираешь, да еще так долго и трудно, очень хочется хоть немного насолить живым, просто невозможно удержаться от искушения! М.Фрай |
||
|
|
|
|
# 26 |
|
Junior Member
Регистрация: 13.08.2003
Адрес: localhost
Сообщения: 73
![]() |
Искуственный интелект.
Смотря в чем он будет применятся. Для игр не нужны нейронные сети и т.д. Очень сложно и будет нехватка вычислительных мощностей. В играх как правило все строится на шаблонах. Т.е. например игра где есть главный герой и враги. Цель врагов убить главного героя, ну и каждый враг будет приближаться к главному герою, стрелять в него. Что бы ИИ был умнее, то у объектов, которыми он управляет, должны какие то параметры. Жизнь например. Если объект ранен, то он отступает и т.д. Чем больше параметров тем "умнее" будет ИИ. |
|
|
|
|
# 27 |
|
Guest
Сообщения: n/a
|
Вот статейка мож вас на ченебудь на ведет !
(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 - |
|
|
# 28 |
|
Member
Регистрация: 20.10.2002
Адрес: где придётся
Сообщения: 271
![]() |
Раз зашла речь о нейросетях, ссылка по теме:
http://alife.narod.ru/lectures/neural/Neu_index.htm |
|
|