Нужно ли изменять входы в перцептрон? - PullRequest
0 голосов
/ 12 июля 2020

Я хочу, чтобы перцептрон сказал мне, будет ли цена акций завтра повышаться или понижаться, но веса становятся действительно высокими или низкими, например, около 1000 или -1000. Это нормально или мне нужно изменить входные данные, чтобы они находились в диапазоне?

Код https://colab.research.google.com/drive/1XeP5UjtZVq2eKozmoiFfGy_8Zyg8X5Y7?usp=sharing

1 Ответ

0 голосов
/ 12 июля 2020

В вашем коде есть проблема с градиентным спуском. Из вашего метода «makeGuess» я заключаю, что ваша сеть рассчитывает

equation of forward path

with A being the activation function and A(y) being the output of your network to given input vector (x1, x2, x3, ...). As activation function you use a specific step function while you try to use gradient descent as optimization method. The problem is that with a step function it doesn't make any sense to use gradient descent. For more background on this please read: https://stats.stackexchange.com/questions/271701/why-is-step-function-not-used-in-activation-functions-in-machine-learning

В вашем методе «поезд» вы пытаетесь использовать градиентный спуск, который вы используете в неправильный путь, потому что здесь вы игнорируете функцию активации в прямом пути. Подумайте об использовании tanh как о нелинейной активации. Тогда вы получите выходные значения в интервале (-1, 1). Затем вы также можете применить градиентный спуск, если используете его правильно.

Кроме того, вам следует подумать о лучшей инициализации веса. Например, Keras по умолчанию использует инициализацию glorot_uniform, что является отличным вариантом для начала. Может и вы захотите посмотреть в этом топе c. Прямо сейчас вы используете uniform (-1,1), что не лучшая идея.

Если вы сделаете все это, вы можете подумать о масштабировании ваших входных данных. Вы можете использовать MinMaxScaler из пакета sklearn и попробовать разные значения min и max (например, -1 и 1) и посмотреть, где вы получите наилучшие результаты.

...