티스토리 뷰

1. 모델 구조(층) 생성:  Sequentail 또는 FunctionAPI

1) Sequentail: 모델이 단순하고 순차적인 구조가 필요한 경우

import tensorflow as tf

# 1: Sequentail
model = tf.keras.models.Sequentail([
	tf.keras.layers.Dense(64, activation='relu', input_dim=8), # 첫번째 노드
	tf.keras.layers.Dense(1, activation='sigmoid'), # 마지막 레이어는 항상 예측 결과(0과 1로 예측할거면 1)
])

 

2) FunctionAPI: 복잡한 구조(병렬/스킵, 연결, 다중 입력/출력)가 필요한 경우

import tensorflow as tf
# 2: FunctionAPI
input = tf.keras.layers.Input(shape=(8,))
X = tf.keras.layers.Dense(64, activation='relu')(input)
output = tf.keras.layers.Dense(1, activation='sigmoid')(X)

model = tf.keras.models.Model(inputs= input, outputs=output)

 

2. 모델 학습 관련 설정(최적화 함수, 손실함수, 평가지표): model.compile

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

 

1) Optimizer(최적화함수): 모델의 가중치 설정(손실 함수 최소화 역할), 주로 경사하강법에 기반한 알고리즘

- SGD(Stochastic Gradient Descent): 무작위로 일부 데이터를 사용해 기울기 계산

- Momentum: 이전 단계의 기울기를 가속도로 활용, SGD보다 빠르게 수렴하고 싶을때

- RMSProp: 학습률을 동적으로 조정, 각 방향의 기울기를 따로 조정해 진동 감소, RNN등 시계열 모델에 효과적

- adam(Adaptive Moment Estimation) : RMSProp와 Momentum의 장점을 결합, 기본적으로 가장 많이 사용

- adagrad: 희소한 특징에 적합, 학습률이 점점 줄어듦, 자연어처리나 희소데이터에 적합

 

2) Loss(손실함수): 모델 학습을 위한 가중치 최적화 목표, 모델이 얼마나 잘못된 예측을 하는지 측정

- 회귀 문제: MSE(평균제곱오차),  MAE(평균절대오차), Huber Loss

- 이진 분류: Binary Crossentropy

- 다중 클래스: Categorical Crossentropy(클래스가 원핫인코딩 된 경우), Sparse Categorical Crossentropy(원핫인코딩X)

- 확률 분포 간 차이 비교: KL Divergence

 

3) Metrics(평가지표): 학습 후 모델의 성능 측정

- 회귀: MSE< MAE, R-squared

- 분류: Accuracy, Precision, Recall, F1 score, ROC-AUC

- 시계열: MASE(Mean Absolute Scaled Error)  

 

3. 모델 학습: model.fit

model.fit(X_train, y_train, epochs=몇 번 학습시킬지)

- 주요 파라미터

1) epochs: 전체 데이터셋을 몇 번 반복해서 학습할지를 결정

* batch: 데이터를 나눠 학습하는 작은 단위

*epochs를 사용하는 이유: 초기 학습에서는 가중치가 랜덤으로 설정되어 있으므로 데이터의 패턴을 충분히 파악하지 못하지만, epoch이 진행될수록, 모델은 이전 epoch에서 학습한 정보를 바탕으로 데이터의 패턴을 점점 더 잘 학습한다.

너무 많이 반복하면 과적합이 발생할 수 있어서 EarlyStopping 등을 이용해 적절한 학습 횟수를 정해야 한다.

 

2) batch_size: 몇 개의 샘플 단위로 나눠서 학습할 지 설정, 미니배치 경사하강법

- 큰 데이터셋에서는 데이터 전체를 한번에 학습 할 경우 메모리 부족 문제 발생 가능

 

3) callbacks: 학습 과정 중 특정 조건에서 실행될 작업(콜백 함수)를 설정

- EarlyStopping: 학습 중 검증 손실이 개선되지 않으면 조기 종료

- ModelCheckpoint: 학습 중 가장 좋은 성능의 모델을 저장

- ReduceLROnPlateau: 검증 성능이 개선되지 않으면 학습률을 줄임

 

4) validation_data: 별도의 검증 데이터셋이 있을때

5) validation_split: 별도의 검증 데이터셋이 없지만 검증하고 싶을때

 

6) shuffle: 학습 데이터의 순서를 랜덤으로 섞을지 여부(시계열의 경우 섞지 말아야 한다)

 

4. 예측 및 평가

#평가
loss, accuracy = model.evaluate(X_test, y_test)

# 예측
prediction = model.predict(new_data)

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함