Улучшение модели машинного обучения для периодических данных
Я изучаю 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.