Улучшение модели машинного обучения для периодических данных

Я изучаю ML через TensorFlow (tfjs).
Моим первым тестом было научить мою модель предсказыватьcos(x) как функция от x (от 0 до 2*Math.PI*4 или 4 периода)

особенность: 2000 значений x (случайный);
метка: 2000 значений cos (x)

модель:

const model = tf.sequential({
    layers: [
        tf.layers.dense({ inputShape: [1], units: 22, activation: 'tanh' }),
        tf.layers.dense({ units: 1 }),
    ]
});

model.compile({
    optimizer: tf.train.adam(0.01),
    loss: 'meanSquaredError',
    metrics: ['mae']
});

...

await model.fit(feature, label, {
    epochs: 500,
    validationSplit: 0.2,
})

Результат довольно "веселый":

Теперь я хотел бы знать, как улучшить мою модель, чтобы она соответствовала природе периодичности cos (x) (без использования математической периодичности cos (x), например y = cos(x по модулю 2PI)).
Может ли моя модель "понять", что существует периодичность?

1 ответ

Я думаю, что созданная вами сеть слишком мала, чтобы изучить периодическое поведение функции косинуса (попробуйте увеличить количество скрытых единиц и / или добавить скрытые слои), также я не думаю, что обычная (полностью подключенная нейронная сеть) является правильный выбор, если вы хотите изучить функцию, имеющую периодический последовательный характер, попробуйте использовать для этого RNN или LSTM.

Другие вопросы по тегам