2P by GN⁺ | ★ favorite | 댓글 1개
  • 수학적 딥러닝 입문서로, 배경지식이 없는 학생·과학자와 더 엄밀한 이해를 원하는 실무자가 딥러닝 알고리듬의 기초를 잡도록 구성됨
  • 인공신경망은 활성화 함수와 아핀 함수의 반복 합성으로 정의되며, 합성 깊이가 늘어날수록 deep ANN으로 다루는 함수 클래스가 됨
  • 전체 구성은 ANN 구조와 계산법에서 출발해 근사 이론, 최적화, 일반화 오차, 전체 오차 분석, PDE 풀이까지 이어짐
  • 최적화 파트는 gradient flow ODE, GD, SGD, 역전파(backpropagation), Kurdyka–Łojasiewicz 접근, batch normalization, 랜덤 초기화를 함께 다룸
  • Python 소스 코드는 공개 GitHub 저장소와 arXiv 페이지에서 받을 수 있고, 각 listing 캡션의 파일명으로 책 내용과 코드를 대응시킬 수 있음

딥러닝을 수학적으로 정의하는 방식

  • 이 책은 딥러닝 알고리듬을 deep ANN과 데이터를 반복적으로 사용해 특정 관계, 함수, 수량을 근사하는 계산 방식으로 다룸
  • ANN은 특정 비선형 활성화 함수와 아핀 함수의 여러 합성으로 구성된 함수 클래스임
  • ANN의 깊이는 합성 반복 횟수에 대응하며, 비선형 함수와 아핀 함수의 합성이 2개보다 많을 때 deep ANN이라고 부르기 시작함
  • 대상 독자는 딥러닝 배경이 전혀 없지만 견고한 기초가 필요한 학생·과학자, 그리고 딥러닝의 객체와 방법을 더 확실히 이해하려는 실무자임

Part I–II: 신경망 구조와 근사 이론

  • 짧은 도입부 뒤 본문은 Part I–VI의 6개 파트로 나뉨
  • Part I: 인공신경망

    • Chapter 1은 여러 ANN 유형을 수학적으로 도입함
      • fully-connected feedforward ANN
      • convolutional ANN(CNN)
      • recurrent ANN(RNN)
      • residual ANN(ResNet)
    • Chapter 2는 fully-connected feedforward ANN에 대한 계산법(calculus) 을 다룸
  • Part II: 근사

    • ANN이 주어진 함수를 얼마나 잘 근사할 수 있는지 분석하는 여러 수학적 결과를 다룸
    • Chapter 3은 접근성을 위해 실수에서 실수로 가는 1차원 함수에 먼저 초점을 맞춤
    • Chapter 4는 다변수 함수에 대한 ANN 근사 결과로 범위를 넓힘

Part III: 최적화와 학습 알고리듬

  • 딥러닝 알고리듬의 핵심은 문제를 deep ANN이 포함된 적절한 최적화 문제로 모델링하거나 재정식화하는 데 있음
  • 이 파트는 최적화 문제와 이를 근사적으로 푸는 알고리듬을 다루며, 보통 최소화 문제를 gradient 기반 최적화 방법으로 해결함
  • gradient 기반 방법은 최적화하려는 함수의 음의 gradient 방향에 기반한 연속적인 단계로 문제를 푸는 계산 방식임
  • Chapter 5는 GD형·SGD형 방법을 이해하기 위한 gradient flow(GF) ODE와 그 활용을 다룸
  • Chapter 6은 gradient descent(GD) 같은 결정론적 gradient 기반 최적화 방법을 검토하고 분석함
  • Chapter 7은 stochastic gradient descent(SGD) 같은 확률적 gradient 기반 최적화 방법을 검토하고 분석함
  • Chapter 8은 ANN 학습에서 gradient를 명시적으로 계산하는 널리 쓰이는 방법인 역전파를 유도하고 자세히 다룸
  • Chapter 5–7의 분석은 대부분의 경우 ANN 학습 최적화 문제를 다루기에는 제한적이지만, Chapter 9의 Kurdyka–Łojasiewicz(KL) 접근은 이런 문제를 다룰 수 있음
  • Chapter 10은 데이터 기반 학습 문제에서 ANN 학습 절차를 가속하려는 방법인 batch normalization(BN)을 엄밀히 검토함
  • Chapter 11은 서로 다른 랜덤 초기화로 목적함수를 최적화하는 접근을 연구함

Part IV–VI: 오차 분석과 PDE 응용

  • Part IV: 일반화 오차

    • 딥러닝의 수학적 분석은 ANN 근사 능력과 최적화 방법의 오차 추정만으로 끝나지 않음
    • 학습 문제의 확률분포에 명시적으로 접근할 수 없고 유한한 실현값·데이터로 근사할 때 일반화 오차 추정이 필요함
    • Chapter 12는 확률적 일반화 오차 추정을 검토함
    • Chapter 13은 strong Lp형 일반화 오차 추정을 다룸
  • Part V: 전체 오차 분석

    • Part II의 근사 오차, Part III의 최적화 오차, Part IV의 일반화 오차 추정을 결합하는 방법을 예시로 보여줌
    • 예시는 많은 독립 랜덤 초기화를 사용하는 SGD형 최적화 방법 기반 ANN 학습임
    • Chapter 14는 지도학습 문제에 적합한 전체 오차 분해를 제시함
    • Chapter 15는 Parts II, III, IV의 일부 결과를 함께 사용해 예시적 전체 오차 분석을 수립함
  • Part VI: PDE를 위한 딥러닝

    • 딥러닝 방법은 데이터 기반 학습 문제뿐 아니라 편미분방정식(PDE) 을 근사적으로 푸는 데도 쓰임
    • Part VI는 PDE를 위한 인기 딥러닝 방법 3가지를 검토하고 구현함
    • Chapter 16은 physics-informed neural networks(PINNs)와 deep Galerkin methods(DGMs)를 다룸
    • Chapter 17은 deep Kolmogorov methods(DKMs)를 다룸

코드와 자료 접근 방법

  • 책에는 여러 Python 소스 코드가 포함됨
  • 소스 코드는 공개 GitHub 저장소 introdeeplearning/book에서 내려받을 수 있음
  • arXiv 페이지에서도 “Other formats”를 누른 뒤 “Download source”를 선택해 소스 코드를 받을 수 있음
  • 각 source listing의 캡션에는 대응하는 소스 파일명이 들어 있어 책의 수식·예제와 코드를 함께 따라가기 쉬움

댓글과 토론

Hacker News 의견들
  • 표준 머신러닝 기법을 꽤 통일된 수학 표기와 많은 증명으로 소개한 좋은 모음처럼 보이지만, 600쪽짜리라 정말 큰 작업임
    다만 이해하면 흥미로울 부분보다 형식화하기 쉬운 부분에 더 무게를 둔 느낌이 듦
    예를 들어 SGD 장은 최적화가 수학자들이 머신러닝에 실제로 영향력 있게 기여할 수 있는 영역이라 골랐는데, 증명 대부분은 편향-분산 분해나 Jensen 부등식처럼 기초적이고, 수렴 관련 흥미로운 정리는 문헌을 인용할 뿐 앞의 보조정리와 이어지지 않으며, ADAM 같은 실제로 흥미로운 방법들은 증명이나 이론이 거의 없음
    이 장을 읽고 나면 현대 SGD 방법과 그 발전 과정은 잘 이해하겠지만, 왜 그 방법들이 작동하는지는 수치 실험으로 확인된 직관 이상으로 알기 어려워 보임
    그렇다면 독립 확률변수에 대해 E(XY)=E(X)E(Y) 같은 기본 내용을 많이 증명하기보다, 이미 존재하는 ADAM 수렴 증명에 지면을 쓰는 편이 더 유용했을 것 같음
    ANN 장도 기본적이고 덜 흥미로운 내용을 길게 증명하는 부분이 많았고, physics-informed neural networks 논문도 좋긴 하지만 비슷한 문제가 조금 있음
    머신러닝 방법을 더 엄밀하고 통일적으로 설명하려는 방향 자체는 좋지만, 무엇을 넣고 뺄지 선을 그은 방식에는 의문이 듦

    • “왜 그 방법들이 작동하는지”를 모르는 건 사실상 분야 전체의 현재 상태 아닌가 싶음
      ADAM의 수렴 증명도 ADAM이 다른 방법보다 더 잘 작동하는 경향을 설명해 주지는 못함
      현재 아무도 이해하지 못하는 것을 설명하지 못했다고 탓하기는 어렵지만, 실제로 중요한 것을 예측하지 못하는 이론이라면 이론 중심 교육이라는 발상 자체가 약해짐
  • 딥러닝을 수학적으로 깊게 보고 싶은 사람은 Francois Fleuret의 책 https://fleuret.org/francois/lbdl.html도 볼 만함
    PDF는 무료이고, 인쇄본은 꽤 귀여움

    • Fleuret 책을 A4 용지에 제대로 인쇄하는 방법을 찾은 사람이 있는지 궁금함
      시도할 때마다 양면 인쇄기에서 한 장 걸러 한 장씩 위아래가 뒤집혀서 문제가 됨
    • 원글의 책과 비교해서 무엇이 더 돋보이는지 궁금함
  • 사람들이 이런 책을 정말 처음부터 끝까지 다 읽는지 궁금함
    Bishop의 PRML을 보고 있는데, 책을 제대로 끝내고 모든 연습문제를 푸는 데 시간이 엄청 걸림
    같은 일을 한 사람이 블로그에 쓴 걸 봤는데 1500시간 이상 걸렸다고 함
    내 석사 과정에서는 이런 책을 끝낸 사람이 한 명도 없었고, 그냥 수업을 듣고 필요한 나머지는 구글링했음

  • 프로그래밍 지식이 수학보다 깊은 입장에서는 여기의 수학 표기가 코드보다 이해하기 더 어려움
    심지어 모르는 프로그래밍 언어로 된 코드보다도 더 어렵게 느껴짐
    수학 배경이 더 강한 사람들은 이런 수학 표현이 소스 코드보다 더 쉽게 이해되는지 궁금함

    • 수학 박사와 박사후연구원 경험이 있고 이후 딥러닝 실무자로 전환했으며, 올해 수학·통계 석사 학생들에게 딥러닝을 가르쳤음
      개념을 가능한 한 정확하게 수학적으로 제시하려 했지만, 결국 이 책에 있는 것 같은 무거운 표기를 피하고 학생들이 산업에서 쓸 수 있게 하려고 많은 수학을 덜어냈고, 실제 수업은 공식보다 코드가 훨씬 많았음
      모든 것을 아주 정확히 쓰려 하면 금방 지저분해짐
      수학에서 새 개념에 좋은 표기를 찾는 일은 매우 어렵고, Einstein 표기법이나 Feynman 도표, 행렬 표기처럼 나중에는 모두 명확했다고 인정하는 표기도 처음에는 뛰어난 사람들이 만든 경우가 많음
      A 영역을 B 영역의 표기로 옮겨 적는다고 유용해지는 것도 아니며, 양자역학을 C* 대수 같은 수학으로 번역하는 일도 큰 작업이었고 지금도 어느 정도 열린 연구 분야임
      그래서 이 책을 써낸 노력은 엄청났겠지만 실제 효용은 적을 가능성이 크다고 봄
      이런 방정식을 편하게 읽을 수 있는 사람은 대체로 그 방정식이 필요 없고, 예를 들어 아핀 변환을 아는 사람이라면 4차원 텐서의 ijkl 인덱스를 전부 명시해서 볼 필요가 거의 없음
      반대로 그렇지 않은 사람들은 겁먹고 물러날 가능성이 큼
    • 수학 표기는 더 압축적이라 익숙해지는 데 시간이 걸릴 수 있음
      한 가지 이유는 손글씨에 최적화되어 있기 때문임
      프로그램 코드를 손으로 쓰는 건 매우 지루하니, 수학 표기가 왜 그렇게 생겼는지 이해할 수 있음
      게다가 수학 표기에 대응되는 “그 코드” 같은 것은 없음
      수학 표기는 수학적 사실이나 명제를 진술하기 위한 것이고, 딥러닝 알고리즘을 구현하는 코드의 목적과는 다름
    • 이 책은 응용수학자들이 응용수학을 위해 쓴 책이고, 서문에서는 과학자를 위한 책이라고 하지만 일부 이론 과학자와 엔지니어는 사실상 응용수학자에 가까움
      그래서 주제와 설명 방식이 그런 사람들에게 치우쳐 있음
      예를 들어 실제 딥러닝에서 경사 기반 최적화 알고리즘의 존재성과 유일성 조건을 걱정하는 경우는 거의 못 봤지만, 그런 결과가 이 사람들이 관심을 갖고 논문을 쓰는 주제임
      제목부터 이 분야의 이론적 기반을 다루는 책이라고 하니 이런 방식 자체는 놀랍지 않음
      이런 책은 보통 처음부터 끝까지 읽기보다, 자기 연구와 관련된 기법이 있는 몇 장만 깊게 파고듦
      나도 연구할 때 비슷하게 장황한 논문집을 쓴 적이 있지만, 관심 있던 핵심은 20~30쪽 정도였음
      엄밀성과 내용 양 측면에서 내 취향보다 너무 장황함
      예를 들어 Gronwall 부등식을 보조정리로 넣고 증명하는데, 사용한 버전이 평소 보는 것보다 조금 일반적이긴 해도 Gronwall 부등식은 상미분방정식 분석의 매우 표준적인 도구라, 내가 가진 엄밀한 제어이론 책들도 지저분함을 피하려고 증명 없이 참고문헌만 줌
      증명 기준이 높고 가정을 적게 두려 할수록 이런 장황함이 생김
    • 세 저자가 모두 수학 박사이거나 박사과정이라 표기가 극도로 조밀함
      “학생과 과학자”라는 대상 독자가 정확히 누구인지 궁금함
    • 수학 배경이 강한데도 표기가 완전히 말이 안 된다고 느꼈음
      1장 초반부터 아래첨자 안에 아래첨자가 있고, 위첨자 안에 아래첨자가 붙은 합이 나오며, 거대한 함수 합성 사슬에 들어감
      뒤로 가면 아래첨자가 4단계까지 깊어지고, 새로운 중위 연산자를 최소 3개 만들고, 서로 다른 세 알파벳에서 새 기호 30개를 정의하는데 아직 600쪽 중 100쪽도 안 됨
      누가 이걸 따라가고 소화하라고 만든 건지 모르겠음
  • 딥러닝을 수학 관점에서 설명하려는 책을 꽤 봤지만 늘 놀라움
    현재 딥러닝은 분명히 경험 과학이고, 책에 넣을 만큼 큰 영향을 준 이론 작업은 많지 않다고 봄
    그런 책들 중에서도 이 책은 적극적으로 최악에 가까워 보임
    추가 이해를 거의 주지 않고 딥러닝과도 느슨하게만 관련된 보조정리를 증명하는 데 상당한 지면을 쓰고, 코드 상당 부분은 왜 넣었는지 모르겠는 그래프 작성 코드임
    이 책의 큰 부분을 읽을 사람은 매우 적을 것이라고 봄
    여전히 최고의 교재는 Goodfellow 등의 Deep Learning과 더 현대적인 Understanding Deep Learning(https://udlbook.github.io/udlbook/)이라고 생각함

    • 이 책은 실무자를 겨냥한 책은 아니지만, 그렇다고 “적극적으로 최악”이라고 부를 이유는 없다고 봄
      딥러닝의 최전선이 매우 경험적이긴 해도, 어떤 기법이 잘 되는지만이 아니라 왜 작동하는지 이해하려는 흥미로운 연구가 있음
      증명이 이해를 얻는 좋은 방법이 아니라고 하는 건 말이 안 됨
      모두에게 좋은 방식은 아니지만 “x에 대한 수학적 입문”이라는 제목의 책은 당연히 어느 정도 수학 훈련을 받은 사람을 위한 것이고, 그런 독자에게 보조정리와 그 증명은 이해를 쌓는 자연스러운 방식임
    • UDL에도 꽤 조밀한 수학 표기가 있음
      수학은 증명만이 아니라 의사소통 방식이기도 함
      신경망이 어떻게 작동하는지 설명하는 방법에는 그림, 코드, 말, 그리고 꽤 조밀한 수학 표기가 모두 있음
    • 수학적 배경은 주제를 어느 정도 잘 이해한 뒤에야 의미가 생기기 시작하는데, 그래서 사람들이 수학을 이해하면 전체 주제를 배우는 데 도움이 된다고 잘못 가정하는 것 같음
      이론에서 직관을 만들기보다, 먼저 직관을 얻고 나서 기술적인 부분을 이해하는 편이 보통 더 쉬움
      이는 정밀과학, 특히 수학에서 대체로 맞고, 그래서 예제가 도움이 됨
  • 딥러닝이 경험 과학인 이유가 모두 수학을 두려워해서인지 궁금함
    현대 물리학만큼 풍부한 분야인데, 이상하게도 대부분의 실무자는 계속 서부 개척 시대처럼 생각하고 싶어 하는 것 같음

    • 아님
      수학 성향이 매우 강한 딥러닝 연구자도 많음
      딥러닝이 경험 과학인 이유는 우리가 가진 수학적 도구가 관찰되는 현상을 하나의 통일된 이론으로 설명하고 예측하기에 충분하지 않기 때문임
      경험 과학이라고 해서 분야가 “서부 개척 시대”라는 뜻은 아님
      딥러닝 모델은 반복 가능한 통제 실험의 대상이 될 수 있고, 이를 통해 대부분의 경우 무엇이 일어날지 이해를 개선할 수 있음
      좋은 실무자는 이걸 알고 있음
    • 둘 다 조금씩 있음
      선형대수, 미적분, 학부 수준 확률론을 넘는 수학이 많지 않아도 많은 일을 할 수 있고, 그 지식도 주로 직관을 주고 풀고 있는 문제를 조금 형식화하는 데 쓰임
      수학을 거의 하지 않아도 인상적인 결과를 포함해 성과를 낼 수 있음
      그 결과 사람들이 새로운 문제를 경험적으로 아주 빠르게 보여주고 해결하는데, 왜 작동하는지 설명하는 이론적 결과가 나오는 속도보다 훨씬 빠름
      이론이 어려운 이유는 여러 가지지만, 딥러닝의 성공 사례 다수가 통계학이나 최적 제어 같은 기존 틀에 잘 들어맞지 않아 설명하기 어렵다는 점도 큼
  • 이 수학을 실제로 쓰는 사람이 있는지 궁금함
    내 추측은 아니오에 가깝고, 좋게 봐도 딥러닝 연구자들이 자신이 하려는 일이 불가능하지 않다고 안심하게 해 주는 정신적 지지 정도로 보임
    틀렸다면 기꺼이 인정하겠음

    • 학생들에게 늘 하는 말이 있음
      좋은 모델을 만드는 데 수학이 꼭 필요하지는 않지만, 모델이 왜 틀렸는지 알려면 수학을 알아야 함
      그래서 수학은 필요함
      수학이 없으면 규모만 키우면 AGI에 도달할 수 있다고 스스로 속이게 됨
      모두가 쓰니까 어디에나 Transformer를 쓰고, 활성화 함수 사이에서 혼란스러워질 것임
      작동하는 모델은 만들 수 있지만, 작동하는 모델과 그 모델이 어디서 실패할지 예상하고 한계를 이해하는 것은 크게 다름
      많은 사람이 테스트 세트 결과만 보고 모델이 과적합이 아니라고 기대하는 것 같음
      테스트 세트 결과로 하이퍼파라미터를 튜닝하는 일은 말할 것도 없음
    • “정신적 지지”라고 표현하면 너무 과소평가하는 것임
      정렬 알고리즘, 탐색 알고리즘처럼 정확성이 증명되고 알려진 성질이 있는 이론이 없는 컴퓨터과학을 상상해 보면 됨
      이 수학은 컴퓨터과학 이론과 같은 역할을 함
      Keras 같은 라이브러리에서 모델을 맞추기만 한다면 실제로 그 수학을 “쓰는” 것은 아님
      데이터셋이 일정 크기 이하이고, 문제가 일정 복잡도 이하이며, 모델이 수년간 배포되어 성질이 잘 연구된 것이라면 수학을 대충만 알아도 많은 일을 할 수 있음
      Python이나 Java의 런타임이 깊이 어떻게 동작하는지 몰라도 완전히 기능적인 웹앱을 만들 수 있는 것과 비슷함
      하지만 실제 작동 원리를 모르면 라이브러리에 이미 들어 있지 않은 상황을 만났을 때 꽤 심하게 막힘
      바탕 수학을 모르면 어떤 일이 생기는지 보려면, 수학과 통계 기초를 모르는 현재 세대의 “데이터 과학” 졸업생들을 보면 됨
      채용 쪽 문제도 많지만, 결국 그들이 일자리를 못 얻는 이유는 이걸 배우도록 강제된 적이 없어 실제로 뭘 하는지 모르기 때문임
    • 어떤 사람들은 조밀한 수학 표기로 생각하고 소통하는 걸 좋아함
      그러니 쓰는 사람은 있음
    • 책 후반부의 PINN과 다른 편미분방정식 방법을 다루는 부분에서는, 전통적인 수치해석 방법을 전개할 때 쓰는 함수해석학과 같은 틀로 이들을 바라보는 데 도움이 됨
      이 경우 실무자가 여러 방법 사이의 물리적 일관성을 검증할 방법을 제공함
    • 초록에 따르면 다양한 ANN 구조, 최적화 알고리즘, 아마 역전파도 다루는 듯함
      그러면 머신러닝을 하는 사람이 매일 쓰는 내용 아닌가 싶음
  • 책을 특히 막 나온 책을 ArXiv에 바로 올리는 게 흔한 일인지 궁금함

    • 공식 위치에서 온라인으로 제공되는 책은 아주 드물지는 않음
      적어도 수학과 컴퓨터과학 교재에서는 종종 봄