| Пример нейросети Зеленая волна в Matlab |
|
| Автор: ~Steep~ |
| 17.04.2009 19:37 |
|
Я хотел бы рассмотреть процесс создания нейросети с помощью пакета Matlab. Искал в интернете примеры, на русском нашел только один, но тоже не совсем понял как его использовать. Конечно я сам нейроинформатику не до конца понимаю сути, но оно (приложение) работает :))) Если вам интересна эта тема, то мы начинаем ;) Нейросеть. Matlab
Для начала рассмотрим поставленную задачу: Необходимо рассмотреть процесс создания и обучения нейросети
для создания так называемой "зеленой волны", для несолькольких перекрестков.
Для начала необходимо как мы будем реализовывать данную задачу. У нас есть расстояние между перекрестками. Первый перекресток мы берем как точку отсчета. Затем у нас есть скорость транспорта, так как "зеленую волну" в основном организовывают в городе для улучшения экологии (меньше транспорта останавливается, меньше времени двигатель работает в наихудшем для экологии состоянии - разгона, после торможения), улучшении морального состояния водителя, т.к. он меньше ждет и меньше волнуется. Соответственно рекомендуемая скорость перемещения по дорогам города 55 - 60 км/час. И третий, рассчитываемый, параметр - время переключения, а точнее время смещения сигнала зеленого относительно предыдущего светофора Входные данные для обучения нейросети:
Выходные данные (те которые дожна будет рассчитывать нейросеть):
Для обучения нейросети нужно создать выборку входящих данных и создать для них рассчитанные значения для данных значений. Для этого запускаем любой текстовый редактор (можно редактировать в самом matlab) и создаем текстовый файл с расширением .m. Сохраняем его в папке Matlab\works матлаба (чтобы мы могли использовать его не задавая папку workspace, хотя это как вам удобнее :) ). Теперь если описать функцию в этом файле она будет доступна в matlab Итак описываем функцию SetLight, которая будет выдавать нам обученную нейросеть:
Описываем в нашей функции: Входящие данные для обучения - расстояния между перекрестками в метрах
Исходящие данные для обучения - смещения относительно предыдущего светофора в секундах, при скорости потока в 60 км/ч (примерно 16.6 м/с)
Нейросеть, которая будет правильно обучать нашу нейросеть для решения данной задачи
Где: newff - создает сеть обратного распостранения, minmax Задает диапазон значений для входящих данных, [20,1] - размер для каждого слоя, tansig - функция гиперболического тангенса, purelin - транспортная линейная функция, trainlm - функция, тренирующая сеть, кторая обновления значения весов по методу оптимизации Лавенберга
Параметры для обучения сети:
Фунция обучения сети:
В процессе обучения нейросеть должна понять что ей нужно сделать с входящими значениями, чтобы получить исходящие. Функция описана. Теперь ее можно использвать в matlab
После обучения мы просто используем нашу нейросеть для получения новых значений, которых не было в обучающей сборке, заодно проверяя насколько верно обучилась сеть.
Либо просто:
После обучения нейросети вы получите график: время, ошибки ![]()
В этом примере нейросеть прошла все 1200 эпох постепенно обучаясь и уменьшая ошибки. дошла до 10 в минус 5 степени :)
В ответ получим:
a = 4.2073 19.2016 40.9148 Если процент ошибки не слишком большой, можно оставить как есть, если нет можно использовать более подходящую нейросеть, увеличить количество эпох, чтобы уменьшить количество ошибок. Вот собственно и все :) Данное руководство не претендует на полноту описание matlab или Нейросетей, это просто пример как можно использовать нейросети для решения задач.
Фай в формате *.m - Нейросеть Зеленая волна |
| Обновлено 17.10.2009 20:16 |

