All about Machine-Learning/논문 리뷰

(Review) On Decomposing a Deep Neural Network into Modules

ABSTRACT

① 딥러닝은 많은 최신 소프트웨어에 사용되고 있다.

② 일반적으로 DNN(Deep Neural Network)은 훈련 데이터를 이용해  신경망을 학습 시킨 후 예측에 사용한다.

③ 모델의 레이어를 관측할 수 있지만, 딥러닝 모델은 하나의 유기적인 요소로 다뤄진다.

④ 모델에 적용된 로직을 변경하기 위해서는 몇 가지 과정이 필요하다.

  ㉠ 학습 데이터의 변경 요구 : 어떤 로직을 추가/제거하기 위해서는 특정 클래스에 속한 훈련 데이터를 추가/제거해야 한다.

  ㉡ 모델의 재학습 요구: 모델이 변경된 학습 데이터를 다시 학습해야 하기 때문에 계산 리소스와 시간이 많이 요구된다.

⑤ 이 논문에서는 DNN 모델을 DNN 모듈로 분해하는 방법을 제안한다.

  ㉠ MNIST, EMNIST, FMNIST, KMNIST의 멀티 클래스 데이터를 활용해 DNN 모듈의 분해 방법을 살펴볼 것이다.

  ㉡ 재학습 없이 DNN 모듈을 교체로 새로운 DNN 모델을 만들 것이다.

INTRODUCTION

① 딥러닝 알고리즘은 변환 함수로 이루어진 다중 레이어를 사용해 입력을 출력으로 변환시킨다.

  ㉠ 입력 데이터는 각 레이어를 거쳐 더 높은 수준의 추상화를 학습하게 된다.

  ㉡ 딥러닝 알고리즘은 복잡하기 때문에 정확한 작동 과정에 대해서 파악하지는 못했지만, 상용 소프트웨어로 널리 활용되고 있다.

기존의 모델 교체

① 훈련된 모델을 구축하는 과정은 다음과 같다.

  ㉠ 재학습

    ⓐ 필요한 데이터셋를 가져온다.

    ⓑ 생성한 모델에 데이터를 입력하여 훈련시킨다.

    ⓒ 훈련이 끝난 모델을 예측에 사용한다.

    ⓓ 이미 훈련이 끝난 모델에서 변경점이 생기면 재훈련이 필요하며, 계산 비용과 시간이 많이 요구된다.

  ㉡ 전이 학습(Transfer Learning)

    ⓐ 사전 학습: 원래의 문제에서 모델을 학습하며, 다양한 특성과 패턴을 학습

    ⓑ 미세 조정(Fine-tuning): 학습된 모델을 새로운 문제에 적용한다. 모델의 일부 레이어는 새로운 문제에 적합하도록 추가적인 학습을 진행한다.

    ⓒ 모델을 재사용성할 수 있는 장점이 있지만, 상당히 제한적이고, 전문 지식이 요구된다.

소프트웨어 모듈화

① 단일 구조의 소프트웨어는 구성 요소나 부품이 없는 코드 조각이고, 모듈로 분해된 소프트웨어는 독립적으로 활용할 수 있는 구성 요소가 존재한다는 특징이 있다.

② 소프트웨어를 모듈로 분해하는 것은 코드의 재사용을 가능하게 한다.

③ 소프트웨어를 모듈로 분해하는 것은 독립적으로 특정 구성 요소만을 선택해서 다른 구성 요소로 교체할 수 있다는 장점이 있다.

 

Why Decompose A DNN INTO MODULES?

① DNN Model을 모듈로 만든다는 것은 다음과 같은 가정에 기반한다.

  ㉠ 0~9 의 손글씨를 인식하는 DNN 모델에서 특정 숫자의 레이블에 반응하는 모듈을 10개의 모듈로 분해할 수 있다.

  ㉡A~K의 손글씨를 인식하는 DNN 모델에서 특정 문자의 레이블에 반응하는 모듈을 10개의 모듈로 분해할 수 있다.

  ㉢ 분해된 모듈을 가지고 재학습 없이 0, 1만을 분류하는 새로운 이진 분류 모델을 생성할 수 있다.

  ㉣ 분해된 모듈을 가지고 재학습 없이 0~9, A, B를 분류하는 새로운 12진수 분류 모델을 생성할 수 있다.

  ㉤ 분해된 모듈을 제거하고, 결함 있는 모듈을 보다 성능이 좋은 모듈을 교체해서 0~9를 분류하는 10진수 분류 모델을 생성할 수 있다.

Decomposing A DNN INTO MODULES

① Concern은 딥 뉴럴 네트워크의 특정 부분이나 기능을 지칭하며, 특정 Concern은 특정 기능 또는 분류 작업과 관련된 네트워크의 일부분을 일컫는다.

② Concern은 다른 Concern과 꼬이거나 얽힐 수 있으며, 세 가지 과정으로 특정 Concern을 분해할 수 있다.

③ 모노리식 모델(Monolithic) 모델은 하나의 거대한 코드 베이스나 구조에서 여러 기능과 요소들이 결합된 소프트웨어나 시스템을 말한다.

  ㉠ 딥 러닝 혹은 인공지능 분야에서 해당 단어는 딥 뉴럴 네트워크(DNN) 내에서 처리되고 통합되는 모델을 지칭한다.

③ DNN 분해는 세가지 과정을 거친다.

  ㉠ Concern identification, Tangling Identification, Concern Modularization이 존재한다.

 

④ Concern Identification은 모노리식(Monolithic) 모델에서 특 기능 또는 단일 모델의 해당 문제에 관련이 있는 일부분을 식별하는 과정이다.

  ㉠ 특정 concern을 분류하는 데 사용되며, 비지배적 concern(non-dominant concern)을 숨길 수도 있다.

⑤ Tangling identification은 여러 Concern이 얽히는 부분을 인식하고, 이를 분리하여 각 Concern이 독립적으로 기능할 수 있도록 하는 과정이다.

  ㉠ 이 과정만으로는 네트워크를 완전히 분리할 수 없고, 추가적인 조정이 필요하다.

⑥ Concern Modularization은 Concern을 식별 및 분리 후 각 Concern을 독립적인 DNN 모델로 모듈화하는 과정이다.

  ㉠ 이를 통해 각 모듈이 효과적으로 기능할 수 있도록 한다.

  ㉡ Concern에 비해 상대적으로 덜 중요한 비지배적 concern들이 모델의 전반적인 성능과 효율성에 미치는 영향을 최소화하기 위해 해당 concern들을 단순화하거나 추상화할 수 있다.