끄적이는 개발노트

260527_강의 정리 (Scipy, 모델) 본문

Python

260527_강의 정리 (Scipy, 모델)

크런키스틱 2026. 5. 27. 14:33
728x90

 

Scipy · 미분 · 최적화 · FFT · 적분
Scipy와 모델 — 핵심 개념 정리
  • 미분(Differentials) → 최적화(Optimization) → 신호처리(FFT) → 적분(Integration) 으로 이어지는 흐름
  • 각 개념이 ML/DL에서 어떻게 쓰이는지 함께 정리
📐
1. Differentials (미분)
미분의 흐름
함수
평균변화율
순간변화율
도함수
미분 차수별 의미
1차
현재 변화
기울기 · 방향
"지금 얼마나 빠르게 변하나"
2차
변화의 구조
곡률 · 가속도
"변화 속도가 빨라지나 느려지나"
3차
구조 변화
변곡점의 변화
"곡률 자체가 바뀌는 지점"
💡 새 개념 — 이 섹션에 등장하는 용어
평균변화율 vs 순간변화율
  • 평균변화율 → 구간 전체에서 얼마나 변했는가 (직선의 기울기)
  • 순간변화율 → 아주 짧은 순간의 변화율 → 구간을 0으로 줄이면 도함수
평균변화율: 서울→부산 전체 평균 속도 / 순간변화율: 지금 이 순간 속도계 숫자
도함수 Derivative
  • 함수의 모든 점에서 순간변화율을 모아 만든 새로운 함수
  • 그래프에서는 각 점의 접선 기울기
  • 최적화에서 "어느 방향으로 이동해야 최솟값에 가까워지나"를 알려줌
f(x) = x² 의 도함수 f'(x) = 2x → x=3 지점의 기울기는 6
곡률 Curvature
  • 곡선이 얼마나 구부러져 있는지를 나타내는 값 (2차 미분으로 계산)
  • 곡률이 크면 급격히 휘는 구간 · 작으면 완만한 구간
  • 최적화에서 곡률을 알면 더 정확한 이동 방향과 거리 계산 가능
직선 = 곡률 0 / 원 = 곡률 일정 / 포물선 = 곡률 변화
⚙️
2. Optimization (최적화) — scipy.optimize

"함수의 최솟값을 찾는 것" — ML 모델 학습의 핵심 과정이기도 함

최적화 방법 비교
경사하강법
Gradient Descent
  • 1차 미분(Gradient)만 사용 — "지금 기울기가 내려가는 방향으로 이동"
  • 학습률(learning rate)로 한 번에 얼마나 이동할지 조정
  • 계산이 가볍고 대규모 데이터에 적합
→ 눈 감고 발 아래 경사만 느끼며 산을 내려오는 것
뉴톤법
Newton's Method
  • 1차 + 2차 미분(Hessian) 사용 — 기울기 + 곡률 동시 활용
  • 수렴 속도 빠름 — 초기값이 해 근처이면 2차 수렴
  • 단점 : 지역해에 빠질 위험 · Hessian 계산 비용이 크고 발산 가능
→ 경사뿐 아니라 지형 곡률까지 파악하고 최적 경로로 내려오는 것
준뉴톤법
Quasi-Newton (BFGS · L-BFGS)
  • Gradient만으로 Hessian을 근사 — 직접 계산 없이 추정
  • 뉴톤법의 속도 + 경사하강법의 안정성 균형
  • L-BFGS : 메모리 효율적인 버전 → 고차원·대규모 문제에 주로 사용
→ 지도 없이 지나온 경로 기억으로 지형을 추측하며 내려오는 것
Scipy 주요 기능
지역해 탐색
뉴톤법 계열 — 시작점 주변의 최솟값 탐색 · 지역 최솟값에 빠질 위험 있음
전역해 탐색
brute — 격자 탐색으로 전체 범위를 균등 샘플링 · 느리지만 전역 최솟값 보장
곡선 피팅
curve_fit — 목적 함수에 데이터를 피팅 · 파라미터 최적값 자동 탐색
방정식의 해
root — 비선형 방정식 f(x) = 0의 근 탐색
💡 새 개념 — 이 섹션에 등장하는 용어
Gradient 기울기 벡터
  • 다변수 함수에서 각 변수 방향의 편미분값을 모아놓은 벡터
  • "지금 이 지점에서 어느 방향으로 가장 빠르게 증가하는가"를 나타냄
  • 최솟값 탐색 시 Gradient 반대 방향으로 이동
f(x,y) = x² + y² 의 Gradient = (2x, 2y) → (3,4)에서 기울기 방향은 (6,8)
Hessian 2차 미분 행렬
  • 다변수 함수의 모든 2차 편미분을 모아놓은 행렬
  • 함수가 각 방향으로 얼마나 구부러져 있는지(곡률)를 표현
  • 계산 비용 : O(n²) 저장 + O(n³) 역행렬 → 고차원에서 사실상 사용 불가
변수가 1000개면 Hessian은 1000×1000 = 100만 개 원소
학습률 Learning Rate
  • 한 번의 업데이트에서 얼마나 이동할지 결정하는 하이퍼파라미터
  • 너무 크면 → 최솟값을 지나쳐 발산 / 너무 작으면 → 수렴 속도 극히 느림
학습률 = 산을 내려갈 때 한 번에 내딛는 발걸음 크기
🤖
3. ML/DL 분야별 최적화 알고리즘

"같은 최적화라도 문제 특성에 따라 사용하는 방법이 다름"

분야 주로 사용하는 방법 이유
딥러닝 SGD  Adam 파라미터 수억 개 → 1차 미분만 사용, 미니배치로 빠르게
통계 모델 Newton  BFGS 변수 적고 정밀도 중요 → 2차 미분 활용 가능
Logistic Regression L-BFGS 중간 규모 · 볼록 함수 → 준뉴톤법으로 빠른 수렴
SVM Quasi-Newton 2차 최적화 문제 구조 → Hessian 근사로 효율적 계산
대규모 최적화 L-BFGS Hessian 저장 없이 최근 몇 개 Gradient만 기억 → 메모리 절약
물리 시뮬레이션 Newton 변수 적고 정확도 최우선 → 2차 수렴으로 빠르게 정밀해 도달
선택 기준 요약
· 데이터·파라미터 많음 → 1차 미분 기반 (SGD, Adam, L-BFGS)
· 변수 적고 정밀도 중요 → 2차 미분 기반 (Newton, BFGS)
· 그 중간 → 준뉴톤법 (BFGS, L-BFGS)
📡
4. Differentials → FFT → 신호·영상처리

미분의 개념이 신호 분석과 이미지 처리로 어떻게 확장되는지

FFT Fast Fourier Transform · 고속 푸리에 변환 scipy.fft
"복잡한 신호 = 단순한 파동들의 합" — 그 파동들을 분리해내는 것
  • 시간 축 → 주파수 축으로 변환 — "언제"가 아닌 "어떤 주파수가 얼마나 강한가"로 표현
  • 파장·주기성 있는 데이터에서 숨은 반복 패턴 탐지
  • 활용 : 신호처리 · 영상처리 · 금융 시계열 · 진동·음향 분석
💡 새 개념
푸리에 변환의 직관
  • 어떤 복잡한 신호도 sin · cos 파의 합으로 분해 가능
  • 화음을 도·미·솔 각 음으로 분리하는 것과 같은 원리
  • 시간 도메인에서 보이지 않던 주기 패턴이 주파수 도메인에서 명확해짐
잡음 섞인 심전도 → FFT → 특정 주파수 노이즈만 제거 후 역변환
미분과 FFT의 연결
  • 주파수 도메인에서 미분 = 주파수 성분에 jω를 곱하는 단순 연산으로 변환
  • 복잡한 미분 방정식을 주파수 도메인에서 대수 방정식으로 풀 수 있음
신호처리에서 필터 설계 = 주파수 도메인에서 특정 주파수 성분 제거
신호처리 영상처리 음향·진동 분석 금융 시계열
Image Convolution 이미지 필터 · 합성곱
"작은 필터 행렬을 이미지 위에 슬라이딩하며 특징을 추출하는 것"
  • 입력 이미지에 커널(kernel) 을 합성곱 연산 — 커널 = 작은 숫자 행렬
  • 커널 종류에 따라 효과가 달라짐
  • CNN(합성곱 신경망)의 핵심 연산과 수학적으로 동일한 원리
💡 새 개념
커널 Kernel · Filter
  • 이미지 위를 슬라이딩하며 각 위치에서 곱하고 합산하는 작은 행렬
  • 커널의 값에 따라 이미지에서 무엇을 추출할지 결정
엣지 검출 커널: 픽셀 경계값 강조 / 블러 커널: 주변값 평균으로 흐릿하게
scipy ndimage vs CNN 차이
  • scipy ndimage → 사람이 설계한 고정 커널 적용 (규칙 기반)
  • CNN → 학습을 통해 커널을 자동으로 최적화 (데이터 기반)
  • 원리는 같지만 커널이 고정이냐 학습이냐의 차이
5. Integration (적분)

"함수 아래 넓이를 구하는 것" — 누적값·확률 계산의 핵심

📏 수치 적분
  • 함수 아래 넓이를 작은 직사각형으로 분할해 합산
  • 분할이 촘촘할수록 정확도 향상
  • scipy.integrate 로 구현
→ 정규분포 면적 계산, 물리량 누적값
🎲 몬테카를로 샘플링
  • 무작위 점을 대량으로 뿌려 확률적으로 적분값 추정
  • 해석적 풀이가 불가능한 고차원 문제에 사용
  • 샘플 수가 많을수록 정확해짐
→ 원에 무작위 점 뿌려 π 추정하는 원리와 동일
💡 새 개념 — 이 섹션에 등장하는 용어
미분과 적분의 관계
  • 미분 = 잘게 쪼개기 (순간 변화율) / 적분 = 쌓아서 합산 (누적)
  • 미적분학의 기본 정리 : 적분과 미분은 서로 역연산
  • 도함수를 알면 적분으로 원래 함수를 복원할 수 있음
속도(미분값)를 시간에 따라 적분 → 이동 거리(누적값)
몬테카를로 샘플링 Monte Carlo Sampling
  • 무작위 샘플을 대량 생성해 확률·적분값을 통계적으로 추정
  • 고차원 확률 분포 계산에서 수치 적분보다 훨씬 효율적
  • 베이지안 추론 · 금융 리스크 계산 · 물리 시뮬레이션에서 광범위하게 사용
1만 개 무작위 점 → 원 안에 들어간 비율 × 4 ≈ π (3.14159…)
해석적 풀이가 불가능한 경우
  • ∫e^(-x²)dx 처럼 수식으로 풀리지 않는 적분이 실무에서 매우 많음
  • 이런 경우 수치 적분 또는 몬테카를로 샘플링으로 근삿값 계산
  • 딥러닝 학습 과정의 기댓값 계산도 몬테카를로 방식으로 근사
정규분포 CDF = 해석적 풀이 불가 → 수치 적분으로 계산
미분 → 최적화 → 적분 흐름 요약
· 미분 → 함수의 변화율 파악 → 최솟값 방향 결정
· 최적화 → 미분 정보를 이용해 최솟값 탐색
· 적분 → 누적값 · 확률 계산 · 기댓값 추정
728x90