Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > интерполяция не функцией, а суммой функций


Автор: ksili 25.3.2011, 14:08
Всем привет.

Есть ли алгоритмы, предназначенные для отыскания (построения) такой интерполирующей функции (которая точно проходит через заданные точки), которая сама является суммой некоторых функций? Например, надо искать интерполирующую функцию не в виде многочлена, а в виде суммы многочлена (неизвестной степени) и показательной функции (основание неизвестно). 

Может есть методы интерполяции под определённые сочетания функций? А может есть универсальный, который можно приспособить под любой базис?

Автор: VictorTsaregorodtsev 25.3.2011, 15:44
Есть. Многослойный персептрон с обратным распространением ошибки. Сложно, что-ли, обобщить механизм на использование иных нелинейностей (ввести, например, квадраты, кубы и следующие степени переменных) и на произвольное число слоев? А лишние элементы в такой "сети можно после обучения удалить алгоритмами упрощения (ведь проще не перебирать разные конфигурации сетей, а в начальную сеть запихнуть максимум возможного - например, все члены полинома нужной степени, а потом обнулить=отрезать лишние коэффициенты при подвыражениях).

Автор: ksili 28.3.2011, 08:57
Цитата(VictorTsaregorodtsev @  25.3.2011,  19:44 Найти цитируемый пост)
Сложно, что-ли, обобщить механизм на

Не знаю, для меня сложно   smile  smile  я многослойный персептрон никогда не использовал...

Не дадите ли вы ссылки на какие-нибудь статьи или работы с описанием использования перцептрона для нахождения интерполирующих функций?

Или может вы можете здесь вкратце ответить на такие вопросы:
1) Это вообще алгоритм получится детерминированный? Т.е. он всегда будет давать одинаковый и верный ответ о том, что данные можно или нельзя описать определённой комбинацией функций, и если можно, то каковы их параметры? Или по-разному настроенные перцептроны дадут разный ответ? А его настроить ещё надо уметь...
2) Какова вычислительная сложно работы такого алгоритма? Хотя бы какие-то оценки
3) Ему на вход надо подавать сразу все точки или можно по-очереди?

Автор: maxim1000 28.3.2011, 10:34
Цитата(ksili @  25.3.2011,  14:08 Найти цитируемый пост)
Например, надо искать интерполирующую функцию не в виде многочлена, а в виде суммы многочлена (неизвестной степени) и показательной функции (основание неизвестно).

ну а чем многочлен не сумма функций x^n? принцип тот же

Автор: ksili 28.3.2011, 11:14
maxim1000, какой принцип?  Как, например, использовать формулу интерполяционного многочлена Лагранжа или Ньютона для нахождения интерполянта в виде (многочлен n-й степени) + c1*(c2^(c3*x + c4)) ? т.е.  полином + показательная функция.

Автор: maxim1000 28.3.2011, 12:36
а... про c2, c3, c4 я не подумал
просто частенько интерполяционные алгоритмы основаны на предположении, что зависимость от коэффициентов линейная

Автор: Akina 28.3.2011, 15:19
Чо-т я не понял... а сумма функций у нас типа ни разу не функция?

Автор: VictorTsaregorodtsev 28.3.2011, 15:46
Цитата(ksili @  28.3.2011,  08:57 Найти цитируемый пост)

Не дадите ли вы ссылки на какие-нибудь статьи или работы с описанием использования перцептрона для нахождения интерполирующих функций?

1) Это вообще алгоритм получится детерминированный? Т.е. он всегда будет давать одинаковый и верный ответ о том, что данные можно или нельзя описать определённой комбинацией функций, и если можно, то каковы их параметры? Или по-разному настроенные перцептроны дадут разный ответ? А его настроить ещё надо уметь...
2) Какова вычислительная сложно работы такого алгоритма? Хотя бы какие-то оценки
3) Ему на вход надо подавать сразу все точки или можно по-очереди? 


1) Можно сделать и детерминированным, и недетерминированным.
2) Линейный по каждой размерности. Трудозатраты по каждой размерности перемножаются. Т.е. сложность порядка О(ЧислоАргументов*ЧислоКоэффициентовВСети*ЧислоИтерацийАдаптацииСети)
3) Оба варианта возможны. Поточечная подача обычно быстрее сходится

А по ссылкам... Сложно. С одной стороны, везде, где рассматривается задача прогнозирования (регрессии) на нейросети - это одновременно и задача интерполяции (потому что регрессия должна работать и внутри первоначальной области значений аргументов, так и позволять выходить за эту исходную область значений, но Вам экстраполяция не нужна, значит, остается интерполяция). С другой стороны, сеть обычно решает задачу аппроксимации таблично заданной функции (обучающей выборки), и не стремится к получению "правильной" регрессии (в математическо-статистическом смысле - где регрессия представляет собой условное матожидание). Вообще-то, всё решаемо выбором правильной целевой функции (при обучении штрафующей за неточность ответа сети) - но это уже делается под особенности конкретной задачи, а у Вас пока только общий вопрос (без детальной привязки к задаче) изложен.
Да и не спец я по "ссылкам", особенно в инете. В инете чаще всего идёт полный бред. Я привык к работе с книжками (чаще всего забугорными).

В чём цимес нейросетевого подхода - он позволяет считать производные по адаптивным коэффициентам функции (сети) очень БЫСТРО (время расчета ВСЕГО вектора градиента в 2-3 раза медленнее, чем вычисление фукнции), и использовать всю мощь алгоритмов градиентной оптимизации. При этом оптимизация (обучение сети) является самоисправляющимся процессом - неточности промежуточных вычислений не накапливаются (а вот если, например, решаем систему лин.уравнений методом Гаусса - то там идёт накопление погрешностей при приведении матрицы к диагональному виду).

Автор: ksili 29.3.2011, 04:26
Цитата(Akina @  28.3.2011,  19:19 Найти цитируемый пост)
Чо-т я не понял... а сумма функций у нас типа ни разу не функция?

Ну, я имел в виду случай, когда целевая функция - сумма элементарных функций. 

Автор: Akina 29.3.2011, 07:44
ksili, моё мнение - если за интерполируемой зависимостью не скрыта реальная физика, вводящая свои ограничения (которые, впрочем, можно учесть), разбиение на элементарные функции только усложняет задачу.
Пожалуй, единственное исключение, когда такое разбиение может иметь реальный смысл - это когда сигнал интерполируется как сумма двух функций принципиально разного веса. Грубо - одна задаёт основной вид (скажем линейная), вторая обеспечивает отклонения от него (ну например синусоида).

Автор: esperanto 27.4.2011, 00:14
Если ф-у ортогональны то коэфициенты находяться очень просто.

Иначе надо решать систему уравнений.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)