Глубокое обучение

Обучение занимает слишком много времени? Используйте экспоненциально взвешенные средние!

Используйте эту оптимизацию, чтобы ускорить тренировки!

Застряли за платным доступом? Нажмите здесь, чтобы прочитать всю историю по ссылке моего друга!

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

Не все так, как кажется.

«В чем здесь недостаток?» ~ спросите вы. Итак, у нас есть наши маленькие процессоры ЦП, но у некоторых из нас есть графические процессоры, но и вычислительная мощность не стремительно растет и имеет предел. Главный недостаток, о котором я могу думать, это слишком долгое время обучения, очевидно.

Экспоненциально взвешенные средние

Объясню это так, как объяснили НГ. Предположим, у вас есть данные о погоде в Лондоне. Вы хотите предсказывать погоду в разные дни. Данные могут выглядеть примерно так:

╔═══════════╦════════════════════╗
║   house   ║       Weather      ║
╠═══════════╬════════════════════╣
║    X1     ║        40 ˚F       ║
║    X2     ║        40 ˚F       ║
║    X3     ║        49 ˚F       ║
║    ..     ║         ...        ║
║    ..     ║         ...        ║
║    ..     ║         ...        ║
║   X180    ║        63 ˚F       ║
║   X180    ║        61 ˚F       ║
╚═══════════╩════════════════════╝

Где «X1» - это день 1, а «X180» - это 180-й день. Теперь, если вы построите график данных, вы увидите что-то вроде этого:

Итак, каков алгоритм?

Формула: Vt = (ß) * Vt-1 + (1 - ß) * øt.

Где:

  • ‘Øt’ - температура текущего дня.
  • «Вт-1» - температура накануне.
  • А «ß» - это переменная. Это меняет внешний вид графика.

Чем больше значение ß, тем более гладкой будет кривая. Если ß меньше, кривая будет шумной.

Вот строки:

  • Зеленый: 0,98
  • Красный: 0,9
  • Желтый: 0,5

Or If :

  • ß ≈≈ 1: Зеленая линия.
  • ß! = 1 или 0: Красная линия.
  • ß ≈≈ 0: Желтая линия.

Где «≈≈» означает «подходы к».

У нас есть экспоненциально убывающее значение. Все значения Vt прибавляются к 1, грубо говоря. Следовательно, мы можем сказать, что V100 будет ß умноженным на сумму всех значений V до сотого день.

Реализация алгоритма

# Pseudo Code
Vø = 0
For loop {
Get next øt
Vø = ß * Vø + (1 - ß) * øt
}

Вот и все! Да, самым большим преимуществом этого алгоритма является то, что он использует очень мало памяти. Мы просто инициализируем , а затем продолжаем его обновлять.

Если вы хотите вычислить средние для многих значений, это полезно из-за того, что для этого требуется меньше места.

Что такое коррекция смещения?

Зеленая линия - это то, что мы хотим, а фиолетовая линия - это то, что мы получаем с помощью уравнения.

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

Итак, чтобы справиться с этим, вместо использования мы используем Vt / (1 - ßt), а это в значительной степени решает проблему. Кроме того, когда t достаточно велик, корректировка почти не требуется, и, следовательно, это то, что показывает уравнение.

Надеюсь, эта статья вам поможет! Давайте подключимся к Linkedin.

Дополнительная литература







Контакты

Если вы хотите быть в курсе моих последних статей и проектов, подписывайтесь на меня на Medium. Вот некоторые из моих контактных данных:

Удачного обучения. :)