2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Нейронные сети. Решение систем нелинейных уравнений
Сообщение12.10.2009, 17:03 
Аватара пользователя
Доброго времени суток, уважаемые товарищи!
Меня ОЧЕНЬ СИЛЬНО интересует тема решения систем НЕлинейных уравнений с помощью нейронных сетей. Бродя по просторам интернета можно заметить ссылки на статью в 7-ом выпуске журнала «нейрокомпьютеры: разработка, применение» за 2005г. «Использование нейронных сетей для решения систем нелинейных уравнений». Авторы: Горбаченко В.И., Убиенных Г.Ф., Москвитин С.А.
К примеру, ссылка на журнал: http://www.radiotec.ru/catalog.php?cat=jr7&itm=2005-7
Ссылка на статью в журнале: http://www.radiotec.ru/catalog.php?cat=jr7&art=3896
К сожалению, я не нашел возможности скачать выпуск журнала. Более того, в нашей публичной городской библиотеке этого журнала также не оказалось.
Если кто знаком с этой темой или знает, где можно скачать выпуск журнала, пожалуйста, дайте знать. Ссылки на сайты с подробным рассмотрением темы также приветствуются!

 
 
 
 Re: Нейронные сети. Решение систем нелинейных уравнений
Сообщение13.10.2009, 22:02 
Что касается систем нелинейных алгебраических уравнений с числом уравнений равным числу переменных, то с ними полностью и успешно справляется пакет Математика при разумных, конечно, ограничениях. Если речь идёт о решении систем нелинейных уравнений, то надо подходить индивидуально к каждой задаче вида F(X)=0. А связь такого набора слов как ”нейронные сети” с решением СНУ примерно такая же, как связь потепления климата с техновыбросами в атмосферу, то есть, о ней можно всё время говорить. Нет повести забавнее на свете, чем повесть о решениях, попавших в нейронные сети… Как-то так...

 
 
 
 Re: Нейронные сети. Решение систем нелинейных уравнений
Сообщение13.10.2009, 22:11 
Аватара пользователя
Хорошо. Спасибо хоть за какой-то отклик, а то я уж совсем отчаялся.
У меня есть 3 уравнения 2-го порядка (3 уравнения окружности).
Мне нужно натренировать НС решать такую систему уравнений, но я не знаю как подступиться к этой задаче.
Вот если бы я смог раздобыть вышеуказанною статью, то возможно она открыла бы мне глаза...

П.С. Какая топология вообще должна быть у такой НС? Многослойные нейросети подойдут? Многослойный персептрон справится?

 
 
 
 Re: Нейронные сети. Решение систем нелинейных уравнений
Сообщение14.10.2009, 00:59 
motoden в сообщении #251456 писал(а):
У меня есть 3 уравнения 2-го порядка (3 уравнения окружности).
Мне нужно натренировать НС решать такую систему уравнений, но я не знаю как подступиться к этой задаче.

Вот здесь те же авторы на ту же тему пишут:
Новые информационные технологии и системы. Труды VI научно-технической конференции. Часть 1. Статья "Нейросетевая аппроксимация функций многих переменных при решении системы нелинейных уравнений."

И Google при поиске neural networks "nonlinear equations" довольно много ссылок выдает, например
Modified Hopfield Neural Network Approach for Solving Nonlinear Algebraic Equations
Solving Nonlinear Equations Using Recurrent Neural Networks

Ну а кроме этого, можно и самому что-нибудь придумать на основе обычного многослойного пересептрона. Например, построить сеть, принимающую на входе значения коэффициентов Вашей системы и выдающую на выходе решение соответствующей системы нелинейных уравнений.
Обучающий набор данных при этом должен содержать известные решения. Строить его лучше программно, представив Вашу систему как недоопределенную систему из 3 линейных уравнений с 9 неизвестыми относительно коэффициентов исходных уравнений.
Сам такую штуку делать не пробовал, но не вижу причин, почему бы ей не работать :)

Только Вы твердо уверены, что у Вас именно 3 окружности? 3 окружности довольно редко в одной точке пересекаются :)

 
 
 
 Re: Нейронные сети. Решение систем нелинейных уравнений
Сообщение14.10.2009, 02:33 
Аватара пользователя
Maslov в сообщении #251505 писал(а):
Вот здесь те же авторы на ту же тему пишут:
Новые информационные технологии и системы. Труды VI научно-технической конференции. Часть 1. Статья "Нейросетевая аппроксимация функций многих переменных при решении системы нелинейных уравнений."

Спасибо большое, это как раз то, что мне нужно!
Как вы нашли эту ссылку? Я довольно долго и нудно гуглил...
Maslov в сообщении #251505 писал(а):
Только Вы твердо уверены, что у Вас именно 3 окружности? 3 окружности довольно редко в одной точке пересекаются

Да, в 3 окружностях я уверен.

 
 
 
 Re: Нейронные сети. Решение систем нелинейных уравнений
Сообщение14.10.2009, 02:49 
motoden в сообщении #251514 писал(а):
Как вы нашли эту ссылку? Я довольно долго и нудно гуглил...
Не помню точно. Что-то типа "Горбаченко Убиенных нейронная сеть" :)

 
 
 
 Re: Нейронные сети. Решение систем нелинейных уравнений
Сообщение14.10.2009, 09:35 
motoden в сообщении #251514 писал(а):
Да, в 3 окружностях я уверен.

Можно уточнить, Вас интересует именно проблема решения СНАУ, или некие сети сами по себе? Если СНАУ, то чем не устраивает пакет Математика, если просто сети, то в связи с чем? Если имеется мысль, что сети каким-то образом помогают в решении СНУ, то это почти неверно, если они помогают в решении СНАУ, то эта проблема давно решена. Просто не очень понятно, тем более, когда число переменных превосходит число уравнений, потому что в этом случае решением является бесконечное множество…
Что касается трёх алгебраических уравнений второго порядка, то они могут быть минимум с тремя переменными, значит, никаких трёх окружностей не может быть, но это просто к слову…

 
 
 
 Re: Нейронные сети. Решение систем нелинейных уравнений
Сообщение11.11.2009, 22:51 
Аватара пользователя
Передо мной стоит задача решения СНУ именно нейронными сетями. Научный руководитель так поставил задачу. Вот мои 3 уравнения:
$
\left\{ \begin{array}{l}
c*t-\sqrt {(x_1-x)^2+(y_1-y)^2} =0,\\
c*(t+t_1_2)-\sqrt {(x_2-x)^2+(y_2-y)^2} =0,\\
c*(t+t_1_3)-\sqrt {(x_3-x)^2+(y_3-y)^2} =0
\end{array} \right.
$

$x_1, x_2, x_3, y_1, y_2, y_3, c, t_1_2, t_1_3 = const$
Уравнения относительно переменных t, x, y.
Сейчас, вопреки тому, что предлагают в статье, пытаюсь обучить решать такую СНУ многослойный персептрон. Во всех обучающих и тестовых примерах задача имеет решение. На обучающих последовательностях (до 100 последовательностей) он обучается, но при тестовых выборках сеть даёт больше неправильных ответов, чем правильных. Возможно я её как-то неправильно обучаю, не знаю.
Обучаю я её следующим образом: на вход сети подаю выличины $t_1_2, t_1_3$, а с выхода пытаюсь получить величины x и y. Получается, что я использую лишь 2 уравнения? Честно говоря, я запутался...
Кто-нибудь может помочь разобраться?

 
 
 
 Re: Нейронные сети. Решение систем нелинейных уравнений
Сообщение11.11.2009, 23:06 
Объясните, пожалуйста, почему Вы только 2 коэффициента из 9 на вход подаёте? У Вас что, все остальные коэффициенты фиксированы?

 
 
 
 Re: Нейронные сети. Решение систем нелинейных уравнений
Сообщение11.11.2009, 23:58 
Аватара пользователя
Maslov в сообщении #261038 писал(а):
Объясните, пожалуйста, почему Вы только 2 коэффициента из 9 на вход подаёте? У Вас что, все остальные коэффициенты фиксированы?

Неизвестных у меня 3, а не 9. Это $t, x, y$.
Величины $x_1, x_2, x_3, y_1, y_2, y_3, c$ фиксированы. Одна СНУ решая которую, я беру данные для обучения НС отличается от другой лишь значениями $t_1_2, t_1_3$. Данные для обучения сети я получаю следующим образом:
- рандомно определяю значения $x, y$ (в пределах от 1 до 100 для каждого);
- нахожу $t$, выражая его из 1-го уравнения системы (таким образом t оказывается зависимой величиной?);
- определяю $t_1_2, t_1_3$ из 2-го и 3-го уравнений;
- Вставляю величины $t_1_2, t_1_3$ в обучающий вектор, а величины $x, y$ в целевой вектор.
Вроде как неизвестное $t$ оказывается зависимой величиной от $x, y$. Его нужно использовать? Если да, то как?

 
 
 
 Re: Нейронные сети. Решение систем нелинейных уравнений
Сообщение12.11.2009, 01:01 
motoden в сообщении #261058 писал(а):
Неизвестных у меня 3, а не 9. Это $t, x, y$.
Я не про неизвестные говорю, а про коэффициенты (параметры) модели. Общая схема примерно такая: на вход подаём значения параметров модели, с выходов снимаем решения. Но раз у Вас 7 параметров из 9 фиксированы, то так, как Вы делаете, тоже можно.

А вот со способом построения обучающей последовательности могут быть проблемы: ИНС обычно хорошо работают только в том диапазоне входных параметров, на котором проводилось обучение, поэтому надо внимательно следить за тем, чтобы обучающие пары $(t_{12}, t_{13})$ более-менее равномерно покрывали рабочий диапазон.

Но Вы бы начали с чего-нибудь простенького, типа
$ \left\{ \begin{array}{l} x^2+y^2=a,\\x^2+y^2 =b \end{array} \right. $
(просто чтобы задачу и инструмент почувствовать).

 
 
 
 Re: Нейронные сети. Решение систем нелинейных уравнений
Сообщение12.11.2009, 01:43 
Аватара пользователя
хорошо. Спасибо, потренируюсь.
А вот другой немаловажный вопрос: сколько нейронов в первом слое следует брать для решения моей задачи, если я пытаюсь решить задачу с помощью 2-слойного персептрона? Во втором (выходном) слое у меня 2 нейрона: один для вывода неизвестного x, другой - для y.
Число нейронов 1-го слоя должно зависеть от числа обучающих последовательностей, на которых я предполагаю обучать сеть?

 
 
 
 Re: Нейронные сети. Решение систем нелинейных уравнений
Сообщение12.11.2009, 01:52 
motoden в сообщении #261091 писал(а):
Число нейронов 1-го слоя должно зависеть от числа обучающих последовательностей, на которых я предполагаю обучать сеть?
Напрямую не должно. Основное условие - это то, что общее количество настраиваемых весов должно быть существенно меньше длины обучающей последовательности.
А вообще, количество нейронов в скрытом слое - это основной параметр настройки сети. Обычно начинают с небольшого количества, потом постепенно увеличивают.

И по терминологии: обучающая последовательность - это последовательность "точек" каждая из которых состоит из нескольких входных значений и нескольких выходных. Другими словами, обучающая последовательность - это последовательность обучающих векторов.

 
 
 
 Re: Нейронные сети. Решение систем нелинейных уравнений
Сообщение12.11.2009, 02:04 
Аватара пользователя
Maslov в сообщении #261094 писал(а):
Другими словами, обучающая последовательность - это последовательность обучающих векторов.

Именно в таком смысле я и старался применять это выражение. 1 обучающая последовательность = 1 входной вектор. Или где-то я неправильно выразился?
Возможно здесь была тавталогия:
motoden в сообщении #261091 писал(а):
Число нейронов 1-го слоя должно зависеть от числа обучающих последовательностей, на которых я предполагаю обучать сеть?

Может правильно будет так:
motoden в сообщении #261091 писал(а):
Число нейронов 1-го слоя должно зависеть от числа обучающих последовательностей?

?

 
 
 
 Re: Нейронные сети. Решение систем нелинейных уравнений
Сообщение12.11.2009, 04:10 
motoden в сообщении #261096 писал(а):
1 обучающая последовательность = 1 входной вектор.
В соответствии с общепринаятой терминологией, обучающая последовательность - это последовательность всех Ваших обучающих векторов.

По поводу количества нейронов:
входной слой - нейронов столько, сколько входных параметров;
выходной слой - нейронов столько, сколько выходных параметров;
скрытый слой - минимальное количество нейронов, обеспечивающее требуемое качество аппроксимации.

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

 
 
 [ Сообщений: 15 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group