Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2012, 20:20   #31
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Можно простейший пример??
Простейший?
Было: (1,3), (2,5)
Тейлор, коэффициенты: 0-й - (1,3), 1-й - (1,2), 2-й и последующие - (0,0) - просто потому, что по имеющимся данным их оценить невозможно.
Если считать, что отсчеты равноудалены, то:
Прогноз: (3,7).

Но все-таки хотелось бы увидеть непротиворечивую постановку задачи.
s-andriano вне форума Ответить с цитированием
Старый 09.12.2012, 23:48   #32
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,692
По умолчанию

Давайте так. Если это показатели с прибора, то их следует сгладить, т.к. шум.
//Данные пришедшие с прибора
x = realX + noise
y = realY + noise

также вы утверждаете что x частично зависит от y, т.е.

x = f(y, a), где а другие параметры от которых зависит x

т.к. a нам неизвестен, то положим что a = {x[-1], x[-2], ... ,x[-n]}, т.е. x зависит от y, и предыдущих значений x. Задача найти f(y, a). Первый параметр нам неизвестен, но его можно предсказать, т.е. если y принадлежит [u,w], то бьем этот интервал на n под интервалов, чем больше, тем точнее результат. Затем вычисляете кол-во попаданий y в каждый из интервалов, потом эти количества делите на кол-во совершенных проверок и получаете вероятность попадания y в интервалы. Т.е. по сути получаете распределение вероятностей независимой случайной величины y. Далее используя эти вероятности и ГСЧ с равномерным распределением вычисляете y, за y возьмите середину интервала.
Если использовать НС, то этих рассуждений будет достаточно. Создаем многослойный персептрон с n+1 входами и m выходов, где m кол-во значений, которые хотите предсказать. Три скрытых слоя, в которых кол-во нейронов в первом слое меньше чем во втором, а во втором больше чем в третьем. Обучаете сеть. Пользуетесь ею.

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

Ах, да, чуть не забыл. Вы должны заключить f(y, a) в гиперкуб. Т.к. нейроны могут возвращать значения (-1,1)(если используете гиперболический тангенс), значит все входные значения вы должны заключить в интервал (-1,1). Чтобы получить реальные значения x на выходе сети, просто проделайте обратное преобразование, которое будете проделывать над x, при подаче их сети.

Как-то так =)
Kostia вне форума Ответить с цитированием
Старый 10.12.2012, 08:42   #33
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Ок. Спасибо. Буду разбираться ..
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 17.12.2012, 17:12   #34
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Возвращаюсь к теме... Вроде разобрался. Построил сеть. обучил.. но с результатами пляски какие то ... Поэтому хочу спросить еще пару вопросов.
1) По какой такой хитрой формуле производить трансформацию данных в промежуток от -1 до 1. Я так понял что нейросеть работает с числами в этом промежутке.
2) Существует ли алгоритм выбора оптимального количества слоев и нейронов в слоях сети?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 17.12.2012, 17:29   #35
MihalNik
МегаМодератор
СуперМодератор
 
Регистрация: 27.11.2012
Сообщений: 5,714
По умолчанию

1) Ищите "сжимающие функции" (например, логистическая)
Желательно чтобы данные эффективно попадали на сжимаемый интервал (коэффициенты нужно подбирать - смотрите на график функции - где там у нее "подвижная" область)
2) Если абстрагироваться от конкретной задачи (черный ящик), то можно попробовать рандомить количество слоев и нейронов и тестировать выбирая оптимальные по обучаемости (можно и генетический алгоритм, только не ругайтесь сильно). Ну еще можно делением пополам попробовать подобрать число нейронов (по всей или в каждом слое).
Благими намерениями устлана дорога на programmersforum.ru
MihalNik вне форума Ответить с цитированием
Старый 17.12.2012, 17:30   #36
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
1) По какой такой хитрой формуле производить трансформацию данных в промежуток от -1 до 1. Я так понял что нейросеть работает с числами в этом промежутке.
Нейросеть "вообще" работает с чем угодно. Но обычно функция активации имеет областью значений некоторое подмножество [0, 1]. Типовые решения - функция Хэвисайда, сигмоиды (экспоненциальная, гиперболический тангенс). Соответственно, выходной вектор такой нейросети тоже будет состоять из компонент, принадлежащих [0, 1]. Если Вам нужны значения из более широкого диапазона, можно воспользоваться, например, арктангенсом.

Цитата:
2) Существует ли алгоритм выбора оптимального количества слоев и нейронов в слоях сети?
Для того, чтобы был алгоритм, нужны формализованные входные данные - постановка задачи и критерий оптимизации. Такого никто вроде бы не делал, ибо бессмысленно. Проще подобрать методом проб и ошибок.
Abstraction вне форума Ответить с цитированием
Старый 17.12.2012, 17:30   #37
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от MihalNik Посмотреть сообщение
1) Ищите "сжимающие функции" (например, логистическая)
Желательно чтобы данные эффективно попадали на сжимаемый интервал (коэффициенты нужно подбирать - смотрите на график функции - где там у нее "подвижная" область)
2) Если абстрагироваться от конкретной задачи (черный ящик), то можно попробовать рандомить количество слоев и нейронов и тестировать выбирая оптимальные по обучаемости (можно и генетический алгоритм, только не ругайтесь сильно). Ну еще можно делением пополам попробовать подобрать число нейронов (по всей или в каждом слое).
Тупо брутфорсить походу надо да?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 17.12.2012, 17:46   #38
MihalNik
МегаМодератор
СуперМодератор
 
Регистрация: 27.11.2012
Сообщений: 5,714
По умолчанию

Брутфорсить надо. Но тупо подобрать методом проб и ошибок не так-то и просто.
Лучше в рандомный генератор поместить в тестирующую оболочку и на ночь оставить
Очень важны правильные соотношения коэффициентов в функциях с количествами нейронов и диапазонами весов.
Благими намерениями устлана дорога на programmersforum.ru
MihalNik вне форума Ответить с цитированием
Старый 17.12.2012, 17:55   #39
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,692
По умолчанию

Цитата:
2) Существует ли алгоритм выбора оптимального количества слоев и нейронов в слоях сети?
Нет
Цитата:
1) По какой такой хитрой формуле производить трансформацию данных в промежуток от -1 до 1. Я так понял что нейросеть работает с числами в этом промежутке.
Нет, тут все зависит от типа НС, существуют НС которые могут работать вообще с любыми объектами, была бы только определена для них мера сходства(например SOM).
На счет преобразования:
x принадлежит [a,b], b > a, нужно преобразовать x так, чтобы он принадлежал [0,1].
x' = (x - a) / (b-a)
x = x' * (b-a) + a
чтобы принадлежал [-1,1]
x' = (x - (b-a)/2 - a) / ((b-a)/2)
x = x' * ((b-a)/2) + (b-a)/2 + a

Вроде не наврал =)
Посмотрите в "Нейронные сети полный курс" теорему об универсальной аппроксимации (гл. 4). Да и др. пункты данной главы, там есть ответы на многие вопросы.

Последний раз редактировалось Kostia; 17.12.2012 в 18:00.
Kostia вне форума Ответить с цитированием
Старый 17.12.2012, 22:04   #40
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от Kostia Посмотреть сообщение

Посмотрите в "Нейронные сети полный курс" теорему об универсальной аппроксимации (гл. 4). Да и др. пункты данной главы, там есть ответы на многие вопросы.
Читаю потихоньку ... но как то там суховато написано ... на мой взгляд много лишнего ..
Спасибо.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Анализ IP-адресов ConstantinPerm Паскаль, Turbo Pascal, PascalABC.NET 2 07.12.2012 14:44
Анализ ПО ImmortalAlexSan Свободное общение 14 27.11.2011 23:56
Корреляционный анализ danilnv C++ Builder 0 23.11.2011 12:59
Анализ графика lichnost Помощь студентам 6 02.04.2010 13:24
Анализ текста GonZaleZ Общие вопросы C/C++ 11 16.09.2009 23:31