Epoch / Batch Size / Iteration?
Epoch : 전체 학습 데이터를 1회 학습 완료 했을 때 1 Epoch이라고 한다.
> 높은 Epoch수는 동일 학습 데이터를 여러번 학습 시키는 것이므로 Overfitting이 일어날 가능성이 있으며 반대는 Undefitting이 일어나기 쉽다.
Batch Size : 1번에 학습 시키는 데이터의 수, Batch Size가 20이면 20개의 데이터를 한 번에 학습시킨다.
> 1 Batch Size만큼 학습을 시키기 위한 Loss나, Back Propagation 등이 일어나므로 Batch Size를 작게 잡으면 학습은 빠르게 일어날 수 있지만 부정확한 학습을 할 수 있음 : Outlier들을 다른 샘플 데이터들과 함께 학습시키지 않고 개별 Propagation 시키는 일들이 많이 발생할 것이므로.
> 가용 메모리가 적고, 학습을 빠르게 시켜야 한다 : Batch Size를 상대적으로 작게
> 가용 메모리가 크고, 학습의 안정화를 시켜야 한다 : Batch Size를 상대적으로 크게
Iteration : 1 Epoch Data / Batch Size
> 2000개의 Data, 20의 Batch Size라면 100 Iteration
Generalization / Regularization / Standardization / Normalization?
Generalization
- 한정된 정보로 세상에 편견을 가지는 것을 막기 위함.
- 딥러닝이나 머신 러닝은 한정된 데이터(샘플 데이터)로 학습하여 똑똑한 모델(기계)를 만드는 것이 목표. 한정된 데이터가 학습하려는 대상의 특징을 적절히 반영하고 있다면 다행이지만 그렇지 않은 경우가 많음.(Outlier들을 포함).
- 데이터의 양을 늘리는 것이 제일 좋은 방법이지만 양질의 데이터를 구하기 쉽지 않고 / 학습 시간이 오래 걸림.
- 이런 Generalization을 하기 위해 다양한 방식(ex Regularization)을 도입함.
Regularization : Overfitting을 막는 방법(= Generalization 시키기 위함)
- 기계학습의 방향은 Cost Function이나 Error Function이 작아지는 방향.
- 하지만 단순히 최대한 작은 Error를 만들기 위해서 Error Function을 Sample Data에 딱 맞게 구한다면 Overfitting이 발생하며, Outlier들까지 케어 하기 위해 특정 Weight값이 커지는 현상이 발생한다.
- 이렇게 특정 Weight값이 너무 커지는 것을 방지하기 위해 Cost Function을 변화시켜 Weight값이 작아지는 방향(weight decay)으로 학습 시키도록 한다.
> L1 Regularization / L2 Regularization
L1 : Cost function 뒤에 1차항을 붙여 Weight에 대한 편미분식이 W를 감소 시키도록 만듬.
- 상수단위로 작아지기 때문에 중요한 Weight 값 말고는 0에 가까이 감. 몇개의 의미있는 값을 끌어내기 위해서는 이를 선택.
L2 : Cost function 뒤에 2차항을 붙여 편미분 식이 W를 감소 시키도록 만듬
Feature Scaling (Normalization, Standardization)
Data Normalization혹은 Feature Scaling으로 불리는 이 작업은 변수의 범위를 일정하게 하여 비교 가능하게 하고, Outlier들의 값들을 상쇄 시켜 주는 역할을 한다.
Standardization : 변수에서 평균을 빼고 표준편차로 나누는 것. 속성들을 같은 분포를 따를 수 있도록 해 줌.
Normalization : 아래와 같이 변수의 범위를 0~1로 제한 시키는 방식이나 log를 취해 값을 줄이는 방식등이 있다.
Loss function의 종류
1. 평균 제곱 오차 ( MSE : Mean Squared Error )
(Yk는 실제 값, Tk는 신경망에서 내놓은 분류 결과)
2. 교차 엔트로피 에러 ( CEE : Cross- Entropy Error )
예측이 틀렸을 경우 - tk[1,0,0] / yk[0,1,0] 일 경우 : inifinity
예측이 정확히 맞았을 경우 - tk[1,0,0] / yk [1,0,0] 일 경우 : 0
Supervised Learning / Unsupervised Learning / Reinforcement Learning
Supervised Learning(지도학습)?
Labeled Data로 학습하는 방식.
> CNN, RNN등을 활용, Continuous 할 땐 Regression / Discrete할 땐 Classification
Unsupervised Learning(비지도학습)?
Unlabeled Data로 학습하는 방식.
> Clustering, AutoEncoder
Reinforcement Learning(강화학습)?
에이전트(Agent)가 주어진 상황(State)에서 특정 행동(Action)을 하고 보상(Reward)을 받으며 학습하는 방식. 에이전트가 최대의 보상(Max Reward)을 받을 수 있도록 학습한다.
> Q - Learning, Deep-Q-Network
BackPropagation, Gradient Descent
Backpropagation
딥러닝에서 오차를 줄이기 위해서 Weight값과 Bias값을 조정해야 하는데, BackPropagation은 결과값을 통해 조절되어져야 할 Weight값을 각 weight로 전달하는 과정이라 볼 수 있다.
Gradient Descent
이 오차를 줄이기 위해 w는 각각 얼마나 어떤 방향으로 조절되어야 하는가? 이걸 오차 함수의 기울기(=Gradient)로 판단하고 이 Gradient만큼 이동하는걸 Gradient Descent라고 한다.
Neural Network의 기본 이해
참고한 비디오 : https://www.youtube.com/watch?v=aircAruvnKk
AI의 Hello World인 MNIST데이터를 기본으로 정리하자.
[Neural Network] Neuron + Network
Neuron : Things that hold a number ( 0.0~1.0의 수를 담는 공간, 0.37 같은 해당 숫자는 Activation이라 부른다. )입력레이어 - 히든 레이어 - 출력 레이어로 구성된다.
Input Layer는 28X28 픽셀의 밝기값을 벡터에 담아 펼친 값
- MNIST데이터는 28*28 의 픽셀로 이뤄진 이미지 데이터이므로, 첫 레이어를 784로 잡는다.
- 연결 : 이를 다음 레이어에 연결할 때 Weight를 곱하고 Bias를 더해 다음 출력값을 연결한다.
EX) H1 = (W1)X(I1) + bias1 + (W2)(I2) + Bias2 + ..... (W784)(I784) + Bias 784
Hidden Layer : 임의의 값으로 히든 레이어를 둘 수 있고, 히든 레이어의 뉴런의 개수도 임의로 둘 수 있다.
Output Layer : 우리의 목적이 0~9의 손글씨 데이터를 구별해 내는 것이므로 0~9까지 10개의 output레이어를 둔다. 각각의 Output 값은 손글씨 데이터가 해당 숫자일 확률을 나타낸다.
뉴럴네트워크에서 우리가 학습해야 하는 것?
Weight와 Bias의 값.
어떻게 학습할 수 있는지?
Gradient Decent / BackPropagation
'Developer > Artificial Intelligence' 카테고리의 다른 글
Generative Adversarial Network 기초 정리하기 (0) | 2020.03.16 |
---|