.
. . .
Перейти на главную страницу
.
Форум искусственного интеллекта

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

 
Начать новую тему   Ответить на тему    Форум искусственного интеллекта » Нейронные сети
. Помогите новичку! Многослойный персептрон Go back
Автор Сообщение
Sergey041691

Зарегистрирован: 01.02.2012
Сообщения: 4

spacer
Сообщение Заголовок сообщения: Помогите новичку! Многослойный персептрон
Ответить с цитатой
Прошу помочь мне разобраться, так как я только начал изучать. Вобщем нейронные сети это тема моей курсовой(учусь на третьем курсе ФКТиПМ). Задача поставленна следующая: Определение возрастной группы человека по фотографии лица, с помощью естественно нейронной сети.
Для начала чтобы разобраться в теме, я решил реальзовать более простую задачу: на вход сети подается bmp картинка(градация серого) буквы английского алфавита, на выходе собственно разпознаная буква.

Структура сети следующая:

Многослойный персептрон из двух слоев

- bmp картинки размером 12х12 пикселей, т.е. входной вектор сети размером 144 и возможными значениями компонент от 0 до 255.
- Нейронов скрытого слоя сделал тоже 144 штуки.
- Нейронов выходного слоя сделал столько сколько существует букв - соответственно 26 штук.
- Функция активации нейронов - сигмоидальная униполярная, т.е. 1/(1+exp(-b*x))) коэффициент b для нейронов скрытого слоя равен 6, для нейронов ввыходного слоя равен 8.
- Начальные значения весов задаются в пределах -0.2 до 0.2.
- Для обучения использую алгоритм обратного распространения ошибки(последовательный режим). коэффициент "скорости обучение" выбирал 0.01, 0.02, 0.05

Проблема в следующем: При подачи в качестве обучающих выборок 30 картинок (по 5 для каждой буквы) сеть обучается за 500-1000 эпох, и значение глобальной ошибки(по всем 30 картинкам) можно минимизировать до 1 и даже меньше. После этого эти первые 6 букв A,B,C,D,E,F распознаются сеть без проблем и даже картинки с этими буквами не входившие в обучающие выборки(нарисованные в фотошопе после обучения) распознаються на ура.(в качестве результата беру номер компоненты выходного вектора Y значение которой наибольшее).
Но если я подаю для обучения все 26 букв, неважно по сколько картинок для каждой, то ошибка ни как не сводиться к 1.
Например при 130 картинках(по 5 для каждой буквы) - глобальная ошибка достигала -20 при 50000 эпох обучения, при 52 картинках(по 2 для каждой буквы) глобальная ошибка достигала - 5.
Этого оказывается недостаточно и сеть неправильно распознает, даже картинки которые использовались при обучении Confused .

Подскажите пожалуйста, что можно с этим сделать? Может мне нужно выбрать другое число скрытых нейронов или добавить еще один слой, а может что-то нетак с коэффицентами? Просто я не знаю какое количество нужно выбирать, а нигде про это не написано.
VictorTsaregorodtsev

Зарегистрирован: 18.08.2009
Сообщения: 109
Откуда: neuropro.ru
spacer
Сообщение Заголовок сообщения: Re: Помогите новичку! Многослойный персептрон
Ответить с цитатой
> и возможными значениями компонент от 0 до 255.

Если на вход сети (нейронов) идут именно [0-255] - то это неправильно.

> Функция активации нейронов - сигмоидальная униполярная, т.е. 1/(1+exp(-b*x)))

Мастдай.

> коэффициент b для нейронов скрытого слоя равен 6, для нейронов ввыходного слоя равен 8.

Где Вы прочитали этот бред?

> коэффициент "скорости обучение" выбирал 0.01, 0.02, 0.05

При ПРАВИЛЬНОЙ нелинейности нейронов - скорее всего будет завышено на порядок-другой)

> Но если я подаю для обучения все 26 букв, неважно по сколько картинок для каждой, то ошибка ни как не сводиться к 1.

А почему она должна сводиться к 1?

> при 50000 эпох обучения

Что-то неладно в королевстве Датском...
Sergey041691

Зарегистрирован: 01.02.2012
Сообщения: 4

spacer
Сообщение Заголовок сообщения:
Ответить с цитатой
Спасибо, за критику. Но не могли бы вы пояснить, я же попросил помочь или хотябы посоветуйте литературу в которой можно прочитать про такие тонкости.


> Если на вход сети (нейронов) идут именно [0-255] - то это неправильно.

Почему не правильно? А что тогда нужно подавать? Просто это значения цветов каждого пикселя (палитра находиться в диапазоне от 0 до 255).

> Мастдай.

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

> Где Вы прочитали этот бред?

Они должны быть одинаковыми или как?
aifgi

Зарегистрирован: 19.01.2012
Сообщения: 4
Откуда: СПб
spacer
Сообщение Заголовок сообщения:
Ответить с цитатой
Доброго времени суток!
Sergey041691 писал(а):
Этого оказывается недостаточно и сеть неправильно распознает, даже картинки которые использовались при обучении

Скорее всего сеть в результате обучения сходится к локальному минимуму. Для обхода локальных минимумов существуют различные алгоритмы, например использование обобщённого дельта-правила.
Так же возможно, что картинки с изображением различных букв похожи между собой, например 'O' и 'Q', и даже если сеть сойдётся к глобальному минимуму, не факт, что она будет распознавать эти символы правильно.
Sergey041691 писал(а):
Может мне нужно выбрать другое число скрытых нейронов или добавить еще один слой, а может что-то нетак с коэффицентами?

Советую прочитать раздел 6.4 книги Р. Каллана "Основные концепции нейронных сетей." и раздел 4.6 книги С. Хайкина "Нейронные сети. Полный курс."
Sergey041691

Зарегистрирован: 01.02.2012
Сообщения: 4

spacer
Сообщение Заголовок сообщения:
Ответить с цитатой
Спасибо большое!!!

Почитал Каллана, преобразовал входные данные от диапазона [0,255] к [0.1,0.9]. Сеть обучилась коэффициент ошибки меньше 0,1.
Sergey041691

Зарегистрирован: 01.02.2012
Сообщения: 4

spacer
Сообщение Заголовок сообщения:
Ответить с цитатой
Даже O от Q отличает)))
tsvigo

Зарегистрирован: 04.02.2012
Сообщения: 2

spacer
Сообщение Заголовок сообщения:
Ответить с цитатой
Sergey041691 писал(а):
Спасибо большое!!!

Почитал Каллана, преобразовал входные данные от диапазона [0,255] к [0.1,0.9]. Сеть обучилась коэффициент ошибки меньше 0,1.

Напрасно мне кажется эти 0.1-0.9 если это числа с плавающей точкой. Посмотрите почему могут падать самолёты, спутники и многое другое: http://www.yur.ru/science/computer/IEEE754.htm
Показать сообщения:   
.
.
.
Начать новую тему   Ответить на тему    Форум искусственного интеллекта » Нейронные сети Часовой пояс: GMT + 4
Страница 1 из 1

 

Статистика посещений
Портал искусственного интеллекта. Баннеры. О проекте. Блог
При использовании материалов с данного форума ссылка на сайт ОБЯЗАТЕЛЬНА
Проект www.AIportal.ru © 2009-2011 гг.
.
. . .