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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нейронная сеть, распознавание образов 
:(
    Опции темы
User008
Дата 13.8.2012, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Как можно хорошо реализовать распознавание символов для картинки, размером, например 50х50?
Необязательно, чтобы работал очень быстро или сверхточно, хорошо бы по обоим критериям получить удовлетворительные результаты.
Это обычно реализуется многослойным персептроном?
1) Сколько слоёв по сколько нейронов использовать?
2) Что даёт использование нескольких слоёв в распознавании образов? На примере xor понятно, что без второго слоя задача не решается, а что дают дополнительные слои при распознавании образов?
3) Как выход выражает результат? Допустим, для 10 цифр, вроде бы достаточно 4 бит, но может из-за того что некоторые биты принимают значение 1 чаще при выражении 10 цифр в двоичной системе, лучше сделать 10 нейронов, один из которых будет в ответе 1, остальные 0? Также непонятно, что делать с тем, что выход нейрона крайнего слоя не обязан быть целым числом?

Это сообщение отредактировал(а) User008 - 13.8.2012, 20:21
PM MAIL   Вверх
Mirkes
Дата 10.9.2012, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(User008 @  13.8.2012,  20:11 Найти цитируемый пост)
1) Сколько слоёв по сколько нейронов использовать?

Зависит исключительно от задачи. Как правило одного скрытого слоя хватает. Как-то сформулировали, но поленились доказывать теорему о достаточности одного скрытого слоя
Цитата(User008 @  13.8.2012,  20:11 Найти цитируемый пост)
2) Что даёт использование нескольких слоёв в распознавании образов? На примере xor понятно, что без второго слоя задача не решается, а что дают дополнительные слои при распознавании образов?

Число слоев задает степень нелинейности. Если у вас можно обойтись без скрытых слоев - используйте k-means. Быстрее и проще.
Цитата(User008 @  13.8.2012,  20:11 Найти цитируемый пост)
3) Как выход выражает результат? Допустим, для 10 цифр, вроде бы достаточно 4 бит, но может из-за того что некоторые биты принимают значение 1 чаще при выражении 10 цифр в двоичной системе, лучше сделать 10 нейронов, один из которых будет в ответе 1, остальные 0? Также непонятно, что делать с тем, что выход нейрона крайнего слоя не обязан быть целым числом?


Есть целая теория об интерпретации выходных сигналов. Например тут

Часто для предварительной обработки (снятия искажений и т.п.) используют сети Хопфилда.

Успехов.


Это сообщение отредактировал(а) Mirkes - 10.9.2012, 09:20


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


Новичок



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

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



Допустим, у вас есть две последовательности чисел 

10, 20, 30, 40, 50
и
11, 19, 30, 44, 50

Эти последовательности при отображении, скажем на графике дадут примерно подобные линии

Вопрос, как запрограммировать программу, чтобы она эти две последовательности посчитала равными?

На помощь придет объект Cell - ячейка и такая присказка: у любой ячейки есть и начало и конец.

Итак, объект Cell имеет два поля s и f

Создаем 5 объектов Cell на основе первой последовательности

Вот они: [10,10][20,20][30,30][40,40][50,50]

Объект Cell также имеет метод eql, который возвращает истину, если входной параметр
помещается между граничными значения s и f (включительно)

Таким образом, после инициализации 5 ячеек первой последовательностью и сравнении в цикле этих ячеек с каждым элементом 

второй последовательности получим 40% совпадение между двумя последовательностями.

Но что будет, если под чутким руководством оператора, одна из ячеек изменит свое значение?

[10,11] <- эта [20,20][30,30][40,40][50,50]

Теперь при сравнении в цикле этих ячеек с каждым элементом второй последовательности получим уже 60% совпадение
между двумя последовательностями.

Такое изменение возможно при вызове метода learning нашего объекта Cell. 

В этом методе входной параметр сравнивается с граничными условиями и если он меньше s то s присваивается входной параметр.
Если он больше f то f присваивается входной параметр.

Так происходит обучение ячейки на распознавание близко лежащих значений.

Обучив все ячейки добиваемся 100% результата распознавания наших двух последовательностей, как похожих между собой.

Более того, если подать на вход третью подобную последовательность то также получим результат близкий к 100%

Состояние ячеек после обучения можно сохранять, за это и другие операции с нашими ячейками отвечает объект CellsManager.

Это: первичная инициализация ячеек, сравнение входящего образца с ячейками, обучение ячеек и сохранение обученных ячеек.

Используя классы CellsManager и Cell я написал простенькую обучаемую программу распознавания речи. 
(разместил ее на sourceforge.net)

Подобная программная конструкция может оказаться весьма полезной при разработке программ распознавания образов
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

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

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

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

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


 




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


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

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