ИИММ-04 Deep Learning 2 PDF Москва 2024

Summary

Лекция по искусственному интеллекту в мультимедиа, 2024 год. Материалы содержат общие сведения о нейронных сетях и оптимизации в Deep Learning.

Full Transcript

МИЭМ Департамент Москва компьютерной инженерии 2024 Искусственный интеллект в мультимедиа Департамент компьютерной инженерии Повторение 2 В прошлой серии: В нейронных сетях – довольно п...

МИЭМ Департамент Москва компьютерной инженерии 2024 Искусственный интеллект в мультимедиа Департамент компьютерной инженерии Повторение 2 В прошлой серии: В нейронных сетях – довольно простая математика Векторные произведения Частные производные Векторы частных производных Сама нейронная сеть – функция, описываемая скалярными параметрами (веса и сдвиги). Департамент компьютерной инженерии Повторение 3 В прошлой серии: Нейронные сети обучаются градиентным спуском Метафора спуска с холма Параметры обновляются в направлении отрицательного градиента Департамент компьютерной инженерии Повторение 4 Weights and Bias В прошлой серии: x1 b Основные строительные w1 Weighted x2 ⋮ ⋮ блоки простых Sum w2 Output нейронных сетей: Inputs ∑ Перцептроны xn-1 wn-1 ReLU = max(0, x) Алгоритм оптимизации xn wn Функции активации Функции потерь Департамент компьютерной инженерии Повторение 5 Опрос! https://forms.yandex.ru/cloud/66fc8c42c417f318e6ac7cb3/ 6 Департамент компьютерной инженерии Повторение 7 Вопросы по предыдущей лекции? Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Содержание 8 Deep Learning 2 Содержание 1. Предупреждение 2. Обзор математики 3. Обратное распространение 4. Современные техники 5. Оптимизаторы 6. Batch-Norm 7. Ансамбли 8. Дропаут 9. Skip Connections 10.PyTorch Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Предупреждение 9 Deep Learning 2 Предупреждение Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Предупреждение 10 Deep Learning 2 Предупреждение В первой части лекции мы обсудим алгоритм обратного распространения ошибки. Если вы заблудились - ничего страшного. Главное - получилте общее представление о том, что такое вычислительный граф, что делает алгоритм обратного распространения и зачем мы его используем. Последняя половина лекции, однако, будет иметь решающее значение для современных систем глубокого обучения. Здесь будет много математики. Если вы не понимаете математику, ничего страшного, просто обратите внимание на пункты с надписью «вывод» и выделенный жирным шрифтом текст - они помогут вам понять, как использовать эти инструменты. Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Математическая база 11 Deep Learning 2 Математическая база Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Математическая база 12 Deep Learning 2 Вычислительные графы Допустим, у нас есть некоторая функция e(c, d), но c и d - функции других переменных. У нас есть c(a, b) и d(b). Мы можем записать зависимость этих функций друг от друга в виде дерева. Мы называем его вычислительным графом, потому что он говорит нам, как вычислить конечное значение e из листовых узлов (входов) a и b. Каждый узел в этом дереве является функцией от входящих узлов Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Математическая база 13 Deep Learning 2 Вычислительные графы и цепное правило Если мы хотим вычислить производные входа относительно выхода, нам нужно использовать правило цепи для множества переменных Просуммируйте все уникальные пути от входа к выходу Для каждого пути перемножьте все частные производные каждого выходного узла по отношению к соответствующему входному узлу Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Обратное распространение ошибки 14 Deep Learning 2 Обратное распространение ошибки Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Обратное распространение ошибки 15 Deep Learning 2 Обратное распространение ошибки Вот пример графа вычислений с функцией потерь MSE в игрушечной нейронной сети на одном обучающем примере Эта нейронная сеть имеет только один нейрон на слой, делая входы и выходы скалярными. Наша задача с помощью градиентного спуска вычислить частную производную выхода по отношению к w1, w2, w3, b1, b2 и b3... но мы не хотим делать в 6 раз больше вычислений... как мы можем это сделать? Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Обратное распространение ошибки 16 Deep Learning 2 Обратное распространение ошибки Мы можем выписать цепное правило для всех этих случаев и посмотреть, есть ли где-нибудь место, которое мы можем оптимизировать и сэкономить на вычислениях. Примечание: Мы будем выписывать много частных производных... каждая из них оценивается для текущего обучающего примера и текущих параметров, просто не хватило места, чтобы это написать Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Обратное распространение ошибки 17 Deep Learning 2 В этом примере x, y, b1, b2, b3, Примечание: при прохождении w1, w2, w3 - скаляры. вперед мы вычисляем и Не зацикливайтесь на значении сохраняем такие вещи, как каждого члена, это неважно. частное от z_3 по отношению к a_3, чтобы использовать его здесь позже Пример графа вычислений скаляров Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Обратное распространение ошибки 18 Deep Learning 2 В этом примере x, y, b1, b2, b3, w1, w2, w3 - скаляры. Мы видим, что вычисляли эти значения несколько раз Пример графа вычислений скаляров Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Обратное распространение ошибки 19 Deep Learning 2 Обратное распространение ошибки Вместо того чтобы снова вычислять эти значения с помощью многократного умножения, давайте просто сохраним и повторно используем их 1. Сначала мы вычисляем обновление для Это избавляет глубокие W3, кэшируя красное. нейронные сети от множества 2. Затем мы используем красное для лишних вычислений. вычисления значения синего перед Мы просто будем работать от вычислением обновления для W2 конца сети к ее передней 3. Эта модель использования последнего вычисления для экономии избыточных части, кэшируя значения, которые умножений при следующем нам нужны, по мере продвижения обновлении продолжается вперед Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Обратное распространение ошибки 20 Deep Learning 2 Обратное распространение ошибки Теперь представьте, что W_i - весовые матрицы, B_i - векторы смещения, X - входной вектор, и замените любое скалярное умножение матричным умножением. Критически важно, что наша потеря L по-прежнему скалярная. Вам не нужно понимать, как выглядит производная L по Zi, просто представьте, что она существует - мы можем реализовать ту же идею кэширования из скалярного случая и для реальной нейронной сети. Кэширование избавляет нас от выполнения избыточных матричных умножений, которые могут быть очень дорогими Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Обратное распространение ошибки 21 Deep Learning 2 Выводы Главное, что вы должны вынести из обратного распространения, это то, что это быстрый метод получения всех частных производных, необходимых для градиентного спуска, удаляя лишние (матричные) умножения. Для этого мы работаем от конца вычислительного графа к началу, кэшируя все вычисления, использованные при вычислении предыдущих частных производных Работая от конца графа к его передней части, мы можем быстро и эффективно обрабатывать гораздо более сложные вычислительные графы Современное программное обеспечение для автодифференцирования, например pytorch, будет следить за графом и вычислять наши градиенты с помощью обратного распространения. Он может обрабатывать произвольно большие вычислительные Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Современное глубокое обучение 22 Deep Learning 2 Современное глубокое обучение Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Современное глубокое обучение 23 Deep Learning 2 Оптимизация Можем ли мы добиться большего, чем ванильный градиентный спуск? Да Мы расскажем о трех оптимизаторах: Momentum, RMSProp и Adam. Не поймёте математику - ок, просто убедитесь, что вы понимаете интуицию/вывод из каждого метода. Вот правило обновления обычного GD для справки Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Современное глубокое обучение 24 Deep Learning 2 Момент (импульс) Нам бы не хотелось, чтобы небольшой случайный локальный оптимум или случайные плоские точки остановили Добавьте текущий градиент к нашему средневзвешенному наш спуск. Снижение предыдущего значению, уменьшите масштаб Вдохновляйтесь реальным мячом, средневзвешенного значения катящимся вниз по склону, который будет иметь импульс. Вывод: Обновляем параметры с Выполните помощью средневзвешенного g - средневзвешенное значение шаг значения прошлых градиентов предыдущих градиентов t - шаг по времени / t-й шаг градиента обновления градиента с Технически это обновление больше beta - некоторый гиперпараметр в диапазоне [0, 1], который мы выбираем, он помощью нашего управляет силой взвешенного среднего средневзвеш не является настоящим енного градиентом, но оно хорошо значения работает для избежания локальных Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Современное глубокое обучение 25 Deep Learning 2 Момент: визуализация Без момента С моментом (представьте, что вы уронили шарик на старте, и как он будет спускаться) Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Современное глубокое обучение 26 Deep Learning 2 RMSProp Вместо того чтобы хранить средневзвешенное значение градиентов, мы будем хранить средневзвешенное значение компонентов квадратичного градиента. Мы собираемся разделить наше обновление истинного градиента на квадратный корень из этого средневзвешенного квадрата градиентов Выводы/интуиция - на следующем слайде Первое уравнение в итоге выглядит очень похоже на уравнение импульса, поскольку мы просто вычисляем средневзвешенное градиентное значение Возведите в квадрат наше обновление, Средневзвешенное значение компонентов (хотя и квадратичного другой градиента, величины) аналогично импульсу. Обратите внимание, что g^2 - это масштабируйте его и добавьте к нашему старому имя переменной, ссылка на отслеживание средневзвешенному, которое квадратичных градиентов вместо обычных было уменьшено градиентов Делим наше обновление на квадратный корень из epsilon: какое-то очень средневзвешенного значения маленькое значение, чтобы убедиться, что мы не делим на ноль Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Современное глубокое обучение 27 Deep Learning 2 RMSProp Случай 1: В прошлом градиенты были очень маленькими. Наше скользящее среднее квадратов градиентов будет еще меньше. Квадратный корень из этого скользящего среднего будет очень маленьким числом, и деление на него должно увеличить размер финального обновления градиента Вывод: это помогает бороться с Случай 2: Наши градиенты были проблемой, что градиенты могут быть разного размера, из-за чего мы либо очень большими в прошлом Скользящее среднее квадратов застреваем на маленьких градиентах, градиентов будет огромным либо проваливаемся мимо цели с Квадратный корень из этого большими градиентами. RMSProp скользящего среднего будет очень гарантирует, что наши шаги никогда не большим числом, и деление на него будут слишком большими или слишком Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Современное глубокое обучение 28 Deep Learning 2 Adam Adam - лучший оптимизатор - и точка. Просто используйте Adam с гиперпараметрами по умолчанию Мы просто объединим импульс и RMSProp Мы сохраним 2 скользящих средних: одну для градиентов и одну для квадратичных градиентов Вывод: Это комбинация импульса и RMSProp, дающая преимущества обоих, и она работает из коробки (параметры по умолчанию) лучше, чем почти все остальное. Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Современное глубокое обучение 29 Deep Learning 2 Adam Adam - лучший оптимизатор - и точка. Просто используйте Adam с гиперпараметрами по умолчанию Мы просто объединим импульс и RMSProp Мы сохраним 2 скользящих средних: одну для градиентов и одну для квадратичных градиентов Вывод: Это комбинация импульса и RMSProp, дающая преимущества обоих, и она работает из коробки (параметры по умолчанию) лучше, чем почти все остальное. Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Содержание 30 Deep Learning 2 1. Какова роль оптимизатора в глубоком обучении? Меняет ли он оптимальный набор Самопроверка весов для модели? Вопросики 2. Перечислите основные преимущества Момента, RMSProp и Adam. Департамент Мультимедиа-технологии компьютерной инженерии Лекция 4 Содержание 31 Deep Learning 2 1. Оптимизатор определяет лучшее решение, которое мы способны найти, но не Самопроверка влияет на сами лучшие веса. Ответики 2. Момент не позволяет нам застрять в локальных минимумах, RMSProp не позволяет нашим градиентам быть слишком маленькими или слишком большими, а Adam обладает преимуществами обоих

Use Quizgecko on...
Browser
Browser