Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: вопрос по моделированию нейронных сетей в Matlab
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Математика и Физика
Mike86
Нужно заменить нелинейный ОУ нейронной сетью....вроде все ясно и понятно... но капнув глубже...куча недопонимания.... Основной вопрос связан непосредственно с работой в Simulink-е...как можно заставить сеть самообучаться на промоделированном нелинейном объекте. Если кто знает - подскажите...) 05.gif
Dr_Crazy
Цитата(Mike86 @ May 29 2007, 02:18) *
Нужно заменить нелинейный ОУ нейронной сетью....вроде все ясно и понятно... но капнув глубже...куча недопонимания.... Основной вопрос связан непосредственно с работой в Simulink-е...как можно заставить сеть самообучаться на промоделированном нелинейном объекте. Если кто знает - подскажите...) 05.gif

Попробуй создать обучающую выборку на основе генератора шума с заданной функцией распеределения плотности вероятности.
Mike86
Цитата(Dr_Crazy @ May 29 2007, 14:18) *
Попробуй создать обучающую выборку на основе генератора шума с заданной функцией распеределения плотности вероятности.

Это если самому обучать сеть....... Возможно я неправильно поставил вопрос...) Если в Simulinke промоделировать нелинейный объект...его входы и выходы параллельно подсоединить на спроектированную сеть...то как сделать чтобы она в том же Simulinke сеть сразу могла сама обучиться, и в дальнейшим отсоединив ее от объекта она смогла бы воспроизводить работу этого объекта? [короче как провести самообучение сети на реальном объекте]
AVL
Как написал Вам Dr_Crazy, можно входное множество сформировать на основе генератора шума. Подав эту входную последовательность (in_set) на вход ОУ, на выходе ОУ получите соответствующую выходную последовательность (target_out_set). Имея эти две последовательности теперь можно обучить, например, многослойный персептрон методом обратного распространения ошибки. То есть in_set - это входные образы, а target_out_set - это целевая реакция нейросети. Нейросеть формирует выход MLP_out_set. В самом начале MLP_out_set не будет иметь ничего общего с target_out_set. Алгоритм обучения минимизирует ошибку, а именно минимизирует различие MLP_out_set относительно target_out_set. Если допустить, что Вам удастся обучить нейросеть со 100% точностью на вх.множестве in_set, то это значит, что target_out_set и MLP_out_set полностью совпадают на всем множестве in_set. Для пользования обученной нейросетью Вы будете подавать на ее вход реальные данные real_in_set. При этом нейросеть будет обобщать данные и даже, если на входе нейросети появится образ, который не предъявлялся ей во время обучения, она все равно даст на выходе близкий к правде результат.
Mike86
Цитата(AVL @ May 30 2007, 10:37) *
Как написал Вам Dr_Crazy, можно входное множество сформировать на основе генератора шума. Подав ......


Проблема в том...что теория понятна, а вот непосредственно реализация в Mathlab не удается....)))
AVL
Цитата(Mike86 @ Jun 5 2007, 01:18) *
Проблема в том...что теория понятна, а вот непосредственно реализация в Mathlab не удается....)))


А Вам принципиально необходимо нарисовать проект в Simulink и выполнить обучение и моделирование обученной сети тоже в Simulink? Или описание всего этого на языке Matlab тоже устроит?
Mike86
Цитата(AVL @ Jun 5 2007, 16:36) *
А Вам принципиально необходимо нарисовать проект в Simulink и выполнить обучение и моделирование обученной сети тоже в Simulink? Или описание всего этого на языке Matlab тоже устроит?

В принципе... я так и делаю что пишу на матлабе..а проверяю в Simulink, но есть одно но... работать работает но несовсем как должно... К примеру заменил обычный ОУ 1ого порядка нейронной сетью, обучиаю на одной амплитуде (поскольку перех. проц. не зависит от амплитуды вх. сигнала в линейной СУ). Вектор обучения состоит из входного вектора и вектора обратной связи с задержкой сигнала на 1 шаг.... На той амплитуде, на которой обучал все идеально... а чуть изменив амплитуду сигнала на входе... реакция не адекватна....А именно по амплитуде переходный процесс нормальный, а вот по начальному значению и установившемуся...-получается бред: амплитуда входного 0.5 : результат: начальное значение переходного прочесса в точке 0.5 , а установившееся в 1. (Хотя должно быть начало в 0 а установившееся в 0.5) - как это понять? и с чем это может быть связано? )) 07.gif

Цитата(AVL @ Jun 5 2007, 16:36) *
А Вам принципиально необходимо нарисовать проект в Simulink и выполнить обучение и моделирование обученной сети тоже в Simulink? Или описание всего этого на языке Matlab тоже устроит?

Хотя желательно было бы все проделять в Simulink....
Roman N.
Хотелось поинтересоваться получилось ли у вас осуществить поставленную вами задачу?
и если да, то не могли бы вы что-то посоветовать, при похожей задаче.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.