Machine Learning Basic
Machine Learning
Experience E, task T, performance measure P.
어떤 T에 대해서 E를 통해 P를 향상시킨다.
E, T, P를 명확히 하고 시작해야한다.
축구를 예로 들면,
T: 게임 이기기, P: 골의 수, E: 패스, 움직임, 수비 등등..
Classification:
결과가 불연속하다. 손글씨 인식하는 것 등등. 어떤 사진에 대해서 그게 어떤 숫자인 지를 알아낸다. 0~9중에서니까 discrete한 결과이다.
이건 0-1 loss function을 쓴다. 맞으면 1 틀리면 0.
레이블된 데이터를 준다. 어떤 그림에 대해 그게 어떤 숫자인지를 알려줘서 학습시킨다.
Regression:
결과가 연속적이다. 회귀.
이때는 L2 loss function을 쓴다. 실제랑 얼마나 떨어졌는지를 계산해서 그걸 최소로 시키는 것이다.
이때도 x가 뭐일 때 y는 뭐가 돼야돼라는 걸 알려줘서 학습시킨다. 그래서 새로운 x에 대해서도 y를 나타낼 수 있도록.
Clustering: 레이블이 아예 없는 경우.
이렇게 레이블이 없는 경우는 unsupervised. 위에 두개는 supervised이다.
이것도 L2 loss function을 쓸 수 있다.
이건 레이블된 데이터가 없다. 그냥 데이터들이 주어지고 그걸 어떤 기준으로 뭉텅이로 모으는 것.
줄이고자 하는 거를 objective function 혹은 cost function이라고 한다.
Gradient descent method: 이 cost function이 주는 방향으로 계속 이동한다. 어떤 임의의 지점에서 시작해서 cost function이 줄어드는 방향으로 이동하다가 다시 증가하면 그만둔다. 그런데 이게 적용되지 않는 경우가 있다. Local minimum만 찾을 수 있다. Local minima problem.
데이터를 모아왔으면 어떤 모델을 적용해야할 지가 중요하다. 나이에 따른 운동능력을 분석한다고 할 때 선형모델을 적용하면 좋은 계산을 못할 것이다. 나이가 들수록 다시 감소할테니까. 오히려 2차 함수 모델을 사용하는 것이 나을 것이다.
내가 받은 데이터만 잘 설명하는 건 쉽다. 그런데 그렇게 하면 overfitting이 된다. 없는 데이터를 예측하는 모델을 만드는 것이 어렵다.
너무 복잡한 모델을 적용하면 미래 예측이 어렵다. overfitting된다. 100차함수를 사용하는 등.
Bias - Variance
Overfitting될수록 variance가 커진다. 왜냐면 이 set이랑 다른 set이랑 비교했을 때 overfitting이면 둘 모델의 차이가 클테니까. 그냥 직선 하나면 variance가 적다. 대신 bias는 크다.
bias와 variance는 trade-off가 있다.
bias와 variance의 합이 최소일 때를 찾는 것이 목표이다. bias의 최소만 찾는 거 아니다.
Regularization
너무 복잡한 모델을 피하기 위한 방법.
cost function에 regularization term을 둔다. 즉, (에러제곱) + (weight의 제곱의 합)을 추가해줘서 모델이 weight도 줄여주도록 만든다. weight가 크고 많을수록 차수가 높다는 의미가 될 테니까. 처음에 100차함수로 시작을 해도 이렇게 cost function을 만들면 나중에는 낮은 차수로 최적화 될 수 있다.
이게 없으면 계속 트레이닝 할수록 에러는 줄어들지만 모델이 복잡해진다.
Validation set도 만들어서 한다. 데이터가 100개가 있으면 70개에 대해서만 학습을 시키고 validation set으로 테스트를 한다. 그래서 training set에 대해서 학습시키면서 validation set에 대한 에러가 최소가 되는 지점까지만 학습시킨다. training set에 대해서는 에러가 계속 줄어들테니까 validation set을 둠으로써 정지할 시점을 판단할 수 있다. 오버피팅 방지.
Nonparametric Model
Gaussian Process Regression: regression에 쓰인다.
Support Vector Machine: classification에 쓰인다.
kernel function: original space에서 처리하지 않고 다른 차원의 space로 옮겨줘서 하면 더 효율적일 때가 있다. 이렇게 옮겨주는 게 kernel function.
차원을 낮추는 게 좋을 때도 있다. 예를 들어 뛰는 걸 측정하려고 몸에 센서를 100개 단다. 그러면 100차원의 데이터가 들어온다. 그래서 아예 차원을 줄여버린다.
어떤 2차원 운동을 관찰하는데 카메라가 10개가 사용됐다. 이럴 때도 차원 줄여주면 좋다.
원래의 고차원에서 가장 밀집돼있는 principle axis를 찾은 뒤 그 axis 밖에 있는 것들도 다 거기에 매칭시킨다.
SVM
두개의 class를 구분하는 가장 좋은 선을 찾는다.
직선으로 나눠지지 않을 때, kernel function을 이용해서 3차원으로 이동시키 뒤 분류한다.
GPR
데이터가 많지 않을 때 사용한다. 데이터가 많아지면 처리를 못한다. 따라서 빅데이터에는 잘 못쓴다.
딥러닝
shallow learning: input -> output 끝
딥러닝: input -> 2nd representation -> 3rd representation -> ... -> Nth representation -> output
Experience E, task T, performance measure P.
어떤 T에 대해서 E를 통해 P를 향상시킨다.
E, T, P를 명확히 하고 시작해야한다.
축구를 예로 들면,
T: 게임 이기기, P: 골의 수, E: 패스, 움직임, 수비 등등..
Classification:
결과가 불연속하다. 손글씨 인식하는 것 등등. 어떤 사진에 대해서 그게 어떤 숫자인 지를 알아낸다. 0~9중에서니까 discrete한 결과이다.
이건 0-1 loss function을 쓴다. 맞으면 1 틀리면 0.
레이블된 데이터를 준다. 어떤 그림에 대해 그게 어떤 숫자인지를 알려줘서 학습시킨다.
Regression:
결과가 연속적이다. 회귀.
이때는 L2 loss function을 쓴다. 실제랑 얼마나 떨어졌는지를 계산해서 그걸 최소로 시키는 것이다.
이때도 x가 뭐일 때 y는 뭐가 돼야돼라는 걸 알려줘서 학습시킨다. 그래서 새로운 x에 대해서도 y를 나타낼 수 있도록.
Clustering: 레이블이 아예 없는 경우.
이렇게 레이블이 없는 경우는 unsupervised. 위에 두개는 supervised이다.
이것도 L2 loss function을 쓸 수 있다.
이건 레이블된 데이터가 없다. 그냥 데이터들이 주어지고 그걸 어떤 기준으로 뭉텅이로 모으는 것.
줄이고자 하는 거를 objective function 혹은 cost function이라고 한다.
Gradient descent method: 이 cost function이 주는 방향으로 계속 이동한다. 어떤 임의의 지점에서 시작해서 cost function이 줄어드는 방향으로 이동하다가 다시 증가하면 그만둔다. 그런데 이게 적용되지 않는 경우가 있다. Local minimum만 찾을 수 있다. Local minima problem.
데이터를 모아왔으면 어떤 모델을 적용해야할 지가 중요하다. 나이에 따른 운동능력을 분석한다고 할 때 선형모델을 적용하면 좋은 계산을 못할 것이다. 나이가 들수록 다시 감소할테니까. 오히려 2차 함수 모델을 사용하는 것이 나을 것이다.
내가 받은 데이터만 잘 설명하는 건 쉽다. 그런데 그렇게 하면 overfitting이 된다. 없는 데이터를 예측하는 모델을 만드는 것이 어렵다.
너무 복잡한 모델을 적용하면 미래 예측이 어렵다. overfitting된다. 100차함수를 사용하는 등.
Bias - Variance
Overfitting될수록 variance가 커진다. 왜냐면 이 set이랑 다른 set이랑 비교했을 때 overfitting이면 둘 모델의 차이가 클테니까. 그냥 직선 하나면 variance가 적다. 대신 bias는 크다.
bias와 variance는 trade-off가 있다.
bias와 variance의 합이 최소일 때를 찾는 것이 목표이다. bias의 최소만 찾는 거 아니다.
Regularization
너무 복잡한 모델을 피하기 위한 방법.
cost function에 regularization term을 둔다. 즉, (에러제곱) + (weight의 제곱의 합)을 추가해줘서 모델이 weight도 줄여주도록 만든다. weight가 크고 많을수록 차수가 높다는 의미가 될 테니까. 처음에 100차함수로 시작을 해도 이렇게 cost function을 만들면 나중에는 낮은 차수로 최적화 될 수 있다.
이게 없으면 계속 트레이닝 할수록 에러는 줄어들지만 모델이 복잡해진다.
Validation set도 만들어서 한다. 데이터가 100개가 있으면 70개에 대해서만 학습을 시키고 validation set으로 테스트를 한다. 그래서 training set에 대해서 학습시키면서 validation set에 대한 에러가 최소가 되는 지점까지만 학습시킨다. training set에 대해서는 에러가 계속 줄어들테니까 validation set을 둠으로써 정지할 시점을 판단할 수 있다. 오버피팅 방지.
Nonparametric Model
Gaussian Process Regression: regression에 쓰인다.
Support Vector Machine: classification에 쓰인다.
kernel function: original space에서 처리하지 않고 다른 차원의 space로 옮겨줘서 하면 더 효율적일 때가 있다. 이렇게 옮겨주는 게 kernel function.
차원을 낮추는 게 좋을 때도 있다. 예를 들어 뛰는 걸 측정하려고 몸에 센서를 100개 단다. 그러면 100차원의 데이터가 들어온다. 그래서 아예 차원을 줄여버린다.
어떤 2차원 운동을 관찰하는데 카메라가 10개가 사용됐다. 이럴 때도 차원 줄여주면 좋다.
원래의 고차원에서 가장 밀집돼있는 principle axis를 찾은 뒤 그 axis 밖에 있는 것들도 다 거기에 매칭시킨다.
SVM
두개의 class를 구분하는 가장 좋은 선을 찾는다.
직선으로 나눠지지 않을 때, kernel function을 이용해서 3차원으로 이동시키 뒤 분류한다.
GPR
데이터가 많지 않을 때 사용한다. 데이터가 많아지면 처리를 못한다. 따라서 빅데이터에는 잘 못쓴다.
딥러닝
shallow learning: input -> output 끝
딥러닝: input -> 2nd representation -> 3rd representation -> ... -> Nth representation -> output
댓글
댓글 쓰기