Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> распознавание образов + нейронная сеть 
:(
    Опции темы
eldo
Дата 21.5.2006, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 10.1.2005

Репутация: нет
Всего: нет



Добрый день.
Подскажите, какую нейронную сеть лучше использовать если необходимо распознавать несколько образов, но при этом на вход могут подаваться не только необходимые образы, но и несоответствующие заданному набору, то есть те, которые надо отсеять.
Ведь обычная нейронная сеть на выходе будет давать наиболее близкий образ без отсева. А надо как раз этот отсев еще реализовать, то есть когда образ не узнан.
Если возможно, то поделитесь ссылкой на источник.
Благодарю. 
PM MAIL WWW   Вверх
Anarhist
Дата 21.5.2006, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 11.2.2006

Репутация: нет
Всего: нет



Обращайся вот к этому челу - DragonFire! 
PM MAIL   Вверх
DragonFire
Дата 22.5.2006, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

Репутация: 5
Всего: 9



Ну вообщем с ходу так ничего не могу придумать, кроме как запоминать наиболее близкий результат для каждой фигуры - при обучении это легко сделать, а потом поставить условие - если текущий результат сильно отличается от сохраненных - значит фигура нераспознана...
Напримар буква имеет число 3.1, А буква Б 3.9. Парог у нас 3.5 - выше порога Б, ниже А. Добавляем еще два порога - 3 и 4, получаем что если результат распознавания получается ниже 3 или выше 4 - фигура нераспознана...
Вот примерно так... 


--------------------
PM MAIL ICQ   Вверх
Goliath
Дата 22.5.2006, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 1.3.2005

Репутация: 1
Всего: 5



Очень интересная тема! Прошу прощение за оффтоп но не могли бы вы скинуть ссылку по этой теме?  
--------------------
Наша жизнь растрачивается на мелочи… Упрощайте, упрощайте. [Генри Торо] 
PM MAIL   Вверх
eldo
Дата 22.5.2006, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 10.1.2005

Репутация: нет
Всего: нет



DragonFire, а какую при этом использовать нейронную сеть? обычно на выходе нейронной сети либо скачок 0-1 либо линейная функция либо сигмоид. но все они [-1..1]. Как можно получить, например, 3.2? Или Вы предлагаете использовать какой-то другой вид сети? (я не очень с ними всеми знаком)


Goliath, можете почитать для начала help по matlab про нейронные сети. там даже есть пример распознавания букв.  

Это сообщение отредактировал(а) eldo - 22.5.2006, 17:40
PM MAIL WWW   Вверх
DragonFire
Дата 22.5.2006, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

Репутация: 5
Всего: 9



Вот я тут кое-что писал, про распознавание символов - там я описывал систему, которую использую сам... Незнаю насколько она правильная, но зато работает... 
http://forum.vingrad.ru/index.php?showtopi...st&p=560440
А ответ действительно либо 1, либо 0 - соответственно фигура либо "А", либо "Б" - в моем примере, тоесть вычесляю результат по форумуле <РЕЗУЛЬТАТ>=<сигнал1>*<Вес1>+<сигнал2>*<Вес2>+...+<сигнал25>*<Вес25>
А потом сравниваю с порогом, получая ответ 1 или о (true или false) 


--------------------
PM MAIL ICQ   Вверх
PGsoft
Дата 2.6.2006, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 30.5.2005
Где: Петербург

Репутация: нет
Всего: 1



Здравый корень в рассуждениях имеется smile

Использовать надо персептрон, с нейронами не пороговой функции активации (можно и с линейной, как у DragonFire). Однослойный персептрон имеет по нейрону на каждый распознаваемый объект, и выходом его является вектор ("концы аксонов"). Если задача распознавания нелинейная (в большинстве случаев это можно выяснить только экспериментально, видя, что однослойная сеть необучаема), то используется многослойный персептрон.

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

Рекомендую www.statsoft.ru (там есть электронный учебник) 
PM WWW ICQ   Вверх
VictorTsaregorodtsev
Дата 28.7.2006, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 28.7.2006

Репутация: нет
Всего: 8



Цитата(PGsoft @  2.6.2006,  00:13 Найти цитируемый пост)
если на входе - "неподходящй" объект, то выход даст нулевой вектор, иначе - вектор с указанием опознанного объекта.


Не гарантировано. Может и "зашкалить" - т.е. убежать за +-единицу, если на выходе сети нейрон с линейной активационной функцией (т.е. просто сумматор без какой-либо нелинейности), или всё-таки дать близкий к +-единице сигнал в одной из позиций выходного вектора.

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

Хотя, конечно, надо детальнее смотреть спецификацию задачи и реальные свойства данных. 
PM MAIL WWW   Вверх
eldo
Дата 3.8.2006, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 10.1.2005

Репутация: нет
Всего: нет



VictorTsaregorodtsev, а можете немного подробнее про кластеризацию рассказать?

Специфика задачи - распознавание нескольких голосовых команд диктора с обеспечением большой результативности (более 99%). В данный момент использую перцептрон (функция активации - ступенька) с тремя выходами (три команды). Результаты неплохие, но хотелось бы отсеять неправильные команды диктора, так как они этот результат портят малость (часто принимаются за какую-нибудь нормальную команду)
PM MAIL WWW   Вверх
VictorTsaregorodtsev
Дата 9.8.2006, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 28.7.2006

Репутация: нет
Всего: 8



Поподробнее:
1. ОБучающая выборка из типичных (корректных) примеров кластеризуется, например, алгоритмом динамических ядер. Желательно при этом, чтобы в каждый кластер попало как минимум десятка 2-3 примеров (т.е. может быть придется включать разных дикторов). И чтобы каждый кластер был достаточно однороден - т.е. в нем были примеры одного класса (команды). Именно эта выборка используется также и для обучения сети - сеть можно учить как до, так и после кластеризации, метки кластеров сетью никак не используются.
2. Когда обученной сети поступает на распознавание новый вектор данных, то сначала ищется ближайший к нему кластер. Причем "близость" считается с точки зрения каждого кластера - вычислением ковариационной матрицы примеров в кластере и расстояния Махаланобиса на ее основе. В случае гипотезы о хорошем соответствии закона распределения внутри кластера многомерному нормальному закону р.Махаланобиса и будет как раз учитывать вытянутость кластера вдоль его главных осей, т.е. фактически трансформирует кластер в "шарик" нормального распределения с единичными дисперсиями во всех направлениях.
3. Это расстояние от классифицируемого примера до ближайшего кластера будет или превышать, или не превышать некоторого порога. Порог выбирается в 90-95-99% и рассчитывается аппаратом проверки гипотез так, чтобы внутри этого порога лежал соответствующий процент общей плотности нормального распределения, а вне - хвосты распределения. Т.е. чем выше расстояние, менее вероятнее пример принадлежит нормальному распределению, т.к. улетает в маловероятные "хвосты" или за их пределы.
4. Если расстояние меньше порога, т.е. пример относительно близок к центру одного из кластеров, соответствующих эталонным примерам, то пример подается сетке на распознавание. Если же больше - то сетка ничего не делает и можно явно просигнализировать о нетипичном примере.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.0463 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.