티스토리 뷰

  데이터 가용성과는 별개로, 파이프라인의 구성 요소를 선택할 때, 두번째 고려사항도 염두해둬야 한다. 요소 개발적으로 풀수 있는 작업들을 얼마나 단순화시킬 수 있느냐 하는 것이다. 파이프란이의 구성 요소를 선택하는 있어서 해당 요소들이 각각 구성하기 쉽거나 학습시키기 쉬운 것들을 선택해야 한다. 그런데 여기서 학습하기 "쉽다"는 것은 어떤 것을 의미할까?

 머신러닝 관련 작업을 수행할 때, 아래에 쉬운 순서대로 나열된 부분을 고려해보자:

 1. (위의 이미지와 같이) 해당 이미지가 과도하게 노출되었는지 여부를 구별하는 것
 2. 해당 이미지가 실내에서 찍은건지 야외에서 찍은건지 구별하는 것
 3. 해당 이미지가 고양이를 포함하고 있는 것인지를 구별하는 것
 4. 해당 이미지가 검정과 하얀 털로 구성된 고양이가 포함되어 있는지를 구별하는 것
 5. 해당 이미지가 (고양이 종 중 하나인) Siamese cat을 포함하고 있는지를 구별하는 것

위의 각 작업은 이진화된 이미지 분류 작업이다. 입력으로 하나의 이미지를 받고, 0 아니면 1의 출력을 내보낼 것이다. 하지만 리스트 중 앞에 나열된 작업일수록 신경망이 학습하기에 훨씬 "쉬울" 것이다. 쉬운 작업들은 학습 데이터가 많이 없어도 쉽게 학습시킬 수 있을 것이다.

 머신러닝도 아직까지는 어떤 것이 작업을 쉽거나 어렵게 만드는 것인지에 대한 명확한 정의가 되어 있지 않다.[각주:1] 딥러닝과 다 계층으로 구성된 신경망이 발전함에 따라 (얕은 신경망에 의해서) 적은 리소스만으로도 수행되는 작업을 작업이 "쉽다"라고 표현하고, (깊은 신경망이 필요한) 많은 리소스가 필요로 하는 작업은 "어렵다"라고 말하고 있다. 하지만 이는 정형화되지 않은 정의이다.

 만약 복잡한 작업을 할 수 있고, 그 작업을 좀더 간단한 작은 작업들로 쪼갤 수 있다면, 세부 작업을 코딩하는 것에 대해서는 해당 작업을 조금더 효율적으로 처리할 수 있도록 알고리즘을 개발하는 것에 우선 순위를 둘 수 있다.

Siamese cat 감지기를 만들고 있다고 가정해보자. 아래의 구조가 완전한 end-to-end 형태의 구조이다.

반대로, 두개의 과정으로 구성된 파이프라인 구조를 사용할 수 있다.

첫번째 단계(Cat detector)에서는 이미지 상의 모든 고양이를 감지한다.

두번째 단계에서는 각 고양이 별로 분리된 이미지를 (한번에 하나씩) 고양이 종 분별기에 넣어, Siamese cat을 감지해냈을 경우 1을 출력하게 된다.

 단순히 0/1의 라벨을 사용해서 end-to-end 방식의 감지기를 학습시키는 것에 비해서, 고양이 감지기와 고양이 종 분류기로 구성된 파이프라인의 각 요소는 학습 시키기 더 쉬워 보이고, 훨씬 더 적은 데이터가 필요할 것이다.[각주:2] 마지막 예로써 자율 주행 파이프라인 구조를 다시 살펴보자.

위의 파이프라인 구조를 사용함으로써 운전시 3가지 핵심 과정을 알고리즘에게 알려주게 된다.

 1) 다른 차를 탐지하는 것
 2) 보행자를 탐지하는 것
 3) 차에게 경로를 지정하는 것

 더 나아가 각 요소들은 상대적으로 쉬운 함수로 되어 있으며, 이를 통해 완전 end-to-end 방식에 비해서 적은 데이터 만 가지고 학습시킬 수 있다.

 요약하자면, 파이프라인의 각 요소로 어떤 것을 넣어야 할 지 결정할 때, 각 요소들이 상대적으로 "간단한" 함수로 구성되어 한정된 량의 데이터만 가지고도 학습시킬 수 있는 요소로 파이프라인을 구성할 것을 권한다.

< 해당 포스트는 Andrew Ng의 Machine Learning Yearning 중 chapter 51. Choosing pipeline components: Task simplicity를 번역한 내용입니다.>

  1. 정보 이론(Information theory)는 "Kolmogorov Complexity"의 개념에서 가저온 것인데, 여기서는 학습된 함수의 복잡성은 해당 항수를 도출한 컴퓨터 프로그램 중 가장 간단한 프로그램의 길이라고 정의하고 있다. 하지만 이 이론적인 개념은 AI 상에서 몇몇 실용적인 예에서 찾아 볼 수 있다. https://en.wikipedia.org/wiki/Kolmogorov_complexity 에서 살펴봐라. [본문으로]
  2. 만약 실용적인 사물 인식 알고리즘에 대해서 안다면, 해당 알고리즘이 단순히 0/1이라는 이미지 라벨을 학습하는 것이 아니라 학습 데이터의 일부로 제공된 박스 이미지들을 학습할 것이라는 것을 알게 될 것이다. 해당 부분은 이번 포스트에서 다루는 주제를 넘어선 것이다. 해당 알고리즘에 대해서 더 알고 싶다면, Coursera에서 제공되는 Deep learning specialization(http://deeplearning.ai) 을 살펴보면 좋을 것 같다. [본문으로]
댓글