Авторизация

Голосование

Какие разделы наполнять в первую очередь?
 
Пример нейросети Зеленая волна в Matlab PDF
Автор: ~Steep~   
17.04.2009 19:37

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

Нейросеть. Matlab

 

Для начала рассмотрим поставленную задачу:

Необходимо рассмотреть процесс создания и обучения нейросети

для создания так называемой "зеленой волны", для несолькольких перекрестков.

 

 

Для начала необходимо как мы будем реализовывать данную задачу. У нас есть расстояние между перекрестками. Первый перекресток мы берем как точку отсчета. Затем у нас есть скорость транспорта, так как "зеленую волну" в основном организовывают в городе для улучшения экологии (меньше транспорта останавливается, меньше времени двигатель работает в наихудшем для экологии состоянии - разгона, после торможения), улучшении морального состояния водителя, т.к. он меньше ждет и меньше волнуется. Соответственно рекомендуемая скорость перемещения по дорогам города 55 - 60 км/час. И третий, рассчитываемый, параметр - время переключения, а точнее время смещения сигнала зеленого относительно предыдущего светофора

Входные данные для обучения нейросети:

Расстояние между перекрестками

 

Выходные данные (те которые дожна будет рассчитывать нейросеть):

Время смещения переключения для зеленого цвета

 

Для обучения нейросети нужно создать выборку входящих данных и создать для них рассчитанные значения для данных значений. Для этого запускаем любой текстовый редактор (можно редактировать в самом matlab) и создаем текстовый файл с расширением .m. Сохраняем его в папке Matlab\works матлаба (чтобы мы могли использовать его не задавая папку workspace, хотя это как вам удобнее :) ). Теперь если описать функцию в этом файле она будет доступна в matlab

Итак описываем функцию SetLight, которая будет выдавать нам обученную нейросеть:

function [net] = light

Описываем в нашей функции:

Входящие данные для обучения - расстояния между перекрестками в метрах

INP = [1000 350 200 100 300 250 400 500 450 750 150 10];

Исходящие данные для обучения - смещения относительно предыдущего светофора в секундах, при скорости потока в 60 км/ч (примерно 16.6 м/с)

OUTP = [60 21 12 6 18 15 24 30 27 45.2 9 0.6];

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

net = newff(minmax(INP),[20,1],{'tansig','purelin'},'trainlm');

 

Где: newff - создает сеть обратного распостранения, minmax Задает диапазон значений для входящих данных, [20,1] - размер для каждого слоя, tansig - функция гиперболического тангенса, purelin - транспортная линейная функция, trainlm - функция, тренирующая сеть, кторая обновления значения весов по методу оптимизации Лавенберга

 

Параметры для обучения сети:

net = train(net, INP, OUTP);

Фунция обучения сети:

net.trainParam.epochs = 1200;

net.trainParam.show = 25;

В процессе обучения нейросеть должна понять что ей нужно сделать с входящими значениями, чтобы получить исходящие.

Функция описана. Теперь ее можно использвать в matlab

 

После обучения мы просто используем нашу нейросеть для получения новых значений, которых не было в обучающей сборке, заодно проверяя насколько верно обучилась сеть.

n = light

a = sim(n, [70, 320, 680])

Либо просто:

a = sim(light, [70, 320, 680])

После обучения нейросети вы получите график: время, ошибки

График обучения нейросети



В этом примере нейросеть прошла все 1200 эпох постепенно обучаясь и уменьшая ошибки. дошла до 10 в минус 5 степени :)

 

В ответ получим:

a =

4.2073     19.2016    40.9148

Если процент ошибки не слишком большой, можно оставить как есть, если нет можно использовать более подходящую нейросеть, увеличить количество эпох, чтобы уменьшить количество ошибок.

Вот собственно и все :) Данное руководство не претендует на полноту описание matlab или Нейросетей, это просто пример как можно использовать нейросети для решения задач.

 

Фай в формате *.m - Нейросеть Зеленая волна

Обновлено 17.10.2009 20:16
 
sape

Разное