В 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 обратима.
Если у вас есть какие-либо мысли или комментарии, сообщите нам об этом ниже и не стесняйтесь нажимать кнопку рекомендации сердечка!