Russian Qt Forum
Ноябрь 25, 2024, 07:03 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3] 4 5   Вниз
  Печать  
Автор Тема: К проблеме предсказания событий  (Прочитано 33800 раз)
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #30 : Октябрь 19, 2019, 21:37 »

Круто) У меня 95% совпадений максимум получается) Но обучение практически мгновенно)
А я устал ждать, Кроватный ноутбук не очень быстр. Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #31 : Октябрь 20, 2019, 09:23 »

У меня 95% совпадений максимум получается)
Сейчас увеличил длину последовательности для обучения до 2000 значений, проверяю на следующих 500 значениях, размер запроса 30 значений.
Количество ошибок 7 из 500 (1.4%)

Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #32 : Октябрь 20, 2019, 09:59 »

Цитировать
Сейчас увеличил длину последовательности для обучения до 2000 значений, проверяю на следующих 500 значениях, размер запроса 30 значений.
Количество ошибок 7 из 500 (1.4%)
А вы не могли бы исходники выложить? Хочу посмотреть сколько по времени она у меня обучаться будет.. Улыбающийся
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #33 : Октябрь 20, 2019, 10:03 »

А вы не могли бы исходники выложить? Хочу посмотреть сколько по времени она у меня обучаться будет.. Улыбающийся
Код
C++ (Qt)
#include <iostream>
#include <vector>
#include <boost/format.hpp>
#include "tiny_dnn/tiny_dnn.h"
 
using namespace std;
using namespace tiny_dnn;
using boost::format;
 
static constexpr size_t IN_SIZE       = 30;   // число предыдущих шагов для определения вероятности следующего шага
static constexpr size_t OUT_SIZE      = 2;
static constexpr size_t SIZE          = 2500; // Полный размер данных
static constexpr size_t TRAINING_SIZE = 2000; // Часть данных, для обучения сети
static constexpr size_t BATCH_SIZE    = 10;
static constexpr size_t EPOCHS        = 1000;
 
inline float toValue( bool v )
{
 return v? 1. : 0.;
}
 
int main( int /*argc*/, char */*argv*/[] )
{
 network<sequential> net;
 net << fully_connected_layer( IN_SIZE, 30 )
     << tanh_layer()
     << fully_connected_layer( 30, 30 )
     << tanh_layer()
     << fully_connected_layer( 30, OUT_SIZE );
 
 cout << "Generate source..." << endl;
 vector<bool> source( SIZE );
 for( size_t i = 0; i < source.size(); ++i )
   source[ i ] = sin( i ) + cos( 4 * i ) >= 0;
 
 cout << "Prepare datas..." << endl;
 const size_t numData = TRAINING_SIZE - IN_SIZE;
 
 std::vector<vec_t> inData;
 inData.reserve( numData );
 std::vector<vec_t> outData;
 outData.reserve( numData );
 for( size_t i = IN_SIZE; i < TRAINING_SIZE; ++i )
 {
   vec_t vIn( IN_SIZE );
   for( size_t j = 0; j < IN_SIZE; ++j )
     vIn[ j ] = toValue( source[ i - IN_SIZE + j ] );
 
   vec_t vOut( OUT_SIZE );
   vOut[ 0 ] = toValue( !source[ i ] );
   vOut[ 1 ] = toValue( source[ i ] );
 
   inData.push_back( vIn );
   outData.push_back( vOut );
 }
 
 int iEpoch = 0;
 auto on_enumerate_epoch = [&](){
   if( ++iEpoch % 100 )
     return;
 
   const double loss = net.get_loss<mse>( inData, outData );
   cout << format( "epoch = %1%/%2% loss = %3%" ) % iEpoch % EPOCHS % loss << endl;
 };
 
 cout << "Training..." << endl;
 adamax opt;
 net.fit<mse>( opt, inData, outData, BATCH_SIZE, EPOCHS, [](){}, on_enumerate_epoch );
 
 cout << "Checking..." << endl;
 size_t errCnt = 0;
 for( size_t i = TRAINING_SIZE; i < SIZE; ++i )
 {
   vec_t vIn( IN_SIZE );
   for( size_t j = 0; j < IN_SIZE; ++j )
     vIn[ j ] = toValue( source[ i - IN_SIZE + j ] );
 
   const vec_t vOut = net.predict( vIn );
   assert( vOut.size() == 2 );
 
   const bool observed = source[ i ];
   const bool predicted = vOut[ 0 ] < vOut[ 1 ];
   cout << format( "i = %1%\t[%2%]\tobserved = %3%\tpredicted = %4%\t[0] = %5%\t[1] = %6%" )
           % i
           % ((observed != predicted)? '!' : ' ')
           % observed
           % predicted
           % vOut[ 0 ]
           % vOut[ 1 ]
         << std::endl;
 
   if( observed != predicted )
     ++errCnt;
 }
 
 cout << format( "Error = %1%/%2% %3%%%" ) % errCnt % (SIZE - TRAINING_SIZE) % (float( errCnt ) / float( SIZE - TRAINING_SIZE ) * 100.) << std::endl;
 
 return 0;
}
 
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #34 : Октябрь 20, 2019, 10:14 »

Хочу посмотреть сколько по времени она у меня обучаться будет.. Улыбающийся
Количество эпох можно значительно уменьшить, без потери точности.
Сейчас уменьшил их до 100, точность осталась та же.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #35 : Октябрь 20, 2019, 10:36 »

Начал играться со структурой сети: сделал 32 входа - первый скрытый слой на 32 нейрона - второй скрытый слой на 16 нейронов - 2 выхода.
Точность:
Error = 3/500 0.6%

Это при 100 эпохах.
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #36 : Октябрь 20, 2019, 12:38 »

Хе, хе  Улыбающийся Если усложнить функцию, добавив ещё одну быструю гармонику:
Код
C++ (Qt)
sin( i ) + cos( 4 * i ) + sin( 8 * i )
 
то обе сети сравниваются, при прочих равных параметрах (IN_SIZE = period = 30)
А вот по времени  Улыбающийся
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #37 : Октябрь 20, 2019, 13:12 »

Вы про время обучения?
Ну для задачи предсказания я бы его не учитывал. Улыбающийся
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #38 : Октябрь 20, 2019, 13:19 »

Вы про время обучения?
Ну для задачи предсказания я бы его не учитывал. Улыбающийся
Ну это да)

Вобщем резюме такое: нейросети рулят Улыбающийся
Как сказал Педро Домингос:
"Люди беспокоятся, что компьютеры станут слишком умными и захватят мир,
но реальная проблема в том, что они слишком глупы и уже его захватили".  Улыбающийся
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #39 : Октябрь 20, 2019, 13:43 »

Мне вот ещё интересно, как прокомментируют результаты этих двух тестов, два наших  Главных уважаемых эксперта?  Улыбающийся
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #40 : Октябрь 20, 2019, 14:58 »

Мне вот ещё интересно, как прокомментируют результаты этих двух тестов, два наших  Главных уважаемых эксперта?  Улыбающийся

А это кто такие и почему их всего два? Остальные, значит, !(главные && уважаемые && эксперты)? Обидно будет Улыбающийся.

Код не смотрел. Нейросеть - это, конечно, хорошо. Но с разбодяженой синусоидой разве анализ Фурье не справится? С нейросетью не получается ли из пушки по воробьям стрелять?

И, главный вопрос: когда ждать обвала фондовых рынков? Улыбающийся
Записан

Пока сам не сделаешь...
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #41 : Октябрь 20, 2019, 15:14 »

Цитировать
А это кто такие и почему их всего два? Остальные, значит, !(главные && уважаемые && эксперты)? Обидно будет  Улыбающийся
Ну почему же) У нас все участники форума весьма уважаемые и эксперты в своих областях)
Просто есть двое из лорца, которые более главнее) Да, мир не справедлив, примите это как данность)

Цитировать
Код не смотрел. Нейросеть - это, конечно, хорошо. Но с разбодяженой синусоидой разве анализ Фурье не справится? С нейросетью не получается ли из пушки по воробьям стрелять?

Справился бы) А вот с фондовыми рынками едва ли)

Цитировать
И, главный вопрос: когда ждать обвала фондовых рынков?  Улыбающийся
А чего ждать) Обучаете нейросеть, и рушите биржу за биржей) Профит: Вы на солидной яхте, попивая виски,  похлопываете по попе молоденьких моделей)
Только если что, вы потом про нас с Old'ом не забудьте, ладно  Подмигивающий (Я про финансовый вопрос, а не про "по попе"  Улыбающийся)
« Последнее редактирование: Октябрь 20, 2019, 15:17 от m_ax » Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #42 : Октябрь 20, 2019, 19:22 »

Цитировать
И, главный вопрос: когда ждать обвала фондовых рынков?  Улыбающийся
Кстатии, а почему бы и не проверить всё это дело на динамике стоимости акций или аблигаций или ещё чего на фондовом рынке?  Улыбающийся
Правда, нужен открытый доступ (на большом промежуток времени) к данным по этой самой динамике..  

И потом, там функция не бинарная..( 
« Последнее редактирование: Октябрь 20, 2019, 19:26 от m_ax » Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #43 : Октябрь 20, 2019, 19:27 »

Кстатии, а почему бы и не проверить всё это дело на динамике стоимости акций или аблигаций или ещё чего на фондовом рынке?  Улыбающийся
Правда, нужен открытый доступ (на большом промежуток времени) к данным по этой самой динамике..   
Нейронки там уже давно и успешно используют. Насколько я слышал. Улыбающийся
У них там есть определенный набор фигур, типа после роста с тремя горбами начинается затяжной спад, и т.д.
Раньше их рассматривали трейдеры на графиках и делали прогнозы, а сейчас нейросетки.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #44 : Октябрь 20, 2019, 19:29 »

И потом, там функция не бинарная..( 
Ну и что, можно учить сеть на "начнется спад", "будет все ровно" и "бурный рост". Улыбающийся
Мы ей данные за месяц - она нам прогноз на неделю. Улыбающийся
Записан
Страниц: 1 2 [3] 4 5   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.103 секунд. Запросов: 22.