Goodfellow, Ian, Yoshua Bengio, and Aaron Courville. Deep learning. MIT Press, 2016. [Link]
1. Introduction [Sum-up]
* AI는 컴퓨터가 잘하는 일(formal task: e.g, 수치계산, 규칙작업)말고 사람이 (직감적으로) 잘하는 일(informal task: e.g., 언어/이미지 이해)을 해결하는데 목표를 가진다.
* 사실 정작 사람은 직감적으로 잘하는 일들(informal tasks)을 왜 잘하는지 모른다. 우리는 그것들을 세상/지식으로부터 배우는 데, 그것들은 지극히 주관적(subjective)이고 직감적(intuitive)이기 때문에 형태적으로 표현(formally describe)하기 힘들다.
* AI (deep learning)는 세상/문제를 '계층적 개념'(hierarchy of concepts) 형태로 이해해서 사람이 어떤 개념/형태를 명시(formally specify)해주지 않아도 사람이 잘하는 직감적인 문제(complicated concepts, informal tasks, informal knowledge)들을 자체 지능적으로 해결하고자 한다.
* AI에서 Knowledge base (hard-code knowledge)는 사람이 knowledge를 직접 design해줘야 한다. 따라서, (단순 규칙을 통한 추론만으로는) 복잡한 세상/문제의 패턴을 인식하기가 어렵다. 반면, Machine Learning은 사람이 아닌 (수많은) raw data로부터 AI만의 knowledge를 얻는 방식이다. data로부터 직접 얻기 때문에 'reliability'가 있다. 물론 양에 비례할 것이다.
* Machine Learning의 문제는 representation/feature에 '상당히' 의존한다는 것이다. 다시 말해, feature를 잘 design하기 위해서는 domain expert로부터의 hand-designed feature가 필요하다. 그렇지 않으면 모델 성능은 매우 떨어진다. (class마다 특징있는 feature들을 design해서 서로 잘 linearly separatable하게 유도해준다.) 하지만, (세상이 더 복잡해지는만큼) 더 복잡한 문제(e.g.,특히 언어/이미지)일 수록 domain expert라 하더라도 부정확한 경우가 있다. (때론 세상이 빠르게 변화해서 사람은 미묘한 변화를 인지하지 못하는 경우가 있다.)
* ML 한계점을 해결하기 위해 representation/feature를 모델을 통해 자체적으로 learning하는 Representation Learning 모델(e.g., autoencoder)이 등장. 큰 특징은 hand-designed representation이 필요없고 심지어 모델성능이 더 잘나온다는 것이다. 그리고 별도의 (사람의) 추가작업없이 새로운 task에 빨리 적용시킬 수 있다.
* factors of variance는 패턴 변동의 축, 다르게 설명하면 class끼리 잘 구분짓는 아주 중요한 feature, SVD에서 eigenvector라고 생각해도 될듯. 이런 feature는 데이터로부터 곧바로 얻어지긴 힘들다. (e.g., 합성곱) 이것들은 데이터 속에서 풍부한 변동이 있어서 concept이나 abstract으로 여겨질 수 있다. 문제는 여러 개의 factor들이 하나의 single piece of data에 영향을 준다는 것이다. (즉, factor들끼리 완벽한 독립이 아니다.) 따라서, 그렇게 중요하지 않은 factor들은 제거할 필요가 있다. (SVD후 변동크기 작은 dim들은 삭제하는 것 처럼)
* Representation Learning의 문제점은 high-level abstract feature(=human-level understanding of data)들을 추출하기 어렵다. (모델이 더 복잡해질 필요가 있다.)
* Deep Learning(e.g., multilayer-perceptron)은 high-level abstract concept/feature를 표현하기 위해 simpler concept들을 다시 combine하는 방식을 사용한다. 한번에 이루려하지 않고, 계층구조 또는 깊이(depth)를 만들어 여러 단계를 거치게끔 만든다. 다시 말해, complicated mapping을 a series of nested simple mappings으로 변환한다. 다른 관점으로는 high-level sequential processing이 있는데, 각 계층은 memory가 있는 하나의 state가 되고 CPU의 하나의 instruction 처럼 하나의 파이프라인으로 실행된다. deep할수록 길고 복잡한 instruction을 수행한다고 생각할 수 있다. 각 state info는 pointer라고 생각될 수 있다.
* 따라서, 크게 딥 구조를 가지는 딥러닝에 2가지 종류의 관점이 있다. 첫 번째는 보편적으로 생각하는 방식으로 high-level의 abstract representation을 가지기 위함이고, 두 번째는 high-level sequential processing을 하기 위함이다. 첫 번째 관점의 목표는 딥 구조를 통해 진화된(=더 추상화된) representation을 얻는 것이고, 두 번째 관점의 목표는 딥 구조를 통해 더 많은 명령을 수행(→복잡하고 정교한 프로그램)하는 sequential processing(→이전 명령을 기억하는)을 하겠다는 것이다.
* 하나의 stack autoencoder는 representation learning이고, 여러 개의 stack autoencoder는 deep learning이다.
1.1 Who Should Read This Book? [Sum-up]
1.2 Historical Trends in Deep Learning
1. Introduction [Sum-up]
* AI는 컴퓨터가 잘하는 일(formal task: e.g, 수치계산, 규칙작업)말고 사람이 (직감적으로) 잘하는 일(informal task: e.g., 언어/이미지 이해)을 해결하는데 목표를 가진다.
* 사실 정작 사람은 직감적으로 잘하는 일들(informal tasks)을 왜 잘하는지 모른다. 우리는 그것들을 세상/지식으로부터 배우는 데, 그것들은 지극히 주관적(subjective)이고 직감적(intuitive)이기 때문에 형태적으로 표현(formally describe)하기 힘들다.
* AI (deep learning)는 세상/문제를 '계층적 개념'(hierarchy of concepts) 형태로 이해해서 사람이 어떤 개념/형태를 명시(formally specify)해주지 않아도 사람이 잘하는 직감적인 문제(complicated concepts, informal tasks, informal knowledge)들을 자체 지능적으로 해결하고자 한다.
* AI에서 Knowledge base (hard-code knowledge)는 사람이 knowledge를 직접 design해줘야 한다. 따라서, (단순 규칙을 통한 추론만으로는) 복잡한 세상/문제의 패턴을 인식하기가 어렵다. 반면, Machine Learning은 사람이 아닌 (수많은) raw data로부터 AI만의 knowledge를 얻는 방식이다. data로부터 직접 얻기 때문에 'reliability'가 있다. 물론 양에 비례할 것이다.
* Machine Learning의 문제는 representation/feature에 '상당히' 의존한다는 것이다. 다시 말해, feature를 잘 design하기 위해서는 domain expert로부터의 hand-designed feature가 필요하다. 그렇지 않으면 모델 성능은 매우 떨어진다. (class마다 특징있는 feature들을 design해서 서로 잘 linearly separatable하게 유도해준다.) 하지만, (세상이 더 복잡해지는만큼) 더 복잡한 문제(e.g.,특히 언어/이미지)일 수록 domain expert라 하더라도 부정확한 경우가 있다. (때론 세상이 빠르게 변화해서 사람은 미묘한 변화를 인지하지 못하는 경우가 있다.)
* ML 한계점을 해결하기 위해 representation/feature를 모델을 통해 자체적으로 learning하는 Representation Learning 모델(e.g., autoencoder)이 등장. 큰 특징은 hand-designed representation이 필요없고 심지어 모델성능이 더 잘나온다는 것이다. 그리고 별도의 (사람의) 추가작업없이 새로운 task에 빨리 적용시킬 수 있다.
* factors of variance는 패턴 변동의 축, 다르게 설명하면 class끼리 잘 구분짓는 아주 중요한 feature, SVD에서 eigenvector라고 생각해도 될듯. 이런 feature는 데이터로부터 곧바로 얻어지긴 힘들다. (e.g., 합성곱) 이것들은 데이터 속에서 풍부한 변동이 있어서 concept이나 abstract으로 여겨질 수 있다. 문제는 여러 개의 factor들이 하나의 single piece of data에 영향을 준다는 것이다. (즉, factor들끼리 완벽한 독립이 아니다.) 따라서, 그렇게 중요하지 않은 factor들은 제거할 필요가 있다. (SVD후 변동크기 작은 dim들은 삭제하는 것 처럼)
* Representation Learning의 문제점은 high-level abstract feature(=human-level understanding of data)들을 추출하기 어렵다. (모델이 더 복잡해질 필요가 있다.)
* Deep Learning(e.g., multilayer-perceptron)은 high-level abstract concept/feature를 표현하기 위해 simpler concept들을 다시 combine하는 방식을 사용한다. 한번에 이루려하지 않고, 계층구조 또는 깊이(depth)를 만들어 여러 단계를 거치게끔 만든다. 다시 말해, complicated mapping을 a series of nested simple mappings으로 변환한다. 다른 관점으로는 high-level sequential processing이 있는데, 각 계층은 memory가 있는 하나의 state가 되고 CPU의 하나의 instruction 처럼 하나의 파이프라인으로 실행된다. deep할수록 길고 복잡한 instruction을 수행한다고 생각할 수 있다. 각 state info는 pointer라고 생각될 수 있다.
* 따라서, 크게 딥 구조를 가지는 딥러닝에 2가지 종류의 관점이 있다. 첫 번째는 보편적으로 생각하는 방식으로 high-level의 abstract representation을 가지기 위함이고, 두 번째는 high-level sequential processing을 하기 위함이다. 첫 번째 관점의 목표는 딥 구조를 통해 진화된(=더 추상화된) representation을 얻는 것이고, 두 번째 관점의 목표는 딥 구조를 통해 더 많은 명령을 수행(→복잡하고 정교한 프로그램)하는 sequential processing(→이전 명령을 기억하는)을 하겠다는 것이다.
* 하나의 stack autoencoder는 representation learning이고, 여러 개의 stack autoencoder는 deep learning이다.
1.1 Who Should Read This Book? [Sum-up]
1.2 Historical Trends in Deep Learning
댓글
댓글 쓰기