본문 바로가기
딥러닝

딥러닝 이해 시작(1) - 딥러닝 과정

by pumkinni 2022. 6. 12.

딥러닝 이해 시작(1) - 딥러닝 과정

실습 코드를 사용하여 딥러닝의 과정에 대해 알아보기


실습 : 폐암 수술 환자의 생존율 예측하기

 주어진 폐암 수술 환자의 생존 여부 데이터는 총 470명의 환자의 17개의 정보를 정리한 것으로, 주어진 데이터에는 총 470개의 샘플이 각각 17개씩의 속성을 가지고 있다.
  • 속성(또는 feature, 독립변수) : 17개의 환자 정보
  • 샘플 : 가로 한 줄에 해당하는 각 환자의 정보
  • 클래스(종속변수) : 생존 여부

 전체 코드

# 딥러닝을 구동하는 데 필요한 케라스 함수를 불러옵니다.
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

# 필요한 라이브러리를 불러옵니다.
import numpy as np
import tensorflow as tf

# 실행할 때마다 같은 결과를 출력하기 위해 설정하는 부분입니다.
np.random.seed(3)
tf.random.set_seed(3)

# 준비된 수술 환자 데이터를 불러들입니다.
Data_set = np.loadtxt("./ThoraricSurgery.csv", delimiter=",")

# 환자의 기록과 수술 결과를 X와 Y로 구분하여 저장합니다.
X = Data_set[:, 0:17]
Y = Data_set[:, 17]

# 딥러닝 구조를 결정합니다(모델을 설정하고 실행하는 부분입니다).
model = Sequential()
model.add(Dense(30, input_dim=17, activation='relu'))  # 입력층 노드 17개
                                                       # 은닉층1 노드 30개
model.add(Dense(1, activation='sigmoid'))              # 출력층 노드 1개

# 딥러닝을 실행합니다.
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# 모델 학습
model.fit(X, Y, epochs=100, batch_size=10)

 

Sequential() 함수

model = Sequential()

 - Sequential( ) 함수를 선언하고 나서 model.add( ) 함수를 사용해 필요한 층을 차례로 추가

 

model.add( ) 함수

model.add(Dense(30, input_dim=17, activation='relu'))  # 입력층 노드 17개
                                                       # 은닉층1 노드 30개
model.add(Dense(1, activation='sigmoid'))              # 출력층 노드 1개

 - model.add( ) 함수를 이용해 두 개의 층을 쌓아 올림

  •  activation : 다음 층으로 어떻게 값을 넘길지 결정하는 부분
      ex) relu() 함수, sigmoid() 함수

 

compile( ) 함수 

# 딥러닝을 실행합니다.
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

 - compile()함수를 이용하여 앞서 지정한 모델이 효과적으로 구현될 수 있게 여러 가지 환경 설정 및 컴파일

  • 오차함수(loss) : 한 번 신경망이 실행될 때마다 오차 값을 추적하는 함수
  • 최적화(optimizer) : 오차를 어떻게 줄여 나갈지 정하는 함수

 

fit() 함수

# 모델 학습
model.fit(X, Y, epochs=100, batch_size=10)

- fit() 함수를 이용하여 모델 학습

  • 1 epoch : 학습 프로세스가 모든 샘플에 대해 한 번 실행되는 것
     위 코드에서 100 epoch이므로 각 샘플이 처음부터 끝까지 100번 재사용될 때까지 학습
  • batch_size : 샘플을 한 번에 몇 개씩 처리할지 정하는 부분
     batch_size=10은 전체 470개 샘플을 10개씩 끊어서 집어넣으라는 뜻
     batch_size가 너무 크면 학습 속도가 느려지고, 너무 작으면 각 실행값마다 편차가 생겨서 결과값이 불안정해짐
     (자신의 컴퓨터 메모리가 감당할 만큼의 batch_size를 설정해 주는 것이 좋음)

 

딥러닝 학습 과정

 - 입력값이 네트워크 층을 거치며 나온 예측값을 실제값과 비교해서 Loss score를 계산한 후에 Optimizer를 통해

     Weight를 업데이트 하는 과정