Список форумов neuroproject.ru neuroproject.ru
Форум сайта компании НейроПроект
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Greedy layer-wise strategy for convolutional networks

 
Начать новую тему   Ответить на тему    Список форумов neuroproject.ru -> Нейронные сети
Предыдущая тема :: Следующая тема  
Автор Сообщение
mmi
Участник форума
Участник форума


Зарегистрирован: 15 Май 2010
Сообщения: 30

СообщениеДобавлено: Вт Сен 07, 2010 4:02 pm    Заголовок сообщения: Greedy layer-wise strategy for convolutional networks Ответить с цитатой

Я прошу прощения за тему поста на английском языке. Не знаю, какой общепринятоый перевод терминов.

Я некоторое время назад встроил в свою библиотеку возможность работы со сверточными нейронными сетями (добавил классы для работы с convolutional и subsampling слоями).

Вроде работает (и шустро работает), однако на ту же LeNet-5 обучает на изначальной MNIST базе (без афинных преорбразований и искажений) до ошибки 0.85%-1.15%. От чего зависит? От начальной случайной инициализации весов. Плюс, если идет многопоточное обучение, то даже при одинаковой инициализации я получаю несколько разные результаты. Используется Stochastic Diagonal Levenberg-Marquardt метод обучения.

И вот прочитал я статью "Scaling Learning Algorithms towards AI", Yoshua Bengio and Yann LeCun, 2007.

В этой статье предлагается использовать механизм жадного обучения без учителя нижних слоев для первоначальной инициализации весов. Авторы использовали Deep Belief Networks для такого обучения, однако они отдельно упомянули, что похожие результаты достигаются посредством обучения каждого слоя как auto-associator.

В статье упомянуто, что для базы MNIST инициализация весов первого слоя таким методом дает существенное улучшение обучения. Я предполагаю, что оно также сделает обучение более стабильным (меньший разброс результатов).

И решил я попробовать этот самый авто-ассоциатор. Сделал нейронную сеть, состоящую из 2 слоев. Первый - копия первого слоя LeNet-5. Он содержит 6x(5x5+1)=156 весов. Второй слой - "обратно-сверточный", который разворачивает 6 карт размером 28x28 в одну карту 32x32. Этот второй слой содержит 6x5x5+1=151 весов. Обучил эту нейронную сеть, подавая на вход и выход одно и то же. Получил подозрително низкую MSE.

Создал сеть LeNet-5, инициализировав веса первого слоя из первого слоя обученного авто-ассоциатора, а остальные случайным образом. Обучение не принесло никакого улучшения по сравнению с тем, что было раньше.

Решил посмотреть на этот автоассоциатор. Он просто идеально воспроизводит входные картинки. Подумал, и действительно, чего бы ему не делать? Он ведь даже с одной картой внутреннего слоя вполне может воспроизвести вход, просто скопировав его насквозь, от входа до выхода нейронной сети.

Кривой автоассоциатор? Да. Но мне ничего в голову не приходит, какой должен быть правильный.

Ни у кого нет идей? Надеюсь, конечно, на Виктора Царегородцева Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Victor G. Tsaregorodtsev
Эксперт
Эксперт


Зарегистрирован: 28 Июн 2005
Сообщения: 247
Откуда: Красноярск

СообщениеДобавлено: Вт Сен 07, 2010 5:22 pm    Заголовок сообщения: Ответить с цитатой

>ту же LeNet-5 обучает на изначальной MNIST базе (без афинных преорбразований и искажений) до ошибки 0.85%-1.15%.

Нормальный разброс. У меня на сверточных сетках для МНИСТа и для других задач получались подобные же разбросы точности - в несколько десятых процента.
Имеется в виду, конечно же, разброс ошибки обобщения
_________________
neuropro.ru - нейронные сети, анализ данных, прогнозирование
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
mmi
Участник форума
Участник форума


Зарегистрирован: 15 Май 2010
Сообщения: 30

СообщениеДобавлено: Вт Сен 07, 2010 5:35 pm    Заголовок сообщения: Ответить с цитатой

Victor G. Tsaregorodtsev писал(а):
>ту же LeNet-5 обучает на изначальной MNIST базе (без афинных преорбразований и искажений) до ошибки 0.85%-1.15%.

Нормальный разброс. У меня на сверточных сетках для МНИСТа и для других задач получались подобные же разбросы точности - в несколько десятых процента.
Имеется в виду, конечно же, разброс ошибки обобщения


Да, это ошибка на тестовой выборке из 10,000 примеров, которая не использовалась для обучения (успокоили Вы меня, спасибо, а то я уже беспокоиться начал). Виктор, не пробовали Вы эту Greedy layer-wise strategy?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
mmi
Участник форума
Участник форума


Зарегистрирован: 15 Май 2010
Сообщения: 30

СообщениеДобавлено: Ср Сен 08, 2010 11:57 am    Заголовок сообщения: Re: Greedy layer-wise strategy for convolutional networks Ответить с цитатой

Читаю сейчас про RBM... Получается, если использовать авто-ассоциатор, то веса в первом слое и во втором должны быть связаны... Или, другими словами, они должны быть одинаковы, но, видимо, их использование во втором слое должно как то отличаться от использования весов в первом. А иначе ничто не мешает нейронной сети скатиться к ядру:
0 0 0 0 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0

С другой стороны, в той же статье "Greedy Layer-Wise Training of Deep Networks", Yoshua Bengio, Pascal Lamblin, Dan Popovici, Hugo Larochelle, написано про автоассоциаторы буквально следующее:

One question that arises with auto-encoders in comparison with RBMs is whether the auto-encoders will fail to learn a useful representation when the number of units is not strictly decreasing from one layer to the next (since the networks could theoretically just learn to be the identity and perfectly minimize the reconstruction error). However, our experiments suggest that networks with non-decreasing layer sizes generalize well. This might be due to weight decay and stochastic gradient descent, preventing large weights: optimization falls in a local minimum which corresponds to a good transformation of the input (that provides a good initialization for supervised training of the whole net).

Звучит подозрительно, но надо попробовать Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Victor G. Tsaregorodtsev
Эксперт
Эксперт


Зарегистрирован: 28 Июн 2005
Сообщения: 247
Откуда: Красноярск

СообщениеДобавлено: Пт Сен 10, 2010 4:22 pm    Заголовок сообщения: Ответить с цитатой

>не пробовали Вы эту Greedy layer-wise strategy?

Нет
_________________
neuropro.ru - нейронные сети, анализ данных, прогнозирование
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
mmi
Участник форума
Участник форума


Зарегистрирован: 15 Май 2010
Сообщения: 30

СообщениеДобавлено: Пн Сен 13, 2010 5:48 pm    Заголовок сообщения: Ответить с цитатой

Victor G. Tsaregorodtsev писал(а):
>не пробовали Вы эту Greedy layer-wise strategy?

Нет


Я попробовал с предварительной инициализацией весов первого слоя автоассоциатором. Нет заметного улучшения. Сейчас пробую то же самое сделать с остальными слоями.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
mmi
Участник форума
Участник форума


Зарегистрирован: 15 Май 2010
Сообщения: 30

СообщениеДобавлено: Ср Сен 15, 2010 7:02 pm    Заголовок сообщения: Ответить с цитатой

Получилось.

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

Прлучилось, что ошибка обобщения колеблется в диапазоне 0.70%-0.80%. Рад, что ошибка уменьшилась, но еще больше рад, что разброс стал сильно меньше.

Само финальное обучение длится 15-20 минут, предварительная инициализация весов добавляет к этому времени 25-30 минут. Нормально.

Есть еще пара идей, попробую.

Ах да, вот еще что. Несмотря на то, что ошибка обощения выросла, MSE на обучающей выборке в результате обучения вырос существенно. Получается, что такой механизм инициализации весов приводит сеть близко к тому локальному минимуму, который может и не дает хороший MSE, но зато соответствует хорошему свойству обобщения сети.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
mmi
Участник форума
Участник форума


Зарегистрирован: 15 Май 2010
Сообщения: 30

СообщениеДобавлено: Пн Ноя 15, 2010 10:21 am    Заголовок сообщения: Ответить с цитатой

Попробовал разные параметры обучения. Получилось только совсем немного "улучшить". В общем, алгоритм с фиксированным набором параметров был применен 32 раза. Каждый раз он начинал со случайной инициализации весов и со случайно перемешанными данными для обучения. В конце каждого цикла обучения смотрел, сколько ошибок получается на тестовой выборке (которая во время обучения не использовалась).

Получилась ошибка обучения в диапазоне 0.60% - 0.80%, со средним 0.72%.

На ночь еще запустил первоначальный вариант, без предварительной инициализации весов. 38 раз прошло обучение. Ошибка на тестовой выборке лежит в диапазоне 0,87% - 1,17%, со средним 1,00%.

Поулчается, предварительная инициализация весов посредством unsupervised training вполне может принести ощутимую пользу.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
mmi
Участник форума
Участник форума


Зарегистрирован: 15 Май 2010
Сообщения: 30

СообщениеДобавлено: Чт Дек 09, 2010 12:25 pm    Заголовок сообщения: Ответить с цитатой

Поменял немного целевую функцию (посмотрел работу Виктора Царегородцева "Робастная целевая функция с допуском на точность решения для нейросети-предиктора"), средняя ошибка на задаче MNIST уменьшилась до 0.66%. Но разброс все равно осталься, в районе 0.57%-0.75%.

Не нравится мне нестабильность обучения симметричным автоенкодером слоев C3 и C5, пока побороть эту нестабильность не смог. Но просто не нравится, основания для подозрений нет.

И, что очень огорчительно для меня, велик расброс в малой задаче NORB. Один раз я добился 4.40%, но результат не воспроизводится. А я видел, что у Вас, Виктор, этим летом получилось стабильно обучать до ошибки 4.40%-4.60%. Буду с нетерпением ждать Ваших статей на эту тему.

Впрочем, попыток улучшить свой результат я не оставляю.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
mmi
Участник форума
Участник форума


Зарегистрирован: 15 Май 2010
Сообщения: 30

СообщениеДобавлено: Вт Янв 11, 2011 10:23 am    Заголовок сообщения: Ответить с цитатой

Так, с NORB (normalized) получилось. 80 прогонов полного цикла обучения (каждый раз со случайно инициализированными весами и перемешанными входными данными): средняя ошибка на тестовой выборке 3.04%, в диапазоне от 1.41% до 4.49%.

Но один цикл занимает 2 часа. Многовато. Особенно учитывая желание попробовать применить тот же подход на большой задаче NORB. Да и хочется попробовать добиться тех же 1.5%, что иногда получались.

Так что займусь ка я адаптацией библиотеки под GPU. Многообещающе выглядит их использование в обучении нейронных сетей, особенно сверточных.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
mmi
Участник форума
Участник форума


Зарегистрирован: 15 Май 2010
Сообщения: 30

СообщениеДобавлено: Вт Мар 29, 2011 10:02 pm    Заголовок сообщения: Ответить с цитатой

Выложил здесь описание нейронной сети с максимальной ошибкой 4.7% (средняя - 3.2%): http://maxim-milakov.livejournal.com/1001.html

Вообще планирую дальше выкладывать результаты своих экспериментов в тот же журнал: http://maxim-milakov.livejournal.com, добро пожаловать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RoadRunner_13
Новый посетитель
Новый посетитель


Зарегистрирован: 30 Апр 2011
Сообщения: 1
Откуда: Вологда

СообщениеДобавлено: Сб Апр 30, 2011 5:07 pm    Заголовок сообщения: Ответить с цитатой

верхняя ссылка не пашет(
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов neuroproject.ru -> Нейронные сети Часовой пояс: GMT + 4
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Rambler's Top100 Rambler's Top100