• 검색 결과가 없습니다.

딥러닝 라이브러리

문서에서 저작자표시 (페이지 34-37)

2. 분석 알고리즘 및 적용방안

2.2 딥러닝 알고리즘

2.2.3 딥러닝 라이브러리

본 논문에서는 딥러닝 알고리즘을 구현하기 위한 라이브러리로 Python 언어 기반의 ‘Keras’를 활용하였다. Keras는 딥러닝 모델을 위해 직관적인 API를 제공하고 있으며 내부적으로는 텐서플로우(Tensorflow), 티아노(Theano), CNTK 등의 딥러닝 전용 엔진이 구동되지만 사용자가 쉽게 접근할 수 있는 구조로 이루어져 있다. 케라스는 모듈화, 최소주의, 쉬운 확장성, Python 기반이라는 4가지 특징을 가지고 있다. 케라스에서 제공하는 모듈은 독립적으로 설정이 가능하며 최소한의 제약사항으로 서로 연결되어 있고, 각 모듈은 짧고 간결하여 사용하기 쉽다는 장점이 있다. 또한 새로운 클래스나 함수로 쉬운 모듈을 추가할 수 있으며 고급 연구에 필요한 다양한 표현이 가능하다.

Fig. 10 Structure of Keras library

케라스에서는 Fig. 10에서처럼 다양한 파라미터를 설정하여 딥러닝 모델을 구축할 수 있다. 모델을 학습하기 위해 가장 기본적으로 정의하는 파라미터는 Batch size와 Epoch가 있다. Batch size는 모델을 학습할 때 몇 개의 샘플로 가중치를 갱신할 것인지를 지정하는 값이고, Epoch는 모델의 학습 반복 횟수를 의미한다. 이 외에 모델을 학습하기 위한 활성화 함수를 지정하는 Activation Function과 과적합을 해결하기 위한 Dropout 설정, 그리고 Hidden layer의 수에

따라 다양한 딥러닝 모델을 구축할 수 있다.

딥러닝 모델을 구축할 때는 가장 중요한 것이 학습과정에서의 기울기 값과 과적합의 문제를 해결하는 것이다. 기본적으로 신경망의 구조에서 레이어의 값이 늘어날수록 역전파 과정에서의 기울기 값이 사라지는 문제가 발생하기 때문에 네트워크의 파라미터를 효과적으로 학습시킬 수 없게 되며 error rate가 낮아지지 못한 채 수렴해버리는 문제가 발생하게 된다. 이를 해결하기 위해 activation function을 ReLU(Rectified Linear Unit)을 선택하였다. 기존에 많이 사용된 Sigmoid 함수는 값을 변형하면서 vanishing gradient 문제가 발생하게 되었는데 Fig. 11에서처럼 ReLU함수를 사용하게 되면 0보다 작을 때는 0을 사용하고 0보다 큰 값에 대해서는 해당 값을 그대로 사용하기 때문에 기존의 문제를 해결할 수 있으며 계단이 단순해져 학습이 빠르다는 장점이 있다.

Fig. 11 Neural network activation function (ReLU)

regularization을 통해 가중치를 설정하는 방법이 있다. 가장 대표적인 방법이 dropout(Fig. 12)이 있다. dropout은 전체 weight의 값을 학습에 참여시키지 않고 무작위로 hidden layer에 있는 unit을 없애고 학습하는 방법이다. 너무 많은 weight가 오히려 학습을 방해할 수 있으며 일부만 사용해도 균형 잡힌 결과를 도출할 수 있는 것으로 판단되어 딥러닝에서 많이 활용되는 방법이다.

Fig. 12 Dropout (Regularization Method)

이러한 다양한 방법들을 활용하여 딥러닝 라이브러리를 이용한 모델을 구축하고자 하며 다양한 파라미터를 정의한 모델의 평가를 통해 가장 유의미한 예측모델을 갖는 설정값을 찾고자 한다.

문서에서 저작자표시 (페이지 34-37)

관련 문서