* 딥 러닝(Deep Learning)
1) DNN(Deep Neural Network)
- 인공신경망 모델 내 은닉층을 많이 늘려 학습의 결과를 향상시킨 방법
- 은닉층이 2개 이상인 학습 방법
- 컴퓨터가 스스로 분류레이블을 만들어 내고 공간을 왜곡하고 데이터를 구분짓는 과정 반복
- DNN을 응용한 알고리즘: CNN, RNN, LSTM, GRU
2) CNN(합성곱 신경망, Convoluntion Neural Network)
- 주로 이미지나 영상 데이터를 처리할 때 사용
- 기존의 방식: 데이터에서 지식을 추출하여 학습
- CNN: 데이터의 특징을 추출하여 특징들의 패턴을 파악하는 구조
- Convolution과정과 Pooling과정을 통해 진행
3) RNN(순환 신경망, Recurrent Neural Network)
- 반복적이고 순차적인 데이터(Sequential Data)학습에 특화된 인공신경망의 한 종류
- 내부의 순환구조를 이용하여 과거의 학습을 weight를 통해 현재 학습에 반영
- 현재의 학습과 과거의 학습의 연결을 가능하게 하고 시간에 종속된다는 특징 가짐
- 음성 웨이브폼 파악, 텍스트의 앞 뒤 성분을 파악할 때 주로 사용
* DNN 코딩하기
- 시작 전, 경고문 제거
1) 분류 예측
- 필요 패키지 불러오기(keras)
import keras
import tensorflow as tf
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.metrics import Accuracy
- 시드값 설정 (시작점)
np.random.seed(0)
tf.random.set_seed(0)
- 모형 생성
model = keras.models.Sequential()
model.add(keras.layers.Dense(64, input_dim = 7, activation = "relu"))
* 'input_dim = 7' : 7차원의 신경망
* 'activation = "relu"' : activation함수의 디폴트를 'relu'함수로 정하겠다
model.add(keras.layers.Dense(64, activation = "relu"))
model.add(keras.layers.Dense(1, activation = "sigmoid"))
- 모형 학습
model.compile(loss = "binary_crossentropy", optimizer = "adam", metrics = ["accuracy"])
* 'loss' : accuracy에 반대되는 개념
* 'optimizer' : 작은 오차를 가지는 지점을 찾아주는 장치
* 'adam' : 최적화 시켜주는 함수
history = model.fit(X_train, Y_train, validation_split = 0.2, epochs = 100, batch_size = 64, verbose = 2)
* 'epochs' : 시도 횟수 (-> 높일수록 계산이 느려짐)
* 'batch_size' : Dense와 같은 개념
* 'verbose' : 디폴트 값 = 2
- loss와 accuracy를 그려서 적정 epoch값 구해보기
- 구한 epoch값(20)을 넣어서 학습시키기
- Y 예측값, Y 예측클래스 도출
2) 회귀 예측
- 시드값 설정 (시작점)
np.random.seed(0)
tf.random.set_seed(0)
- 모형 생성
model = keras.models.Sequential()
model.add(keras.layers.Dense(64, input_dim = 4, activation = "relu"))
* 'input_dim = 4' : 4차원의 신경망
* 'activation = "relu"' : activation함수의 디폴트를 'relu'함수로 정하겠다
model.add(keras.layers.Dense(64, activation = "relu"))
model.add(keras.layers.Dense(64, activation = "relu"))
- 모형 학습
model.compile(loss = "mse", optimizer = "SGD")
* 'optimizer' : 작은 오차를 가지는 지점을 찾아주는 장치
* 'SGD' : 확률적 경사 하강법
Y_pred = np.round(model.predict(X_test[:5], verbose = 0), 3)
<사진, 자료 출처>
https://ebbnflow.tistory.com/119