* 해당 정리 및 요약본은 Andrew Glassner의 "Deep Learning : From Basics to Practice Volume 1,2"를
기반으로 제작된 것을 밝힙니다. *
Random Variables
Machine learning에서는, 임의의 number를 그냥 뽑지 않고, Random numbers를 통해 data에서 sample을 뽑아낸다.
[용어 및 개념 정리]
- mean : average. 평균
- mode : list에서 가장 많이 나타나는 value.
- median : list의 정중앙에 있는 number. (정렬될 경우)
- probability distribution : value의 확률 분포. normalized되었기 때문에 value의 합은 1이 된다.
- Expected value : probability distribution으로부터 추출된 long list values의 mean
ex. 만약 1, 3, 5, 7이 각각 동일한 확률을 가지고 있을 때, expected value는 (1+3+5+7)/4 = 4가 된다. (list안에 꼭 포함x)
- Random variable : 변수의 의미가 아닌, 단순한 Function이다! (확률변수 X)
-> input : probability distribution (확률분포)
-> output : specific value를 output으로 함.
- probability distribution(density) function : pdf. 확률분포함수. X가 [r1, r2] 안에 포함될 확률.
- probability mass function : pmf. 확률질량함수. X에 대한 확률을 나타내는 함수. (ex. 주사위 한 번 굴림 = 1/6)
- discrete probability distribution : 이항확률분포.
- continuous probability distribution : cpd. probability density function. 연속확률분포. 연속된 그래프이다.
해당 그래프 아래의 넓이의 합은 1이 되어야 한다.
- drawing a value : value를 만들어내는 것
random한 variable을 draw하는 것은, "unpredictable"한 number를 고른다는 뜻이다.
보통 computer programs들은 deterministic (주어진 input에서는 항상 같은 output이 나온다는 뜻) 하기 때문에,
unpredictable한 number를 고르는 것은 상당히 어렵다! 아무리 random한 number를 뽑아내는 프로그램을 사용해도, 그 알고리즘을 살펴보면 어떤 원리인지 다 파악 가능하다. 따라서, 컴퓨터가 생성해내는 random number는 "가짜"이다.
-> 따라서, 이 알고리즘들을 pseudo-random number generators라고 하고, pseudo-random numbers를 생성한다.
만약, pseudo-random numbers를 사용하는 프로그램을 작성했는데 에러가 났다고 가정해보자.
problem을 debugging하기 위해, 똑같은 pseudo-random numbers를 얻는 과정을 똑같이 수행하고 싶을 것이다.
이를 수행하기 위해, 각 routine에 seed라고 하는 number를 부여한다.
seed(씨앗값)는, 말 그대로 random number를 만들 때 사용하는 최초의 값을 지정해주는 역할을 한다.
pseudo-random number genertor는 output을 sequence(previous value에 dependent)로 생성해내기 때문에, seed값이 같다면 같은 random number를 생성해낸다.
ex. np.random.seed(1)의 값과 np.random.seed(1)의 값은 같지만, np.random()의 값과 np.random()의 값은 다름.
매번 같은 sequence의 random number를 생성하는 것은 "unpredictable"하지 않으므로, 이는 주로 system design / debugging phase에 주로 사용된다.
Some Common Distributions
여러 종류의 distribution에 대해 알아보자.
[The Uniform Distribution 균일 분포]
input이 0부터 1 사이일 때, output이 1이 출력되고 있다. 이 distribution은 중요한 점이 두 가지 있다.
(1) 다른 모든 value의 probability가 0이기 때문에, 0부터 1 사이에서만 value를 얻을 수 있다는 것과,
(2) 0부터 1 사이의 모든 value는 equally probable하다는 것이다. (0.25, 0.33, 0.793718 그 어디에서도 값이 같음)
이와 같은 형태의 distribution을 uniform, constant, 혹은 flat하다고 한다.
또한, 모든 non-zero value가 특정 range(0부터 1)안에 있기 때문에, finite하다고 할 수 있다.
보통 uniform distribution을 생성하는 library function에서는 이 range를 0에서 1 혹은 -1에서 1 등으로 설정할 수 있게 한다. 또한, 위에서 설명했던 것과 같이, line 아래의 넓이는 1이 되어야 한다. (1.0 * 1.0 = 1.0)
[The Normal Distribution 정규 분포]
Gaussian Distribution이라고도 하고 간단하게 bell curve라고 부르기도 한다.
uniform distribution과는 다르게 부드럽고, 뾰족한 모서리가 없이 종 모양으로 되어있다.
가운데 bump외의 값은 대부분 0에 가깝지만, 양쪽 끝은 절대 0이 되지 않는다. (=infinite)
mean(평균, π)과 standard deviation(표준 편차, μ)으로 정의되는 distribution이다.
표기는 주로 N(π, μ^2) 로 표시하며, mean은 mode, median의 값과 같고 μ^2는 variance(분산)이라고 부른다.
[The Bernoulli Distribution 베르누이 분포]
한 시행이 결과값을 두 가지 값 0, 1로 둔 random variable X에 대한 probability distribution. (ex. 동전 던지기)
1을 얻을 확률을 p라고 한다면, 0을 얻을 확률은 1-p로 표현한다. 이 때 mean은 p이다.
[The Multinoulli Distribution 다항분포]
Bernoulli distribution은 오로지 두 가지의 value만을 return한다.
하지만, 만약 더 큰 number나 possibility를 필요로 할 경우에는 어떻게 해야 할까? (ex. 20면짜리 주사위 던지기)
-> 0부터 1까지의 베르누이 분포를 1부터 K까지의 K개의 정수 값 중 하나가 나오는 분포로 확장시켜야 할 것이다.
ex. 주사위에서 2를 return한 경우 (0, 1, 0, 0, 0, 0)으로 표현함.
Dependence
지금까지 본 random variable은, 서로 완전한 disconnected 상태(영향x)였다 = 각각 independent한 variable이었다!
하지만, 만약 서로 dependency가 있다면, 이를 dependent variable이라고 한다.
- i.i.d. Variables : independent and identically distributed variables.
확률변수(random variable)가 여러 개 있을 때, 서로 independent하며, 모두 동일한 f(x)를 가지는 variable.
Sampling and Replacement
machine learning에서 기존 dataset에서 dataset을 새로 만들어내야 한다고 할 때, dataset에서 element를 언제 뽑을까?
(1) dataset에서 remove할 때
(2) dataset에서 element의 copy를 만들어 사용할 때
ex. 도서관에서 읽을 책들을 몇 개 쌓아놓았다고 가정하고, 이 책더미 중 random하게 책을 고른다고 해보자.
위의 경우에 대입하여 두 가지 상황을 상상해본다.
(1) 책더미에서 random하게 한 권을 고르고, 책상에 쌓는다. 그리고 다시, 책더미로 돌아가 한 권을 고른다.
이 때 우리가 책상에 책을 하나씩 가져가기 때문에, 책더미에서 매번 같은 책을 고를 확률은 없을 것이다.
(2) 책더미에서 random하게 한 권을 고르고, 책을 복사하여 복사본을 책상에 쌓는다. 그 후, 다시 책을 책더미에 반납하고 다시 random하게 책을 고른다. 이 때는 우리가 책더미에 다시 책을 가져다 놓기 때문에, 같은 책을 고를 수도 있다.
위의 예시처럼, machine learning에서 dataset을 만들 때, (1) training set에서 data를 고른 후 고른 data를 remove하는 방법과, (2) copy를 만들고 다시 return하는 방법으로 나눌 수 있다.
두 가지 방법은 매우 다른 result를 나타내고, 각자 쓰이는 상황이 다르다.
이 상황에서의 목적은, pool of objects에서 고른 list of selections를 만드는 것이다.
[Selection With Replacement (SWR)]
만약 각 selected element마다 copy를 만든다고 가정해보자. 위의 figure처럼, 매번 element를 copy할 때마다 다시 pool에 return하는 것을 알 수 있다. 중복으로 element를 선택할 수 있기 때문에, 예시에서는 C가 2번 선택되었다.
최악의 경우, new dataset이 전부 똑같은 element로만 구성될 수도 있다. selection은 서로 independent하다.
selection size가 pool size보다 커질 수 있다.
[Selection Without Replacement (SWOR)]
만약 각 dataset을 random하게 선택하고 다시 돌려놓지 않는다고 가정해보자. 이 경우, 똑같은 element를 선택할 확률은 없을 것이다. 이 경우 이전 choice에 따라 결과가 바뀌기 때문에 selection은 서로 dependent하다.
selection size는 pool size보다 작다.
* SWR이 SWOR보다 더 많은 possible dataset을 만들어냄을 알 수 있다. (larger dataset)
Bootstrapping
machine learning에서, 시행해보기에 너무 큰 data set의 statistics에 대해 알고 싶을 때가 있다.
예를 들면, 전세계 모든 사람들의 평균 키를 알고 싶다면 실제로 이를 시행하기엔 어려우므로 대안책을 찾아야 한다.
이 때, 몇천명의 height를 구해서 평균을 구해볼 수는 있을 것이다.
위의 예시에서 전세계 모든 사람들을 population이라 하고, 그 중 적당한 모수를 뽑은 smaller group을 sample set이라 하자. sample set은 SWOR로 만들어질 것이고, 따라서 매번 population에서 값을 선택할 때 population에서 remove될 것이다. (중복 불가)
sample set을 만들 때, reasonable한 sample set을 만들고 싶을 것이다. 위의 예시를 보면, 왼쪽은 21개의 element를 가진 population, 오른쪽은 12의 element만을 가지고 있는 sample set이다.
Sample set의 mean을 구하면 3.8인데, population의 mean인 4.3과 같진 않지만 크게 차이가 나지 않는다.
위의 경우 population의 크기가 작아서 값을 구하기 어렵지 않았지만, 대부분의 경우 구하기 힘들 정도로 클 것이다.
따라서, "confidence interval" (신뢰 구간)으로 표현을 하는 것이 좋다. 이를 위해서는 범위의 upper, lower bound를 알아야 한다. (ex. 신뢰구간 98%면, 3.1 - 4.5 사이에 값이 있을 확률 98%)
-> 이렇게 신뢰구간으로 표현하기 위한 방법 중 하나가 바로 bootstrapping이다.
(1) 위의 그림과 같이 original population에서 sample set을 생성한다.
(2) 그 sample set을 resampling하여 새로운 set들을 생성한다.
(3) 새로 생성된 각 set을 bootstrap이라고 한다.
이런식으로 생성된 bootstrap으로 각각 mean을 구할 수가 있다. mean을 구하여 histogram으로 만든다면 아래와 같은 figure가 생성될 것이다.
만들어진 histogram은 가우시안 분포(Gaussian distribution)와 비슷한 형태이다. 이 population은 0부터 5000까지의 정수 중 500개를 random하게 뽑아 sample set으로 만들고, 이로부터 각자 20개의 element를 가진 1000개의 bootstrap을 생성하여 mean을 계산한 것이다. 우리는 기존 population의 mean이 약 500이라는 정보를 알고 있으므로(red bar), 위의 figure의 mean이 490으로(blue bar) 서로 비슷하다는 것을 알 수 있다.
bootstrap의 size가 작으면 빠르게 build하고 수행할 수 있다. 또한, bootstrap을 많이 만들수록 결과값이 gaussian bump에 더 가깝게 보여질 것이고, 이는 신뢰구간을 더 정확하게 만들어 준다.
위의 box는 신뢰구간 80%를 나타내는 box이다. 이를 통해,
우리는 "original popultion의 mean이 410~560 사이에 있을 확률은 80% confident하다"라는 결론을 내릴 수 있다.
High-Dimensional Spaces
만약 우리에게 온도와 풍속에 관한 두 piece의 information이 있다고 가졍하면, 그 data들을 보관하기 위한 2개의 dimension 혹은 2개의 item을 포함할 수 있는 list가 있어야 할 것이다. 이를 위해서는 아래 그림에서처럼 2개의 axis를 가지고 표현해야 한다. 이를 2-dimensional space라고 한다.
3개의 value를 표현하기 위해서는 아래처럼 3-dimensional space가 필요할 것이다.
만약 4 measurements가 필요하다면, 4-dimensional space가 필요하겠지만 이를 graphically 표현하는 것은 어렵다.
또한 그 이상의 high-dimensional space를 표현하는 것도 힘들다.
만약 우리가 500x500 pixel의 grayscale image가 있다고 가정해보자. 이를 표현하기 위해서는 몇 개의 dimensional space가 필요할까? 500x500=250,000이기 때문에, 250,000 dimension이 필요할 것이다. 이는 굉장히 많은 양이다.
또, 각 pixel은 또 3가지의 x, y, z값을 표현해야 하기 때문에, 총 3x250,000 = 750,000개의 dimension이 필요할 것이다.
750,000개의 dimension을 그림으로 표현할 수 있는 방법은 없다.
그러나, machine learning algorithm은 개수와 상관없이 2 or 3-dimension을 다루는 것처럼 다룰 수 있다!
각 data는 space에서 한 개의 single point로 생각해보자. 750,000 dimensional point는 2D/3D와 마찬가지로 750,000개의 number를 사용하여 자기 자신들의 위치를 표현할 것이다.
이처럼, image는 거대한 "picture space" 속의 single point로 표현할 수가 있다.
이러한 많은 dimension spaces을 high-dimensional spaces라고 부른다. 이러한 high-dimension을 다루는 것이 machine learning algorithm의 핵심이며, 각각의 image data들을 거대한 "space"속의 point set으로 생각할 것이다.
Covariance and Correlation
[Covariance]
Covariance : 공분산. 2개의 random variable X에 대한 관계. 두 개의 변수 중 하나가 상승함에 따라 나머지 변수가 어떻게 변하는 지를 나타낸 것이다. (나머지 변수도 상승하면 Positive, 그 반대는 negative.) 서로 얼마나 의존적인지를 파악하는 데 사용된다. 두 random variable의 linear relationship의 관련성을 측정. = X가 어떻게 퍼져있는지를 보는 것
-> Covariance는 기울기가 아니다!
Ex. 기타의 12개의 변수에 대해 측정했다고 가정하자. (나무의 두께, 목의 길이, string의 tension 등)
우리는 이러한 각 측정값 pair에 대한 covariance를 구할 수 있겠지만, 이를 통해 이 중 가장 강하거나 약한 관계가 무엇인지는 알 수 없을 것이다. (서로 양의 관계인지 음의 관계인지는 알 수 있지만 뭐가 더 strong / weak한지는 모름)
[Correlation]
Correlation : 상관관계. 크기와 방향을 둘 다 고려하는 covariance와는 다르게 크기와 상관없이(unit) 방향만 보는 것이다. 항상 -1에서 1 사이의 값이다.
Anscombe's Quartet
4개의 다른 data는 각자 같은 mean, covariance, correlation을 가지기 때문에 같은 line에 fitting된다.
Statistics를 통해 모든 정보를 알 수는 없다는 것을 의미한다.
'Lab Study > Machine Learning' 카테고리의 다른 글
[Deep Learning] 4. Bayes' Rule (1) | 2020.07.07 |
---|---|
[Deep Learning] 3. Probability (0) | 2020.07.07 |