딥러닝 모델 구성요소
- 가중치(weight): 노드간의 연결 강도
- Node/Unit: 각 층을 구성하는 요소
- Layer: 모델을 구성하는 층
순전파: 입력값을 바탕으로 출력값 계산하는 과정
loss function을 최소화하는 가중치 가져야함. 이를 최적화 시키는 방법 => Gradient Descent
Gradient Descent(경사하강법)
: 가중치를 Loss Function 값이 작아지게 업데이트 하는 방법
: Gradient(미분) 값을 사용해 업데이트를 수행
: Gradient 값은 각 가중치마다 정해지고 Backpropagation(역전파)을 통해 구할 수 있음
- Backpropagation: Forward Propagation(순전파)의 반대 방향
- 딥러닝 모델의 학습 순서
1. 학습용 feature 데이터를 입력하여 예측값 구하기(순전파)
2. 예측값과 실제값 사이의 오차 구하기(Loss 계산)
3. Loss를 줄일 수 있는 가중치 업데이트(역전파)
4. 1~3반복하여 Loss를 최소로 하는 가중치 얻는다.
TensorFlow
: 딥러닝 프레임워크, 다양한 디바이스(클러스터 컴퓨터 ~ 스마트폰)에서 동작가능
딥러닝 모델 구현 순서
1. 데이터 전처리
- Tensorflow 딥러닝 모델은 Tensor 형태의 데이터를 입력 받음
- Tensor: 다채원 배열로서 tensorflow에서 사용하는 객체
- 데이터 -> Tensor형태로 변환 -> Tensorflow 딥러닝 모델
tf.data.Dataset
- tf.data.Dataset.from_tensor_slices((feature.values, labels.values))
Epoch, Batch
- Dataset을 한 번에 넣는 것이 아님, Batch size(mini-batch)로 쪼갬
- Epoch: 전체 데이터 셋에 대해 한 번 학습을 완료한 상태
- Batch: 나누어진 데이터 셋(mini-batch)
- iteration: epoch을 나누어 실행하는 횟수
ex) 총 데이터 1000개, Batch size: 100개
1 iteration = 100개 데이터에 대해 학습
1 epoch = 1000 / batch size = 10 iteration
tf.data.Dataset.from_tensor_slices(feature.values, label.values))
dataset = dataset.batch(32) # batch size를 32로 설정
2. 딥러닝 모델 구축
- Keras: 텐서플로우의 패키지로 제공되는 고수준 API, 딥러닝 모델을 간단하고 빠르게 구현
- 모델 클래스 객체 생성: tf.keras.models.Sequential() # 괄호안 Layer 추가
Input Layer의 입력 형태 지정
: 맨 처음 Hidden Layer는 Input Layer의 입력 형태에 대한 정보가 필요함
--> input_shape / input_dim을 설정한다.
ex) model = tf.keras.models.Sequential([tf.keras.layers.Dense(10, input_dim=2, activation='sigmoid')]) # 2개의 입력변수, 10개의 노드
ex) model = tf.keras.models.Sequential([tf.keras.layers.Dense(10, input_shape=(3, )) # 입력 변수 3개
ex) model = tf.keras.models.Sequential([tf.keras.layers.Dense(10, input_dim=3) # 입력 변수 3개
모델의 각 Layer 구성: tf.keras.layers.Dense(units, activation) # units: 레이어 안의 Node수, activation: 적용할 activation 함수 설정(sigmoid, ReLu)
Model에 Layer 추가
ex) model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(10, input_dim=2, activation='sigmoid'))
3. 모델 학습
모델 학습 방식을 설정위한 함수
model.compile(optimizer, loss) # optimizer(최적화 방법) = Adam, sgd / loss(손실 함수 설정, (실제 - 예측)^2 등)
ex) MSE, SGD 사용
model.compile(loss='mean_squared_error', optimizer='SGD')
model.fit(dataset, epochs=100)
4. 평가 및 예측
모델을 평가하기 위한 메소드
model.evaluate(x,y) # x는 test data, y는 test data의 label
ex) model.evaluate(X_test, Y_test)
모델로 예측을 수행하기 위한 함수
model.predict(x) # 예측하고자 하는 데이터
ex) prediced_labels_test = model.predict(X_test)
'AI > Deep Learning' 카테고리의 다른 글
퍼셉트론은 무엇인가 (0) | 2022.09.17 |
---|