[Deep Learning] Chapter1. Introduction

Chapter1. Introduction

1.1 딥러닝의 의미

사람이 수행하기는 쉽지만 ‘설명하기는 어려운 작업’들이 있습니다. 우리가 직관적으로 해결하고 자동적이라고 느껴지는 것들인데요. 예를들어서 발화를 인식하거나 이미지의 얼굴을 인식하는 것들입니다. 이 책은 이러한 직관적인 문제에 대한 해결책을 다루고 있습니다. 이 해결책은 컴퓨터가 경험에서 배우고, 더 간단한 개념들과의 관계 측면에서 개념의 계층을 통해 세계를 이해하도록 하는 것입니다. 이 접근법은 컴퓨터가 필요로 하는 모든 지식을 인간이 명시할 필요없게 하며, 간단한 것들로부터 복잡한 개념을 구축함으로써 복잡한 개념을 배울 수 있게 합니다. 이러한 개념들이 서로 구축되는 방식을 그래프로 그려보면 그 그래프는 깊고 여러 층을 가지고 있습니다. 이러한 이유로 우리는 이러한 AI접근법을 딥러닝이라고 부릅니다.

AI의 초기 성공들은 상대적으로 청정하고 형식적인 환경에서 이루어졌으며 컴퓨터가 세계에 대해 많은 지식을 가질 필요가 없었습니다. 예를들어서 체스 같은 경우에, 프로그래머가 미리 쉽게 제공할 수 있는 완전히 형식적인 규칙들의 간단한 목록으로 설명될 수 있습니다. 성공적인 체스 전략을 고안하는 것은 엄청난 성취이지만 말이죠. 이런식으로 아이러니하게 인간에게 가장 어려운 정신적 과제 중 하나인 추상적이고 형식적인 작업들이 컴퓨터에게는 가장 쉬운 것들 중 하나입니다.

그러나 사람의 일상생활은 세계에 대한 엄청난 양의 지식을 요구합니다. 이 지식의 대부분은 주관적이고 직관적이라 형식적인 방식으로 표현하기 어렵습니다. 인공지능에서의 주요 도전 과제 중 하나는 이러한 지식을 컴퓨터에 어떻게 넣을 것인가 입니다. 처음 여러 인공지능 프로젝트들은 세계에 대한 지식을 형식적인 언어로 하드코딩하려고 시도했습니다. 세계를 정확하게 묘사할 수 있는 충분한 복잡성을 가진 공식적인 규칙을 고안하는데 어려움을 겪어 실패했습니다.

하드 코딩된 정보를 시스템이 마주하는 것이 어렵기에 AI 시스템이 raw data에서 패턴을 추출해내서 시스템만의 지식을 취득해야 하는 능력이 필요해졌습니다. 이러한 능력을 머신러닝이라고 합니다. 머신러닝의 도입은 컴퓨터가 현실세계의 지식들을 포한하는 문제들을 해결하도록 합니다. 그리고 주관적으로 보이는 결정까지 하도록 합니다. 예를들어 logistic regression은 재왕절개 추천에 이용될 수 있습니다. naive Bayes는 스팸에일에서 합법적인 메일을 분리할 수 있습니다.

1.2 딥러닝과 특징 추출

머신러닝 알고리즘의 성능은 알고리즘이 받는 데이터의 표현에 강하게 의존합니다. 예를들어 AI System은 환자를 직접 검사하지 않습니다. 대신 의사는 시스테에 관련 정보의 조각을 제공해줍니다. 환자의 표현이 포함된 각 정보 조각을 ‘특성’이라고 합니다. Logistic Regression은 이러한 환자의 특성과 다양한 결과와의 관계를 학습합니다. 그러나 Logistic Regression은 특성이 어떤식으로 정의되는지에 영향을 미칠수 없습니다.

이러한 표현에 대한 의존은 컴퓨터과학과 심지어 우리 삶을 통해 보여지는 일반적인 현상입니다. 컴퓨터 과학에서는 데이터의 모음을 검색하는 것으로서의 기능이, 만약 모음이 구조적이라면 그리고 지능적으로 색인이 달아져있다면 지수적으로 빠를 것입니다. 사람들은 아랍 숫자로 산수를하면 빠를거지만 로마 숫자로 산수를 하면 굉장히 느릴 것입니다. 이러한 표현의 선택은 머신러닝 알고리즘의 성능에도 엄청난 영향을 미칩니다. 과업을 위해 추출해야하는 올바른 특징의 모음을 디자인하는 것 그리고 더 나아가 이러한 특징들을 간단한 머신러닝 알고리즘에 제공하는 것으로 많은 인공지능의 일은 해결될 수 있습니다. 하지만 많은 일에서 어떤 특징을 추출해야 하는지가 어려울 수 있습니다.

source : Deep Learning(Goodfellow Ian, 2016) Figure 1.1

위 예시는 서로 다른 표현의 예 입니다. 서로 다른 두 카테고리를 선을그려 분류하고 싶다고 가정해봅시다. 데카르트 좌표계를 사용하여 이를 진행하는 것은 불가능하지만, 이를 극 좌표계로 표현하여 가능하게 합니다.

‘어떤 특징을 추출해야 하나’에 대한 한 해결책은 머신러닝이 표현에서 결과까지 핑하는 것 뿐만 아니라 스스로 표현까지 맵핑하게 하는 것입니다. 이러한 접근 방법을 Representation Learning(이하 표현학습)라고 합니다. 학습된 표현들은 종종 사람이 디자인한 표현들보다 더 나은 성능을 보입니다. 학습된 표현들은 AI 시스템이 사람의 간섭없이 빠르게 새로운 일에 적응하도록 도와줍니다. 본질적인 표현학습 알고리즘의 예는 autoencoder 입니다.

특징을 학습하기위해 특징이나 알고리즘을 디자인 할 때 우리의 목표는 항상 관찰된 데이처를 설명하는 분산의 팩터를 분리하는 것입니다. 이 배경에서 우리는 팩터라는 단어를 영향의 원천을 분리하는 것을 언급하는데 사용합니다. (팩터는 곱으로 결합되지 않습니다.) 이러한 팩터들은 직접적으로 관찰되는 값이 아닌 경우가 많습니다. 대신에 그것들은 아마 현실세계에서 관찰되지 않는 물체나 힘으로써, 관찰가능한 값에 영향을주면서 존재합니다.

많은 현실세계에 인공지능적용의 주요 어려움은 분산의 팩터들의 많은수가 우리가 관찰할 수 있는 모든 각각의 데이터에 영향을 주기 때문입니다. 예를들어서 빨간자동차 이미지의 각 픽셀은 아마 밤에는 검정색일겁니다. 자동차의 실루엣은 보는 각도에 따라 달라집니다. 많은 적용들은 우리 분산의 팩터의 얽힘을 푸는것을 필요로하고 우리가 신경쓰지 않는 것들은 버리는 것을 요구합니다. 물론 raw data에서 high-level의 추상적인 특징들을 추출하는 것은 매우 어러울 수 있습니다.

딥러닝은 표현학습의 핵심문제를 다음과 같이 해결합니다. ‘다른 단순한 표현으로 표현되는 표현을 유도합니다.’ 딥러닝을 통해 컴퓨터는 단순한 개념을 바탕으로 복잡한 개념을 구축할 수 있습니다. 아래 그림과 같이 모서리, 윤곽선 등 단순한 개념을 결합하여 사람의 이미지를 표현합니다.

source : Deep Learning(Goodfellow Ian, 2016) Figure 1.2

본질적인 딥러닝의 예시는 FeedForward Deep Network 또는 Multilayer Perceptron(MLP)입니다. 다층 퍼셉트론은 input과 그에 해당되는 output에 대응되는 수학적 함수입니다. 이 함수는 많은 간단한 함수로 이루어져 있습니다.우리는 각각의 다른 수학적 함수의 적용이 input의 새로운 표현을 제공한다고 생각할 수 있습니다.

데이터에 대한 올바른 표현을 학습하는 아이디어는 딥러닝에 대한 한 측면을 제공합니다. 딥러닝에 대한 또다른 측면은 컴퓨터가 multi-step 컴퓨터 프로그램을 학습하도록해주는 ‘깊이’입니다. 표현의 각 레이어는 병렬로 다른 instructions를 실행한 후 컴퓨터 메모리의 상태로 생각할 수 있습니다. 깊이가 더 큰 네트워크는 더 많은 instructions를 순차적으로 실행할 수 있습니다. 순차적인 instructions은 상당한 힘을 제공하는데, 나중의 instruction은 이전 instruction의 결과를 참조할 수 있기 때문입니다.

이러한 딥러닝의 관점에서, 모든 레이어의 활성화된 정보가 input을 설명하는 분산 팩터를 필수적으로 인코딩하지는 않습니다. 표현은 또한 입력을 이해할 수 있는 프로그램을 실행하는 데 도움이 되는 상태 정보도 저장합니다.(카운터나 포인터와 유사) 이는 특별히 입력 내용과는 무관하지만 모델이 처리를 조직화하는데 도움을 주는 정보입니다.

모델의 깊이를 측정하는 두 가지 방법이 있습니다.

  1. 아키텍처를 평가하기 위해 실행해야 하는 순차적 instructions의 수에 기반(계산 그래프)
  • Flow Chart를 통한 가장 긴 경로의 길이로 생각 가능

  • 동일한 함수도, 어떤 함수를 허용하느냐에 따라 다른 깊이로 그려줄 수도(아래와 같은 예시)

source : Deep Learning(Goodfellow Ian, 2016) Figure 1.3
  1. 개념이 서로 관련된 그래프의 깊이(확률적 모델링 그래프)
  • 각 개념의 표현을 계산하기 위해 필요한 계산의 Flow Chrart의 깊이는 개념 자체의 그래프보다 훨씬 깊을수도.

  • 더 간단한 개념에 대한 시스템의 이해가 더 복잡한 개념에 관한 정보를 받아들이면서 개선 가능

컴퓨터 프로그램의 길이에 대한 단일한 올바른 값이 없는 것과 마찬가지로, 아키텍처의 깊이에 대한 단일한 올바른 값이 없습니다. 또한 “깊다”고 인정되려면 모델이 얼마나 깊어야 하는지에 대한 합의가 없습니다. But, 딥러닝은 전통적인 기계학습보다 학습된 함수나 개념의 더 많은 합성을 포함하는 모델을 연구하는 것으로 간주될 수 있니다.

요약하면, 이 책의 주제인 딥러닝은 AI에 대한 한 접근 방식입니다. 구체적으로 이는 기계학습의 일종으로, 컴퓨터 시스템이 경험과 데이터를 통해 개선되는 기술입니다. 딥러닝은 세계를 개념의 중첩 계층 구조로 표현하는 방식을 학습함으로써 큰 힘과 유연성을 얻는 특정 유형의 기계학습입니다. 각 개념이 더 간단한 개념과의 관계로 정의되며, 더 추상적인 표현은 덜 추상적인 것을 기반으로 계산된다는 관점입니다.

source : Deep Learning(Goodfellow Ian, 2016) Figure 1.4
source : Deep Learning(Goodfellow Ian, 2016) Figure 1.5

1.3 Reference

[1] Deep Learning(Ian Goodfellow, Yoshua Dengio, Aaron Courvile)