얘는 사진이 너무 많아 잘려서 링크 남김
https://lightsg2.blogspot.com/2021/01/aitech-day-10.html
===========================
학습내용
시각화 도구
matplotlib
다양한 그래프 지원. pandas 연동
- pyplot 객체를 사용하여 데이터를 표시
- pyplot 객체에 그래프들을 쌓은 다음 flush

- Matplotlib는 Figure 안에 Axes 로 구성
x, y 리스트 순서 잘 맞춰서 그리는거

걍 필요할 때 마다 공식홈피 보거나 검색해봐라
seaborn
- 기존 matplotlib에 기본 설정을 추가
- 복잡한 그래프를 간단하게 만들 수 있는 wrapper
- 간단한 코드 + 예쁜 결과
seaborn tutorial 굉장히 잘 되어 있으니 해보는게 좋다
matplotlib와 같은 기본적인 plot
lineplot, scatterplot, countplot 등을 많이 씀
hue 자주씀
scatterplot 에 선 추가 regplot
predefined plots
- Viloinplot - boxplot에 distribution을 함께 표현
- Stripplot - scatter 와 category 정보를 함께 표현
- Swarmplot - 분포와 함께 scatter를 함께 표현
- Pointplot - category별로 numeric의 평균, 신뢰구간 표시
- regplot - scatter + 선형함수를 함께 표시
필요할 때마다 검색해서 사용한다
통계학 맛보기
모수
모수는 일부만 뽑아서 전체를 예측하고 싶을 때. 투표 결과 중 일부지역만 뽑아서 전체 예측하는 거랑 같다.
통계적 모델링은 적절한 가정 위에서 확률분포를 추청(inference) 하는 것이 목표이며, 기계학습과 통계학이 공통적으로 추구하는 목표입니다
예측의 위험을 최소화 하는게 목표. 완벽하게는 불가능 하니까. 데이터가 제한되어있어서 정확하게 알아내는 것은 불가능. 근사적으로 확률분포를 추정할 수 밖에 없다
데이터가 특정 확률분포를 따른다고 선험적으로 가정한 후 그 분포를 파라미터를 추정하는 방법을 모수적(parametric) 방법론이라고 한다. 데이터가 특정 확률분포를 따른다고 선험적으로(a priori)로 가정하고.
특정 확률분포를 가정하기 않고 모델의 구조 및 모수의 개수가 유연하게 바뀌면 비모수(nonparametric) 방법론 이라고 부른다. 비모수 방법론은 모수가 없는게 아니라 모수가 무한히 많거나 데이터에 따라서 바뀌는거다. 기계학습의 많은 방법론이 비모수 방법론에 속함
가정방법 예제
방법: 우선 히스토그램을 통해 모양을 관찰한다
- 데이터가 2개의 값(0 또는 1)만 가지는 경우 -> 베르누이분포
- 데이터가 n개의 이산적인 값을 가지는 경우 -> 카테고리분포
- 데이터가 [0,1]사이에서 값을 가지는 경우 -> 베타분포
- 데이터가 0 이상의 값을 가지는 경우 -> 감마분포, 로그정규분포 등
- 데이터가 R 전체에서 값을 가지는 경우 -> 정규분포, 라플라스분포 등
물론 이렇게 공식처럼 정하는게 아니고, 데이터가 어떻게 생겼는지 데이터를 생성하는 원리부터 파악하고 고려해야 한다
데이터의 확률분포를 가정했다면 모수 추정 가능

분산에서 N이 아니라 N-1로 나눠서 정의해주게 되면 표분분산의 기대값이 원래 모집단의 분산 시그마^2 과 일치하게 된다. 이런 통계적 성질은 표본분산을 구할 때 이런 불편(unbiased) 추정량. 기대값을 취했을 때 원래 모집단에 대표되는 모집단에 일치하기 위해 유도하는 거.
이렇게 데이터를 통해 평균, 분산 등의 통계적 성질을 볼 수 있어서 예측 등에 사용해 볼수 있다. N 이 커질수록 정규분포에 가까워짐. 표집분포랑 표본분포는 다른거고 원래 모집단이 정규분포를 따르지 않는다. 그러면 표본분포(sampling distribution)은 많이 모아도 정규분포가 될 수 없다. 여기서 말하는건 통계량의 확률분포(표본평균의 확률분포) 가 정규분포를 따른다는거지 표본에 대해서의 분포는 정규분포를 따르지 않을 수 있다.
https://github.com/resendedaniel/math/tree/master/17-central-limit-theorem |
데이터가 늘어날수록 데이터의 N이 늘어나서 표본분산이 0에 가까워짐. 그래서 데이터가 많을 수록 표본분포에 가까워짐. 분산이 0이 되다보니 하나의 점에 가까워진다.
원래 확률분포는 이항분포, 이항분포의 표본분포는 데이터를 아무리 모아도 정규분포가 되진 않음. 하지만 이항분포에서 계산한 통계량, 즉 표본평균의 확률분포는 정규분포로 가고 정규분포로 가능 현상을 중심극한 정리라고 한다.
확률분포마다 사용하는 파라미터가 조금씩 다르기 때문에 확률분포의 성질을 추정하는 모수를 결정하는 적절한 통계량이 조금씩 달라질 수 있다. 그래서 표본평균이나 표본분산 만으로 추정하는것은 위험하다. 이론적으로 가장 가능성이 높은 모수 추정하는 방법이 최대가능도 추정법. maximum likelihood estimation, MLE. 주어진 확률분포를 어떤식으로 가정하느냐에 상관없이 이론적으로 가장 가능성이 높은 파라미터를 추정하는 방법론으로 사용할 수 있다. MLE가 기계학습에 잘 사용됨.

가능도 함수는 원래 우리가 관찰한 확률밀도함수랑 확률질량함수랑 같지만 관점이 다르다. 원래 확률밀도함수는 모수 theta가 주어져 있을때 x에 대한 함수로 해석을 하지만 가능도함수는 주어진 데이터 x에 대해서 모수 theta를 변수로 둔 함수로 해석하면 된다. 즉 데이터가 주어져 있는 상황에서 theta를 변형시킴에 따라 값이 바뀌는 함수로 이해하면 됨. 가능도함수는 모수 theta를 따르는 분포가 데이터 x를 관찰할 가능성을 뜻하게 된다. 확률로 해석하면 안됨. 조건부확률밀도 함수나 확률질량함수랑 같은 공식을 쓰지만 theta에 대해 적분을 해줬을 때 1이 되거나 다 더해줬을 때 1이 되는 개념이 아니기 때문에 theta에 대한 확률로 해석하면 안되고 가능도는 오로지 theta에 대해서 크고 작음에 따른 대소비교가 가능한 함수로 이해하면 된다.

X의 각 행벡터가 독립적으로 추출될 수 있을 경우 곱으로 표현 가능한 공식. product로 가능하다. 로그함수의 곱을 덧셈으로 바꿔주는 성질을 이용해서 MLE에다가 로그를 씌워주면 덧셈으로 바꾸기 가능.
근데 왜 로그가능도를 사용하지? 굳이?
데이터의 숫자가 수억단위가 되면 컴퓨터의 정확도를 MLE를 계산하는 것이 불가능. [0,1] 사이의 확률값을 수억번 곱해준다고 가정해보자. 그럼 수학적으로는 굉장히 낮은 단위수지만 컴퓨터는 너무 낮은 수학단위 값끼리 곱해주면 연산오차때문에 계산 불가능해짐. 쉽지않다. 로그로 사용해서 덧셈으로 바꾸면 컴퓨터로 정확도 연산이 가능해져서 최적화 가능해짐.
경사하강법을 사용한다는건 미분한다는 건데, 연산량은 데이터의 제곱에 비례하는데 로그 사용하면 데이터복잡도만큼 줄여줌. O(n^2) 에서 O(n) 으로 줄여줌. 무엇보다 연산의 오차범위 내에서 계산이 가능해지기 때문에 오로지 최적화 관점에서 중요한 이유로 사용한다.
대게 목적함수 같은 경우에는 경사하강법을 사용하기 때문에 목적함수를 최대화 시키는것이 아니라 최소화를 하게 된다. 로그가능도는 보통 최대화를 하기 때문에 최소화로 바꿔주기 위해 그냥 로그가능도가 아니라 음의 로그가능도(negative log-likelihood) 를 사용해서 최적화하게 된다.
추정법 예제: 정규분포
데이터를 가지고 최대가능도 추정법을 이용해서 모수를 추정해보자. 최대가능도 추정방법은 우리한테 주어진 데이터를 가지고 likelihood 함수를 최적화 하는 theta를 찾는 것.

정규분포이기 때문에 평균, 분산 두개의 모수를 가지는데 파라미터들을 가지고 정규분포를 표현하기 때문에 앞에서 사용했던 P(x|theta) 대신에 뮤,시그마^2 으로 바꿀 수 있다. log likelihood로 계산해보자. 정규분포의 확률밀도함수는 두가지 곱셉으로 이루어져 있는데 하나는 분산항만 들어있는 (앞에 식), 지수함수 텀이 있는 (뒤에 식). 이 항에다가 로그를 씌워서 덧셈으로. 그래서 왼쪽은 분산만 들어가고 오른쪽은 분산과 평균이 존재하는 식이 됨. 오른쪽 수식을 미분해서 최적화해볼 수 있다.

미분을 사용해서 최대가능도를 구하고 싶으면 미분했을때 각각의 파라미터에 대해서 0이되는 점을 찾으면 된다. 0이되는 뮤와 시그마를 구해주게 되면 결론적으로 log-likelihood를 최대화 해 주는 모수를 찾게 된다.

결론은 방금전에 모수를 통계량으로 추정하는 방법과 유사한 결과. 데이터의 표본평균이 최대가능도 추정법과 일치한다. 라고 추정 가능. 분산은 n-1로 나누는데 최대가능도 추정법으로 구한 분산은 n으로 나눔. 이렇게 조금 다르게 되긴 한다. 이렇게 불편추정량을 보장하진 않는다. 그러나 통계학에서 얘기하는 consistance 는 보장할 수 있기때문에 최대가능도 추정법의 장점. 참고로 저 뮤 자리엔 뮤MEL를 넣어줘도 되고 주어진 likelihood를 최적화하는 모수는 저 두가지 최대가능도 추정법에 사용된 뮤와 시그마^2 의 모수를 사용했을 때 결론적으로 가능도를 최적화시키는 모수를 구했다.
위에서 모수는 없을수도 있고 여러개일 수도 있고 어쩌구 저쩌구 했었는데 밑에에서 모수를 가정하고 하는 예를 보여주는 거다.
카테고리분포에서의 예제

먼저 카테고리 분포의 likelihood 는 모수 pk에 해당하는 값에 xi,k 즉 주어진 데이터 xi에 k 번째 차원에 해당하는 값을 승수로 취해주는 형태로 표현이 가능하다. 만약 xik 가 0이면 pk가 1이 되서 xik가 1이면 pk라는 값을 가져서. xik가 0과 1 두가지 값만 가짐으로 인해서 likelihood 함수를 계산을 할 때 pk가 1 또는 pk로 사용되는 형태로 likelihood 함수가 정의가 되고 이걸 이용해서 최대 가능도를 추정하게 되는 것.
로그씌우면 곱셉이라 시그마로 가능. 이때 우리가 추정하는 모수 p1~pd 까지는 주어진 카테고리 분포의 질량함수에 해당하는 모수라서 다 더했을 때 1이 되야함. 이 제약조건에서 최대가능도를 최적화시켜야 한다.

xik에 대해서 i는 1에서부터 n까지 즉, 데이터 갯수만큼 더해주는 덧셈연산을 먼저 해준 후에 k1부터 각 차원별로 덧셈으로 더해줄 수 있다. xik는 전부 0 또는 1이기 때문에 각각의 i는 1 부터 n까지 더해주는 개념은 주어진 각 데이터들에 대해서 어떤 k값이 1인 갯수를 xi,k는 전부 0 아니면 1이라서 주어진 각 데이터들에 대해서 k값이 1인 갯수를 카운팅하는 nk로 대체 가능. 주어진 xi에 대해서 k값이 1인 데이터의 갯수를 세는 개념. 확률변수.



주어진 라그랑주 목적식을 각각의 모수 pk 에 대해서 미분 해 준 다음 라그랑주 승수인 람다에 대해서도 미분해준다. 먼저 각각의 모수에 취해준 미분의 결과값은 로그의 미분은 문모로 가게된다. 저렇게 표현한게 0이 되야 하고 람다에 대해 미분한 값도 0이 되어야 한다. 식을 잘 보면 nk/pk가 람다가 되야 한다. 두 사실을 조합하면 pk = ... 식이 나옴. 분모에 시그마nk 가 우리의 데이터 개수인 n이랑 똑같다. 그래서 pk = nk/n가 되고 이는 카테고리 분포에서의 MLE는 각각의 경우 (각각의 차원) 에 해당하는 데이터 카운터 숫자(경우의 숫자) 의 비율을 구하는 것이 된다. 그래서 비율을 구하는 것으로 최대가능도를 달성하는 모수를 추정하는 것이 가능하다.
지금까지 확률분포에 주어져 있는 모수를 최대가능도 추정법(MLE)으로 추정하는 방법에 배웠는데, 사실 이걸 이용해서 딥러닝에서도 활용 가능하다. 그래서 굉장히 폭 넓은 곳에 사용 가능
MLE를 theta = (W(1), ... , W(L)) 라 표현했을 때 즉 첫번째 레이어 가중치 W(1) 과 L번째 레이어의 가중치 W(L)를 theta로 묶으면 딥러닝 문제를 분류문제에 적용하게 되는 경우 맨 마지막 층에서 softmax 를 이용해 조건부확률 분포를 계산 할 수가 있다. 이 softmax 확률벡터가 위에서 설명한 카테고리분포의 모수 (p1, ..., pk)를 모델링 하는데 사용할 수 있다.

따라서 원핫벡터로 사용되는 정답 레이블 y = (y1, ..., yk)을 관찰데이터로 사용해서 log likelihood를 최적화 하는 방향으로 딥러닝의 모수인 theta를 학습시킬 수가 있다. 이런식으로 주어져있는 MLP의 theta를 추적화 시킬 때 위에서 설명한 MLE식과 유사하단걸 알 수 있는데 잘 보면 k는 1~K까지 즉 모든 클래스에 대해서 모든 데이터 i=1~n에 대해 MLP의 예측값의 k번째 예측값의 로그값과 정답 레이블에 해당하는 y의 k번째 주소값을 곱해준 것 들의 덧셈으로 표현하게 된다. 중요한 수식이라고 한다.
기계학습에서 사용되는 손실함수들은 사실 그냥 아무렇게나 사용되는 손실함수들이 아니고 기계학습모델이 학습하는 확률분포와 데이터에서 관찰되는 확률분포의 거리를 통해서 유도할 수가 있다. 이건 통계학에서 MLE로 보통 추정하게되는 굉장히 많은 모델학습방법론이다. 이 확률분포의 거리(distance)를 최적화하는 것과 굉장히 밀접하게 관련이 있다. 즉 데이터공간에 2개의 확률분포 P(x)와 Q(x)가 있다고 하면 그때 2개의 확률분포 사이의 거리를 계산하는 방법은 총변동 거리 (Total Variation Distance, TV), 쿨백-라이블러 발산 (Kullback-Leibler Divergence, KL), 바슈타인 거리 (Wasserstein Distance) 등의 거리함수들이 있지만 여기선 쿨백-라이블러 발산 함수를 볼거다.
쿨백-라이블러 발산은 다음과 같이 정의된다.

저렇게 쿨백-라이블러 발산을 정의한다.
쿨백 라이블러를 저렇게 분해할 수 있다. logQ(x) 기대값에 -를 붙힌 term과 logP(x)에 대한 기대값을 더해주는 형태로 표현해준다. 앞에 있는걸 크로스 엔트로피라 부르고 뒤에있는 term을 엔트로피라고 부른다. 이렇게 쿨백-라이브러리 발산은 두 개의 엔트로피로 표현할 수 있는데 아까 MLP과 정답 레이블에 대해서 표현되는 손실함수가 이 분류문제에서 정답레이블을 P, 모델 예측을 Q라고 두게 되면 최대가능도 추정법에 사용되는 손실함수가 사실 쿨백 라이블러 첫번째 term인 크로스 엔트로피의 - term 이랑 똑같게 된다. 즉 최대가능도 추정법에서 log likelihood를 최대화 시키는 것과 정답레이블에 해당하는 확률분포 P와 모델 예측에서 사용되는 확률분포 Q 사이의 거리 = 쿨백-라이블러 발산을 최소화 하는 것과 같다. 즉 확률분포 사이의 거리를 최소화하는 개념과 log 가능도 함수를 최대화 한다는 개념이 굉장히 밀접하게 연결이 되어있다. 그럼 2개의 확률분포의 거리를 최소화 한다는 개념이 주어진 데이터를 통해서 목적으로 하는 확률분포의 최적화된 모수를 구하는 것과 동일한 개념이다. 기계학습의 원리가 데이터로부터 확률분포 사이에 거리를 최소화 하는 것과 같다는 걸 이해할 수 있을 것이다.
이번시간에 한게 데이터에서 통계학적인 방법에 의해서 기계학습에서 모수를 추정할 수 있는 방법을 살펴본거고 최대가능도 추정방법에 의해서 모수를 추정해서 우리의 목적인 정답레이블에 해당하는 확률분포와 모델이 추정하는 확률분포의 거리를 최소화하는 개념과 일치하고 이걸 통해 통계학적으로 기계학습 모형에서 통계적으로 적절한 학습 방법론을 사용한다는 원리를 이해한거다. 이 원리를 딥러닝과 기계학습에 굉장히 많은 예제를 사용할거고 앞으로 공부할 굉장히 많은 논문을 볼 때 이 loss함수가 어떻게 추적함수가 어떻게 나왔는지 고민해 볼 때 이 MLE라는 관점에서 많이 유도가 됐다. 통계학적인 방법에 기반해서 기계학습 모형들이 학습을 하게 된다. 최대가능도 측정법의 사용방법, 또 경사하강법을 이용한 최적화된 방법론이 어떤식으로 어떤 목적으로 동작하게 되는지 이해할 수 있을 것이다.
===========================
퀴즈
정답 레이블을 one-hot 벡터로 표현한다면 하나의 정답 레이블 벡터의 크기는 1이다. => 1이 아니라 pi 인듯.
==========================
피어세션
대수의 법칙. 데이터 수가 많으면 오차가 줄어든다. 몬테카를로 샘플링에 사용한다. 중심극한정리인듯. 어떤것들도 표본을 많이 추출해서 샘플링을 하면 정규분포를 따르게 된다. 이항분포든 배르누이든 뭐든 데이터 가지고 새로운 표본 집단을 구성하면 정규분포를 따르게 된다.
못들어본 여러 분포들 있었고, 최대가능도 에서 경사하강법이 왜 나오는지.
통계 하다가 엔트로피. 최대가능도랑 콜백라이브러리가 뭘 의미하는지.
추정 못할 때 몬테라를로를 쓴다.
나도 억지로라도 질문 만들어야 할듯
모수, 파라미터. 정의. 무조건 알아야 될듯. 모집단과 관련된 것을 파라미터. 모집단을 모르니까 일부를 샘플링해서 알아보자. 샘플링의 평균. u로 한건 모집단의 평균. 모평균이. 표본집단을 통해서 모집단. 모집단의 평균을 추정하는 거고. 책 다시 찾아보자.
independant identity
mooc
파이 코드 짜보기.
표집분표랑 표본분포는 다르다. 표본분포는 실제로 뽑은거. 여러 표본분포의 결과로 나온게 표집분포. 이게 커질수록 정규분포를 따른다.
최대가능도 추정법. x를 알고 모수를 모름. 서순이 바뀐거. argmax 제일 가능성이 큰 모수를 리턴. 이게 likelihood 최대가능도다. S^2는 정규분포 분산.
편차를 그냥 해놓거. Xi 는 확률변수. x-hat
7챕터 앞뒤
============================
후기
진짜 오늘 너무 어려웟다. 거의 이해 못한 것 같다. 큰일이다.
진짜 학문을 익히려는 자세를 버린지 7년정도 된 것 같다. 논문을 이해하려면 이제 되찾아야 한다. 모든걸 이해하고자 하는..
'과거의 것들 > AI Tech boostcamp' 카테고리의 다른 글
AITech 학습정리-[DAY 12] 최적화 (0) | 2021.11.26 |
---|---|
AITech 학습정리-[DAY 11] 딥러닝 기초 (0) | 2021.11.26 |
AITech 학습정리-[DAY 9] Pandas II / 확률론 (0) | 2021.11.26 |
AITech 학습정리-[DAY 8] Pandas I / 딥러닝 학습방법 이해하기 (0) | 2021.11.26 |
AITech 학습정리-[DAY 7] 경사하강법 (0) | 2021.11.26 |