Как называется данный алгоритм?

Цель этого алгоритма - заставить нейросеть самостоятельно улучшать свои ответы со временем.

Этот алгоритм постепенно добавляет в её входные данные данные, которые включают в себя её опыт, то есть её предыдущие входные данные, её предсказания на этих данных, а также реальные значения.

Перед этим он генерирует обучающие данные для этой нейросети при помощи подобного кода:

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]

Ответы (0 шт):