Chapter 2. 기계학습과 수학
# 2.1 선형대수
데이터를 분석하여 유용한 정보를 알아내거나 특징 공간을 변환하는 등의 과업을 수행할 때 사용
- 행렬, 텐서: 매개변수집합, 데이터, 선형연산의 결합 등을 표현
1. 벡터와 행렬
2. 놈과 유사도
3. 퍼셉트론
4. 선형결합과 벡터공간
5. 역행렬
6. 행렬 분해
# 2.2 확률과 통계
데이터에 포함된 불확실성을 표현하고 처리하는 데 사용됨.
- 베이즈 이론
- 최대 우도 기법
0. 기초 확률 이론
a. 곱 규칙: P(y, x) = P(x|y)P(y)
b. 합 규칙: P(x) = ∑ P(y,x) = ∑ P(x|y)P(y)
1. 베이즈 정리
베이지 정리는 이 사고 확률을 쉽게 우도랑 사전 확률로 분해해가지고 이들의 곱으로 사 확률을 계산할 수 있게 만들어주는 그런 공식
- 베이즈 정리의 해석
- 사전확률: 전체의 샘플들 중에 해당 클래스에 속한 샘플의 개수를 의미
(예: 전체 100명 중에서의 여성의 비율, 남성의 비율이 각각 남성과 여성 클래스에 대한 사전 확률)
- 사후확률을 직접 추정하는 일은 아주 단순한 경우 빼고 불가능하기 때문에 베이즈 정리를 이용해서 추정함
- 우도랑 사전 확률만 잘 알고 있으면 사후 확률까지는 아니더라도 사후 확률의 상대적인 랭크 순위는 알 수 있음
2. 최대 우도 (Maximum likelihood)
MLE는 관측된 데이터가 주어졌을 때, 이 데이터가 가장 일어날 법하게 만드는 파라미터 값을 찾는 방법이다.
→ '이런 데이터가 나왔다면, 아마 주머니 속 공의 분포(p1, p2, ...)가 이랬을 것이다'를 추정
→ 어떤 상황에서든 '내가 잘 모르는 파라메터'를 '관측 데이터부터 추정'해야 할 때 사용
(ex. 동전의 앞면 확률, 머신러닝 모델의 가중치, 다항분포의 각 항목별 확률 등)
a. 우도(Likelihood)란?
: 관측된 데이터를 실제로 관측할 확률
b. 최대 우도 추정 (Maximum Likelihood Estimation; MLE)
- 확률 모델에서 모수(parameter)를 추정하는 방법
- 주어진 데이터가 실제로 나왔을 가능성(우도) 을 최대화하는 모수를 찾는 것
- 내가 어떤 파라미터를 잘 모를 경우에, 이 파라미터를 유추할 때 MLE 사용
[실제 예제]
문제 상황
1. 어떤 동전이 있음 (정상적인 동전이 아닐 수 있음; biased 됨).
2. 이 동전을 5번 던짐
3. 관측 결과: H, H, H, T, T → 앞면(H)이 3번, 뒷면(T)이 2번 나옴
4. 이 데이터를 기반으로, "이 동전이 앞면이 나올 확률 q는 얼마인가?"를 MLE를 이용해서 추정하시오
해결 방안
1. 확률 모델 설정
2. 로그 우도 함수 사용
3. 최적화: 미분해서 극댓값 찾기
- 확률 모델 설정
- 앞면이 나올 확률: q, 뒷면이 나올 확률: 1-q
- 각 던짐은 독립적임
- 우도 함수 (Likelihood): L(q)=P(H,H,H,T,T∣q)=q3⋅(1−q)2
- 로그 우도 함수 (Log-Likelihood)
- 수치적인 안정성과 계산의 편의성을 위해 log를 취함
- logL(q)=3logq+2log(1−q)
- → 이 로그 우도 함수를 최대화하는 q를 찾는 게 MLE의 목적!
- 최적화
- 로그 우도 함수 L(q)를 미분한 값을 0을 놓고 풀면 q = 3/5
- 따라서 MLE로 추정된 앞면 확률: q = 0.6
- 결론 및 해석
- 관측된 데이터(HHHTT)를 가장 가능성 있게 만들어주는 q를 찾은 것
- 여기선 앞면이 3번 나왔으므로, 직관적으로도 60% 정도로 보임
- MLE는 다양한 가능한 q값 중에 "이런 데이터가 나올 가능성이 제일 큰 q"를 고르는 원리이다. 즉, q가 0.1이든 0.9든 이 데이터가 나올 수는 있다. 하지만 그 중 가장 자연스럽고 그럴듯한 값이 0.6일 때라는 것
c. 최대 로그우드 추정 (Maximum Log-Likelihood Estimation; MLLE)
[배경]
- 각 관측값이 독립이라면, 전체 확률은 각 확률의 곱으로 표현됨
- 하지만 이것을 그대로 계산하면 수치적 문제가 생긴다.
- 수치적 문제란?
- 확률 값은 대부분 0과 1 사이의 소수
- 소수 값들이 계속 곱해지면 값이 엄청 작아져서 0에 수렴하게 됨
- 컴퓨터는 이걸 0이라고 생각할 수도 있다..!
- 따라서 수치 문제를 해결하기 위해 로그를 취해서 log-likelihood로 변형한다.
- 이때 곱이 덧셈으로 바뀜으로서 수치적으로 안정되게 된다.
3. 다양한 확률분포
a. 가우시안 분포 (정규 분포)
- 자연현상에서 매우 자주 나타나는 확률분포 (e.g. 키, 실험 점수, 혈압, 몸무게 등)
- 1D 가우시안 분포일 때의 확률밀도함수
*평균 & 분산
- 평균 (Mean): 중심 위치
- 분산 (Variance): 평균으로부터 값들이 얼마나 퍼져 있는지 측정
- 분산은 사실상 L2 norm 의 평균
- 중심으로부터의 Mean Squared Error (MSE)라고도 볼 수 있음
- 다차원 가우시안 분포 (다변량 정규분포)
- 평균벡터 μ와 공분산행렬 ∑로 정의
- 특징이 2개 이상일 경우, 각 특징 간의 관계를 고려해야 한다. 즉, 공분산 행렬이 필요하다 (공분산 행렬에 대해서는 후술하겠음)
- 종 모양의 곡선을 따르며, 중심이 평균(μ), 폭이 분산(σ²)으로 결정됨
*공분산 행렬 (Covariance Matrix)
- d차원 특징 벡터일 경우, 공분산 행렬은 d x d 크기
- 평균 벡터와 공분산 행렬
- Σii 의 의미: 의 분산 → 대각 성분은 자기 자신의 분산
- , i≠j 의 의미: xi와 xj 간 공분산 (양수: 양의 상관, 음수: 음의 상관, 0: 상관 없음) → non-diagonal component는 두 특징 간의 유사도를 의미. 특징1과 특징2를 평균이 0이 되도록 만든 다음에 내적을 한 것
- cos simularity와 공장히 유사한데, 코사인 유사도는 벡터가 유닛 벡터 (길이가 1)이라는 가정이 기반이 되어 있음. 특징1과 특징2의 유사도를 구할 때, 해당 특징들의 길이가 1일 필요는 없다.
- 만약 공분산이 0이면 (Cov(xi, xj) = 0), 두 변수 간에 아무런 선형적인 연관 관계가 없다는 것을 의미한다.
- 주의: 공분산이 0이라도 두 변수는 비선형 관계를 가질 수 있다.
공분산 값 해석 > 0 양의 상관관계 (같이 증가/감소) < 0 음의 상관관계 (한 쪽 증가 시 다른 쪽 감소) = 0 선형 관계 없음 (but 완전한 독립은 아님!)
- 공분산 행렬 예제
- 내적 관점에서의 공분산
- 위 공식은 사실상 중심화된 두 벡터의 내적 평균이다 (*중심화: 각 데이터 값에서 그 변수의 평균을 빼는 것)
- 공분산 행렬에서의 (1,1)에 있는 값은 자기 자신을 내적하는 것 → 원점으로부터 mean scaler을 구하는 것과 같
- 벡터 방향이 유사(같은 방향) → 양수
- 두 벡터가 서로 완전히 무관한 방향(90도) → 0
- 두 벡터의 각도가 90도를 넘어감 (음의 방향으로 유사도를 가짐)→ 음수
- 가우시안 모델의 장점
- 많은 데이터를 일일이 저장하지 않고, 두 개의 파라미터 (평균과 분산)만으로 전체 분포를 요약할 수 있음
- e.g. 1만 개 샘플이 있어도 평균과 분산만 알면 전체 분포 근사 가능
- 따라서 데이터 압축과 추론이 용이하다
b. 베르누이 분포
- 두 가지 상태 중 하나만 나오는 사건의 확률 분포
- 단 한번의 실험 결과에 대한 확률 모델
- e.g. 앞면 / 뒷면, 합격 / 불합격, 정상 / 불량
c. 이항 분포 (Binomial Distribution)
- 베르누이 실험을 n번 반복한 뒤, 1이 나온 횟수를 확률 분포로 표현
- e.g. 앞면 확률이 p인 동전을 n번 던졌을 때, 앞면이 k번 나올 확률
- 즉, 이항 분포는 여러 베르누이 시행을 합친 것
- 이항 분포도 n이 커질수록 가우시안 분포 (정규 분포)의 형태를 따라감 → Central Limit Theorem
*Central Limit Theorem
- 세상에 아주 micro한 영역에서 가우시안 분포가 아닌, 특이하게 생긴 distribution이 많이 존재할 수 있음
- 그런데 이런 다양한 분포의 데이터도, 많이 모아 평균을 내면 결국 가우시안 분포에 가까워진다.
- 즉, 여러 분포들을 짬뽕시키다 보면 결국에는 가우시안 분포의 형태를 띄게 된다!
4. 정보이론
정보 이론은 메시지의 놀라움을 수치화한다 → 그래서 확률에 로그를 씌워서 정보량을 계산함
확률이 낮을수록 놀라움이 크고 많은 정보량을 포함하고 있다.
a. 자기 정보 (self information)
- 정보란, 어떤 메시지나 사건이 주는 놀라움의 정도, 즉 예측하기 어려운 정도를 의미한다
- 일어날 확률이 낮은 사건일수록 그것을 알게 되었을 때의 놀라움이 큼
- 따라서 정보량은 확률의 역수에 비례함
- 확률이 클수록 → 정보량 낮음
- 확률이 작을수록 → 정보량 높음
- 정보량의 정의
- 로그 함수는 단조 증가 함수이므로 확률이 커질수록 로그 값도 커짐
- 따라서 앞에 마이너스를 붙여서 확률이 클수록 정보량이 작아지도록 수식 작성
- 밑이 2이면 단위는 비트(bit)
- 밑이 자연상수 e이면 단위는 나트(nat)
b. 엔트로피 (Entropy): 평균 정보량
엔트로피는 평균 정보량을 의미하며, 확률변수 x의 분포의 불확실성 정도를 나타낸다.
- 정보량의 기대값 = 평균적인 놀라움의 정도
- 확률 분포가 예측 불가능하고 평평할수록 (uniform에 가까움) → 엔트로피 높음
- 확률 분포가 한 쪽에 몰려 있을수록 (뾰족한 분포) → 엔트로피 낮음
- 예시 비교: 윷놀이 vs 주사위
항목 | 윷놀이 | 주사위 |
상태 수 | 5개 (도, 개, 걸, 윷, 모) | 6개 (1-6) |
확률 | 불균형 (보통 개, 걸이 걸리기 쉬움) | 보통 균등 |
예측 난이도 | 상대적으로 쉬움 | 어렵고 불확실 |
엔트로피 | 낮음 (정보량이 적기 때문) | 높음 (정보량이 많음) |
- 주사위가 분포가 더 평평하기 때문에 (균등 확률) 엔트로피가 더 높기도 하지만,
- 윷 / 주사위 둘다 분포가 균등했다고 해도 주사위가 가능한 상태 수(1/6 확률)가 더 많으므로 엔트로피가 더 높다고 판단 가능하다
- 가우시안 분포와 엔트로피
- 분산이 클수록 → 분포가 퍼짐 → 엔트로피가 커짐
- 여러 정규분포가 있으면 그 중 분산이 더 큰 분포가 엔트로피가 더 크다.
c. 교차 엔트로피 (Cross Entropy)
교차 엔트로피는 변수의 불확실성을 나타내는 지표로, 실제 분포 P에 대해, 예측 분포 Q가 얼마나 잘 맞는치를 측정한다.
- 예측 모델 성능 평가
- 내가 가진 참 분포 P에 대해, 예측 분포 Q가 얼마나 틀렸는지를 측정
- P: 정답 분포 (ground truth), Q: 모델의 예측 분포 , 모델의 아웃풋
- Q를 잘 조절해서 P 분포랑 똑같이 맞추면 그때 KL 다이버전스는 0 (loss가 0, 정확도 100%)
- 예측값이 정답에서 멀어질수록 교차 엔트로피 값이 커짐
- 분류 모델의 손실 함수로 자주 사용됨
d. KL 다이버전스 (Kullback–Leibler Divergence)
두 확률 분포 사이의 거리 또는 차이
H(P,Q) − H(P)
- 정답 분포와 예측 분포 간 거리를 측정할 때 주로 사용
- KL 다이버전스가 작을수록 예측 분포 Q가 참 분포 P와 가까움
- DKL(P∣∣Q)=0 일 때, 완전히 같음 → 정확도 100%
*KL distance 가 아닌 KL divergence 라 부르는 이유
- KL 은 거리 개념이긴 하지만, 수학적 거리의 조건을 만족하지 않는다
- DKL(P∣∣Q) != DKL(Q∣∣P) → 대칭이 아님
e. 교차 엔트로피와 KL 다이버전스의 관계
- P와 Q의 교차 엔트로피 H(P, Q) = P의 엔트로피 H(P) + P와 Q 간의 KL 다이버전스
- 즉, '크로스 엔트로피를 최소화 한다' = 'KL 다이버전스를 최소화한다'
# 2.3 최적화 이론
미분을 활용해서 목적합수를 최소화하는 최적해를 찾는 과정
1. 매개변수 공간 탐색
a. 최적화란?
: 주어진 조건 내에서 가장 좋은 결과를 찾아내는 것
b. 수학에서의 최적화 vs 기계학습에서의 최적화
- 수학에서의 최적화
- 어떤 복잡한 수식을 두고 최저점(or 최대점) 이 존재하는지 증명하고,
- 존재할 경우 그 값을 구하는 것이 목적
- 기계학습에서의 최적화
- 정확한 수식이 주어지지 않음
- 데이터(훈련 집합)만 주어진 상황에서 정의된 목적 함수의 최저점을 찾아 모델을 학습시키는 것
- 기계 학습에서 최적화가 어려운 이유 (1): 데이터 불일치 문제
- 최적화는 훈련 데이터 기준으로 수행되는데, 성능 검증은 테스트 데이터 기준으로 평가됨
- 훈련 집합과 테스트 집합은 교집합이 없음
- 최적화시키는 대상과 최적인지를 확인하는 대상 서로 다르므로 기계학습에서의 최적화가 어렵다
- 기계 학습에서 최적화가 어려운 이유 (2): 목적 함수 vs 평가 지표
- 목적 함수는 일반적으로 미분 가능해야한다. 그런데 정확도 (accuracy)와 같은 평가 지표는 불연속적이고 미분이 불가능하다.
- 즉, 최적화 대상과 평가 지표 간의 불일치가 존재하므로 기계학습에서의 최적화가 어렵다
- 기계 학습에서 최적화가 어려운 이유 (3): 복잡한 모델 구조
- 매개 변수 공간이 매우 크고 비선형적이다.
- 높은 차원에 비해 훈련집합의 크기가 작아 참인 확률분포전역 최적점(global minimum) 을 찾는 것은 사실상 불가능함
- 현실적으로는 근사 최적점(approximate minimum)을 찾는 것이 목표임
[기계 학습에서의 최적화 목표]
1. 모델 선택: 적절한 함수 형태 선택 (선형 회귀, 신경망 등)
2. 목적 함수 정의: 예측과 실제 값 간의 오차를 수치화 (MSE, Cross-Entropy 등)
3. 모델 파라미터 (W, b 등) 공간 탐색
- 예측 성능이 가장 좋은 매개 변수 조합 찾기
- 즉, 목적 함수가 최소화되는 파라미터를 찾는 것 (argmin)
c. 학습 모델의 매개변수 공간
- 특징 공간 (feature space)
- 우리가 입력으로 넣는 데이터의 차원
- e.g. 선형 회귀에서 입력 변수가 하나일 때 → 1차원 공간
- e.g. MNIST 숫자 이미지 분류의 경우 → 28 x 28 픽셀, 총 784차원 특징 벡터
- 파라미터 공간 (parameter space)
- 학습해야 할 모델의 파라미터(W, b)의 조합이 이루는 공간
- e.g. 선형 회귀에선 w, b 두 개만 있어도 → 2차원 공간
- e.g. 딥러닝에서는 수백만 개의 파라미터 → 수백만 차원의 parameter space
- 즉, 파라미터 공간은 입력 특징 공간보다 훨씬 더 차원이 높고 복잡해질 수 있음
- 이런 맥락에서 최적화란 거대한 파라미터 지형에서 가장 낮은 골짜기(최저점)를 찾는 과정
d. 최적화 방법
- 낱낱탐색 알고리즘 (Exhaustive Search)
- 미분을 몰라도 쓸 수 있는 기본적인 최적화 방법
- 입력: 훈련 집합
- 출력: 최적의 파라미터 (w, b)
- 과정
- (1) 가능한 모든 (w, b) 조합 생성
- (2) 각 조합에 대해 목적 함수 값 계산
- (3) 현재까지의 최소값보다 작으면 갱신
- (4) 전체 조합 탐색 후 최적 조합 반환
- 특징
- 장점: 단순하고 직관적임
- 단점: 파라미터가 많을수록 계산량 폭발 → 차원이 조금만 높아져도 적용 불가능
- 무작위 탐색 알고리즘 (Random Search)
- 낱낱탐색보다 더 쉬운 방법
- 아무 전략 없이 무작위로 파라미터를 뽑아서 손실(loss)을 계산해보고 가장 좋은 결과를 준 파라미터를 최종 선택하는 알고리즘
- e.g.
- (1) 파라미터 샘플링: , b∼Uniform(−1,1)
- (2) 손실 계산: 샘플링된 w, b 조합에 대해 손실 함수 J(w, b) 계산
- (3) 최소 손실값 추적: 지금까지 샘플링한 파라미터 중 손실값이 가장 작은 파라미터를 저장
- (4) 지정된 횟수만큼 반복 후 종류
- 장점
- 간단함
- 고차원 공간에서도 유용할 수 있음 (낱낱 탐색보다 효율적일 수 있음)
- 비선형, 비연속적인 문제에도 사용 가능
- 의외로 무작위 탐색 알고리즘이 낱낱탐색 알고리즘보다 더 효과적일 수 있다
- 파라미터마다 중요도가 다름. 어떤 파라미터는 값을 조금만 바꿔도 성능이 크게 오르내리지만, 어떤 파라미터는 값을 바꿔도 성능에 거의 영향을 미치지 않음
- 중요한 파라미터는 정밀하게, 덜 중요한 파라미터는 대충 탐색하는 것이 효율적이다!
- 단점
- 운에 많이 좌우됨
- 최적점을 보장하지 않음
- 너무 많이 반복해야 한다면 비효율적이게 됨
2. 미분
미분은 목적 함수가 가장 빠르게 줄어드는 방향을 알려주는 도구이고,
기계학습에서는 이 방향을 따라 파라미터를 조금씩 움직이면서 최적의 모델을 찾아가는 것이 핵심이다.
a. 배경
- 딥러닝 같은 모델은 수천만 개의 파라미터(W, b 등)를 가지고 있음
- 이 모든 파라미터들을 무작위로 찍어보거나, 낱낱이 다 탐색하는 건 현실적으로 불가능 → 더 효율적인 방법: 미분
- 목적 함수 (Loss)를 줄이기 위해서 필요한 두 가지 정보
- 방향 정보: 어느 방향으로 가야 하는지?
- 이동 크기(step size): 얼마나 가야 하는지?
- → 이 중에서 미분은 방향을 알려줌
b. 미분이 주는 정보: 기울기 ( = 목적 함수가 줄어드는 방향)
- 미분 공식
- 1차 도함수 f'(x)는 함수의 기울기, 즉 값이 커지는 방향을 지시함
- f'(x)이 값이 커지는 방향을 나타내므로, -f'(x) 방향에 목적함수의 최저점이 존재함
- 미분에 의한 최적화
c. 기계 학습의 최적화 흐름 (전형적인 알고리즘)
(1) 초기값 랜덤 설정
- w, b 파라미터 값을 아무 값으로 설정, 시작
(2) 기울기(미분) 계산
- 현재 위치에서 목적 함수의 기울기 계산
(3) 방향으로 이동
- 기울기가 알려주는 방향으로 파라미터를 조금씩 이동
(4) 반복
- 계속 이동하면서 목적 함수 값이 줄어드는 걸 확인
(5) 수렴하면 stop
- 더 이상 줄어들지 않거나 충분히 작아지면 멈춤
(6) 파라미터 반환
3. 경사 하강 알고리즘
a. 목적
- 함수 f(x)의 최솟값을 찾기 위한 방법
- 보통 f(x)는 볼록 함수(convex)라고 가정
b. 도함수(미분)의 의미
- 도함수 f'(x)는 함수의 기울기를 나타냄
기울기의 반대 방향으로 이동하면 함수값이 감소한다.
- f'(x) = 0 → 극값 (최솟값 또는 최댓값)
- f'(x) > 0 → 함수 증가 중 → 왼쪽(-)으로 가야 최소값
- f'(x) < 0 → 함수 감소 중 → 오른쪽(+)으로 가야 최소값
c. 단일 변수일 때 업데이트 식
- 여기서 α는 학습률(learning rate) : 이동의 크기를 조절하는 값
d. 다변수 함수일 때
- 처럼 여러 매개변수를 가진 함수
- 이럴 땐 각 변수에 대해 편미분하고, 그걸 모아 하나의 벡터로 만든 것이 그래디언트(Gradient)
*편미분
- 변수가 여러 개인 함수의 미분
- 미분값이 이루는 벡터를 그레디언트라 부름
- 기계학습에서 사용되는 매개변수 집합 Θ에 많은 변수가 있으므로 편미분을 많이 사용함
*그래디언트 벡터
e. 배치 경사 하강 알고리즘
f. 스토캐스틱 경사 하강 알고리즘 (Stochastic Gradient Descent)