딥러닝과 확률론
딥러닝을 이해하기 위해서는 확률론을 이해해야 한다.
특히 머신러닝의 loss function (손실함수) 작동원리가 데이터 공간을 통계적으로 해석하는 것을 전제하기 때문에,
== '예측이 틀릴 위험 (risk)이 최소화 하도록 학습하는 원리' 개념에 확률론이 필요한 것.
ex. 회귀 문제 - L2 Norm의 손실함수는, 예측 오차의 분산을 가장 최소화 하는 방향으로 학습을 유도한다
ex. 분류 문제 - 분류에서의 교차엔트로피(Cross Entropy)는 모델 예측의 불확실성을 최소화 하는 방향으로 학습을 유도한다
이처럼 회귀 문제이든 분류 문제이든, 머신러닝에서의 손실함수(loss function)은
데이터의 분포와 모델 예측 분포의 차이를 최소화 하는 방향으로 학습하는, 확률론 기반 학습이라고 볼 수 있다.
또한 분산 및 불확실성을 최소화 하기 위한 '측정' 방법 또한 확률론에 기반해 있다.
데이터와 확률변수 (Random Variable)
확률분포 D란 데이터 공간(X*Y) product space에서 데이터를 추출하는 분포이다.
데이터 공간에서 X와 Y는 각각 train데이터와 target데이터라고 보면 된다. 정답값이 주어진 지도학습의 경우 데이터 공간 상에 X와 Y가 있을 수 있고, 만약 비지도학습인 경우라면 데이터 공간은 X로 구성된다.
데이터는 '데이터 공간 상에서 관측 가능한 확률변수'로 아래와 같이 표기된다.
$$ (X,y) \sim{} \boldsymbol{D} $$
아래 파란 점들이 데이터 공간 상에서 관측된 데이터들이다.
관측된 데이터는 어떤 확률변수 X를 통해서 생성이 되는데, 각각의 데이터 점 xi는 확률 변수 X의 실현 realization이라고 볼 수 있다.
확률변수 X는 확률분포 D를 따른다.
확률분포 D는 X의 값이 데이터 공간 상에서 어떻게 분포 되는지를 나타낸다. 분포 D는 평균, 분산, 분포형태 등의 정보를 포함할 수 있다.
각 데이터들은 확률변수 X에 의해 생성된, 확률 분포 D를 따르는, D에 대한 샘플이다.
또한 D는 이론적으로 존재하는 확률 분포이기 때문에 사전에 알 수는 없다.
확률변수의 종류 - 이산 vs 연속
확률변수는 확률분포 D에 따라서 이산형과 연속형으로 나뉜다.
확률 변수의 종류는 데이터 공간에 의해 결정되는 것이 아니라, 확률분포 D에 의해서 결정된다.
예를 들어, 데이터 공간이 정수집합이라면 이산형 확률 변수를 가지겠지만,
데이터 공간이 실수집합 공간이라고 해서 모두 연속형 변수를 가지는 것은 아니다. 데이터 공간은 실수이지만, 이산형 확률분포를 가질 수 있다.
이산형 확률변수 (Discrete Random Variable)
이산형 확률 변수는, 확률변수가 가질 수 있는 모든 경우의 수를 고려해서 확률을 더해서 모델링한다.
확률변수 X가 A에 속하는지 확인하기 위해서는, 확률 변수 X가 특정 값x를 가질 확률 P(X=x)을 확인하는 개념.
이산형 확률 변수는 '확률 질량 변수'라고도 불리며, 이때 사용되는 P함수는 확률 질량 함수(Probability Mass Function, PMF) 이다.
$$ \mathbb{P}(X \in A) = \sum_{x \in A}^{}P(X=x) $$
연속형 확률변수 (Continuous Random Variable)
연속형 확률 변수는, 데이터 공간에 정의된 확률변수의 밀도위에서 적분을 통해서 모델링한다.
연속형 확률변수의 경우에 X가 특정 값이 되는 것을 확인하기 어렵다.
이때 X가 A에 속하는지 확인하기 위해서는, P(x)라는 함수를 적분하는 형태로 수행한다.
P(x)란 그 자체로 확률이 아니라 누적확률분포의 변화율인 밀도 개념으로 이해해야 한다.
P(X) = \displaystyle \lim_{h \to 0}\frac{\mathbb{P}(x-h \leq X \leq x+h)}{2h} $$ \mathbb{P}(X \in A) = \int_{A}P(X)dx $$
머신러닝에서는 이산형 확률변수(컴퓨터의 값)와 여러 종류의 연속형 확률분포를 함께 사용하게 된다.
두 경우를 구분하고, 두 확률변수에서 확률 분포를 구하는 모델링 방식의 차이가 있다는 점을 유의해야 함.
또한 일반적인 구분이며 모든 확률 변수가 이산형과 연속형으로 구분될 수 있는 것은 아니다.
확률 분포 (Probability Distribution)
이처럼 데이터에 어떻게 접근하느냐에 따라 분포의 성질이 달라지고, 분포의 종류에 따라서 확률 분포를 모델링하는 방법이 달라진다.
P(X,y)는 결합분포로, 확률 분포 D를 모델링한다.
아래 파란색의 데이터들은 연속적인 확률 분포를 보이지만, 빨간 선으로 구획화해서 이산화 할 수도 있다.
빨간색 Y=1일때, 또 2일때 각 칸에 대해서 파란 점들이 몇개 포함되었는지 셀 수 있을 것이기 때문이다.
이 경우 원래 확률 분포는 연속형이었지만 이에 상관없이, 결합 분포 P(X,y)를 이산형으로 만들 수 있다.
반대로 원래 확률 분포가 이산형인 경우에도 역으로 결합 분포를 연속형으로 사용해볼 수 있다.
즉 모델링을 통해서, 원래의 확률분포 D와 다르다 할지라도 그에 근사하는 방식으로 결합분포 P(X,y)를 적절히 선택 가능하다.
결합분포에서 P(x)는 입력 x에 대한 주변확률 분포 marginal distribution 이다.
주변확률 분포는 x에 대한 정보를 주지만 y에 대한 정보를 주지는 않는다.
y가 1이던, 2이던 상관없이 X에 따른 값들의 분포를 확인하는 것.
주변확률 분포는 결합분포들을, 각각의 y에 대해서 더하거나 적분해줌으로써 유도 가능하다.
$$ P(X) = \sum_{y}^{}P(X,y) $$ $$ P(X) = \int_{y}^{}P(X,y)dy $$
아래 그림에서, 왼쪽 그림이 주변확률분포, 오른쪽 그림이 조건부확률분포이다.
주변확률분포는 Marginal Probability Distribution으로,
여러 확률 변수가 있을 때 (X,y) 특정 변수 하나의 확률 분포를 의미한다. 다른 변수들의 값을 무시하고 관심있는 변수의 확률분포를 구한다.
그래서 왼쪽 그림은 p(X)로 y의 분포는 무시하고 모든 경우의 X 변수의 확률 분포를 구한다.
반면 조건부확률분포는 Conditional Probability Distribution으로,
다수의 확률 변수를 고려하여, 한 확률 변수의 값이 주어졌을 때 다른 확률 변수의 확률 분포를 의미한다.
이는 하나의 조건이 발생한 조건 하에서 다른 사건이 발생할 확률을 구하는 것과 같다.
오른쪽 그림은 P(X|Y=1)로 y가 1인 경우에서의 X 변수의 확률 분포를 구한다.
조건부확률과 머신러닝 (Conditional Probability)
특히 조건부확률은 머신러닝에서 매우 중요한 개념이다. (Bayesian 통계)
위에서 y가 주어졌을 때 X의 확률은 P(X|y)였다.
반대로, 조건부확률 P(y|X)는 주어진 입력변수 X에 대해서 정답이 y일 확률을 의미한다.
(연속확률분포의 경우에는 P(y|X)는 확률이 아닌 밀도)
로지스틱회귀의 선형모델과 소프트맥스 함수의 결합은
'데이터에서 추출된 패턴을 기반으로, 확률을 해석'하는 데 사용된다.
분류 문제 :
주어진 입력데이터가 특정 클래스에 속할 확률을 계산하는 데에 사용된다.
WØ + b 혹은 softmax(WØ + b) 의 식은 데이터 X로부터 추출된 특징의 패턴인 Ø(X)와 가중치행렬 W을 곱해서 조건부확률 P(y|X)를 계산한 것이다. (P(y|Ø(X)) 도 가능)
== X가 주어졌을때 y의 확률, X의 특징패턴인 Ø(X) 가 주어졌을 때의 y의 확률
회귀 문제 :
조건부 기대값인 E[y|X]를 추정한다.
회귀문제를 구할때는 손실함수가 L2 norm을 따르는데,
조건부 기대값은 L2 norm (예측의 분산의 최소값)을 최소화 하는 함수와 일치한다. 이에 따라서 회귀 문제에서는 조건부 기대값을 활용.
그러나 무엇보다도 데이터의 유형 및 분포에 따라 다르다. 관찰되는 데이터가 강건하게 예측되는 경우, 조건부 기대값보다는 중앙값 median 을 활용하는 등.
$$ \mathbb{E}_{y\sim{}P(y|X)}[y|X] = \int_{y}^{}yP(y|X)dy $$
딥러닝의 경우에는 다층 신경망을 사용해서 데이터로부터 특징 패턴인 Ø를 추출한다.
이때 특징 패턴을 학습하기 위해서 어떤 손실함수를 사용할지는 기계학습의 문제와 모델에 의해서 결정된다.
기대값과 몬테카를로 샘플링
기대값(평균, expectation) 이란, 데이터를 대표하는 통계량이다.
이는 확률 분포의 중심을 나타내는 것으로, 확률 변수의 장기적인 평균값을 의미한다.
즉 확률 변수가 가질 수 있는 값들을 확률에 따라서 가중평균 한 것. 기대값은 확률 변수의 중심의 경향을 나타내는 중요한 척도이다.
연속확률 분포 (적분 사용) : 주어진 함수 기대값 계산시 주어진 함수에 확률분포 곱한 후 적분
$$ \mathbb{E}_{y\sim{}P(X)}[f(X)] = \int_{x}^{}f(X)P(X)dx $$이산확률 분포 (급수 사용) : 질량 함수
$$ \mathbb{E}_{y\sim{}P(X)}[f(X)] = \sum_{x \in X}f(X)P(X) $$
기대값은 데이터를 대표하는 통계량 이면서, 확률 분포를 통해 다른 통계적 범함수를 계산하는 데에 사용된다.
기대값을 이용해 분산, 첨도, 공분산 등의 여러 통계량을 계산할 수 있다.
몬테카를로 샘플링 (Montecarlo Sampling)
머신러닝에서 많은 문제들에서 확률 분포를 명시적으로 모를 때가 많은데,
이처럼 확률 분포를 모를 때에 데이터를 이용해서 기대값을 계산할 때, 몬테카를로 샘플링 방법을 사용할 수 있다.
몬테카를로 샘플링은 복잡한 문제를 무작위 샘플링 (random sampling)을 사용하여 근사적으로 해결하는 방법이다.
확률 분포를 모르는 상태에서, 적분이나 summation 대신에 샘플링을 활용해서 기대값을 대신 추정해볼 수 있다.
아래 수식에서 보여주듯이 타겟인 F(x)에 샘플링한 데이터들을 대입한 후 산술평균을 구하게되면, 원하는 기대값의 근사를 구할 수 있다는 것.
몬테카를로 샘플링은 이산형, 연속형 상관없이 성립한다.
몬테카를로 샘플링은 독립추출만 보장된다면 대수의 법칙 (law of large number) 에 의해서 수렴성을 보장한다.
$$ \mathbb{E}_{y\sim{}P(X)}[f(X)] \approx \frac{1}{N}\sum_{i=1}^{N}f(x^{(i)})$$
아래 그림은 몬테카를로 샘플링을 이용해서, 샘플링을 매우 많이 늘려가면서 점점 정규 분포의 형태를 추정해가는 예시
몬테카를로 예제
1. 적분 계산
아래는 가장 간단한 형태의 적분 계산을 몬테카를로 샘플링을 통해 수행하는 코드.
import numpy as np
# 적분하려는 함수 정의
def f(x):
return x**2
# 몬테카를로 샘플링 함수
def monte_carlo_integration(f, a, b, num_samples):
# 무작위 샘플 생성
x_samples = np.random.uniform(a, b, num_samples)
# 함수 값 계산
f_samples = f(x_samples)
# 평균 계산
mean_value = np.mean(f_samples)
# 적분 값 추정
integral_value = (b - a) * mean_value
return integral_value
# 변수 설정
a = 0 # 적분 구간의 시작
b = 1 # 적분 구간의 끝
num_samples = 100000 # 샘플 수
# 적분 값 계산
integral_value = monte_carlo_integration(f, a, b, num_samples)
# 결과
print(f"몬테카를로 샘플링을 이용한 적분값 추정: {integral_value}")
>>> 몬테카를로 샘플링을 이용한 적분값 추정: 0.3341939153364214
'ML study' 카테고리의 다른 글
[네이버AI class] 6주차 (2) - MLP 뉴럴 네트워크 (1) | 2024.06.03 |
---|---|
[네이버AI class] 6주차 (1) - 딥러닝 기본 및 Historical review (0) | 2024.06.02 |
[네이버AI class] 3주차 (4) 딥러닝 학습 원리 (0) | 2024.05.20 |
[네이버AI class] 3주차 (3) - 경사하강법 (1) | 2024.05.20 |
[네이버AI class] 3주차 (2) - 행렬 (0) | 2024.05.17 |