Этот пост в блоге — мой прогресс за 6-й день в #100DaysofMLCode. Возвращение к основам машинного обучения помогло мне лучше понять то, что я узнал. В этом сообщении в блоге я поделюсь своими заметками о Deep Learning Book Chapter 4: Numerical Computation. Я определенно чувствую мем выше.
Обратите внимание, что этот пост предназначен для того, чтобы я мог в будущем ознакомиться с материалами этой книги, не перечитывая ее заново.
Вычисление больших числовых вычислений распространено в ML. Например, байесовская статистика часто требует вычисления очень больших многомерных интегралов.
Переполнение и недополнение
- Потеря значимости происходит, когда числа близкие к нулю округляются до нуля.
- Переполнение происходит, когда числа с большой величиной аппроксимируются как ∞ или -∞.
Пример Softmax переполнения и потери значимости:
У нас есть проблема, если наши x очень отрицательные, потому что, возводя их в степень, мы приближаем их к нулю, что может привести к потере значимости. Точно так же с огромным x мы можем получить переполнение. Мы можем сделать небольшую нормализацию, чтобы преодолеть это: вычитая max(x), мы не меняем вычисления, но гарантируем, что в числителе все равно ‹0, а в знаменателе, по крайней мере одна из записей имеет значение exp(0)=1, что означает, что мы не получим потерю значимости!
Плохое кондиционирование
Обусловливание относится к тому, насколько быстро функция изменяется при небольшом изменении входных данных. Ошибки округления могут быстро изменить результат. Рассмотрим f(x)=A-1x — A ε Rnxn имеет собственное разложение. Его условие №. равно , то есть отношение наибольшего собственного значения к наименьшему . Когда это велико, вывод очень чувствителен к ошибке ввода. Плохо обусловленные матрицы усиливают уже существующие ошибки, когда мы умножаем их на обратную.
Оптимизация на основе градиента
Алгоритмы глубокого обучения постоянно используют методы оптимизации. Мы минимизируем потери или ошибки или максимизируем некоторые функции оценки. Большинство задач оптимизации часто формулируются в терминах минимизировать f(x). Максимизация достигается путем минимизации -f(x).
- Рассмотрим функцию y=f (x), x, y вещественного числа.
- Производная функции обозначается: f ’(x) или как dy/dx
- Производная f’(x) дает наклон f (x) в точке x
- Он указывает, как масштабировать небольшое изменение на входе, чтобы получить соответствующее изменение на выходе: f (x + ε) ≈ f (x) + ε f’ (x)
3. В нем рассказывается, как внести небольшие изменения во входные данные, чтобы добиться небольшого улучшения y.
4. Мы знаем, что f (x — ε sign (f'(x))) меньше, чем f (x) для малых ε . Таким образом, мы можем уменьшить f (x), перемещая x небольшими шагами с противоположным знаком производной. Этот метод называется градиентным спуском.
Точки, в которых f’(x) = 0, называются критическими или стационарными точками. Типы критических точек:
При работе с несколькими входными данными мы используем частные производные, чтобы рассказать вам, как изменяется функция с несколькими переменными, когда вы настраиваете только одну из переменных в ее входных данных.
Градиент обобщает понятие производной на случай, когда производная равна w.r.t. вектор: градиент fis вектор, содержащий все частные производные, обозначаемый ∇xf(x).
Производная по направлению – это скорость, с которой функция изменяется в точке в направлении . Минимизация происходит, когда градиент направлен прямо вверх, а отрицательный градиент указывает прямо вниз. Он говорит вам, как функция с несколькими переменными изменяется, когда вы перемещаетесь по некоторому вектору в ее входном пространстве.
Градиент указывает прямо вверх по склону, а отрицательный градиент указывает прямо вниз по склону. Мы можем уменьшить f, двигаясь в направлении отрицательного градиента. Этот метод называется Самый крутой спуск илиградиентный спуск. Самый крутой спуск предлагает новую точку:
где ε — скорость обучения, положительная скалярная величина, определяющая размер шага. этот метод сходится, когда каждый элемент градиента равен нулю (или очень близок к нулю). Общая концепция повторяющихся небольших перемещений в локально лучшем направлении может быть обобщена на дискретные пространства (восхождение на холм). Проще говоря, мы можем избежать итеративного алгоритма и перейти к критической точке, решив уравнение
для x.
Матрицы Якоби и Гессе
Ограниченная оптимизация
Ограничьте минимальное и максимальное значения x, чтобы они находились в некотором наборе, известном как допустимые точки. Обычно накладывают ограничения нормы, такие как ||x|| ‹ = 1.Один из способов удовлетворить это ограничение — использовать проецируемый градиентный спуск, т. е. нормально использовать обновление градиента и проецировать его обратно в допустимый набор. Другой способ состоит в том, чтобы переписать задачу с ограничениями как модифицированную задачу без ограничений. Например, если мы хотим найти минимальное значение x для некоторого f(x), такое что x имеет единицу норму, мы могли бы переписать это как:
и вернуться:
как наше решение.
ККТ-подход
Подход Каруша-Куна-Такера (KKT) обеспечивает общую основу для записи задач оптимизации с ограничениями как задач без ограничений.
Вывод
В этом посте я поделился своими заметками о главе 4 книги по глубокому обучению: заметки о численных вычислениях.
Справочник
- Ян Гудфеллоу, Йошуа, Бенжио и Аарон Курвлль. Глубокое обучение MIT Press, 2016. https://www.deeplearningbook.org