Рубрика «градиентный спуск»

Аннотация

Представьте, что вам нужно обвести объект на картинке — не просто тыкая в пиксели, а проведя одну идеальную, плавную и уверенную линию. Та самая, которую набросал бы на бумаге художник. Как объяснить компьютеру, что значит «идеальная граница»? Как заставить его искать не среди груды точек, а в бесконечном море возможных кривых?

Читать полностью »

Градиентный спуск: как «слепой в лабиринте» находит выход в миллиардном пространстве — и почему это сердце любого ML - 1

Пошаговый разбор с метафорами, формулами и лайфхаками, которые спасут ваш fit()

Читать полностью »

Лежит на струнах пыль
Ржавеет под окном
Разбитый телевизор
Ты сгладил все углы
И жизнь твоя сплошной
Проклятый компромисс
Ни вверх ни вниз

Так поёт группа Би-2 в песне "Компромисс" и с ними трудно не согласиться. Наша жизнь действительно состоит из сплошных проклятых компромиссов между несколькими решениями. Мы пытаемся найти максимально дешёвую, но качественную электронику, ищем экономичный, но быстрый автомобиль и красивого, но надёжного партнёра для отношений.

Каждая из этих повседневных задач заключается в поиске оптимума нескольких конфликтующих между собой функций. Это называется Читать полностью »

Даже небольшое преимущество продукта может принести существенную выгоду. Инженеры постоянно ищут новые способы оптимизации конструкций в существующих ограничениях, чтобы добиться лучших результатов. Так, Airbus в 2006 году анонсировал программу, которая позволила добиться прироста на ~4 процентаЧитать полностью »

Во время изучения различных алгоритмов машинного обучения я наткнулся на ландшафт потерь нейронных сетей с их горными территориями, хребтами и долинами. Эти ландшафты потерь сильно отличались от выпуклых и гладких ландшафтов потерь, с которыми я столкнулся при использовании линейной и логистической регрессий. Здесь мы создадим ландшафты потерь нейронных сетей и анимированного градиентного спуска с помощью датасета MNIST.

Анимации градиентного спуска и ландшафта потерь нейронных сетей на Python - 1


Рисунок 1 — Ландшафт потерь свёрточной нейронной сети с 56 слоями (VGG-56, источник)
Читать полностью »

Конспект по «Машинному обучению». Математический анализ. Градиентный спуск - 1

Вспомним математический анализ

Непрерывность функции и производная

Пусть $inline$E subseteq mathbb{R}$inline$, $inline$a$inline$ — предельная точка множества $inline$E$inline$ (т.е. $inline$a in E, forall varepsilon > 0 spacespace |(a - varepsilon, a + varepsilon) cap E| = infty$inline$), $inline$f colon E to mathbb{R}$inline$.

Определение 1 (предел функции по Коши):

Функция $inline$f colon E to mathbb{R}$inline$ стремится к $inline$A$inline$ при $inline$x$inline$, стремящемся к $inline$a$inline$, если

$$display$$forall varepsilon > 0 spacespace exists delta > 0 spacespace forall x in E spacespace (0 < |x- a| < delta Rightarrow |f(x)- A| < varepsilon).$$display$$

Обозначение: $inline$limlimits_{E ni x to a}f(x) = A$inline$.
Читать полностью »

О методах численной оптимизации написано много. Это и понятно, особенно на фоне тех успехов, которые в последнее время демонстрируют глубокие нейронные сети. И очень отрадно, что хотя бы часть энтузиастов интересуется не только тем, как забомбить свою нейросеточку на набравшей в этих ваших интернетах популярность фреймворках, но и тем, как и почему все это вообще работает. Однако мне в последнее время пришлось отметить, что при изложении вопросов, связанных с обучением нейросетей (и не только с обучением, и не только сетей), в том числе на Хабре, все чаще впроброс используется ряд “хорошо известных” утверждений, справедливость которых, мягко говоря, сомнительна. Среди таких сомнительных утверждений:

  1. Методы второго и более порядков плохо работают в задачах обучения нейросетей. Потомучто.
  2. Метод Ньютона требует положительной определенности матрицы Гессе (вторых производных) и поэтому плохо работает.
  3. Метод Левенберга-Марквардта — компромисс между градиентным спуском и методом Ньютона и вообще эвристичекий.

и т.д. Чем продолжать этот список, лучше перейдем к делу. В этом посте рассмотрим второе утверждение, поскольку его я только на Хабре встречал как минимум дважды. Первый вопрос затрону только в той части, что касается метода Ньютона, поскольку он куда более обширен. Третий и остальные оставим до лучших времен.
Читать полностью »

Дифференцируемое программирование - 1

С четырьмя параметрами я могу задать слона, а с пятью я могу заставить его шевелить хоботом.
– John Von Neumann

Идея «дифференцируемого программирования» очень популярна в мире машинного обучения. Для многих не ясно, отражает ли этот термин реальный сдвиг в том, как исследователи понимают машинное обучение, или это просто (еще один) ребрендинг «глубокого обучения». В этом посте разъясняется, что нового дает дифференцируемое программирование (или ∂P) в таблице машинного обучения.

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

Далее мы пролистаем полотно неинтересного текста, захотим узнать, что такое автодифференцирование и даже популяем из катапульты!

Читать полностью »

Julia, Градиентный спуск и симплекс метод - 1

Продолжаем знакомство с методами многомерной оптимизации.

Далее предложена реализация метода наискорейшего спуска с анализом скорости выполнения, а также имплементация метода Нелдера-Мида средствами языка Julia и C++.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js