본문 바로가기
728x90

Optimizer6

[PYTHON] 딥러닝 Optimizer 3가지 Adam, SGD, RMSProp 동작 원리 차이와 도메인별 해결 방법 딥러닝 모델의 성능을 결정짓는 가장 핵심적인 요소는 손실 함수(Loss Function)를 최소화하는 최적화 알고리즘(Optimizer)의 선택입니다. 파이썬 기반의 PyTorch나 TensorFlow 라이브러리를 사용하다 보면 수많은 옵티마이저를 마주하게 되지만, 단순히 'Adam이 가장 좋다'는 식의 접근은 특정 도메인이나 복잡한 물리 엔진 기반 학습에서 심각한 수렴 실패를 야기할 수 있습니다.본 포스팅에서는 가장 널리 사용되는 SGD, RMSProp, Adam의 내부 동작 원리를 수학적 관점에서 심층 분석하고, 실무 개발자가 데이터의 희소성(Sparsity)과 곡률(Curvature)에 따라 최적의 알고리즘을 선택하는 7가지 전략을 제시합니다.1. 최적화 알고리즘의 발전 계보와 내부 동작 원리모든 .. 2026. 4. 27.
[PYTHON] 커스텀 옵티마이저 구현 시 Weight Decay와 L2 Regularization 2가지 차이 반영 방법 딥러닝 모델의 일반화 성능을 높이기 위해 사용하는 Weight Decay와 L2 Regularization은 실무에서 혼용되곤 하지만, 수식적으로는 엄밀히 다른 개념입니다. 특히 AdamW와 같은 최신 옵티마이저를 직접 구현하거나 커스텀할 때 이 차이를 무시하면 하이퍼파라미터 최적화에 실패할 가능성이 큽니다. 본 가이드에서는 이 두 기법의 수식적 결합 방식의 차이를 분석하고, 파이썬(PyTorch)을 활용해 7가지 실전 옵티마이저 구현 예제를 상세히 다룹니다.1. Weight Decay vs L2 Regularization: 수식적 차이점 분석기존 SGD에서는 두 개념이 수학적으로 동일한 업데이트 결과를 낳지만, 모멘텀(Momentum)이나 적응형 학습률(Adaptive Learning Rate)을 사용.. 2026. 4. 15.
[PYTORCH] SGD, Adam, AdamW 옵티마이저 선택 방법과 3가지 핵심 성능 차이 해결 딥러닝 모델의 성능을 결정짓는 가장 중요한 하이퍼파라미터 중 하나는 바로 옵티마이저(Optimizer)입니다. PyTorch 환경에서 모델을 학습시킬 때, 단순히 관습적으로 Adam을 쓰거나 고전적인 SGD를 고집하는 것은 최적의 수렴 속도와 일반화 성능을 놓치는 원인이 됩니다. 본 가이드에서는 실무 개발자가 반드시 알아야 할 3대 옵티마이저(SGD, Adam, AdamW)의 내부 메커니즘과 그에 따른 선택 기준을 심도 있게 분석합니다.1. 왜 옵티마이저 선택이 중요한가?옵티마이저는 손실 함수(Loss Function)의 최솟값을 찾기 위해 모델의 가중치($\theta$)를 업데이트하는 엔진입니다. 업데이트 방식에 따라 모델이 로컬 미니마(Local Minima)에 갇히느냐, 아니면 전역 최적점(Glob.. 2026. 4. 4.
[ORACLE] DBA_HISTOGRAMS 완전 해설 및 실무 활용 가이드 1. 개요DBA_HISTOGRAMS 뷰는 Oracle 옵티마이저가 통계 정보를 활용해 효율적인 실행 계획을 수립할 수 있도록 지원하는 핵심 데이터 딕셔너리입니다. 이 뷰는 테이블 컬럼의 데이터 분포(Distribution)를 세밀하게 저장하며, 히스토그램(Histogram) 기반으로 쿼리 성능을 최적화할 수 있게 해줍니다. 즉, 동일한 SQL 문이라도 데이터의 실제 분포에 따라 다르게 실행 계획을 수립할 수 있는 근거가 되는 뷰입니다.2. DBA_HISTOGRAMS의 역할데이터베이스 옵티마이저는 테이블 통계 정보를 기반으로 각 쿼리의 실행 비용을 계산합니다. 이때 단순히 평균값만을 사용하는 것이 아니라, 컬럼 값의 비균등 분포(skewness)를 고려해야 하는 경우가 많습니다. 이를 위해 Oracle은 .. 2025. 10. 12.
[ORACLE] ALL_OUTLINES 완전 가이드 : 개념 활용 예제 SPM 전환 전략 1. 개요ALL_OUTLINES 뷰는 Oracle Database의 SQL 성능 안정성을 유지하기 위한 핵심 데이터 사전 뷰로, Optimizer가 생성한 실행 계획을 Stored Outline 형태로 저장하여 동일한 SQL 문이 동일한 실행 계획으로 수행되도록 보장하는 기능을 제공합니다. 이 뷰는 SQL 실행 계획의 일관성을 유지하고, 시스템 업그레이드나 통계 변경 이후에도 예측 가능한 성능을 확보하기 위한 필수 요소입니다.2. 등장 배경Oracle Optimizer는 통계 정보, 인덱스 구성, 파라미터 설정 등에 따라 실행 계획이 변동될 수 있습니다. 이러한 변화를 제어하기 위해 Oracle은 Stored Outline 기능을 도입했으며, 그 정보가 바로 ALL_OUTLINES 뷰에 저장됩니다. 따라.. 2025. 10. 10.
[ORACLE] ALL_HISTOGRAMS 완전 정복 : 옵티마이저를 움직이는 히스토그램 이해와 실전 튜닝 ALL_HISTOGRAMS는 컬럼 값의 분포를 버킷(bucket) 단위로 저장해 옵티마이저(Optimizer)의 선택도(Selectivity) 추정에 직접적인 근거를 제공하는 핵심 딕셔너리 뷰입니다. 스큐(Skew) 여부, 상·하위 빈도값, 경계값 변화폭을 정밀하게 파악해 조인 순서, 접근 경로, 인덱스 사용 여부 등 실행계획의 품질을 가르는 지점에서 결정적인 인사이트를 줍니다.왜 ALL_HISTOGRAMS를 봐야 하는가?실제 분포 파악: 평균치 기반 카디널리티 착시를 방지(특히 편향 데이터).계획 재현·비교: 통계 스냅샷 간 버킷 경계 변화로 계획 변화 원인 추적.힌트 최소화: 통계만 바로잡아도 힌트 없는 안정적 실행계획 유도.핵심 개념 요약버킷(bucket): 값 구간을 뜻합니다. 각 버킷의 끝점(E.. 2025. 10. 10.
728x90