과제 해결을 위한 기본개념 정리 - 딥러닝 모델 만들기

2023. 4. 26. 12:29교외활동/데이터 크리에이터 캠프 2022

# 간단한 모델링
model = Sequential()
model.add(Dense(30, input_dim=17, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
  • 코드 설명
    1. model = Sequential()
      • model을 쉽게 만들기 위한 케라스에서 제공되는 함수
    2. model.add()
      • 층을 하나하나 만들어갈 수 있는 함수
    3. model.add(Dense(~~))
      • Dense를 통해 입출력층, 은닉층을 만들 수 있음
    4. Dense(30, input_dim=17, activation=’relu’)
      • 30은 만들 노드의 수
      • input_dim은 입력 데이터에서 몇개의 값을 가져올 것인지
      • activation은 활성화 함수를 어떤 것을 사용할지
        • 활성화 함수는 다음 층으로 값을 어떻게 넘길 것인지 결정하는 역할을 함
    5. Dense(1, activation=’sigmoid’)
      • 노드를 하나만 만든다는 것은 주로 출력층에서 이용
      • 최종 연산 시 사용할 활성화 함수는 시그모이드 함수
# 모델 컴파일
model.compile(loss='mean_squared_error', 
								optimizer='adam', metrics='accuracy')
  • 코드 설명
    • 모델이 효과적으로 구현될 수 있도록 여러가지 환경을 설정해주며 컴파일 하는 과정
    1. model.compile(~~)
      • 모델을 컴파일 하는 함수
    2. compile(loss=’’, optimizer=’’, metrics=’~~’)
      • loss는 오차함수를 설정해줌
      • 교차 엔트로피 계열 함수의 경우 출력값에 로그를 취해 오차가 커지면 수렴속도가 빨라지고, 오차가 작아지면 수렴속도가 감소하게끔 만들어줌
      • optimizer는 최적화 함수를 고르는 것
        • 최적화 함수란 오차를 최소한으로 줄여 원하는 값이 나오게끔 해주는 함수
      • metrics는 모델이 컴파일 될 때 모델 수행 결과를 나타내게끔 하는 것으로 정확도를 측정하기 위해 사용되는 테스트 샘플을 학습 과정에서 제외시킴으로써 과적합 문제를 방지할 수 있음

# 모델 실행하기
model.fit(X, Y, epochs=100, batch_size=10)
  • 코드 설명
    1. model.fit(~~)
      • 모델에 데이터를 넣어 학습시키는 코드
    2. fit(X, Y, epochs=~, batch_size~)
      • 학습할 속성(X)과 클래스 데이터셋(Y)를 입력해줌
      • epochs는 모든 샘플(instance, 행데이터)에 대해 한번 실행되는 것을 1 epoch라고 하며, 100 epochs는 각 샘플이 처음부터 끝까지 100번 이용하라는 의미
      • batch_size는 샘플을 한번에 얼마나 끊어서 넣을 것인지 정하는 것으로, 너무 크면 학습 속도가 느려지고, 너무 작으면 각 실행값의 편차가 생겨 전체 결과값이 불안정해질 수 있음
        • 컴퓨터 메모리가 감당할만큼 batch_size를 정해줘야 함
        • batch_size=10인 경우 샘플을 10개씩 끊어서 넣어주는 것