Предлагаю еще и вот такую тему... где можно просто пофилософствовать (в рамках общей направленности, разумеется).
И начать хотелось бы вот с чего: за все то непродолжительное время, что имею я дело с НС, я пришел к выводу, что нейросети вообще не аппроксимируют, в том понимании, которое вкладывает в это слово обычный обыватель (не-математик). Они именно ищут просто наименьшую ошибку. Это очень хорошо видно на диаграмме распределения ответов нейросети, когда она обучается.
Сначала все ответы разбросаны хаотично... потом они начинают постепенно принимать осмысленную форму (в виде s-образной кривой) и в идеале - должны построиться в диагональную линию точных ответов... но, такое бывает далеко не всегда.
И уже точно, надо забыть о том, что нейросети могут делать какие-то умозаключения (даже на самом примитивном уровне). Нейросеть просто становится такой, чтобы давать как можно более правильные ответы. Какой там поиск закономерностей? Какие там сопоставления?? Единственный критерий - это стала ли ошибка меньше - и все.
Но отсюда возникает другой вопрос: на сколько же тогда нейросеть "тупая"?? Т.е. что ей надо говорить формально (в виде подаваемых на входы/выходы сигналов), а что она все-таки сама поймет??
Вот, в частности, я попробовал поступить так: вместо того, чтобы подавать на входы нейросети приращения со знаком (например, приращения скользящей средней той же), - т.е. +10 - это значит, данный параметр вырос на 10 пунктов, а -10 - это - упал... так вот, вместо этого я попробовал подавать на входы отдельно модуль этого приращения (10) и отдельно - знак: -1 или 1 или 0 (если не было изменений)....
Получилось плохо! Во-первых, нейросеть стала иметь больше входов, а следовательно, медленнее учиться (у меня на моем будненьком буке это чувствуется особенно остро). Во-вторых, если модуль приращения она предсказывать стала намного лучше, то сторону (растет/падает) она стала предсказывать намного хуже!
Не говоря уже о том, что бокскаунтинг показывал, что для выхода, который предсказывает приращение ни один из входов, отражающих знак этого приращения вообще нафиг не нужен!!! А с другой стороны - для выхода, который отражает знак не важно, каким был модуль приращения!!!
И это - тоже очень плохо! Ведь, простая логика подсказывает, что тренды на форексе имеют некоторую "инерцию" (т.е. они не могут меняться мгновенно)... отсюда человеку легко напрашивается вывод: что если приращение последнее было большим (по сравнению с остальными приращениями) - то вряд ли в следующем ходе будет наблюдаться смена знака, а вот если оно было маленьким - то смена знака вполне возможна! (или переход во флэт = 0).
С другой стороны! есть и хорошие результаты от формализации данных (т.е. от разбиения данных на составляющие): когда я стал подавать на входы отдельно приращения: 10, 11, 13, 16, 19, 35, 24, 22, 15, 9, 7, ... и т.д., а отдельно - среднюю скорость этих приращений, - сеть стала лучше прогнозировать. Т.е., напрашивается вывод, что в некоторых случаях сети надо давать данные по "квантам" (т.е. минимальные порции информации), а в некоторых - нет.
Итак, если ты подаешь на входы сети просто приращения, которые, допустим, увеличиваются постпенно, то для сети вовсе не очевидно, что они "растут"... т.е. сеть не способна сделать такое умозаключение... она просто посчитает минимальную ошибку сначала для первого приращения, а потом скорректирует ее для второго и т.д. В итоге, ты можешь получить полную лабуду (с точки зрения логики простой) на выходе... А вот если ты вводишь еще один параметр, который отражает скорость этих приращений, а еще и ускорение... а еще и скорость изменения ускорения... то тогда........
Ну, результаты этого эксперимента - будут опубликованы в скором времени (в теме "Эксперимент 2").
Но, в то же время, если ты разделяешь модуль приращения и его знак, то это приводит к плачевным последствиям....
Так, все-таки... насколько же "тупа" нейросеть? какие "выводы" она может сделать из выборки, а какие нет??
Есть ли смысл, формализовывать данные (в моем понимании - это разделять на "атомы" - на простейшие составляющие) или нет? и если да, то в каких случаях?