Даже небольшое преимущество продукта может принести существенную выгоду. Инженеры постоянно ищут новые способы оптимизации конструкций в существующих ограничениях, чтобы добиться лучших результатов. Так, Airbus в 2006 году анонсировал программу, которая позволила добиться прироста на ~4 процентаЧитать полностью »
Рубрика «градиентный спуск»
Супербыстрая оптимизация крыла с помощью градиентных методов
2024-08-20 в 7:01, admin, рубрики: python, градиентный спуск, Ланит, Математическая оптимизацияАнимации градиентного спуска и ландшафта потерь нейронных сетей на Python
2021-01-10 в 10:13, admin, рубрики: machine learning, python, skillfactory, Блог компании SkillFactory, градиентный спуск, машинное обучение, нейронные сетиВо время изучения различных алгоритмов машинного обучения я наткнулся на ландшафт потерь нейронных сетей с их горными территориями, хребтами и долинами. Эти ландшафты потерь сильно отличались от выпуклых и гладких ландшафтов потерь, с которыми я столкнулся при использовании линейной и логистической регрессий. Здесь мы создадим ландшафты потерь нейронных сетей и анимированного градиентного спуска с помощью датасета MNIST.
Рисунок 1 — Ландшафт потерь свёрточной нейронной сети с 56 слоями (VGG-56, источник)
Читать полностью »
Конспект по «Машинному обучению». Математический анализ. Градиентный спуск
2019-11-03 в 13:20, admin, рубрики: градиентный спуск, дифференциал, математика, математический анализ, машинное обучение, многомерная функция, нейронные сети, непрерывность, предел, производная
Вспомним математический анализ
Непрерывность функции и производная
Пусть $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$.
Читать полностью »
Ох уж этот метод Ньютона
2019-10-02 в 19:01, admin, рубрики: trust-region, Алгоритмы, градиентный спуск, математика, машинное обучение, метод доверительного региона, метод ньютона, методы оптимизацииО методах численной оптимизации написано много. Это и понятно, особенно на фоне тех успехов, которые в последнее время демонстрируют глубокие нейронные сети. И очень отрадно, что хотя бы часть энтузиастов интересуется не только тем, как забомбить свою нейросеточку на набравшей в этих ваших интернетах популярность фреймворках, но и тем, как и почему все это вообще работает. Однако мне в последнее время пришлось отметить, что при изложении вопросов, связанных с обучением нейросетей (и не только с обучением, и не только сетей), в том числе на Хабре, все чаще впроброс используется ряд “хорошо известных” утверждений, справедливость которых, мягко говоря, сомнительна. Среди таких сомнительных утверждений:
- Методы второго и более порядков плохо работают в задачах обучения нейросетей. Потомучто.
- Метод Ньютона требует положительной определенности матрицы Гессе (вторых производных) и поэтому плохо работает.
- Метод Левенберга-Марквардта — компромисс между градиентным спуском и методом Ньютона и вообще эвристичекий.
и т.д. Чем продолжать этот список, лучше перейдем к делу. В этом посте рассмотрим второе утверждение, поскольку его я только на Хабре встречал как минимум дважды. Первый вопрос затрону только в той части, что касается метода Ньютона, поскольку он куда более обширен. Третий и остальные оставим до лучших времен.
Читать полностью »
Дифференцируемое программирование
2019-07-10 в 17:28, admin, рубрики: Julia, machine learning, градиентный спуск, дифференцирование, машинное обучение, ненормальное программирование, обучение с подкреплением, Программирование
С четырьмя параметрами я могу задать слона, а с пятью я могу заставить его шевелить хоботом.
– John Von Neumann
Идея «дифференцируемого программирования» очень популярна в мире машинного обучения. Для многих не ясно, отражает ли этот термин реальный сдвиг в том, как исследователи понимают машинное обучение, или это просто (еще один) ребрендинг «глубокого обучения». В этом посте разъясняется, что нового дает дифференцируемое программирование (или ∂P) в таблице машинного обучения.
Самое главное, дифференцируемое программирование — это сдвиг, противоположный направлению глубокого обучения; от все более сильно параметризованных моделей к более простым, которые в большей степени используют структуру проблемы.
Далее мы пролистаем полотно неинтересного текста, захотим узнать, что такое автодифференцирование и даже популяем из катапульты!
Julia, Градиентный спуск и симплекс метод
2019-02-12 в 17:46, admin, рубрики: Julia, Алгоритмы, градиентный спуск, машинное обучение, метод Нелдера-Мида, многомерная оптимизация, покоординатный спуск, Программирование, симлекс метод
Продолжаем знакомство с методами многомерной оптимизации.
Далее предложена реализация метода наискорейшего спуска с анализом скорости выполнения, а также имплементация метода Нелдера-Мида средствами языка Julia и C++.
Обзор градиентных методов в задачах математической оптимизации
2018-06-11 в 19:12, admin, рубрики: градиентный спуск, математика, Математическая оптимизация, машинное обучениеПредисловие
В этой статье речь пойдет о методах решения задач математической оптимизации, основанных на использовании градиента функции. Основная цель — собрать в статье все наиболее важные идеи, которые так или иначе связаны с этим методом и его всевозможными модификациями.
Читать полностью »
Применяем градиентный спуск на реальной Земле
2018-05-03 в 7:08, admin, рубрики: momentum optimization, Алгоритмы, алгоритмы оптимизации, градиентный спуск, инерция, машинное обучение, Работа с 3D-графикойОбычная аналогия для объяснения градиентного спуска такая: человек застрял в горах во время сильного тумана и должен спуститься вниз. Самый логичный способ — осмотреть поверхность вокруг и медленно проложить путь, следуя вниз по склону.
Такова суть градиентного спуска, но аналогия всегда разваливается, когда мы переходим в многомерное пространство, фактическая геометрия которого нам мало известна. Хотя обычно это не становится проблемой, потому что градиентный спуск, кажется, работает вполне нормально.
Но вот важный вопрос: насколько хорошо градиентный спуск выполняется на реальной Земле?
Читать полностью »
Что мы знаем о ландшафте функции потерь в машинном обучении?
2018-03-26 в 6:00, admin, рубрики: gradient descent, loss, loss function, machine learning, градиентный спуск, математика, машинное обучение, функция потерьTL;DR
- В глубоких нейронных сетях основным препятствием для обучения являются седловые точки, а не локальные минимумы, как считалось ранее.
- Большинство локальных минимумов целевой функции сконцентрированы в сравнительно небольшом подпространстве весов. Соответствующие этим минимумам сети дают примерно одинаковый loss на тестовом датасете.
- Сложность ландшафта увеличивается по приближении к глобальному минимуму. Почти во всём объёме пространства весов подавляющая часть седловых точек имеет большое количество направлений, по которым из них можно сбежать. Чем ближе к центру кластера минимумов, тем меньше «направлений побега» у встреченных на пути седловых точек.
- Всё ещё неясно, как найти в подпространстве минимумов глобальный экстремум. Похоже, что это очень сложно; и не факт, что типичный глобальный минимум намного лучше типичного локального.
- В сгустке минимумов существуют особые кривые, соединяющие локальные минимумы. Функция потерь на этих кривых принимает лишь чуть большие значения, чем в самих минимумах.
- Некоторые исследователи считают, что широкие минимумы (с большим радиусом «ямы» вокруг) лучше узких. Но есть и немало учёных, которые полагают, что связь ширины минимума с обобщающей способностью сети очень слаба.
- Skip connections делают ландшафт более дружелюбным для градиентного спуска. Похоже, что вообще нет причин не использовать residual learning.
- Чем шире слои в сети и чем их меньше (до определённого предела), тем глаже ландшафт целевой функции. Увы, чем более избыточна параметризация сети, тем больше нейросеть подвержена переобучению.
Всё, листайте дальше. Я даже КДПВ ставить не буду.
Читать полностью »
Краткий курс машинного обучения или как создать нейронную сеть для решения скоринг задачи
2017-10-23 в 17:22, admin, рубрики: data mining, data science, genetic algorithms, machine learning, neural networks, python, Алгоритмы, генетический алгоритм, градиентный спуск, машинное обучение, нейронные сети, оптимизационные задачи, Программирование, скоринг, эволюционный алгоритм
Мы часто слышим такие словесные конструкции, как «машинное обучение», «нейронные сети». Эти выражения уже плотно вошли в общественное сознание и чаще всего ассоциируются с распознаванием образов и речи, с генерацией человекоподобного текста. На самом деле алгоритмы машинного обучения могут решать множество различных типов задач, в том числе помогать малому бизнесу, интернет-изданию, да чему угодно. В этой статье я расскажу как создать нейросеть, которая способна решить реальную бизнес-задачу по созданию скоринговой модели. Мы рассмотрим все этапы: от подготовки данных до создания модели и оценки ее качества.
Вопросы, которые разобраны в статье:
• Как собрать и подготовить данные для построения модели?
• Что такое нейронная сеть и как она устроена?
• Как написать свою нейронную сеть с нуля?
• Как правильно обучить нейронную сеть на имеющихся данных?
• Как интерпретировать модель и ее результаты?
• Как корректно оценить качество модели?
Читать полностью »