Linear

Linear Regression에서 x_data를 여러개 사용한다면

x_data끼리는 서로 Linear 해야한다 즉 선형성을 가지고 있어야한다

이걸 다른 말로 하면 서로 상관 관계가 없어야 한다

np.corrcoef(x2,x1)

numpy에서 지원하는 상관 관계를 알수 있는 함수 이다

x2 와 x1 의 상관 관계를 2 X 2의 행렬로 return 한다

[0][0] 과 [1][1]는 본인에 대한 것이므로 항상 0이고

[1][0] 또는 [0][1]을 확인해야 한다


x_data끼리의 corrcoef를 확인하고 값이 높은 것은 제거해야한다

뿐만 아니라 x_data 와 y_data의 corrcoef또한 확인하여

x_data 와 y_data 의 상관관계가 높은 것을 골라야 한다

'Deep Learning' 카테고리의 다른 글

Cross Entropy & KL divergence  (0) 2020.02.04
Polynomial Regression  (0) 2020.02.04
(확률) MLE & MAP  (0) 2020.02.02
Gradient Descent (2)  (0) 2020.02.02
Gradient Descent (1)  (0) 2020.02.02

Bayes rule

MLE와 MAP 를 공부하기에 앞서 베이즈 정리를 먼저 이해해야 한다


정의는 두 확률 변수의 사전 확률과 사후 확률 사이의 관계를 나타내는 정리이다


그리고 여러가지 용어가 있는데

  • Likelihood

    단서가 어떤 식으로 분포되어 있는지 나타내는 것이다

    흔히 사람들이 직감적으로 확률을 맞추는 것의 대부분이 이것에 해당된다

  • Prior

    사전 지식을 의미하는 것으로 다양하게 가능하고

    사전 지식이 없는 경우 없어도 가능하다

  • Posterior

    Likelihood 와 Prior 둘다 반영 된 것이다

  • P (A|B)

    B일때 A가 발생활 확률이다

    예를 들어 P(A)가 오늘 술을 마실(A) 확률이라면

    P(A|B)는 남자가(B) 오늘 술을 마실(A) 확률이 되는 것이다

다시 Bayes rule로 돌아와서 사례를 하나 만들어 보자

흡연율을 알고 싶어서 피시방에 가서 이용하는 사람들의 흡연 유무를 조사했다

그러자 50퍼센트가 나왔다

그렇다면 여자의 50퍼센트는 흡연을 한다고 할수 있을까

아니다 피시방을 사용하는 사람들의 80퍼센트이상은 남자이고

즉 여자의 흡연율을 50퍼센트라고 할수 없는것이다

50퍼센트가 나온것이 Likelihood라고 볼수 있고

피시방의 80퍼센트는 남자인 데이터는 Prior

이 둘을 조합해서 남녀의 흡연율을 알아낸것이

Posterior라고 할 수 있다

위의 수식이 Bayes rule이다

P(A|B) Posterior는 P(B|A) Likelihood에 P(A)

를 곱하고 P(B) Evidence로 나누어 준 것이다

여기서 evidence는 고정된 값이기 때문에 생략하고 계산하기도 한다

MLE

Bayes rule을 배웠으니 이제 MLE를 배울 차례다

또 예를 하나 들어보자

이번주 토요일에 붕어빵을 사러갔는데 문을 닫았다

아쉬워서 다음주 토요일에도 붕어빵을 사러갔는데 또 닫았다

그래서 마지막으로 그 다음주 토요일에도 가봤지만 열지 않았다

위의 사실을 바탕으로 대부분은 아 토요일에 붕어빵을 팔지 않는구나 라고 생각한다

사람들이 위와같이 직감적으로 판단을 하는것은

관찰한 사실이 가장 확률이 높은 경우라고 생각하는 것이다

3번 봤으니 항상 그러겠지라고 생각하지 아무도 아 하필 우연히 쉬는날마다 내가 골라 갔구나 라고 생각하지 않는 것이다

이것을 수학적으로 생각하면

실제 값은 내가 예측한 사실을 평균(m)으로 하고 특정 값 σ를 표준 편차로 하는 정규 분포를 따른다

 



즉 내가 관찰한 경우가 최대의 확률이 될때를 찾아주는 것이다

MAP

MLE가 Likelihood를 최대화 했다면

MAP는 Prior까지 계산된 Posterior를 최대화하는 것이다

크게 차이나는 것 없이 Prior만 같이 계산 해주면 된다

Prior를 적용하는 이유는 무엇일까

적절한 Prior를 적용할 경우 찾고자 하는 값을 찾는 과정에 큰 도움이 되기 때문이다

단순한 지식뿐만 아니라 Prior의 Scale을 조절하면서

Output의 크기 또한 조절이 가능한 것이다

MLE & MAP

사전지식이 없이 대상의 데이터만 가지고 예측하고싶다면

MLE을 사용하면 되고

데이터 + 사전지식 까지 사용하고 싶다면

MAP를 사용하면 되는 것이다

'Deep Learning' 카테고리의 다른 글

Polynomial Regression  (0) 2020.02.04
Linear Regression (2)  (0) 2020.02.03
Gradient Descent (2)  (0) 2020.02.02
Gradient Descent (1)  (0) 2020.02.02
Linear Regression (1)  (0) 2020.02.02

Gradient Descent의 종류

Batch Gradient Descent(BGD)

데이터셋을 업데이트 할때 모든 데이터셋을 읽고 고려하여 업데이트 한다

즉 전체 데이터셋에 대한 loss를 모두 구한후 기울기를 구하여 적용하는것이다

장점

  • 전체의 데이터에 대해서 loss를 구하기 때문에
    평균에 가깝게 적용 될 것이다
  • 병렬 처리에 유리하다

단점

  • 한번에 모든 데이터를 처리하고 업데이트 하기
    떄문에 모든 데이터셋을 한번에 처리할 큰
    메모리가 필요하다

Stochastic Gradient Descent (SGD)

BGD와는 반대로 각각의 데이터에 대해서 loss를 업데이트 한다 ### 장점 * 각각의 데이터에 대해서 loss를 구하기 때문에
큰 메모리가 필요하지 않다

단점

  • 병렬 처리가 힘들기 때문에 GPU의 성능을 제대로

    활용할 수가 없다

Mini Batch Descent (MSGD)

BGD와 비슷하게 여러 데이터에 대해서 loss를
한번에 적용 하지만 전체 데이터셋이 아닌
n개의 데이터를 받아서

loss를 적용한다

SGD와는 다른 알고리즘이지만 요새 SGD로 혼용해서

사용하기도 한다

장점

  • BGD보다 local optimal에 빠질 위험이 적다
  • SGD보다는 병렬처리에 유리하다
  • 전체 데이터셋을 한번에 사용하는 것이 아니기때문에 메모리사용이 BGD보다 적다

단점

  • SGD보다는 메모리 사용이 높다

'Deep Learning' 카테고리의 다른 글

Linear Regression (2)  (0) 2020.02.03
(확률) MLE & MAP  (0) 2020.02.02
Gradient Descent (1)  (0) 2020.02.02
Linear Regression (1)  (0) 2020.02.02
Machine Learning 분류  (0) 2020.02.02

Gradient Descent란

기울기가 작은 쪽으로 계속 이동하여

최종적으로 극값에 이르는 것이다


Linear Regression에서 설명한 최적의 θ 값을 찾기위해서

cost를 최소화하는 것을 할때도 Gradient Descent를 사용한다

그렇다면 어떤 방식으로 기울기가 작은 쪽으로 움직일까



위와 같이 cost funtion이 그려진다고 가정해보자



만약 현재 값이 우측에 있다고 생각을 하면

기울기가 작은쪽으로 움직여야 하므로 좌측으로 가야 할것이다

반대로 값이 좌측에 있다면



이번엔 우측으로 향해야 할 것이다

위와 같은 경우를 바탕으로 \theta 업데이트 되는 식을 표현하면



다음과 같이 현재의 θ에 Learning Rate(업데이트 되는 정도)에 기울기를 곱한 값을 빼줌으로써 업데이트 하는것이다

'Deep Learning' 카테고리의 다른 글

Linear Regression (2)  (0) 2020.02.03
(확률) MLE & MAP  (0) 2020.02.02
Gradient Descent (2)  (0) 2020.02.02
Linear Regression (1)  (0) 2020.02.02
Machine Learning 분류  (0) 2020.02.02

Linear Regression(선형 회귀)

Classification와는 반대되는 방식으로

Continuous 즉 연속적인 값을 예측 하는 것입니다

예를 들면 여러가지 데이터로 집값을 예측한다면

딱 1억 2억 나눠지는 것이 아니라 1억 4874만 등으로 연속적인 값이

나오게 됩니다

Linear Regression에서 사용하는 몇가지 용어가 있는데

loss

저희가 모델을 학습하여 모델을 만들었다면 실제 값과 대조를 해볼텐데

그 각각의 실제값에서 예측한 값을 뺀 값을 loss라고 합니다

그런데 에를 들어 집값을 예측했는데

첫번째 집은 +5000만원

두번째 집은 -5000만원

세번째 집은 +1000만원

네번째 집은 -1000만원

이렇게 loss 즉 오차가 났다고 가정을 해보면
오차가 되게 크지만 다 합해보면
0이 되어 모델이 완벽한 것처럼 보이게 됩니다

이런현상을 방지하고자 (실제값 - 예측한값)에 제곱을 해주게 됩니다
(실제값 - 예측한값)2 이 되는 것입니다

cost

loss의 모든 합을 데이터의 개수로 나누어서 평균을 구한 것입니다

Learning Rate

Linear Regression을 학습할때 학습의 대상으로
θ를 사용하는데 이 θ를 업데이트하는 정도를 뜻한다

너무 크면 값이 발산하게 되고

너무 작으면 Learning이 제대로 되지 않는다

Data Preprocessing을 하게되면 다른 프로젝트를 할 때도 비슷한
Learning Rate를 사용할 수있다

흔히 lr이라고도 부른다

'Deep Learning' 카테고리의 다른 글

Linear Regression (2)  (0) 2020.02.03
(확률) MLE & MAP  (0) 2020.02.02
Gradient Descent (2)  (0) 2020.02.02
Gradient Descent (1)  (0) 2020.02.02
Machine Learning 분류  (0) 2020.02.02

Machine Learning의 분류

머신러닝은 기본적으로 대상을 분류하거나 정해진 값을 맞추는 것이다


그렇다면 맞추기 위해서 학습을 시켜야한다


이떄의 학습 방식에 3가지가 있는데

1 Supervised Learning (지도 학습)

머신러닝을 할때는 데이터셋이 있다


이 데이터셋이란 학습에 필요한 자원인데


예를 들면 이미지가 될수도 있고


아니면 목소리 숫자 등 모든 것이 가능하다


이때 지도학습이란 데이터셋이 Label이 되어있는 것이다


즉 문제와 함께 정답이 있는 것이다

1) Classification (분류)

분류란 대상을 카테고리로 나누어서 판단하는것이다


예를 들면 개와 고양이로 구분할수 있고 남자와 여자


아니면 다중으로 인종까지도 구분할 수 있는 것이다

2) Regression (회귀)

회귀는 대상의 카테고리를 맞추는 것이 아니라


대상의 정확한 값을 맞추는 것이다


예를 들면 공부한 시간을 가지고 시험 성적을 예측해보거나


데이터를 활용해 집값을 예측하는 등 대상의 값을 예측 하는 것이다

Unsupervised Learning (비지도 학습)

지도 학습과는 반대로 정답을 알려주지 않는다


무작위의 데이터를 주어지면 해당의 특징들을 활용하여 군집화 하는 것이다


기린과 사자와 병아리가 섞인 데이터가 주어진다면


목이 긴것은 하나 그리고 덩치가 큰것 하나 작은 것 하나


이런식으로 특징들을 활용하여 군집화하는 것이다


이는 데이터셋의 label 즉 정답이 없을때 활용하는 것인데



단순히 지도학습과 비교하면 성능이 현저히 떨어지지만


지도학습을 하기전 데이터의 label을 찾기위한 전처리의 단계로 사용하기도 한다

Reinforcement Learning (강화 학습)

흔히들 인공지능 하면 알파고를 많이 떠올리는데 알파고가 대표적인 강화학습의 예이다


강화학습은 잘했을 경우 상을 주고 잘못한 경우 벌을 주는 형식을 반복함으로써


기계가 상을 최대화하고 벌을 최소화하도록 하여 최선의 성능을 찾는 방식이다


가장 유명한 것이 게임의 인공지능이다 앞서 말한 알파고 뿐만 아니라


스타크래프트에서도 많고 체스 같은 경우는 이미 한참 전에 인간의 경지를 넘기도 했다

'Deep Learning' 카테고리의 다른 글

Linear Regression (2)  (0) 2020.02.03
(확률) MLE & MAP  (0) 2020.02.02
Gradient Descent (2)  (0) 2020.02.02
Gradient Descent (1)  (0) 2020.02.02
Linear Regression (1)  (0) 2020.02.02

+ Recent posts