728x90
반응형

 지금까지 Tensorflow를 사용해서 머신러닝을 사용하는 과정의 전반을 살펴보았다. 이 과정에서 꽤 빼먹은 내용이 많은데, 이번엔 천천히 모두 살펴보도록 하자.

 우리가 Tensorflow를 사용해서 머신러닝을 사용하긴 했지만, 실제 우리가 사용한 코드는 keras 코드였다. 이번 포스트에서는 왜 우리가 Keras를 사용하였고, 그로 인해 우리가 얻는 이익과 Keras의 작동 과정을 정리해보자.

 

 

 

Keras란?

1. 케라스의 특징

  • 케라스는 사용자 친화적이다. - 코드가 간결하여, 사용자가 익히기 쉽다.
  • 케라스는 모듈화가 쉽다.
  • 케라스는 다양한 딥러닝 백엔드 엔진을 지원하므로, 특정 생태계에 종속되지 않는다.
  • 케라스는 다중 GPU 연산과 학습의 분산처리를 지원한다.
  • 참고: keras.io/ko/why-use-keras/

1.1. 멀티 백엔드 케라스(Multibackend Keras)

  • 케라스(Keras)는 Tensorflow, CNTKm Theano 등 다양한 딥러닝 라이브러리를 선택하여 사용할 수 있다. 이를 멀티 백엔드 케라스(Multibackend Keras)라고 한다.
  • Keras는 벡엔드에 의존하여 연산하며, 벡엔드에 사용된 딥러닝 라이브러리의 장점을 사용할 수 있다.
  • 만약, Keras의 백엔드를 Tensorflow가 아닌 다른 라이브러리를 사용하고 싶다면, "참고"를 읽기 바란다.

1.2. Tensorflow와 케라스

  • 이전 포스트에서 Keras로 코드를 구현했지만, 우리 눈에 보이지 않는 내부에선 Tensorflow로 연산이 진행된 것이다.
  • Tensorflow는 1.x 버전까지 Tensorflow 함수를 사용하여 코드를 작성하였다. 머신러닝에 대한 이해도가 이미 높은 사람이라면, 큰 어려움 없이 사용할 수 있으나, 그렇지 않은 사람이 접근하기 어려웠다.
  • 그러나 Tensorflow 2.x부터 직관적으로 사용할 수 있는 Keras를 Tensorflow 내에서 제공하므로, Tensorflow의 사용 난이도가 크게 내려갔다.

 

 

 

 

2. 케라스의 작동 순서

  • 케라스는 모델(Model) 중심이다.
  • 케라스는 기본 모델(Sequential 모델 등)을 생성하고, 레이어를 쌓아 모델을 생성한다.
  • 케라스는 모델 생성부터 모델을 사용하는 모든 과정에 고유 API를 제공한다.
  • 즉, 케라스는 제대로 된 모델을 생성하고, 그 모델을 평가 및 관리하는데 최적화되어 있다.

2.0 데이터셋 생성

  • 머신러닝에 있어 아주 중요한 부분이지만, 케라스에서는 비중이 크지 않은 부분이다.
  • sklearn 같은 다른 머신러닝 라이브러리는 데이터 전처리에 관련된 다양한 API를 제공하지만, 케라스는 관련 API를 제공하지 않는다.
  • 데이터셋 생성 및 전처리는 sklearn이나, Numpy 등을 활용하길 바란다.

2.1. 모델 만들기

  • 선형 모델인 Sequantial model을 기본적으로 사용한다.
  • 좀 더 복잡한 모델이 필요한 경우 케라스 함수 API를 통해 모델을 만든다.
  • 다양한 layer를 추가하여, 입맛에 맞게 모델을 생성한다.

2.2 모델 학습 방법 설정

  • compile() 함수 사용
  • "optimizer: 최적화 함수, loss: 손실 함수, metric: 분류 시 기준" 설정

2.3. 모델 학습

  • fit() 함수 사용
  • 학습 시, 학습 단위(epochs, batch_size)나 검증 셋(validation) 등 설정

2.4. 학습과정 확인

  • fit() 함수 사용 시, 히스토리 객체가 반환되며, 다음과 같은 내용이 포함된다.
  1. loss: 매 에포크마다 훈련 손실 값
  2. acc: 매 에포크마다 훈련 정확도
  3. val_loss: 매 에포크마다 검증 손실 값
  4. val_acc: 매 에포크마다 검증 정확도
  • 해당 내용을 통해, 적합한 학습량을 설정할 수 있다.
  • 히스토리의 시각화나 콜백 함수, 텐서 보드를 사용하여, 학습 과정을 모니터링하며, 특정 조건을 만족 시, 학습이 끝나지 않았더라도 조기 종료할 수 있다.

2.5. 모델 평가

  • evaluate() 함수 사용
  • 시험 셋으로 학습이 끝난 모델 평가
  • 모델 평가가 evaluate() 함수만으로는 힘든 경우도 있으므로, 이 때는 이를 위한 알고리즘을 생성하길 바란다.
  • 하이퍼 파라미터 튜닝(Hyper Parameter Tuning)이 일어나는 부분이다.

2.6. 모델 사용

  • predict(): 모델 사용
  • save(): 모델 저장
  • load_model(): 모델 불러오기

 

 

 

 지금까지 Keras에 대한 기본 개념을 학습해보았다. 다음 포스트부터는 MNIST 데이터셋을 사용해 위 과정들을 천천히 그리고 상세히 살펴보도록 하겠다.

728x90
반응형

+ Recent posts