Попытался сваять нейросеть для прогнозирования. Модель получилась вроде. Но слабо понимаю алгоритмы обучения сети. Кто хочет помочь - присоединяйтесь.
Извините за оффтоп, если что...
Извините за оффтоп, если что...
18.08.2011 12:08:28
когда то курил вот такую вещь
но тяжко. читал теорию - плюнул - и вернулся к обычному тех анализу и разложению ряда. Маткад можно прикрутить и математика тоже вроде через COM подключается. Для прогнозирования есть и com модуль CatSSA. |
|
|
|
18.08.2011 15:21:18
Цель написания - ради удовольствия и заодно попытаться спрогнозировать заболеваемость.
Statistica и прочий заточенный софт использовал. Получаются неплохие результаты. Что касается создания книги - это место где будут хранится веса входов нейронов после обучения и прочая отладочная информация, а потом на основе этой книги можно будет создавать сети и использовать их. На теперешнем этапе пробую заставить сеть выучить таблицу умножения и решать уравнения. Если кому интересно, могу все расписать в подробностях... |
|
|
|
18.08.2011 15:31:17
>>Если кому интересно, могу все расписать в подробностях.
Что это вообще такое?) Объясните попроще. Смотрел здесь, понял, но мало. "Нейронные сети не программируются в привычном смысле этого слова, они обучаются. Возможность обучения — одно из главных преимуществ нейронных сетей перед традиционными алгоритмами. Технически обучение заключается в нахождении коэффициентов связей между нейронами. В процессе обучения нейронная сеть способна выявлять сложные зависимости между входными данными и выходными, а также выполнять обобщение. Это значит, что в случае успешного обучения сеть сможет вернуть верный результат на основании данных, которые отсутствовали в обучающей выборке, а также неполных и/или «зашумленных», частично искаженных данных." Цитата из вики. Т.е. Вы хотите сказать, реально научить компьютер "думать"? : )
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук |
|
|
|
18.08.2011 15:38:17
{quote}{login=nerv}{date=18.08.2011 03:31}{thema=}{post}Вы хотите сказать, реально научить компьютер "думать"? : ){/post}{/quote}
Как программа ему укажет, так и будет "Думать" (а не рассуждать, как человек). Появляются новые данные, они включаются в общий расчет, результаты изменяются, появляются новые данные... Самообучаемость. Но до искусственного интеллекта еще далеко :) |
|
|
|
18.08.2011 15:38:49
читал здесь
Не то, чтобы все остальное было предельно ясно, но "мне не понятен механизм обучения". Из статьи: "Для обучения нейронных сетей применяются алгоритмы двух типов (разные типы сетей используют разные типы обучения): управляемое ("обучение с учителем") и не управляемое ("без учителя")." Вот конкретно, по методу обучения без учителя: откуда программа знает, что "хорошо", а что "плохо"?)
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук |
|
|
|
18.08.2011 15:45:18
Нейронные сети - целая наука, не вникал.
Например, при каких-то вычислениях в ячейке возможно появление "1". При этом дальнейшие вычисления будут неправильны. Сеть это определяет и при следующем появлении единицы игнорирует эту ветку вычислений. |
|
|
|
18.08.2011 17:56:48
To nerv: Здесь неплохо написано |
|
|
|
19.08.2011 11:30:29
ratboy, спасибо. Гляну. Можно в вкратце алгоритм нейронной сети?
vikttur и Вам Спасибо : )
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук |
|
|
|
19.08.2011 11:54:03
Там в общих чертах написано. А есть поэтапное создание алгоритма?
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук |
|
|
|
19.08.2011 12:15:49
Упрощенно алгоритм такой:
Основной компонент сети - нейрон. У него есть входы (в биологическом аналоге дендриты) и выход (аксон). Вход характеризуется значением и весом входа (то есть насколько вход важен). На выходе нейрона взвешенная сумма значений входов(сумма значение*вес). Нейроны объединяются в слои, слои нейронов соединяются в сеть. Соответственно сеть имеет входы (дендриты первого слоя) и выходы (аксоны последнего слоя). В моей сети входы, выходы, нейроны, слои и сама сеть это объекты реализованные на классах. Поэтому работать с ними легко и удобно. Вот здесь Для использования сети ее нужно обучить. Я хочу использовать сеть для прогнозирования и обучение будет реализовано с учителем. Обучения без учителя делают в основном для решения задач кластеризации. В таких задачах учитель действительно не нужен (вообще для кластеризации я использую алгоритм KMeans). Обучение происходит так (на примере таблицы умножения): подаю на первый вход число 1 на второй число 2. На выходе снимаю число. Разница между желаемым(2)и действительным - ошибка сети. На основе этой ошибки я подстраиваю веса входов нейронов. Прохожу по всей таблице умножения при этом подстраивая веса на основании ошибки. Полный проход по набору данных (в данном случае по таблице умножения) называется эпохой. Если все сделано правильно эпох так через 1000 сеть научится умножать числа (установятся правильные веса). Обучение прекращается, веса сохраняются. Можно получать результаты: на входы подаются числа - на выходе правильное произведение. То же самое на примере решения уравнения типа x=y*3+y. Задача прогнозирования будет отличатся только способом подачи данных. Сеть не волшебная - она только умеет устанавливать и запоминать зависимости. |
|
|
|
19.08.2011 12:21:49
|
|
|
|
19.08.2011 12:48:56
ratboy, благодарю за разъяснения : )
В связи с чем возник вопрос: Зачем учить ее умножать, если компьютер это и так может?) >>Я хочу использовать сеть для прогнозирования. Если можно, пример (на словах). И в довесок вопрос: для чего еще можно использовать нейро сеть?
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук |
|
|
|
19.08.2011 13:18:00
Умножать ее нужно учить, только для того чтобы убедится, что сеть работает правильно. Этакий самый простой тест (лично для меня).
Сеть - человеческий микромозг. Этакая маленькая замена реальному человеку. Кластеризация, классификация, распознавание образов, прогнозирование, шифрование - дешифрование, все, что умеет человек и все что обычно не очень укладывается в обычные алгоритмы программирования. Моя задача (только ради удовольствия) - прогнозирование заболеваемости коллектива. У меня есть помесячные данные о заболеваемости коллектива по болезням, его численности на 3 года. Сеть: 9 входов 1 выход 4 слоя. Обучение: Данные подаются скользящим методом. На первые три входа заболеваемость январь, февраль, март. На следующие три численность коллектива январь февраль март. На последние три является ли месяц благополучным в эпидплане (1) или неблагополучным (0). Сверяю значение на выходе с заболеваемостью за апрель. Далее подаю данные за февраль, март, апрель и сверяю их с маем. Это и сеть скользящий способ. Обучение ведется пока данные не закончатся. Это одна эпоха. Обучение обычно состоит из нескольких сотен-тысяч эпох. В итоге обучения ошибка должна быть минимальна, а у меня появится способ на основе данных за 3 месяца спрогнозировать заболеваемость на следующий месяц. Теперь фокус: сеть может не обучится. Это не очень то и плохо и означает, что либо данные кака, либо зависимость между данными плохая. Можно добавлять новые переменные, например возрастной состав пациентов или отношение всех обращений к первичным. В общем жутко интересно. |
|
|
|
19.08.2011 14:10:52
от еще интересный примерчик, жаль, код не открыт.
|
|
|
|
19.08.2011 14:14:09
а еще есть ExcelNeuralPackage - на пауке лежит. котировки предсказывать не очень хорошо получается, но хорошо для кластеризации/классификации.
|
|
|
|
19.08.2011 15:03:26
Читаю
и параллельно бьюсь над алгоритмом сравнения текстов. Как закончу, постараюсь включиться в нейро сети. Хотя, до сих пор не понял интересно это мне или нет. Посмотрим...
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук |
|
|
|
19.08.2011 15:56:49
от исчё. есть еще материал, но размер большой - выложить некуда, откуда взял - непомню.
|
|
|
|
01.09.2011 10:12:50
ratboy, Про тему не забыл) Просто не хочется браться за одно, не доделав другое)
Как идет обучение сети?
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук |
|
|
|
12.11.2011 13:11:34
Сеть работает пока не очень хорошо, но уже что-то. Усиленно ищу ошибки. Если кто поможет и кому интересно, добро пожаловать в проект. Отвечу на все вопросы.
|
|
|
|
12.11.2011 13:30:29
О своей заинтересованности я информировал Вас выше, правда, боюсь не потяну)
Любую сложную задачу (как мне кажется) можно сформулировать просто. На пальцах: что хотите и что есть.
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук |
|
|
|
12.11.2011 13:35:27
{quote}{login=nerv}{date=12.11.2011 01:30}{thema=}{post}О своей заинтересованности я информировал Вас выше, правда, боюсь не потяну)
Любую сложную задачу (как мне кажется) можно сформулировать просто. На пальцах: что хотите и что есть.{/post}{/quote} Что есть: нейросеть реализованная на классах в vba. Реализован алгоритм обратного распространения ошибки. Что надо: шлифовка нейросети для уменьшения ошибки сети. У меня не получается уменьшить ошибку. Остановился на 0,04. Меньше никак не выходит. Как варианты: Попробовать реализовать алгоритм Rprop или генетический алгоритм для обучения сети. Хотя не исключаю, что я где-то ошибся в алгоритме обратного распространения... |
|
|
|
12.11.2011 13:42:02
{Зачем учить ее умножать, если компьютер это и так может?){/post}{/quote}
по секрету, комп не только умножать, но и суммировать не умеет |
|
|
|
14.11.2011 21:42:11
Вы уверены в правильности действий в модуле NNMath? Чтобы разобраться в Вашем алгоритме, надо знать, как он создавался с нуля. Например, разбирать написанное в модуле класса NeuNetVN достаточно сложно. Я прям даже и не знаю, чем я Вам смогу помочь... Чтобы от меня была помощь, мне надо параллельно с Вами создавать нейросеть, дабы происходил обмен опытом. А так не знаю... Откуда алгоритмы? Из ссылок выше?
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук |
|
|
|
14.11.2011 22:21:55
Что касается функций preamp и postamp, они точно верные. Проверено. Сигмоидная функция активации и ее производная (AntiSigma) тоже верно. А вот насчет тангенса не уверен. Вроде работает. Тангенс нагуглил. Сигма с ссылок выше. Функции предобработки с собственных мозгов.
Что касается одновременного создания сети. Может по скайпу все объяснить??? |
|
|
|
11.12.2011 22:27:38
Очередной релиз нейросети (многослойного персептрона)на екселе. Пока что работает только на тренировку. В 100 килобайт не вошел, так что качайте по ссылке. |
||||
|
|
|||