Добро пожаловать, гость
:: алгоритмы  и методы :: :: олимпиадные задачи :: :: связь :: :: о сайте :: :: форум ::

Форум работает в режиме архива, только для чтения и поиска.
Архив 2004 Архив 2007 Архив 2013

 
 
Опции темы Поиск в этой теме Опции просмотра
  #11  
Старый 26.02.2011, 17:08
Новичок

Отправить личное сообщение для Sarge Посмотреть профиль Найти все сообщения от Sarge
 
Регистрация: 20.02.2011
Сообщений: 12

т.е получается, если я даже и захочу реализовать свою идею и найду решение своей ЦФ, то не смогу самостоятельно расставить веса по нейронной сети, что в принципе ставит под сомнение реализации задуманной идеи...правильно ли я понял?
  #12  
Старый 26.02.2011, 18:18
гocть

 
Сообщений: n/a

да можете расставить конечно.
  #13  
Старый 26.02.2011, 18:55
Новичок

Отправить личное сообщение для Sarge Посмотреть профиль Найти все сообщения от Sarge
 
Регистрация: 20.02.2011
Сообщений: 12

Спасибо большое за помощь!!!
  #14  
Старый 08.03.2011, 03:20
Новичок

Отправить личное сообщение для Sarge Посмотреть профиль Найти все сообщения от Sarge
 
Регистрация: 20.02.2011
Сообщений: 12

[quote=гocть;14127]
Сообщение от Sarge Посмотреть сообщение

Например, для однослойной сети с сигмоидной функции активации: f(x, w) = 1/(1 + exp(-w^T x)) = 1/(1 + exp(-w1 x2 - w2 x2 - ... - w_m x_m)).

Если вы хотите отказаться от стандартного backpropagation по одному примеру, и минимизировать все сразу, то берите сумму по всем n примера в обучающей выборке: \sum_{i=1}^n (y[i] - f(x[i]; w))^2

hl=en&q=neural+networks+time+series[/url]
Здравствуйте, еще раз! Надеюсь Вы загляните в этот пост еще разок

Я вот тут по тихоньку разбираюсь с нейронными сетями, конечно это целый океан, но захватывающе! Спасибо за книгу, которую Вы мне посоветовали действительно по сравнению с тем, что я начал читать это небо и земля!!!
Я бы хотел Вам задать еще несколько вопросов, если Вы не против и я Вам не надоел :
1) вот Вы мне написали, что функция активации для однослойной сети с сигмоидной функцией активации будет: f(x, w) = 1/(1 + exp(-w^T x)) = 1/(1 + exp(-w1 x1 - w2 x2 - ... - w_m x_m)), а что здесь будет "x" ??? В смысле, я понимаю, что "x" - это входное значение для нейрона, но как его определить? ведь если y - это желаемое значение, допустим 100 и у нас однослойная сеть с 3 -мя нейронами в слою, то чему будет равно x на входе у каждого нейрона? поровну, т.е 100/3 - это наверное вряд ли?

2) и как измениться функция активации, если у нас добавиться еще один слой в ИНС, т.е двух слойная сеть с n нейронами в 1 слою и с m нейронами во 2 слою, допустим каждый нейрон 2 слоя связан с каждым нейроном 1 слоя?

Заранее благодарен ВАМ!!!!!!
  #15  
Старый 08.03.2011, 03:47
гocть

 
Сообщений: n/a

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

приведу пример. допустим вы хотите классифицировать тексты е-мейлов. спам / не спам. в таких случаях в качестве входных значений (или признаков, фичей) часто используется так называемый "мешок слов" - текст представляется просто в виде вектора частот (обычно дополнительно еще помноженных на idf, но это уже детали) встречаемых в нем слов. можно и не ограничиваться словами, добавить что-то еще - например, информацию о присутствии отправителя в различных черных списках, "авторитетность" домена отправителя (например, gmail.com это хорошо, незнаковый домен плохо), сколько раз на этого отправителя пожаловались ваши пользователи (если у вас почтовый сервис и у пользователей есть кнопка типа "это спам"), и т.п.

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

Цитата:
и как измениться функция активации, если у нас добавиться еще один слой в ИНС, т.е двух слойная сеть с n нейронами в 1 слою и с m нейронами во 2 слою, допустим каждый нейрон 2 слоя связан с каждым нейроном 1 слоя?
а почему она должна от этого меняться? функция активации - это свойство каждого нейрона а не сети в целом. можете оставить сигмоидную
  #16  
Старый 14.03.2011, 21:11
Новичок

Отправить личное сообщение для Sarge Посмотреть профиль Найти все сообщения от Sarge
 
Регистрация: 20.02.2011
Сообщений: 12

Здравствуйте!

Спасибо за ответ!!!

Только я наверно не правильно написал и Вы меня не совсем поняли
Сообщение от гocть Посмотреть сообщение
и как измениться функция активации, если у нас добавиться еще один слой в ИНС, т.е двух слойная сеть с n нейронами в 1 слою и с m нейронами во 2 слою, допустим каждый нейрон 2 слоя связан с каждым нейроном 1 слоя?

а почему она должна от этого меняться? функция активации - это свойство каждого нейрона а не сети в целом. можете оставить сигмоидную
здесь я имел ввиду как измениться f(x, w)? т.е для однослойной сети с 3 нейронами в слою она будет выглядеть как:
f(x,w) = 1/(1 + exp(-w1 x1 - w2 x2 - w3 x3));
а как измениться эта функция, если добавиться второй (третий и т.д) слой в ИНС, с 2 нейронами во 2 слою, допустим каждый нейрон 2 слоя связан с каждым нейроном 1 слоя?

И еще вы сказали, что
Сообщение от гocть Посмотреть сообщение
при прогнозировании рядов берите в качестве входных значений предыдущие значения ряда, в каком-нибудь фиксированном окне. если это финансовые ряды, попробуйте добавить какую-нибудь информацию вроде биржевых индексов и т.п., если у вас есть подозрение что ваш ряд с ними может быть связан.
подскажите, а что если ситуация след. я выяснил, что на мой выходной ряд влияют 2 фактора: x1 и x2. Я сформировал некую архитектуру ИНС, нашел по своему алгоритму веса для каждого из нейронов сформированной ИНС и дальше хочу построить прогноз на 21.01, но что я подам на вход ИНС по факторам x1 и x2, если я их на момент прогноза тоже не знаю? К примеру:
================================================== ==========
Период | Выходной ряд(прогнозируемый) | фактор1 (x1) | фактор2 (x2) |
================================================== ==========
18.01 | 200 | 90 | 1000 |
19.01 | 202 | 91 | 998 |
20.01 | 199 | 89 | 1000 |
-------------------------------------------------------------------------
21.01(прогн.дата) ? | - | - |

В пакете deductor studio, есть раздел посвященный нейронным сетям, там все по стандарту: строим архитектуру ИНС, выбираем метод обучения (которые заложены в программу), обучаем (подаем на вход к примеру наши факторы x1 и x2), затем после обучения (после нахождения всех весов), есть кнопка спрогнозировать и программа строит прогноз в виде графика, но что в данном случае при построении самого прогноза подается в x1 и x2, ведь я узнаю их только 21.01???

и еще один маленький вопросик: веса могут изменяться только в диапазоне [0;1]? т.е не может чтобы вес одного из нейронов равнялся 2,5?

Спасибо!!! С нетерпением жду Вашего ответа!
  #17  
Старый 14.03.2011, 22:01
гocть

 
Сообщений: n/a

Сообщение от Sarge Посмотреть сообщение
здесь я имел ввиду как измениться f(x, w)? т.е для однослойной сети с 3 нейронами в слою она будет выглядеть как:
f(x,w) = 1/(1 + exp(-w1 x1 - w2 x2 - w3 x3));
прошу прощения, забыл раньше написать, но там внутри еще добавляют константу: f(x,w) = 1/(1 + exp(-w1 x1 - w2 x2 - w3 x3 - w4)).

Цитата:
а как измениться эта функция, если добавиться второй (третий и т.д) слой в ИНС, с 2 нейронами во 2 слою, допустим каждый нейрон 2 слоя связан с каждым нейроном 1 слоя?
итак, допустим у нас 3 входных значения: x1, x2, x3. (их называют первым, входной слоев нейронов)

один скрытый слой с двумя нейронами, выходы которых обозначим за y1, y2, с обычной сигмоидной функцией активации.

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

уравнения:

y1 = 1/(1 + exp(-w11 x1 - w12 x2 - w13 x3 - w14))
y2 = 1/(1 + exp(-w21 x1 - w22 x2 - w23 x3 - w24))
z1 = w31 y1 + w32 y2 + w30

если вам так удобнее, все можно конечно свести и в одну формулу:

f(x, w) = z1 =
w31/(1 + exp(-w11 x1 - w12 x2 - w13 x3 - w14)) +
w32/(1 + exp(-w21 x1 - w22 x2 - w23 x3 - w24)) +
w30

но лучше работать с диаграммой. для двух скрытых слоев и больше по диаграмме даже и считаться быстрее будет, т.к. в раскрытой формуле начнут повторяться члены.

Цитата:
но что я подам на вход ИНС по факторам x1 и x2, если я их на момент прогноза тоже не знаю?
значит придется использовать значения из предыдущих дат.

Цитата:
и еще один маленький вопросик: веса могут изменяться только в диапазоне [0;1]? т.е не может чтобы вес одного из нейронов равнялся 2,5?
веса инициализируют небольшим случайными числами около нуля.
сигмоида 1/(1 + exp(-wx)) симметрична вокруг нуля, поэтому надо брать не [0, 1] а например [-0.5, 0.5].

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

стандартный прием: добавить к целевой функции регуляризующий член, который бы стягивал веса к нулю. обычно берут сумму квадратов весов всех нейронов. но только тогда нужно следить чтобы входные значения были примерно одинакового масштаба, иначе сумма квадратов будет штрафовать какие-то веса намного сильнее, чем другие.
  #18  
Старый 14.03.2011, 22:05
гocть

 
Сообщений: n/a

целевая функция для оптимизации будет (сумма квадратов ошибок) + С*(сумма квадратов весов), где С - коэффициент регуляризации. при С -> 0 ситуация будет как если бы не было регуляризации, при C -> oo веса будут все больше и больше стягиваться к нулю.
  #19  
Старый 15.03.2011, 23:48
Новичок

Отправить личное сообщение для Sarge Посмотреть профиль Найти все сообщения от Sarge
 
Регистрация: 20.02.2011
Сообщений: 12

Добрый вечер!!!

Спасибо Вам большое, теперь у меня сложилась полная картинка, даже не знаю как Вас отблагодарить !!! Думаю остался последний вопрос. Для построения прогноза мне необходимо получить веса для каждого из нейронов, Вы мне дали след. совет:
Сообщение от гocть Посмотреть сообщение
Если вы хотите отказаться от стандартного backpropagation по одному примеру, и минимизировать все сразу, то берите сумму по всем n примера в обучающей выборке: \sum_{i=1}^n (y[i] - f(x[i]; w))^2
насколько я понял здесь будет идти цикл по i, и на каждом витке цикла я буду получать свои веса, т.е в результате этого цикла я получу n наборов весов, но какие веса выбрать для конечного прогноза из этого набора? Или взять средний вес по каждому w[i] и именно такие веса использовать в прогнозе? Или на каждом ветке цикла для каждого w[i]наращивать приращения от предыдущего w[i] и таким образом в конце я получу конечные веса для каждого нейрона?
  #20  
Старый 16.03.2011, 00:28
гocть

 
Сообщений: n/a

не понял вопроса

приведенная формула просто сумма квадратов ошибок сети на всех обучающих примерах. вы ее оптимизируете каким-нибудь итерационным методом. это один вариант.

другой вариант - брать примеры по одному, считать градиент на одном примере и делать шаг градиентного спуска. по выборке нужно много раз пройтись, пока не сойдется. так работает стандартный backpropagation.

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


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Новичок в НС Sargez Искусственный интеллект, нейронные сети 3 31.08.2010 03:40
Восстановление вектора входных параметров по выходному в нейронных сетях Geck Искусственный интеллект, нейронные сети 11 07.12.2009 02:34
СРОЧНО: ищу специалиста/программиста нейронных сетей! гость Искусственный интеллект, нейронные сети 0 24.11.2009 16:06