Как называется данный алгоритм?
Цель этого алгоритма - заставить нейросеть самостоятельно улучшать свои ответы со временем.
Этот алгоритм постепенно добавляет в её входные данные данные, которые включают в себя её опыт, то есть её предыдущие входные данные, её предсказания на этих данных, а также реальные значения.
Перед этим он генерирует обучающие данные для этой нейросети при помощи подобного кода:
X2, y2 = [], []
for it in range(5):
results = []
for i in range(10):
results2 = []
for v2 in y:
results2.append([
v2 * (choice(multipliers) ** (13 - it - i)), v2
])
results.append(results2)
for i1 in range(1, 10):
for i2 in range(len(X)-9):
x = list(X[i2])
index = 0
for a in range(9):
if a < i1:
x2 = list(results[a][i2 + a]) + list(X[i2 + a + 1])
index += 1
else:
x2 = [0 for _ in range(len(X[0])+2)]
x += x2
X2.append(x)
y2.append(results[i1][i2 + index][0])
Строка v2 * (choice(multipliers)**(13 - it - i) намеренно ухудшает данные, которые нейросеть должна дать на выходе. choice - это random.choice, а multipliers - [1.1, 0.9].
Вот упрощённый пример переменной X:
[[2], [3], [10]]
Вот упрощённый пример переменной y:
[4, 6, 20]
Вот упрощённый пример переменной X2:
[[2, 13.8, 4, 3, 0, 0, 0], [2, 13.8, 4, 3, 1.7, 6, 10]]
Вот упрощённый пример переменной y2:
[1.7, 20]
Вот ещё один упрощённый пример переменной X2:
[[2, 13.8, 4, 2, 0, 0, 0], [2, 13.8, 4, 2, 1.13, 4, 2]]
Вот ещё один упрощённый пример переменной y2:
[1.13, 4]