논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

Learning Deep Architectures for AI (1)

오류가 많을 수 있습니다. 틀린 부분은 지적을 부탁드립니다.

[cite]10.1561/2200000006[/cite]

1. Introduction

컴퓨터가 우리가 사는 세계를 모델링 하는 일은 반세기가 넘도록 주목받고 있는 분야입니다. 우리가 지능이라 부르는 일 말입니다. 컴퓨터가 새로운 정보를 포함하여 모든 정보에 대하여 공통된 공식을 만들기는 힘들기 때문에 연구자들은 학습 알고리즘을 이용하여 정보의 일부분만을 이용하고 있습니다.

학습 알고리즘을 발전시키기 위한 많은 노력들이 있었지만, 아직까지 자연어나 영상 정보의 이해 등에서 아직도 인공 지능이라 부르기에는 수준에 다다르지 않았습니다. 이는 다른 인공 지능 분야에서도 마찬가지일 것입니다.

땅에 앉아있는 사람을 찍은 사진을 상상해봅시다. 이 미이지를 해석하는 인공지능을 만들려고 한다면 아마 사람들은 직관적으로 문제를 여러 작은 문제들로 나누고 단계별로 표현하고자 할 것입니다. 예를 들면 픽셀로부터 시작하여, 많은 과정을 거친 후에 선형 혹은 커널 분류기로 끝나는 단계를 생각해볼 수도 있습니다.

여기서 한가지 가정을 하여봅시다. 복잡한 표현을 위한 기계는, highly varying 수학 함수를 필요로 한다는 가정을 해봅시다. 즉 함수는 입력에 대하여 높은 비선형이고, 도메인 공간에서 위로 아래로 요동을 칠 것입니다. 따라서 학습 시스템은 입력 데이터에 대해 높은 차원의 공간에서 이루어지며, 입력들은 다루기가 힘든 통계적인 관계를 가진다고 보여집니다.

만약 우리가 factors of variation이라 부르는, 실제 환경에 대하여 입력 데이터가 변하는 관계를 알 수만 있다면, 아마도 기계는 실 세계를 이러한 factor들의 변화로 표현하며 이해할 수도 있을 것입니다.

앞에서의 앉아있는 사람을 다시 생각해봅시다. 높은 수준의 추상(abstraction), 사람이란 것은 많은 이미지와 관련되어있을 수 있습니다. 사진을 찍은 각도만 바꿔도 다른 이미지가 되며 이것들은 유클리디언 거리를 측정한다면 픽셀 공간에서 굉장히 먼 거리로 떨어져 있겟죠. 또한 그보다 한단계 낮은 수준의 추상은 이 높은 수준의 추상을 구현하기 위해 사용될 것입니다. 이러한 어떤 추상을 카테고리, 혹은 특징(feature)라고 볼 수 있습니다.

Deep architecture의 학습은 이러한 추상을 낮은 것부터 높은 수준까지 자동적으로 발견하는 것에 집중하려합니다. 또한 이상적으로는 학습 과정에서 사람의 노력이 최대한 덜 들어가도록 하려고 합니다.

1.1 How do We Train Deep Architectures?

자동적으로 여러 레벨의 추상을 학습하는 deep learning 방법은 시스템이 입력을 출력으로 직접 매핑하는 복잡한 함수를 학습시킬 수 있습니다. 사람이 손길이 없이 말이죠.

Depth of architecture는 함수의 학습 과정에서 몇개개의 비선형 과정을 거치는지를 지칭합니다. 현재 학습 알고리즘이 1 ~ 3 개의 얕은(shallow) 구조를 띄는 반면 포유 동물의 뇌는 그보다 더 깊게 구축되어있습니다. 이것에 영감을 받아 신경망 연구자들은 다층 신경망을 깊게 구성하고자하였으나 2006년까지는 2, 3개의 층에서만 긍정적인 성과를 얻을 수 있었습니다. 그리고 2006년 Hinton이 발표한 Deep belief Networks (DBNs)에서 한계가 깨졌습니다. DBNs는 greedy한 방법으로 한번에 한층씩, Restricted Boltzmann Machine (RBM)으로 비지도 학습을 사용하였습니다. 뒤이어 비슷한 방법에 기반하여 auto-encoders를 포함한 여러 알고리즘이 발표됩니다.

2006년 이후로 깊은 네트워크는 분류기, regression, 차원 축소, modeling textures, modeling motion, 세그멘테이션, information retrieval, robotis 자연어 처리, collaborative filtering 등에서 많은 성공을 거두었습니다. auto-encoders와 RBMs, DBNs과는 달리 deep supervised feedforward neural networks 또한 여기에 포함됩니다.

1.2 Intermediate Representations: Sharing Features and Abstractions Across Tasks

Deep architecture에 대하여 질문을 떠올릴 수 있습니다.

  1. 각 층의 출력단에는 어떤 형식의 데이터가 나오는 것인가?
  2. 그리고 각 층과 층 사이에서는 어떤 식으로 interface가 이루어져 있는가?

최근의 deep architecture 연구들은 이러한 중간 표현에 집중하고 있습니다. RBMs, auto-encoders, sparse auto-encoders, denoising auto-encoders와 같은 알고리즘들은 하나의 표현에서 다른 표현으로 변환하는 부분을 학습하는 것으로 보고 있으며, 각 단계는 데이터에 걸려있는 factors of variations를 보다 좋게 분리하는 작업을 한다고 보고 잇습니다.

뇌의 경우, 각 추상 레벨에은 많은 수의 피쳐 중 일부 적은 수의 집합만이 activation되는데, 이들 피쳐는 mutually exclusive하지 않습니다. 따라서 distributed representation이라 부르는, 정보가 하나의 특정한 뉴런에 머무르는게 아니라 여러 뉴런에 분포되어있는 형태를 띕니다. 여기에 추가적으로 sparse한 특징을 가져 한번에 전체 뉴런 중 1~4%의 뉴런만이 활성화 됩니다. 후에 이러한 접근법을 취하고 있는 기계 학습 방법을 살펴볼 것입니다.

Dense distributed representations이 한쪽 끝이고, sparse representations가 그 중간에 있다면 다른 한쪽 끝을 생각해볼 수 있는 바로 local representations입니다. Local representatoins의 경우 local generalization을 위해서 국소 부분에서의 연결에 집중하려고 합니다. 많은 기계학습 방법들이 데이터 공간의 다른 영역에서 각기 다르게 작동합니다. 또한 이러한 다른 영역에서 서로 다른 파라미터들이 필요합니다.

많은 머신 비전 시스템에서는, 학습 알고리즘은 처리 과정에만 집중하고 나머지 부분은 사람에게 맡기고 있으나 인공 지능 기계라고한다면 더 많은 것들을 고려하여야 합니다. ‘사람’을 인식하는 것으로는 부족하며 많은 태스크와 컨셉들에 대응할 수 있어야 합니다. 이러한 연구 분야를 multi-task learning이라고 합니다.

여러 레벨로 이루어진 구조는 각 구성요소들을 서로 공유하고 재사용합니다. Deep architecture에서도 이러한 연구가 진행되고 있으며 이러한 연구에서는 높은 수준의 피쳐들로 이루어진 pool을 공유하는 여러 task들로부터 다른 output을 내놓도록 구성됩니다.

1.3 Desiderata for Learning AI

넓은 범위에서 보았을 때, 인공 지능을 학습 시키기 위한 학습 알고리즘은 아래와 같은 부분들이 중요하다고 생각됩니다.

  • 복잡하고 highly-varying functions을 학습할 수 있는 능력 : 학습 데이터의 수 보다 많은 수의 변화에 대해서도 작동하여야 한다.
  • 적은 사람의 입력으로도 높고 낮은 모든 수준에서의 특징을 학습할 수 있는 능력
  • 많은 수의 예제를 이용하여 학습할 수 있는 능력 : 계산 시간이 데이터 수에 선형으로 증가하여야 한다.
  • 대부분이 Unlabled인 데이터에 대해서도 학습할 수 있는 능력
  • 많은 task에 대하서도 효과적으로 학습할 수 있는 능력
  • Unsupervised learning에서도 잘 작동하여야 함.

1.4 Outline of the Paper

논문이 다루는 내용을 담고 있으나 생략합니다.


Add a Comment Trackback