본문 바로가기

딥러닝
8. 최적화 Optimization 이 포스트는 Do it 딥러닝 교과서 (윤성진 저)를 참고하여 만들어졌음! 확률적 경사 하강법 (SGD)는 역전파 알고리즘이 탄생했던 1980년부터 사용되던 초창기 알고리즘이다. SGD는 weights update를 위해 하나의 sample만을 사용하므로 메모리 사용을 최소화 할 수 있고, 온라인 학습시 데이터가 추가될 때마다 모델을 update할 수 있다는 장점을 가진다. 하지만 학습 과정에서 발생하는 다양한 상황에 대처하기 어렵고 학습 속도가 느리다는 단점을 갖는다. SGD가 가진 문제점들에 대해 살펴보는 것을 시작으로 optimization에 대해 공부해본다. Learning rate Learning rate(학습률)은 optimization 과정에서 한 update step당 이동하는 step s..
7. 손실함수 Loss function 이 포스트는 Do it 딥러닝 교과서 (윤성진 저)를 참고하여 만들어졌음! 신경망 모델은 관측 데이터를 잘 설명하는 함수를 표현해야 한다. 모델이 표현하는 함수의 형태를 결정하는 것이 loss function이다. loss function은 모델이 관측 데이터를 잘 표현하도록 정의해야 한다. 손실함수는 모델이 Error minimization이 되도록 정의하거나 모델이 추정하는 관측 데이터의 확률이 최대화 되도록 maximum likelihood estimation (MLE) 방식으로 정의한다. Error minimization에서의 Loss function 정의 신경망 모델의 파라미터를 $\vec{\theta}$로 두고 데이터를 $D={(\vec{x}_i, t_i): i=1, \cdots, N}$로 둔..
6. 배치, 미니배치, SGD 이 포스트는 Do it 딥러닝 교과서 (윤성진 저)를 참고하여 만들어졌음! 이번에는 신경망을 학습할 때 데이터를 입력하는 단위에 대해서 알아본다. 크게 세 가지로 나눈다. 배치(batch) - 가지고있는 훈련 데이터셋을 한 번에 전부 모델에 입력하는 방식. 비교적 입력 데이터 수가 적은 머신러닝의 경우 배치 방식이 가능할 수도 있지만, 무수한 양의 파라미터를 학습시키기 위해 다량의 데이터를 요구하는 딥러닝의 경우에는 배치 방식을 사용하면 메모리가 터지고 학습 시간이 매우 오래걸린다. 또한 온라인 학습처럼 학습함과 동시에 서비스를 제공하여야 하는 경우에는 데이터가 지속적으로 추가되고 그에 맞추어 즉시 결과를 산출해야 하므로 배치 방식이 사용이 불가능하다. 미니 배치(Mini-batch) - 배치 방식이 딥..
5. 경사하강법, 역전파 알고리즘 이 포스트는 Do it 딥러닝 교과서 (윤성진 저)를 참고하여 만들어졌음! 신경망의 학습 목표 신경망의 학습 목표는 loss function의 값을 최소화 하는 것이다. loss는 신경망이 내놓은 예측값과 target 값의 차이로 주어지기 때문에 신경망의 weights를 변경해가면서 해당 모델이 target을 잘 맞출 수 있도록 해야한다. 위 그림의 x축을 weights, y축을 loss라고 생각하면 우리는 모델의 weights를 잘 변경해가면서 최대한 global minimum에 가까운 loss값을 가지도록 하는 것이 최종 목표가 되는 것이다. weight vector의 차원이 낮다면 단순 미분으로 global minimum을 찾는것이 가능하다. 하지만 deep learning의 파라미터 개수는 어마무..
4. 시그모이드와 크로스엔트로피, 양수출력문제, 죽은 ReLU Sigmoid와 Cross Entropy Loss의 관계 일반적으로 딥러닝을 이용하여 이진분류 문제를 해결할 때 출력의 마지막 단에 Sigmoid layer를 추가하고, 그 다음 Cross entropy loss 함수를 적용한다. Backpropagation은 Loss function을 시작으로 network를 순차적으로 미분하는 과정이다. 그렇다면 끝에서 두 번째 layer인 Sigmoid도 어쨌거나 미분의 대상이 된다. 하지만 전 게시글에서 알아보았듯이 Sigmoid는 지수형태로 주어지므로 Sigmoid의 입력값의 절댓값이 클 때 Gradient가 0에 가까워지는 Gradient saturation이 발생한다. 따라서 Activation function으로 sigmoid를 사용하는 것은 적절치 못한데..
Optuna document 읽어보기 모델 성능 향상을 위해 optuna 쓸 일이 제법 있었는데 이제껏 공식 document를 읽어본 적이 없었다. 그저 구글링으로 코드 짜맞추기를 했을 뿐 그래서 오늘은 autoML 기법 중 하나인 optuna의 document를 읽어보고 이해한 내용을 작성할 것이다. Optuna란? 2019년 타쿠야 아키바 등에 의해 개발된 하이퍼파라미터 최적화 라이브러리로 여러 종류의 sampler를 제공한다. Grid, random search에 비해 월등히 빠른 탐색속도를 가지며 머신러닝 뿐 아니라 딥러닝(TF, Pytorch)에도 유연하게 적용 가능하다. 간단 동작원리 Optuna tutorial에 나와있는 대로 아주 기본적인 예제를 통해 optuna의 기능을 익혀보고자 한다. !pip install optuna ..
3. 활성화 함수 (Activation function) 이 포스트는 Do it 딥러닝 교과서 (윤성진 저)를 참고하여 만들어졌음! 이번에는 Activation functions(활성화 함수)에 대해서 알아본다. 계단함수 (step function) $f(x) = \begin{cases}1, & \text{if } x \geq 0 \\0, & \text{otherwise} \end{cases}$ Step function은 딥러닝 개발 극 초창기 퍼셉트론에서 사용되었다고 한다. 하지만 현대 딥러닝에서는 사용이 불가능한 방식이다. 역전파가 개발된 이후에는 역전파 알고리즘을 사용하기 위해 반드시 미분가능한 함수만을 사용하여야 하는데 계단함수는 모든 구간에서 기울기가 0인 함수이기 때문이다. 시그모이드 (Sigmoid) $f(x)=\frac{1}{1+e^{-x}}$ ..
2. 분류와 회귀 이 포스트는 Do it 딥러닝 교과서 (윤성진 저)를 참고하여 만들어졌음! 분류 (Classification) 분류는 데이터가 입력되었을 때 해당 데이터의 클래스를 예측하는 문제이다. 분류되는 클래스의 개수가 2개일 때는 특별히 이진 분류(binary classification), 3개 이상일 때는 다중 분류(multiclass classification)라고 부른다. 분류모델의 출력 결과는 특정 클래스의 이름 혹은 확률로 표현될 수 있다. 전자의 경우 모델이 산출한 값 중 가장 큰 인덱스의 클래스를 최종 클래스로 예측하는 것이다. 후자의 경우는 모델이 산출한 값에 sigmoid(이진분류) 혹은 softmax(다중분류)를 취하여 해당 데이터가 가능한 클래스들에 속할 확률을 표현한다. 산출값이 가장 높은 ..