학습 추가 진행
train_data, test_Data로 나누어서 하기
model.fit()의 batch_size
batch_size는 GPU와 관련된 옵션이다.
한번에 GPU에 보내는 데이터의 수이다.
batch_size가 1일 경우 1개를 보내고, 1개의 결과를 받고, 1번 웨이트를 업데이트 한다.
batch_size가 10일 경우 10개를 보내고, 10개의 결과를 한 번에 받고, 1번 웨이트를 업데이트 한다.
batch_size를 키우면, 시간은 줄어들지만 학습이 빠르게 진행되지 않는다.
batch_size를 키우면, 시간은 줄어들지만 학습이 빠르게 진행되지 않는다.
loss가 떨어지는 추세라면 조금 더 학습해도
학습의 진행 판단 여부는 loss 추세를 보고 결정
test loss 그래프 기울기가 양으로 바뀔 시 overfitting 이므로 더 학습을 진행하면 안 됨
hooking : test loss가 어느 정도 발생하는지 스스로 추세 파악, overfitting이 발생할 시 스스로 멈춤
model fit
history = model.fit(X_train, y_train, epochs=1000, verbose=1, batch_size=20, validation_data=(X_test, y_test))
# 모델 핏 안에 들어가는 옵션, 핏하면서 validation은 test_x, test_y 데이터로
# (좌측은 train data, 우측은 test data)
따로 validation 데이터를 주지 않고, test 데이터로 준 것의 일부를 validation에 사용.
validation에 사용된 데이터는 학습에 사용되지 않는다.
history = model.fit(X_train, y_train, epochs=1000, verbose=0, batch_size=20, validation_split=0.1)
epoch가 적어도 데이터 수가 많으면 학습 잘된다.
epoch 수보다 데이터 수 많은 것이 더 중요
데이터 수가 적으면 overfitting 발생 가능성 (overfitting이 빨리 오면 성능이 안 좋음 - 학습은 되나 원하는 성능을 못 얻을 것)
->> 데이터 확보의 중요성
학습 시에 데이터를 섞어 주지 않으면 특정 데이터 순서로 학습이 일어나 편향이 생길 수있다.
shuffle=True
Normalization/Standardization
입력이 여러 차원일 때 각 차원의 입력을 동일한 스케일로 맞추어주면, 학습이 빠르게 진행된다고 한다.
· Normalization : 전체 데이터를 0~1로 변환해준다.
· Standardization : 평균을 0, 표준편차를 1이되도록 변환해 준다.
· 반드시 해야 할 것 : noramlization, 결측치 처리, outlier 처리
· 수렴 속도 차이 발생
Normalization - 데이터 정규화 한다.
Overfitting 처리
(오버피팅 완화)
- DropOut
- BatchNormalization
- Regularization
model.add(BatchNormalization())
Regression, 회귀
· 임의의 값 출력하도록.
classification, 분류
normolization을 하는게 좋다. 하지만 정확하게 하는 것이 좋다.
학습이 되며 0~1로 normalization했을 때 보다 살짝 빠르다
딥러닝 장단점
• 장점 : 대상 함수의 내부를 몰라도 된다.
• 단점 : 비싸다
많은 데이터, 많은 연산량
ML과 DL의 선택
• 기존의 방법으로 이미 풀린 문제는 ML
• 기존의 방법으로 못풀었는데 데이터가 있으면 DL
바둑, 얼굴인식, 물체인식, 음성인식, 번역
딥러닝의 큰 단점
• 입출력 데이터 쌍을 구하기 어렵다.
• 특히 출력 데이터. 레이블링 데이터(labeling data)
Cost Function 종류
• MSE(Mean Squared Error)
• CE(Cross Entropy)
• KL-Divergence
• MLE(Maximum Likelihood Estimation)
Optimizer 종류
• 오차에 대하여 w를 업데이트 시키는 알고리즘들.
• GD(Gradient Descent)
• Batch GD
• Mini-Batch GD
• SGD(Stochastic GD)
• Momentum
• AdaGrad
• AdaDelta
• Adam
• RMSprop
Overfitting 방지법 종류
• DropOut
• BN(Batch Normalization)
• Regularization
• Data Augmentation
학습율
가중치가 변경되는 정도
SoftMax
• activation function중의 하나.
• 최종 출력층에 사용되며, 여러개의 출력 노드의 합 중에 비중의 값으로 나타낸다.
Gradient Descent
• 함수가 학습될 바를 정의한 비용함수의 값이 최소로 하기 위해 가중치를 업데이트 하기 위한 알고리즘
BackPropagation 역전파
• 출력된 값과 원하는 값과의 차이를 가지고 그 전의 w 값들을 변경하는 알고리즘.
• 뒤에서부터 그 오차의 값이 전파된다는 이름.
• 실제 변경되는 값의 크기는 GD로 결정됨.
'Study > Deep learning' 카테고리의 다른 글
딥러닝-3 (0) | 2020.11.26 |
---|---|
딥러닝-1 (0) | 2020.11.23 |