[모두를 위한 머신러닝/딥러닝] ML
홍콩과기대 김성훈 교수님의 '모두를 위한 머신러닝/딥러닝'
머신러닝 (ch1~7)
머신러닝이란?
- Field of study that gives computers the ability to learn without being explicitly programmed
개발자가 직접 어떻게 할지 정하는 것이 아니라 프로그램 자체가 데이터를 학습해서 뭔가를 배우게 하는 게 어떨까 하는 생각에서 시작
- supervised learning을 주로 설명 (label이 주어진 데이터로 학습)
Cost function
- loss function
- 실제값과 예측값 사이의 거리를 나타낸 함수
- 이 Cost function을 가장 작게 만드는 값을 구하는 것이 학습의 목표
- cost function을 가장 작게 만들어주는 값을 찾아가는 과정이 Gradient descent
Linear Regression
- $cost(W,b)= {1 \over m}{\sum_{i=1}^m (H(x^{(i)})-y^{(i)})^2}$
- 여기서 $H(x)$를 $H(x)=Wx$라고 하면
$cost(W,b)= {1 \over m}{\sum_{i=1}^2m (Wx^{(i)}-y^{(i)})^2}$ 로 cost function을 정의할 수 있음
(여기서 분모가 $2m$인 이유는 계산의 편의성을 위해서)
- cost function은 아래로 볼록한 함수 모양
- Gradient descent
$W:=W-{\alpha}{d \over dW}cost(W)$
- $\alpha$는 learning rate이고 이는 얼마나 줄여줄지를 결정
- ${d \over dW}cost(W)$는 어떤 점의 기울기
기울기가 +여도 앞의 부호가 -이기 때문에 $W$가 작은 쪽으로 이동하고
기울기가 -일 때도 앞의 - 부호가 있어서 +가 되니까 $W$가 더 큰 값으로 이동하니까 cost는 더 작은 쪽으로 이동
※multivariable linear regression일 때는 행렬로 만들어서 하면 됨
Logistic Regression (Binary classification)
- Regression은 어떤 숫자를 예측하는 것이지만 binary classification을 하고 싶을 때가 있음
- 먼저 y를 0과 1로 코딩 (ex. 성공:1, 실패:0)
- 우리가 그대로 이걸 regression으로 적용해서 0.5보다 크면 1이고 작으면 0으로 하자고 할 수 있지만
만약 $W$ 값으로 엄청 큰 수가 들어왔을 때 0과 1 사이의 값보다 훨씬 큰 수가 들어와서 기준이 달라질 수 있어서 다른 방법이 필요
- 그래서 logistic function(sigmoid function)을 이용
- Logistic Hypothesis
$H(X)={1 \over {1+e^{W^TX}}}$
하지만 이것을 cost function에 바로 사용은 못함. local minimum이 생길 수 있음 (logistic 함수가 linear하지 않기 때문)
- logistic을 위한 새로운 cost function
Multinomial classification
- a, b, c 세개로 분류해야 한다고 하면
- Softmax
: binary classification처럼 sigmoid 함수를 이용하면 예측값이 0과 1 사이 값으로 나오지 않음
우리가 원하는 y의 모양은 a,b,c 각각일 확률(0~1 사이로 표현, 각 확률 더해서 1)
→각 확률 중 가장 높은 것을 1로 만들고 나머지를 0으로 만들기 (One-hot encoding)
- Cross-Entropy cost function
Learning rate
보통 0.01로 시작해서 훈련시켜보고 조정한다.
Overshooting
- Learning rate가 너무 커서 튕기고 학습이 잘 이루어지지 않는 것
Small learning rate
- 오랜 시간이 걸리고 local minimum에서 훈련을 멈출 수 있다.
'Deep Learning > 딥러닝 기초' 카테고리의 다른 글
[패캠] Autoencoders (0) | 2021.12.14 |
---|---|
[패캠] Dimension Reduction (1) | 2021.11.03 |
[Hands-on-ml-2] 모델 평가 (0) | 2020.07.30 |
[hands-on-ml-2] 범주형 데이터 다루기 (0) | 2020.07.25 |
댓글