Страницы: 1
RSS
Модель нейросети
 
Попытался сваять нейросеть для прогнозирования. Модель получилась вроде. Но слабо понимаю алгоритмы обучения сети. Кто хочет помочь - присоединяйтесь.  
Извините за оффтоп, если что...
 
Сложно это всё... тут в коде-то не разобраться, не то что помочь  
(это ведь надо нечеткую логику реализовывать средствами VBA - языка, который не предназначен для этих целей, да ещё потратить несколько месяцев на изучение теории и алгоритмов)  
 
Вот эта строка в коде удивила:  
Set wb = Workbooks.Add    'создаем книгу с нейронами. Предполагается, что в новой книге 3 листа  
 
Неужто вычисления не произвести в памяти?  
Зачем создавать кучу книг? Для хранения данных, как мне кажется, и одного листа хватит...  
 
Да и вообще не понял, что вы пытаетесь спрогнозировать...  
Какое применение своей нейронной сети вы видите?
 
{quote}{login=ratboy}{date=18.08.2011 10:35}{thema=Модель нейросети}{post}Попытался сваять нейросеть для прогнозирования. Модель получилась вроде. Но слабо понимаю алгоритмы обучения сети. Кто хочет помочь - присоединяйтесь.  
Извините за оффтоп, если что...{/post}{/quote}  
Для таких целей есть специальные программы, например STATISTICA, котрая прекрасно уживается и с excel и другими БД
Спасибо
 
когда то курил вот такую вещь    
http://apsheronsk.bozo.ru/Neural/nnprog.html  
но тяжко. читал теорию - плюнул - и вернулся к обычному тех анализу и разложению ряда.  
Маткад можно прикрутить и математика тоже вроде через COM подключается.  
Для прогнозирования есть и com модуль CatSSA.
 
Цель написания - ради удовольствия и заодно попытаться спрогнозировать заболеваемость.  
Statistica и прочий заточенный софт использовал. Получаются неплохие результаты.    
Что касается создания книги - это место где будут хранится веса входов нейронов после обучения и прочая отладочная информация, а потом на основе этой книги можно будет создавать сети и использовать их.  
На теперешнем этапе пробую заставить сеть выучить таблицу умножения и решать уравнения.  
Если кому интересно, могу все расписать в подробностях...
 
>>Если кому интересно, могу все расписать в подробностях.  
 
 
Что это вообще такое?) Объясните попроще. Смотрел здесь, понял, но мало.  
http://ru.wikipedia.org/wiki/%D0%98%D1%81%D0%BA%D1%83%D1%81%D1%81%D1%82%D0%B2%D0­%B5%D0%BD%D0%BD%D0%B0%D1%8F_%D0%BD%D0%B5%D0%B9%D1%80%D0%BE%D­0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B5%D1%82%D1%8C  
 
"Нейронные сети не программируются в привычном смысле этого слова, они обучаются. Возможность обучения — одно из главных преимуществ нейронных сетей перед традиционными алгоритмами. Технически обучение заключается в нахождении коэффициентов связей между нейронами. В процессе обучения нейронная сеть способна выявлять сложные зависимости между входными данными и выходными, а также выполнять обобщение. Это значит, что в случае успешного обучения сеть сможет вернуть верный результат на основании данных, которые отсутствовали в обучающей выборке, а также неполных и/или «зашумленных», частично искаженных данных."  
 
Цитата из вики. Т.е. Вы хотите сказать, реально научить компьютер "думать"? : )
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
{quote}{login=nerv}{date=18.08.2011 03:31}{thema=}{post}Вы хотите сказать, реально научить компьютер "думать"? : ){/post}{/quote}  
Как программа ему укажет, так и будет "Думать" (а не рассуждать, как человек).  
Появляются новые данные, они включаются в общий расчет, результаты изменяются, появляются новые данные... Самообучаемость.  
 
Но до искусственного интеллекта еще далеко :)
 
читал здесь  
 
http://www.statsoft.ru/home/textbook/modules/stneunet.html#using  
 
Не то, чтобы все остальное было предельно ясно, но "мне не понятен механизм обучения".    
 
Из статьи:  
"Для обучения нейронных сетей применяются алгоритмы двух типов (разные типы сетей используют разные типы обучения): управляемое ("обучение с учителем") и не управляемое ("без учителя")."  
 
Вот конкретно, по методу обучения без учителя: откуда программа знает, что "хорошо", а что "плохо"?)
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Нейронные сети - целая наука, не вникал.  
 
Например, при каких-то вычислениях в ячейке возможно появление "1". При этом дальнейшие вычисления будут неправильны.  
Сеть это определяет и при следующем появлении единицы игнорирует эту ветку вычислений.
 
http://www.aiportal.ru/articles/neural-networks/1/  
To nerv: Здесь неплохо написано
 
ratboy, спасибо. Гляну. Можно в вкратце алгоритм нейронной сети?  
 
vikttur и Вам Спасибо : )
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Там в общих чертах написано. А есть поэтапное создание алгоритма?
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Упрощенно алгоритм такой:  
Основной компонент сети - нейрон. У него есть входы (в биологическом аналоге дендриты) и выход (аксон). Вход характеризуется значением и весом входа (то есть насколько вход важен). На выходе нейрона взвешенная сумма значений входов(сумма значение*вес). Нейроны объединяются в слои, слои нейронов соединяются в сеть.  
Соответственно сеть имеет входы (дендриты первого слоя) и выходы (аксоны последнего слоя).    
В моей сети входы, выходы, нейроны, слои и сама сеть это объекты реализованные на классах. Поэтому работать с ними легко и удобно. Вот здесь http://apsheronsk.bozo.ru/Neural/nnprog.html сеть реализована на многомерных массивах и разобраться сперва очень сложно.  
Для использования сети ее нужно обучить. Я хочу использовать сеть для прогнозирования и обучение будет реализовано с учителем. Обучения без учителя делают в основном для решения задач кластеризации. В таких задачах учитель действительно не нужен (вообще для кластеризации я использую алгоритм KMeans).  
Обучение происходит так (на примере таблицы умножения): подаю на первый вход число 1 на второй число 2. На выходе снимаю число. Разница между желаемым(2)и действительным - ошибка сети. На основе этой ошибки я подстраиваю веса входов нейронов. Прохожу по всей таблице умножения при этом подстраивая веса на основании ошибки. Полный проход по набору данных (в данном случае по таблице умножения) называется эпохой. Если все сделано правильно эпох так через 1000 сеть научится умножать числа (установятся правильные веса). Обучение прекращается,  веса сохраняются. Можно получать результаты: на входы подаются числа - на выходе правильное произведение. То же самое на примере решения уравнения типа x=y*3+y.  
Задача прогнозирования будет отличатся только способом подачи данных.  
Сеть не волшебная - она только умеет устанавливать и запоминать зависимости.
 
To nerv:    
http://www.aiportal.ru/articles/neural-networks/back-propagation.html
 
ratboy, благодарю за разъяснения : )  
 
В связи с чем возник вопрос:  
Зачем учить ее умножать, если компьютер это и так может?)  
 
>>Я хочу использовать сеть для прогнозирования.  
Если можно, пример (на словах).    
 
И в довесок вопрос: для чего еще можно использовать нейро сеть?
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Умножать ее нужно учить, только для того чтобы убедится, что сеть работает правильно. Этакий самый простой тест (лично для меня).  
Сеть - человеческий микромозг. Этакая маленькая замена реальному человеку. Кластеризация, классификация, распознавание образов, прогнозирование, шифрование - дешифрование, все, что умеет человек и все что обычно не очень укладывается в обычные алгоритмы программирования.    
Моя задача (только ради удовольствия) - прогнозирование заболеваемости коллектива. У меня есть помесячные данные о заболеваемости коллектива по болезням, его численности на 3 года.  
Сеть: 9 входов 1 выход 4 слоя.    
Обучение: Данные подаются скользящим методом. На первые три входа заболеваемость январь, февраль, март. На следующие три численность коллектива январь февраль март. На последние три является ли месяц благополучным в эпидплане (1) или неблагополучным (0). Сверяю значение на выходе с заболеваемостью за апрель.    
Далее подаю данные за февраль, март, апрель и сверяю их с маем. Это и сеть скользящий способ.    
Обучение ведется пока данные не закончатся. Это одна эпоха. Обучение обычно состоит из нескольких сотен-тысяч эпох. В итоге обучения ошибка должна быть минимальна, а у меня появится способ на основе данных за 3 месяца спрогнозировать заболеваемость на следующий месяц.    
Теперь фокус: сеть может не обучится. Это не очень то и плохо и означает, что либо данные кака, либо зависимость между данными плохая. Можно добавлять новые переменные, например возрастной состав пациентов или отношение всех обращений к первичным. В общем жутко интересно.
 
от еще интересный примерчик, жаль, код не открыт.
 
а еще есть ExcelNeuralPackage - на пауке лежит. котировки предсказывать не очень хорошо получается, но хорошо для кластеризации/классификации.
 
Читаю http://www.aiportal.ru/articles/neural-networks/back-propagation.html  
 
и параллельно бьюсь над алгоритмом сравнения текстов. Как закончу, постараюсь включиться в нейро сети. Хотя, до сих пор не понял интересно это мне или нет. Посмотрим...
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
от исчё. есть еще материал, но размер большой - выложить некуда, откуда взял - непомню.
 
ratboy, Про тему не забыл) Просто не хочется браться за одно, не доделав другое)  
Как идет обучение сети?
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Сеть работает пока не очень хорошо, но уже что-то. Усиленно ищу ошибки. Если кто поможет и кому интересно, добро пожаловать в проект. Отвечу на все вопросы.
 
О своей заинтересованности я информировал Вас выше, правда, боюсь не потяну)  
Любую сложную задачу (как мне кажется) можно сформулировать просто. На пальцах: что хотите и что есть.
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
{quote}{login=nerv}{date=12.11.2011 01:30}{thema=}{post}О своей заинтересованности я информировал Вас выше, правда, боюсь не потяну)  
Любую сложную задачу (как мне кажется) можно сформулировать просто. На пальцах: что хотите и что есть.{/post}{/quote}  
Что есть: нейросеть реализованная на классах в vba. Реализован алгоритм обратного распространения ошибки.    
Что надо: шлифовка нейросети для уменьшения ошибки сети. У меня не получается уменьшить ошибку. Остановился на 0,04. Меньше никак не выходит.    
Как варианты: Попробовать реализовать алгоритм Rprop или генетический алгоритм для обучения сети. Хотя не исключаю, что я где-то ошибся в алгоритме обратного распространения...
 
{Зачем учить ее умножать, если компьютер это и так может?){/post}{/quote}  
по секрету, комп не только умножать, но и суммировать не умеет
 
Вы уверены в правильности действий в модуле NNMath? Чтобы разобраться в Вашем алгоритме, надо знать, как он создавался с нуля. Например, разбирать написанное в модуле класса NeuNetVN достаточно сложно. Я прям даже и не знаю, чем я Вам смогу помочь... Чтобы от меня была помощь, мне надо параллельно с Вами создавать нейросеть, дабы происходил обмен опытом. А так не знаю... Откуда алгоритмы? Из ссылок выше?
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Что касается функций preamp и postamp, они точно верные. Проверено. Сигмоидная функция активации и ее производная (AntiSigma) тоже верно. А вот насчет тангенса не уверен. Вроде работает. Тангенс нагуглил. Сигма с ссылок выше. Функции предобработки с собственных мозгов.    
Что касается одновременного создания сети. http://robocraft.ru/blog/algorithm/560.html Вот тут очень понятное описание работы сети и алгоритма обратного распространения. У меня модель сети написана на классах: вход нейрона-нейрон-слой-сеть.    
Может по скайпу все объяснить???
 
http://narod.ru/disk/34027309001/analiz.xlsm.html  
Очередной релиз нейросети (многослойного персептрона)на екселе.  
Пока что работает только на тренировку.  
В 100 килобайт не вошел, так что качайте по ссылке.
Страницы: 1
Читают тему
Наверх