Гессиан Vector-Product трюк | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
Backend-разработчик на PHP
-9%
Алгоритмы и структуры данных
-9%
Team Lead
-6%
Архитектура и шаблоны проектирования Разработчик IoT
-13%
C# Developer. Professional
-9%
HTML/CSS
-11%
C# ASP.NET Core разработчик
-5%
Kotlin Backend Developer
-8%
iOS Developer. Professional
-8%
Java Developer. Professional JavaScript Developer. Professional Базы данных Android Developer. Professional Framework Laravel Cloud Solution Architecture Highload Architect Reverse-Engineering. Professional Vue.js разработчик Agile Project Manager VOIP инженер Scala-разработчик Супер-практикум по использованию и настройке GIT Symfony Framework Java Developer. Basic Unity Game Developer. Professional Супер-интенсив Azure
Инфраструктура
Экспресс-курс «IaC Ansible»
-10%
Administrator Linux.Basic
-10%
Мониторинг и логирование: Zabbix, Prometheus, ELK
-10%
Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
Administrator Linux. Professional
-6%
Дизайн сетей ЦОД
-13%
NoSQL Основы Windows Server MS SQL Server Developer Инфраструктурная платформа на основе Kubernetes Cloud Solution Architecture Highload Architect Разработчик голосовых ассистентов и чат-ботов VOIP инженер Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив "Tarantool"
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Гессиан Vector-Product трюк

DS_Deep_21.08_site.png

В некоторых алгоритмах машинного обучения возникает необходимость в расчёте матрицы вторых производных функции Снимок экрана 2018-08-21 в 16.47.49.pngБудем называть её «гессиан»: Снимок экрана 2018-08-21 в 16.48.37.pngПримером может быть метод Ньютона для оптимизации. Зачастую функция может зависеть от миллионов переменных. Это частый случай в глубоком обучении, где оптимизируемая функция зависит от параметров модели, и этих параметров может быть очень много. Прямой расчёт гессиана для такой функции был бы очень сложен, поскольку даже объём памяти, требуемый для хранения элементов гессиана, уже растёт как квадрат числа переменных.

Вместе с тем, далеко не всегда необходима сама матрица гессиана. Иногда нужно лишь произведение этой матрицы на какой-то вектор: Hv (например, в методе сопряжённых градиентов для оптимизации). В этом случае можно избежать вычисления всего гессиана и рассчитать всего лишь 1 производную по направлению.

Будем обозначать градиент функции Снимок экрана 2018-08-21 в 16.50.54.pngи получаем:

Снимок экрана 2018-08-21 в 16.52.43.pngРассмотрим одну компоненту этого вектора:

Снимок экрана 2018-08-21 в 16.53.11.pngКак видно, это всего лишь производная по направлению для функции Снимок экрана 2018-08-21 в 16.54.34.pngИ её легко сосчитать с помощью конечных разностей для произвольной функции F(x):Снимок экрана 2018-08-21 в 16.55.14.pngЗапишем итоговую формулу:Формула 2.png

Дополнительные материалы: 1. Hessian Free Optimization; 2. Fast Exact Multiplication by the Hessian; 3. Посмотреть формулы из заметки можно здесь.

Есть вопрос? Напишите в комментариях!

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться