Гессиан Vector-Product трюк | OTUS
🔥 BLACK FRIDAY!
Максимальная скидка -25% на всё. Успейте начать обучение по самой выгодной цене.
Выбрать курс

Курсы

Программирование
iOS Developer. Basic
-25%
Python Developer. Professional
-25%
Разработчик на Spring Framework
-25%
Golang Developer. Professional
-25%
Python Developer. Basic
-25%
iOS Developer. Professional
-25%
Highload Architect
-25%
JavaScript Developer. Basic
-25%
Kotlin Backend Developer
-25%
JavaScript Developer. Professional
-25%
Android Developer. Basic
-25%
Unity Game Developer. Basic
-25%
Разработчик C#
-25%
Программист С Web-разработчик на Python Алгоритмы и структуры данных Framework Laravel PostgreSQL Reverse-Engineering. Professional CI/CD Vue.js разработчик VOIP инженер Программист 1С Flutter Mobile Developer Супер - интенсив по Kubernetes Symfony Framework Advanced Fullstack JavaScript developer Супер-интенсив "Azure для разработчиков"
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK
-25%
DevOps практики и инструменты
-25%
Архитектор сетей
-25%
Инфраструктурная платформа на основе Kubernetes
-25%
Супер-интенсив «IaC Ansible»
-16%
Разработчик программных роботов (RPA) на базе UiPath и PIX
-25%
Супер-интенсив "SQL для анализа данных"
-16%
Базы данных Сетевой инженер AWS для разработчиков Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов Внедрение и работа в DevSecOps Администратор Linux. Виртуализация и кластеризация Нереляционные базы данных Супер-практикум по использованию и настройке GIT IoT-разработчик Супер-интенсив «ELK»
Специализации Курсы в разработке Подготовительные курсы
+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 комментариев
Для комментирования необходимо авторизоваться
🎁 Максимальная скидка!
Черная пятница уже в OTUS! Скидка -25% на всё!