Programmers/데브코스 인공지능

[프로그래머스 스쿨 AI] Weak 6 확률이론

1. 확률 변수( Random Variable)

대문자 X, Y : 확률 변수

소문자 x, y : 확룰 변수가 가질 수 있는 값

확률 P(확률)는 집합 S의 부분집합을 실수값에 대응시키는 함수

P[X =x]  확률변수 X가 x값을 가질 확률?

P[ X < x]  확률변수 X가 x보다 작을 확률?

X = x, X < x 

 

2. 연속확률 변수

누적분포함수(cumulative distribution function, CDF): F(x)=P[X(,x)]F(x)=P[X(,x)]

누적분포함수 F(x)를 가진 확률변수 X에 대해서 다음을 만족하는 함수 f(x) 가 존재한다면 X를 연속확률 변수라고 부르고  f(x) 를 X의 확률밀도함수라고 부른다

f(x)=xf(t)dt

확률 변수를 명확히 하기 위해 FX(x),fx(x)로 쓰기도 한다

혼란이 없을경우 fX(x) 대신 $p_X(x), p_x(x), p(x)를 사용하기도 한다.

p(x)0,p(x)=1

 

3. 확률변수의 성질

1.덧셈법칙

 p(X)=Yp(X,Y)

2. 곱셈법칙 

p(X,Y)=p(X|Y)p(Y)=p(Y|X)p(X)

3.베이즈 확률 :
P(Y|X)=p(X|Y)p(Y)Yp(X|Y)p(Y)

posterior=likelihood×priornormalization

posterior : 사후확률

likelihood : 가능도(우도)

prior : 사전확률

normaliztion : Y와 상관없는 상수. X의 경계확률(margina) p(X)

그림으로 보니깐 편하다

 

 

4. 확률변수의 함수

확률변수 X 의 함수 Y=g(X) 와 역함수 w(Y)=X가 주어졌을 때 다음이 성립한다.

py(y)=px(x)|dxdy|

 

 

k차원의 확률변수 벡터x=(x1,...,xk) 가 주어졌을 때 , k개의 x에 관한 함수들 yi=gi(x)fori=1,...,k 는 새로운 확률변수벡터 y=(y1,...,yk)를 정의 한다 간략하게y=g(x)로 나타낼 수 있다.

만약 y=g(x) 가 일대일 변환인 경우 $ (x = w(y)로 유일한 해를 가질 때), y 의 결합확률밀도함수 는 

py(y1,...,yk)=px(x1,...,xk)|J| 

야코비안 J=[dx1dy1dx1dy2dx1dykdx2dy1dxkdy1dxkdyk]

 

예제

Px1,x2(x1,x2)=e(x1+x2),x1>0,x2>0 라고 하자

y1=x1,y2=x1+x2 에 의해서 정의되는 y의 pdf는?

x1=y1,x2=y2y1

J =

[1011]

간단히

서로 상관이 없으면 0

상관이 있으면 값 구하기

 

행렬곱을 구하면 대각선 끼리 곱하니깐

1이 된다

 

fy1,y2(y1,y2)=fx1,x2(x1,x2)|J|=fx1,x2(y1,y2y1)=ey1+(y2y1)=ey2

 

그리고

y1=x1 인데 x1>0 이니깐 y1=(어떤값>0)

y2=x1+x2 인데 x1=y1,x2>0 이니깐  y2=y1+(어떤값>0) y_2 > y_1 $

이렇게 된다

그러면

이러한 그림의 영역이되고

이것을 위에 지수로그에 넣으면

 

fy1(y1)=y1ey2dy2=e(ey1)=ey1

 

 

CDF Technique

확률변수 X가 CDF F_X(x)를 가진다고 하자. 연속확률분포함수 U ~ UNIF(0,1) 의 함수 정의되는 다음확률변수 Y를 생각해보자.

Y=F1X(U)

확률변수 Y는 확률변수 X와 동일한 분포를 따르게 된다.

FY(y)=P[Yy]

=P[F1X(U)y]

=P[UFX(y)]

=FX(y)

# smapling random points within a circle with radius r
# inverse transform sampling
# cdf: F(d) = d**2 /. r**2
# inverse cdf : r * (u**0.5)


import turtle
import math
import random
wn = turtle.Screen()
alex = turtle.Turtle()
alex.hideturtle()
r = 200
for i in range(5000):
  u = random.random()
  d = r * (u**0.5)
  theta = random.random()*360

  x = d * math.cos(math.radians(theta))
  y = d * math.sin(math.radians(theta))
  alex.penup()
  alex.setposition(x, y)
  alex.dot()
turtle.update()
wn.mainloop()

여기서 u를 루트를 씨운이유는 1보다 작을때는 루트를 하면 자연수에서 제곱한것과 같게되기때문이다

 

5. 기댓값 (Exoectations)

기대값 : 확률분포 p(x)하에서 f(x) 의 평균값

이산확률분포 : E[f]1NNn=1f(xn)

연속확률분포 : E[f]=p(x)f(x)dx

여러개 변수들의 함수

 Ex[f(x,y)]=xf(x,y)p(x)

 y 에 대한 함수임을 상기할것

Ex,y[f(x,y)]=yxf(x,y)p(x,y)

조건부 기댓값

Ex[f|y]=xf(x)p(x|y)

 

이것에 대하여는

 

6.  분산(variance),  공분산(covariance)

f(x). 의 분산(variance): f(x) 의 값들이 기댓값 E[f] 으로부터 흩어져 있는 정도

var[f]=E[(f(x)E[f(x)])2]=E[f(x)2]E[f(x)]2

var[x]=E[x2]E[x]2

두 개의 확률변수 x,y에 대한 공분산(covariance)

cov[x,y]=Ex,y[{xE[x]}{yE[y]}]

=Ex,y[xy]E[x]E[y]

X,Y 가 각각 확률변수의 벡터라고 할 때 

cov[X,Y]=EX,Y[{XE[X]}{YTE[YT]}]

$ = \mathbb{E}_{X,Y}[XY^T] - \mathbb{E}[X]\mathbb{E}[Y^T] $

cov[X] =cox[X,X]

 

 

7.빈도주의 대 베이지안

확률을 해석하는 두가지 다른 관점 : 빈도주의 (frequentist), 베이지안(Bayesian)

빈도주의 : 반복가능한 사건들의 빈도수에 기반

베이지안: 불확실성을 정량적으로 표현

 

모델의 파라미터 w(예를 들어 다항식 곡선 근사문제에서의 계수 w)에 대한 우리의 지식을 확률적으로 나타내고 싶다면?

w에 대한 사전지식 p(2) 사전확률(prior)

새로운 데이터 D=t1,...,tN 를 관찰하고 난뒤의 조선부확률 p(D|w) 우도함수(likelihood funtion).특정 w 값에 대해 D 의 관찰값이 얼마나 가능성이 있는지를 나타냄. W에관한함수임을 기억할것

 

p(w|D)=p(D|w)p(w)p(D)

p(w|D) 는 D 관찰하고 난 뒤의 w에 대한 불확실성을 표현

사후확룰(posterior) 우도 (likelihood) × 사전확률(prior)

반면, 빈도주의는 w가 고정된파라미터이고 최대우도와 같은 '추정자'를 사용해서 그 값을 구한다. 구해진. 파라미터의 불확실성 부트스트랩 방법을 써서 구할수 있다

 

베이지안 관정의 장점

사전확률을 모델에 포함시킬 수 있다.

동전을 던져서 세번마다 앞면이 나왔을때

최대우도 : 앞면이 나올확률은 1이됨

베이지안: 극단적인 확률을  피할 수 있음

8. 정규분포 (Gaussian Distribution) 

단일변수 x를 위한 가우시안 분포

N(x|μ,σ2)=12πσ1/2exp{12σ2(xμ)2}

 

가우시안 분포가 정규화됨 (normaliazed)를 보일 것임. 즉,

 N(x|μ,σ2)dx=1

 

정규분포 : 정규화(Normaliztion)

I=exp(12σ2x2)dx

I2=exp(12σ2(x2+y2))dxdy

=2π00exp(12σ2(r2))rdrdθ

=2π0{σ2exp(12σ2r2)|0}dθ

=2π0σ2dθ

=2πσ2

I=2πσ2

 

 

 

 

정규분포 기댓값 

E=N(x|μ,σ2)xdx

E=12πσ2exp{212σ2(xμ)2}xdx

E=12πσ2exp{212σ2y2}(y+μ)dy

E=12πσ2exp{212σ2y2}ydy+μ12πσ2exp{212σ2y2}dy

0+μ1

= μ

 

정규분포 분산

ddyN(x|μ,y)dx=0
ddy{12πyexp{12y(xμ)2}dx

={(ddy12πy)exp{12y(xμ)2}+12πy(ddyexp{12y(xμ)2})}dx

=1212πy3/2exp{12y(xμ)2}dx+12y2exp{12y(xμ)2}dx

=1212πy3/22πy+12y2var[x] 

=12y+12y2var[x]  
var[x]=y=σ2


위는 공부더해야함 모르겟음

 

정규분포 최대우도해

X=(X1,...,xN)T 가 도립적으로 같은 가우시안분포로부터 추출된 N개의 샘플들이 라고 할 때,

p(X|μ,σ2)=p(x1,...,xN|μ,σ2)=Nn=1N(xn|μ,σ2)

lnp(X|μ,σ2)=12σ2Nn=1(xnμ)2N2lnσ2N2ln(2π)

μlnp(X|μ,σ2)

=μ{12σ2Nn=1(xnμ)2N2lnσ2N2ln(2π)}

=μ{12σ2Nn=1(xnμ)2N2lnσ2N2ln(2π)}

=1σ2{(Nn=1xn)Nμ}

μML=1NNn=1xn

 

분산값:??

y=σ2

μlnp(X|μ,y)

=y{12y1Nn=1(xnμML)2N2lnyN2ln(2π)}

=12y2Nn=1(xnμML)2N2y1

yML=σ2ML=1NNn=1(xnμML)2

 

 

 

곡선 근사 (Curve Fitting) : 확률적 관점

학습데이터 : X=(x1,...,xN)T,t=(t1,...,tN)T

목표값 t 의 불확실성을 다음과 같이 확률 분포로 나타낸다.

p(t|x,w,β)=N(t|y(x,w),β1

파라미터 : w, \beta 

파라미터들의 최대우도해를 구해보자.

우도함수

p(t|X,w,β)=Nn=1{y(xn,w)tn}β1

로그우도함수

lnp(t|X,w,β)=β2Nn=1{y(xn,w)tm}2N2lnβN2ln(2π)

w에 관해서 우도함수를 최대화 시키는 것은 제곱합 오차함수 를 최소화 시키는 것과 동일

 

β의 최대우도해

1βML=1NNn=1{y(xn,wML)tn}2

예측분포

p(t|x,wML,βML)=(t|y(x,wML),β1ML

 

사전확룰 포함

파라미터 w 의 사전확률을 다음과 같이 가정하자

p(w|α)=N(w|0,α1I)=(α2π)(M+1)/2exp{α2wTw}

w의 사후확률은 우도함수와 사전확률의 곱에 비례한다.

p(w|X,t,α,β)p(t|X,W,β)p(w|α)

이 사후확률을 최대화시키는 것은 아래 함수를 최소화 시키는 것과 동일하다.

 

β2Nn=1{y(xn,w)tn}2+α2wTW

이것은 규제화된 제곱합 오차 함수를 최소화 시키는 것과 동일하다 (λ=α|β).

 

최종단계 : 완전한 베이지안 곡선 근사

이제까지 t의 예측분포를 구하기 위해 여전히 w의 점추정에 의존해왔다, 완전한 베이지안 방법은 w의 분포로 부터 확률의 기본법칙만을 사용해서 t 의 예측분포를 유도한다.

p(t|x,X,t)=p(t|x,w)p(w|X,t)dw

이 예측분포도 가우시안 분포라는 사실과 그분포의 평균벡터와 공분산 행렬을 구하는 방법을 다음에 알아볼 것이다.