В AIB мы используем машинное обучение для решения множества задач. В этом сообщении блога мы обсудим один подход для эффективной работы с большим и постоянно растущим набором данных. В предлагаемом алгоритме после того, как данные были использованы в процессе обучения, их влияние будет сохраняться, и модель может быть обновлена ​​без необходимости извлечения старых данных. Таким образом, после обработки данных от них можно отказаться.
Ниже мы также покажем, как мы потенциально можем придать больший вес последним данным.

Начнем с основ. Предположим, у нас есть набор T входных векторов:

с участием

и для каждого вектора

есть соответствующий результирующий

Мы хотим найти оптимальный вектор θ так, чтобы

хороший предсказатель

Мы выбираем θ, который минимизирует функцию стоимости:

Мы могли бы расширить внутренний продукт:

что даст нам:

Когда у нас есть оптимальное θ, частные производные J будут равны нулю:

Мы можем изменить порядок суммирования и немного перестроить, чтобы получить:

Теперь определим матрицу A:

и определяем вектор B:

Подставляя их в уравнение 1, мы находим:

Если мы можем инвертировать матрицу A, то мы можем получить θ

Если мы посмотрим на уравнение 2, мы увидим, что каждый вектор

фактически имеет тот же вес.
Мы могли бы переписать уравнения 2 и 3 как:

и

где

Однако предположим, что нам нужны более свежие значения

чтобы иметь больший вес, чем старые, тогда мы могли бы исправить соотношение последовательных весов:

с λ ›0

Итак, у нас было бы:

Предположим, вы хотите найти скорость, с которой вес падает до половины веса последней добавленной записи, тогда мы будем искать 𝜏 так, чтобы

что подразумевает:

so:

Итак, если мы хотим, чтобы самые последние данные имели удвоенный вес по сравнению с точкой на 1000 строк назад, мы должны установить:
𝜏 = 1000
Параметр 𝜏 - это что-то вроде периода полураспада.

Если мы хотим сохранить условие, что сумма весов равна 1,
тогда мы можем произвести геометрическую сумму и после небольшой алгебры мы обнаружим, что:

Мы можем подставить в уравнение 6, и тогда мы найдем:

Теперь для данного набора

с участием

мы можем оценить А и Б.
Поскольку они были созданы с T строками данных, мы могли пометить их

Теперь предположим, что мы уже оценили

с T-1 строками данных, и мы хотим представить еще одну,
затем мы находим:

и

где

был определен в уравнении 7.

Итак, когда мы оценили A и B для данного набора данных
, а затем захотим включить вклад нового

мы можем изменить существующие A и B, используя уравнения 8 и 9, без необходимости извлекать все прошлые

Так что старые x и y не нужно сохранять. Действительно, их можно удалить.

Когда T очень велико, скажем, в сотни миллионов, использование этого алгоритма для постоянного обновления результатов машинного обучения довольно эффективно. Поскольку нам не нужно постоянно получать старые данные. Мы просто постоянно обновляем А и Б.

Мы также можем иметь дело со случаем, когда: λ = 0
Другими словами, все данные имеют одинаковый вес.
Тогда мы обнаруживаем, что уравнения 8 и 9 все еще верны, а уравнение 7 - нет. В этом случае мы обнаруживаем, что:

В качестве забавного упражнения мы оставим читателю определение условий, при которых матрица A обратима.

Если у вас есть какие-либо мысли или комментарии, сообщите нам об этом ниже и не стесняйтесь нажимать кнопку рекомендации сердечка!