Skip to content

deQwelly/gd-optimization-algorithms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

Gradient Descent Optimization Algorithms

Обзор проекта

В проекте реализован набор алгоритмов градиентной оптимизации для задач регрессии с единой архитектурой и поддержкой различных функций потерь и регуляризации.

Реализация включает:

  • базовый градиентный спуск
  • стохастические методы
  • методы с иннерцией (momentum)
  • адаптивные алгоритмы оптимизации (adam)

Особое внимание уделено модульности, расширяемости и единообразию интерфейсов.


Цель

Разработать универсальный фреймворк для оптимизации линейных моделей, позволяющий:

  • легко переключаться между различными алгоритмами оптимизации
  • использовать разные функции потерь
  • добавлять регуляризацию без изменения основной логики

Поддерживаемые алгоритмы

Реализованы следующие методы оптимизации:

  • Vanilla Gradient Descent — классический полный градиент
  • Stochastic Gradient Descent (SGD) — стохастическая оценка градиента по батчу
  • Momentum Gradient Descent — ускорение с помощью накопления иннерции
  • Adam (Adaptive Moment Estimation) — адаптивный алгоритм с моментами первого и второго порядка

Для каждого метода также доступна версия с L2-регуляризацией.


Функции потерь

Поддерживаются несколько функций потерь:

  • MSE (Mean Squared Error)
  • MAE (Mean Absolute Error)
  • Huber Loss
  • Log-Cosh Loss

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


Архитектура

Проект построен на основе объектно-ориентированного подхода:

  • BaseDescent — базовый класс с общей логикой
  • отдельные классы для каждого алгоритма
  • enum LossFunction для выбора функции потерь
  • единый интерфейс:
    • step() — один шаг оптимизации
    • calc_gradient() — вычисление градиента
    • update_weights() — обновление весов

Learning Rate

Реализована стратегия убывающего learning rate:

$$ \eta_{k} = \lambda \left(\dfrac{s_0}{s_0 + k}\right)^p $$

Это позволяет:

  • стабилизировать обучение
  • уменьшать шаг по мере сходимости

Регуляризация

Поддерживается L2-регуляризация:

  • добавляется напрямую в градиент
  • реализована через отдельный базовый класс
  • легко комбинируется с любым методом оптимизации

Основные методы

  • step(x, y) — выполнить один шаг оптимизации
  • predict(x) — получить предсказания модели
  • calc_loss(x, y) — вычислить значение функции потерь

Особенности реализации

  • единая система конфигурации (get_descent)
  • поддержка различных стратегий обновления весов
  • разделение логики вычисления градиента и обновления параметров
  • расширяемая архитектура (возможность добавления новых алгоритмов)

Дальнейшее развитие

  • добавление новых методов оптимизации (RMSProp, Nesterov)
  • поддержка мини-батчей в базовом классе
  • визуализация процесса сходимости
  • расширение на нелинейные модели

Технологии

  • Python - основной язык программирования
  • pandas, numpy, scipy - хранение и обработка данных
  • Jupyter Notebook - интерактивная среда для разработки проекта

About

В проекте реализован набор алгоритмов градиентной оптимизации для задач регрессии с единой архитектурой и поддержкой различных функций потерь.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages