DeepLearning Part 2: 케라스를 이용한 딥러닝 구조 정의

케라스를 이용한 딥러닝 구조 정의

전체 학습 흐름도

모델 구성

  • Model : CNN 등, 특징을 뽑아내고, 예측을 하는 과정에 대한 정의 (함수와 비슷한의미?)
  • Layer : 모델은 레이어를 여러겹을 쌓아 올려서 만들어 진다. 여러층을 쌓았기 때문에 딥러닝이라고 함
    • Layer를 여러개를 사용하는 것은 다양한 피처들을 추출하기 위함이다.

[케라스모델 시작하기] https://keras.io/ko/getting-started/sequential-model-guide/

Feature Extraction Layers

1단계. Convolution Layer (합성곱): 특징 추출 연산

  • 특징 추출 이미지에 이미지필터 적용하는 연산이다.
  • 이미지 전처리 과정에서 픽셀별로 적용되는 이미지 전처리 필터를 의미함
  • 특징을 추출하는 과정

2단계. Pooling Layer : 이미지를 압축하는 과정

  • 32x32 > 16x16 등으로 축소하는 과정 ```
  • Max Pooling : 영역에서 가장 큰 값만 추출 ```
Fully Connected Layers

3단계. Fully Connected Layers

   * Dense : Just your regular densely-connected NN layer.
Layer에 적용되는 Activation Function (Or Layer)

Activation Function : 불필요한 값 제거 과정

   * ReLU : 음수값 제거 (음수는 0으로) 
   * Sigmoid :
   * Maxout :
   * SoftMax : 결과값을 전체 합이 1인 확률값으로 표현
Sample Code
from keras.models import Sequential
from keras.layers import Dense, Activation

model = Sequential([
    Dense(32, input_shape=(784,)),
    Activation('relu'),
    Dense(10),
    Activation('softmax'),
])

모델 컴파일 단계

  • Loss(Cost) Function : 훈련과정에서 실제값과 예측값의 차이를 정의하는 함수

  • Optimization : Loss를 줄이 수 있도록 모델을 업데이트해가는 과정 ```
    • Adam : Adaptive Moment Estimation
    • SGD : 확률적 경사 하강법(Stochastic Gradient Descent, SGD) 옵티마이저
    • RmsProp: ```
  • Metrics
    • 측정항목은 모델의 성능을 평가하는데 사용되는 함수입니다
    • Loss Function과 기능은 동일하지만, Matrics는 학습용으로 사용하지 않는다 ```
    • MAE : Mean Abs Error
    • MSE : Mean Square error ```
Sample Code
model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])

학습 과정

  • [케라스 모델 함수] https://keras.io/ko/models/sequential/
  • 하이퍼파라미터
    • 학습과정에서 사용자가 설정해주는 값들

    • Learning Rate : Cost를 낮추기 위해 파라미터를 조절하는 과정
    • Epoch : 같은 이미지를 몇번 반복해서 훈련시킬 것인가
    • Batch Size : 트레이닝시에 한번에 몇장의 이미지를 입력할 것인가
  • Overfiting : 과적합
# Train the model, iterating on the data in batches of 32 samples
model.fit(data, labels, epochs=10, batch_size=32)              

평가 & 예측

loss, mae, mse = model.evaluate(normed_test_data, test_labels, verbose=2)
print("테스트 세트의 평균 절대 오차: {:5.2f} MPG".format(mae))

test_predictions = model.predict(normed_test_data).flatten()

모델의 저장과 로딩


레퍼런스

[케라스 가이드] https://keras.io/ https://keras.io/ko

[옵티마이저에 대한 개념정의] http://shuuki4.github.io/deep%20learning/2016/05/20/Gradient-Descent-Algorithm-Overview.html

카테고리 > techCamp