[DeepLearningBook] Chapter 1 : Introduction

이 책 내용을 정리한 포스트입니다.

https://www.deeplearningbook.org/,

Ian Goodfellow and Yoshua Bengio and Aaron Courville, An MIT Press book

책 전체 목차

contents



포스트 목차


Introduction에서는 AI에 대한 전반적인 내용으로 시작한다. 초기 AI는 비교적 복잡한 지식체계가 필요치 않은 영역에서 성공적으로 적용되었다. 예를 들어, IBM의 Deep Blue는 1997년에 체스를 정복했는데, 체스는 64개의 위치와 격자 상에서 움직이는 32개의 말만 있을 뿐이다. 인간에게는 고도의 사고를 요하는 게임이었지만 컴퓨터에게는 단순한 규칙의 조합들일 뿐이었다.

반면, 음성이나 사물을 인식하는 것은 인간에게는 너무나도 쉬운 일이다. 매일매일 살아가면서 엄청난 양의 데이터를 처리하고 지식을 습득하기 때문이다. 그러나 컴퓨터에게는 이것이 비정형적인 대상으로부터 지식을 습득해야하는 어려운 일이다.

Knowledge Base

몇몇 인공지능 프로젝트는 정형적인 언어로부터 세상의 지식들을 코드화 하려고 시도했다. 정형적인 언어의 서술로부터 논리적인 추론 규칙을 찾아내는 이러한 접근을 Knowledge base화 라고 한다. 성공한 사례는 거의 없다. 이런 프로젝트 중 잘 알려진 것이 1989년의 Cyc이다. Cyc는 CycL라고 불리는 언어 서술들의 데이터베이스와 추론 엔진이다. 이 서술들은 인간 스태프들에 의해 입력되었다. 사람들은 real world를 정확하게 묘사할 수 있는 충분한 복잡도의 정형적인 규칙을 고안하기 위해 애썼다. 그러나 몇몇 모순적인 오류에 빠졌다.

Machine Learning

인간의 지식을 코드화하기 어렵기 때문에 AI시스템은 raw data로부터 자체적인 지식을 얻어내는 능력을 필요로 했다. 그 능력을 Machine Learning이라고 한다. 머신러닝은 컴퓨터로 하여금 real world의 지식와 관련된 문제를 해결하고 주관적으로 보이는 의사결정을 할 수 있게 해준다. logistic regression 이라는 기초적인 알고리즘으로 제왕절개 수술을 추천할지 여부도 결정하고, naive Bayes로 간단하게 스팸메일을 구분해낼 수 있다.

이러한 기초적인 머신러닝 알고리즘의 성능은 주어지는 데이터의 representation에 크게 의존한다. 예를 들어, logistic regression이 제왕절개 문제에 쓰일 때, AI 시스템이 직접 환자를 진찰하지 않는다. 대신, 의사가 수술에 관련된 몇가지 환자의 정보들을 넣어준다. 우리는 이러한 정보들의 representation을 feature이라고 한다. Logistic regression은 이러한 feature들이 각각 결과에 얼마나 영향을 미치는지 학습한다. 그러나 feature들이 어떻게 정의되는지에 대해서는 영향을 끼치지 못한다. 만약 logistic regression이 환자의 MRI 영상을 직접 받는다 한들, MRI 영상의 각각 픽셀값들은 의사가 집어넣어주던 정제된 데이터보다 유용할 수는 없다. 즉, 어떤 feature들을 넣어주느냐가 굉장히 중요하고, 따라서 해당 전문지식을 가진 전문가와 많은 노력을 필요로 하는 것이다.

그러나 많은 테스크들에서, 어떤 feature을 넣어주어야 하는지 결정짓는 것이 상당히 어려운 문제다. 예를 들어 사진에서 자동차를 찾아내는 프로그램을 만든다고 생각해보자. 우리는 차가 바퀴를 갖고있다는 것을 알기때문에 바퀴를 feature로 두고 바퀴가 있는지를 찾아볼 것이다. 그러나 ‘바퀴’라는 것이 사람에게는 쉬운 특징이지만, 컴퓨터에겐 어떤 픽셀들의 구성으로 이루어져있는지 정확하게 묘사하는 것이 힘들다. 바퀴의 형태는 단순하지만 그림자에 가려져있기도 할 것이고, 때로는 햇빛에 빛나며, 다른 물체들에 의해 가려져있기도 할 것이다.

Representation Learning

이에 대한 해결책은 representation과 output간의 관계만 찾아내는 것이 아니라, representation자체를 학습하는 representation learning이다. 학습된 representation은 때로는 사람이 직접 뽑은 representation들보다 나은 성능을 보여준다. 심지어 사람이 뽑는 것은 십수년의 엄청난 시간과 노력이 필요로 하는데 반해, representation을 학습하는 것은 간단한 건 몇분, 복잡한 것도 수 시간 내지 한달 이내로 뽑아낸다. 핵심적인 예시는 autoencoder이다. autoencoder은 data를 representation으로 바꿔주는 encoder 부분과 representation을 원래 data로 다시 복원해주는 decoder 부분으로 이루어져있다. 원본의 정보를 잃지 않으면서도 새로운 representation들을 만들어 낼 수 있다. autoencoder의 종류에 따라 각기 다른 목적의 representation을 만들어 낼 수 있다.

우리가 feature 또는 feature 학습 알고리즘을 설계할 때, 보통 factors of variation을 떼어내어 관측 데이터를 설명하는 것이 목표다. 여기서의 factor이란, 물리적으로는 직접 관측되지는 않으면서 관측 데이터에 영향을 주는 요인이다. 예를 들면 우리가 음성 녹음을 할 때, factors of variation은 말하는 이의 나이, 성별, 억양 등의 요인이다. 자동차 사진을 분석할 때는, 차의 위치, 색, 각도 그리고 햇빛 등의 요인인다.

real world에서 AI 응용이 직면하는 주요 어려움은 수많은 factors of variation 이 우리가 관측하는 모든 데이터에 영향을 미치는 것이다. 빨간 자동차의 픽셀 값은 밤에는 검정에 가까워 질것이고, 차의 모양은 찍는 위치나 각도에 따라 달라질 것이다. 따라서 이러한 factors of variation을 분리해서 이에 상관 없이 분석을 할 수 있게 해야 한다. 물론 이러한 high-level feature를 raw data로부터 뽑아내는 것은 어렵다. 많은 factors of variation들은 데이터에 대한 인간 수준의 이해를 필요로 한다.

Deep Learning

Deep learning은 representation들을 다른 단순한 representation들로 표현함으로써 representation learning의 문제를 개선한다. 즉, 단순한 개념들을 모아 복잡한 개념을 표현한다. 아래 그림에서 나오듯 처음에는 픽셀단위에서, 선(edge) representation으로 변환되고, 선들이 모여서 곡선, 곡선들이 모여서 귀, 얼굴, 팔 등의 high-level feature가 되는 것이다. Intro-01

raw data 로부터 단순한 representation들을 뽑고, 단순한 representation들(선, 곡선, 원 등)이 모여 복잡한 representation들(귀, 얼굴, 팔 등)이 되고, 복잡한 representation들의 조합으로 사람인지 자동차인지 동물인지 구분한다. 이처럼 연쇄적인 층 구조로 이루어져있으며 representation들을 뽑아내는 계층들을 hidden layer이라고 한다. 픽셀 값으로 주어지는 input이나 정답 label로 주어지는 output처럼 명시적으로 값이 주어지는게 아니라, 모델에서 학습하는 값들이기 때문이다.

Deep Learning의 응용

1980년대 이후, 딥러닝은 인식과 예측분야에서 향상된 성능을 보여주고 있다. 매년 열리는 ImageNet Large Scale Visual Recognition Challenge (ILSVRC)라는 사물 인식 콘테스트에서 비약적으로 성능을 높여왔다. 2015년에는 1000종류의 이미지를 분류하는데 top-5 error가 3.6% 정도로 성능이 좋아졌다. 이러한 컴퓨터 비젼 뿐 아니라 LSTM(Long Short Term Memory)같은 RNN(Recurrent Neural Network)계열의 모델은 sequence와 sequence간의 관계를 찾아내는 성능을 향상시켰다. sequence-to-sequence learning은 기계 번역, 신경망 번역 등 연속된 데이터들을 분석하는 것에 적용되고 있다. 또는 Neural Turing Machine처럼 turing machine을 뉴럴넷을 이용하여 구현할 수 있다. Turing machine은 컴퓨터 구조를 토대로, 메모리 읽고 쓰기와 수치연산 기능을 가진 가상의 기계라고 할 수 있다. 이를 통해 간단한 프로그램을 학습할 수 있다. 또 다른 분야는 강화학습이다. trial 과 error을 통해 학습하여 인간의 개입 없이 적절한 행동을 하도록 자율적으로 움직이는 agent를 만들 수 있다.

Summary

  • Knowledge Base
    • real world의 지식을 코드화 한다.
    • ex) Cyc
    • 논리적 추론 오류에 빠지는 등 힘들다.
  • Machine Learning
    • 컴퓨터 자체의 지식을 만들기 시작한다.
    • ex) Logistic regression, naive Bayes
    • 넣어주는 feature(representation)들이 중요한데, 정의해주기 힘들다.
  • Representation Learning
    • Representation과 output간의 관계뿐 아니라, representation 자체도 학습한다.
    • ex) Auto-encoder : data -> representation -> data
    • 직접적으로 관찰되지 않으면서 데이터에 영향을 미치는 factors of variation 때문에 분석이 힘들다.
  • Deep Learning
    • 복잡한 representation을 단순한 representation들의 조합으로 표현한다.
    • ex) Multi Layer Perceptron

Intro-02

Intro-03