tensorflow 설치 및 버전 확인
pip install -q tensorflow==2.0.0-beta1
import tensorflow as tf
print(tf.__version__)
keras fashion_mnist data load
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat','Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
normalization data
train_images = train_images / 255.0
test_images = test_images / 255.0
Deep Learning
DNN
CNN
RNN
GAN
분류: 사람이 분류해야 한다.
기준을 찾는 것이 목적이다.
조정 값 = 오차 * 입력값 * 학습율
비용 함수는 모델을 구성하는 가중치(w)의 함수이다.
정답을 찾아가는 방향으로 한다.
경사 하강법(Gradient Descent)
수학에서 경사를 구하는 것 이 미분이다 . 경사 하강법을 구하는 것이다.
학습이 안되는 원인 2개는
1) 코드 가 잘못되거나 잘못 작성하거나
2) 데이터가 잘 못 됬다.
모든 데이터는 모두 오차가 있다.
실제값하고 차이가 날 수 밖에 없다.
코드를 통해서 데이터 전처리 했는데 오류때문에 숫자가 틀려지고
튜닝을 해야 한다. 어떤것 하면 좋은 값이 나오는지
신경명
퍼셉트론(Perceptron)
MLP(Multi Layer Perceptron)
입력과 출력 사이에 층이 더 있다. ->hidden layer
인공지능(AI; Artificial Intelligence)
머신러닝(ML; Machine Learning)
딥러닝(DL; Deep Learning)
딥런닝하려고 하는 것은 기존의 방법으로 안풀리기 때무에
딥런닝하고 머신러닝은 서로 보완하는 방법
딥런닝 : 자연어 처리 바둑 , 비전
역전파, 경사하강법
역전파(bp, back propagation) 알고리즘
경사하강법(gd, Gradient descent) 알고리즘
가중치를 업데이트 하기 위해 사용되는 알고리즘
tensorflow, keras,pytorch
pytorch최근에는 많이 사용한다.
딥러닝의 큰 단점
• 입출력 데이터 쌍을 구하기 어렵다.
• 특히 출력 데이터. 레이블링 데이터(labeling data)
비지도 학습, 강화 학습
• 레이블링 데이터 문제를 해결하기 위한.
• 비지도 학습 : 모델 구조를 통해 레이블링 데이터 없이. GAN
• 강화 학습 : 환경과 동적으로 연동하여 레이블링 데이터를 취득.
Cost Function 종류
• MSE(Mean Squared Error)
• CE(Cross Entropy)
• KL-Divergence
• MLE(Maximum Likelihood Estimation)
Optimizer 종류
cost function 이 있으면 이동하는 것
• 오차에 대하여 w를 업데이트 시키는 알고리즘들.
• GD(Gradient Descent)
• Batch GD
• Mini-Batch GD
• SGD(Stochastic GD)
• Momentum
• AdaGrad
• AdaDelta
• Adam
• RMSprop
Overfitting 방지법 종류
• DropOut
• BN(Batch Normalization)
• Regularization L1, L2
• Data Augmentation -> 데이터의 양을 많이 늘린다.
영상은 증강 시키는데 자연어 등 처리는 증가 시키는 것이 어렵다.
학습율
• 가중치가 변경되는 정도
활성화 함수 종류
SoftMax 최대 1 최소 0으로 하고 싶다. 합쳐서 1이다.
relu 기본인데
다른 것 사용하면 학습이 늦어진다. 뭐 사용해도 관계없지만 실습시간의 문제가 있다.
컴파일 : 모델 optimizer + loss
model.fit(X_train, y_train, epochs=1000, verbose=0, batch_size=20)
verbose = 0 직접 결과만 나온다.
verbose = 1 인 경우는 학습 과정이 나온다.
노드 개수와 레이어 개수는 optimizer , activation -> hypper parameter
architecture이 결정한다.
결론은 가이드가 없다.
그전에 grid search도 있었다.
그리드로 하는 것이다. 이것으로 해도 잘 안된다.
그래서 가이드가 없다.
값이 다른 것은 시작의 weigh가 다르다.
시작을 하면 메모리에서 값을 정한다. 데이터 초기화 하지 않아서
초기화 값이 다 달라서
seed는 데이터 섞을 때 seed
노드를 쭐이는 방향으로 한다.
'Study > Deep learning' 카테고리의 다른 글
딥러닝-3 (0) | 2020.11.26 |
---|---|
딥러닝-2 (0) | 2020.11.26 |