Нейронная сеть и прогнозирование в рулетке ID:50738 |
Ср, 24 февраля 2010 20:40 [#] [») |
|
|
Возможно ли?
Сразу привожу простой скрипт на Perl'e, как шаблон для исследований в этом направлении - "подстройки под ГСЧ"
Соответственно нам понадобятся:
1. ActivePerl http://www.activestate.com/activeperl/
2. Установить через Perl Package Manager модуль AI::NNFlex
3. Попытаться обыграть перловский генератор случайных чисел Запуск скрипта производить(из командой строки): perl названиескрипта.pl
Код скрипта:
#!/usr/bin/perl
use AI::NNFlex::Backprop;
use AI::NNFlex::Feedforward;
use AI::NNFlex::Dataset;
use Term::ReadKey;
ReadMode 4; # Turn off controls keys
# Генерация чисел
sub next_num
{
# От 0 до 36
return int(rand(37));
}
# Черное?
sub is_black
{
$element = shift;
if (grep {$_ eq $element} (2, 4, 6, 8, 10, 11, 13 ,15, 17, 20, 22, 24, 26, 28, 29, 31, 33, 35)) {
return 1;
}
return 0;
}
# Красное?
sub is_red
{
$element = shift;
if (grep {$_ eq $element} (1, 3 ,5, 7, 9, 12, 14, 16, 18, 19, 21, 23, 25, 27, 30, 32, 34, 36)) {
return 1;
}
return 0;
}
# Создаем сеть
my $network = AI::NNFlex::Backprop->new(
learningrate=>.0001,
fahlmanconstant=>0,
randomweights=>1,
momentum=>0.3,
bias=>0);
# Вход
$network->add_layer(nodes=>37,
activationfunction => "sigmoid");
# Скрытый слой
$network->add_layer(nodes=>37,
activationfunction => "sigmoid");
# Выход
$network->add_layer(nodes=>1,
activationfunction => "sigmoid");
$network->init();
# Начальные данные - требуется 37 чисел, как в первом слое
# Данные приводятся к числам с плавающей запятой от 0 до 1
my $init_data = [];
for ( my $i = 0; $i < 37; $i++ ) {
push (@{$init_data}, next_num() / 36);
}
$output_num = next_num();
my $dataset = AI::NNFlex::Dataset->new([
$init_data, [$output_num / 36],
]);
# Баланс
my $balance = 0;
# Спины
my $spin = 1;
# Главный цикл - выход из него по ЛЮБОЙ клавише
while (not defined ($key = ReadKey(-1))) {
my $err = 10;
# Обучаем за 20 итераций
for ( my $i = 1; $i <= 20; $i++ ) {
$err = $dataset->learn($network);
}
# Удаляем первое число из массива
shift(@{$init_data});
# Вставляем в конец то число, которое было на выходе
push(@{$init_data}, $output_num / 36);
# Получаем следующее ("дилер крутит рулетку")
$output_num = next_num();
# Получаем прогноз нейронной сети
$next_num = int($network->run($init_data)->[0] * 36);
if ($next_num != 0) {
# Мы ставим на красное или черное. На ноль никогда не ставим
if (is_red($next_num) && is_red($output_num)) {
$balance += 1;
} elsif (is_black($next_num) && is_black($output_num)) {
$balance += 1;
} else {
$balance -= 1;
}
}
print "Error = $err. Num: " . $next_num . ". Dealer num: " . $output_num . ". Spin $spin. Balance: $balance\n";
# Пересоздаем тренировочные данные
$dataset = AI::NNFlex::Dataset->new([
$init_data, [$output_num / 36],
]);
# На следующий спин!
$spin++;
}
Нейронная сеть ведет себя довольно не предсказуемо, думаю нужно подсовывать ей тренировочные данные в другом виде.
|
|
|
Re: Нейронная сеть и прогнозирование в рулетке ID:50739 ответ на 50738 |
Ср, 24 февраля 2010 20:46 («] [#] [») |
|
|
Я так понял 37 входов, 37 нейронов на скрытом слое и один выход?
|
|
|
Re: Нейронная сеть и прогнозирование в рулетке ID:50743 ответ на 50739 |
Ср, 24 февраля 2010 21:07 («] [#] [») |
|
|
Magicbet писал Ср, 24 февраля 2010 19:46 | Я так понял 37 входов, 37 нейронов на скрытом слое и один выход? | Именно. Выход - прогнозируемое число. На входе - последние 37 чисел.
|
|
|
Re: Нейронная сеть и прогнозирование в рулетке ID:50753 ответ на 50743 |
Вт, 2 марта 2010 14:26 («] [#] [») |
|
|
Ну так дайте доступ к сайту, где этот скрипт вставлен
Вот и попрогнозируем.
Или его платным планируется сделать?
Зачем тогда исходники выложили?
|
|
|
Re: Нейронная сеть и прогнозирование в рулетке ID:50754 ответ на 50753 |
Вт, 2 марта 2010 14:30 («] [#] [») |
|
|
И ещё вопрос. Как бы ликбез получить на тему того, почему или за счет чего такая вещь как "нейронная сеть" сможет прогнозировать ГСЧ?
Ну понятно, обучается. Чему только?
|
|
|
Re: Нейронная сеть и прогнозирование в рулетке ID:50755 ответ на 50754 |
Вт, 2 марта 2010 14:36 («] [#] [») |
|
|
vano писал Вт, 02 марта 2010 12:30 |
Ну понятно, обучается. Чему только? |
Я так думаю обучается копировать поведение ГСЧ.
|
|
|
Re: Нейронная сеть и прогнозирование в рулетке ID:50756 ответ на 50755 |
Вт, 2 марта 2010 14:53 («] [#] [») |
|
|
Ну она это научится делать быстро. Много ума не надо, чтобы монетку научится подбрасывать. Как научиться бросать её синхронно (с вероятностью > 1/2) c другой монеткой? В чем физика-математика возможности такого обучения? Или опять ищется (путем обучения) кривость и отклонение ГПСЧ перла от идеального?
|
|
|
Re: Нейронная сеть и прогнозирование в рулетке ID:50757 ответ на 50753 |
Вт, 2 марта 2010 20:35 («] [#] [») |
|
|
vano писал Вт, 02 марта 2010 13:26 | Ну так дайте доступ к сайту, где этот скрипт вставлен
Вот и попрогнозируем.
Или его платным планируется сделать?
Зачем тогда исходники выложили? | Какой сайт? Платным что?
Для начала пробуем обыграть ГПСЧ, встроенный в интерпретатор Perl (хотя я не знаю, какова реализация оного в нем)
Нейронные сети все чаще начинают применять для трейдинга. Почему бы не использовать ее для прогноза следующего числа ГСЧ?
Кривость(отклонение) ГПСЧ нейронная сеть не словит. В идеальной ситуации она должна предсказать следующее число, если, например, оно было сгенерировано заранее, как в казино с контролем честности(это мое предположение), или используются ГПСЧ, как в Perl'e.
[Обновлено: Вт, 2 марта 2010 20:41]
|
|
|
Re: Нейронная сеть и прогнозирование в рулетке ID:50761 ответ на 50757 |
Ср, 3 марта 2010 09:12 («] [#] [») |
|
|
Aprisobal писал Вт, 02 марта 2010 19:35 |
Нейронные сети все чаще начинают применять для трейдинга. Почему бы не использовать ее для прогноза следующего числа ГСЧ?
|
Я не специалист по трейдингу, но мне кажется что там есть наличие множества связей (то есть зависимостей одного факта от другого), этих связей настолько много, что складываясь, они рождают видимость хаоса. Однако нейросеть практически моедлируя эти множества связей в процессе обучения, действительно может в данном случае помочь в прогнозировании. Какие связи есть в ГСЧ?
Я не говорю, что связей нет. Я этого не знаю (но наука говорит что никаких связей в ГСЧ нет, там абсолютно независимые события).
Если же использовать нейросеть для прогнозирования ГСЧ, то не обойтись без шаманства в виде ссылок на то, что можно использовать не прямые зависимости (связи), а типа синхронизацию (необъяснимую) между собой независимых событий и необъяснимую их между собой взаимосвязь. То есть соглашаться на то, что история рулит.
|
|
|
Re: Нейронная сеть и прогнозирование в рулетке ID:50779 ответ на 50761 |
Чт, 18 марта 2010 00:58 («] [#] [») |
|
|
Апри, ахрененно интересная идея, но тупиковая. Матрица нейтронной сети будет расти до бесконечности, а связи в конечном итоге организую хаотический атрактор.
Но если использовать для анализа и предсказания не результаты предыдущих спинов, а динамическую статистику, то результат может иметь смысл. Но остается проблемма в определения базиса динамической статистики и её автоматическом сборе.
Апри +1 за изащную идею.
|
|
|
Re: Нейронная сеть и прогнозирование в рулетке ID:50787 ответ на 50779 |
Пт, 19 марта 2010 22:15 («] [#] [») |
|
|
вот когда имеется только ряд случайных значений, и при этом говорится слово "статистика" (пусть и динамическая), я не понимаю - почему и каким образом может идти речь не о результатах предыдущих спинов.
Или под результатами предыдущих спинов подразумевется "тупой" подсчет, сколько каких чисел выпало?
Я уверен, что история - рулит, даже на ГСЧ. Но "выверты" об использовании "динамики", а не "истории" - я не понимаю, вполне возможно, что от незнания.
Это знание (основы) можно популярно донести до людей, в нескольких постах?
[Обновлено: Пт, 19 марта 2010 22:16]
|
|
|
Re: Нейронная сеть и прогнозирование в рулетке ID:50788 ответ на 50787 |
Пт, 19 марта 2010 23:54 («] [#] [») |
|
|
Не сегодня.
|
|
|
Re: Нейронная сеть и прогнозирование в рулетке ID:53699 ответ на 50788 |
Вт, 23 ноября 2010 23:05 («] [#] |
|
|
to Apri:
Метод "динамической" корреляции результатов.
Идея метода прогнозирования основанна, на использовании метода анализа динамической статистики вида:
1. Длительность периода оборота ротора, Тротора, сек.
2. Время синхронизации замеров, Тсинхр, сек.
3. Длительность оборота шарика, Тш1, сек.
4. Длительность оборота шарика, Тш2, сек.
5. Длительность оборота шарика, Тш3, сек.
6. Длительность оборота шарика, Тш4, сек.
7. Длительность оборота шарика, Тш5, сек.
8. Тип спина: В1, В2, В3, В4, Г1, Г2, Г3, Г4 или ЧС.
9. Номер на роторе под каное в момент удара шарика о каноэ.
10. Результат спина (выпавший номер).
Собирается динамическая статистика в реальном времени на 100-150 спинов. Далее коррелируется и настраивается на предсказание результатов по данной статистике на конкретную рулетку и по текущему замеру вышеуказанных первых 4-5 параметров предсказывается результат падения шарика (сектор в 5-9 ячеек).
ЗЫ: Сам не пробовал.
При этом в методе есть место точным аналитическим расчетам, которые совместно с методом корреляции должны дать не плохие результаты.
При сборе динамической статистики желательно собирать длительности периодов оборота шарика в плоть до его срыва с болтрека, т.е. длительностей может быть и 10-15 и более.
Для сбора статистики используется обычный мобильник или наладонник.
При этом выбранный базис статистики включает в себя статситику Олынеса, которая може так же симулироваться.
Суммарная длительность спина получается суммированием всех длительностей периодов шарика.
Конечно базис динамической статистики может быить и другим, например по привязке к периоду оборота ротора и моментам появления смещения визирной точки. При этом данный базис связан с вращающимся ротором рулетки, а первый с базисом - чашей рулетки.
Очевидно, что могут быть вариации на данную тему.
ЗЫ: На новом форуме от Гарри Бальди и Апри, последний предлагал использовать метод нейронных сетей пля прогнозирования. Возможно было бы интересна и такая реализация, в место корреляции результатов.
|
|
|
Время, затраченное на генерацию страницы: 0.01197 секунд