Source-linked AI summary
Dive into Deep Learning
Aston Zhang, Zachary C. Lipton, Mu Li, Alexander J. Smola
TL;DR
다양한 실무 분야에서 딥러닝이 빠르게 발전하면서, 접근하기 쉬우면서도 충분한 기술적 깊이와 실행 가능한 예제를 제공하는 자료가 필요해졌다. 이 자료는 chain-of-thought prompting을 다루며, few-shot demonstrations를 사용해 large language models에서 복잡한 추론 능력을 이끌어낸다. 300 million images와 같은 더 큰 모델과 데이터셋으로 학습하면 Vision Transformers는 image classification에서 ResNets를 큰 폭으로 능가한다.
문제
다양한 실무 분야에서 딥러닝이 빠르게 발전하면서, 충분한 기술적 깊이와 실행 가능한 예제도 제공하는 접근하기 쉬운 자료가 필요해졌다.
방법
이 자료는 chain-of-thought prompting을 다루며, few-shot demonstrations를 사용해 large language models에서 복잡한 추론 능력을 이끌어낸다.
결과
더 큰 모델과 300 million images와 같은 데이터셋으로 학습하면 Vision Transformers는 image classification에서 ResNets를 큰 폭으로 능가한다.
시사점 및 한계
이 자료는 딥러닝 개념과 맥락에서 실용적 구현과 논의로 이어지는 통합된 경로를 제공한다.
시사점 및 한계
개별 픽셀의 중요도가 주변 픽셀 간의 복잡한 상호작용에 따라 달라지기 때문에, 선형 모델은 image classification에서 실패할 수 있다.
Abstract
from arXiv · showhide
This open-source book represents our attempt to make deep learning approachable, teaching readers the concepts, the context, and the code. The entire book is drafted in Jupyter notebooks, seamlessly integrating exposition figures, math, and interactive examples with self-contained code. Our goal is to offer a resource that could (i) be freely available for everyone; (ii) offer sufficient technical depth to provide a starting point on the path to actually becoming an applied machine learning scientist; (iii) include runnable code, showing readers how to solve problems in practice; (iv) allow for rapid updates, both by us and also by the community at large; (v) be complemented by a forum for interactive discussion of technical details and to answer questions.
이 책에 관하여 … 2 기초
Dive into Deep Learning은 실행 가능한 notebook을 통해 deep learning의 개념, 맥락, 수학, code를 가르치는 공개형 실습 자원이다. 적시 설명, 처음부터 구현, 실용적인 framework 사용, 온라인 배포, 커뮤니티 토론을 결합하고, 응용 연구에 필요한 기초를 소개한다.
- 이 책에 관하여: 이 책은 교과서 수준의 설명과 깔끔하고 실행 가능한 code를 결합해, 최신의 기술적으로 깊고 무료로 이용 가능한 응용 machine learning 입문 지점을 제공한다.개념, 맥락, code를 통합하면서 빠른 업데이트와 커뮤니티 기여를 지원하도록 설계되었다.
- 이 책에 관하여: 이 책의 notebook은 수학, 설명문, 실행 가능한 예제를 책, PDF, website, 다운로드 형식 전반에 걸쳐 교차 배치하며, 자체 도구와 토론 forum이 이를 뒷받침한다.이 프로젝트는 LaTeX, Python, HTML, JavaScript 사이의 긴장을 자체 workflow를 구성하고 GitHub를 통해 source를 공유하는 방식으로 해결한다.
- 실습을 통한 학습: 이 책은 실제 dataset을 사용한 self-contained 예제로 개념을 적시에 가르치며, 독자가 문제를 빠르게 해결하도록 완전히 설명하기 전에 도구를 먼저 제공하기도 한다.이 구성은 철저한 순차적 학습보다 실용적 진전을 우선시하면서, 먼저 기초 선형대수와 확률 기초를 소개한다.
- 실습을 통한 학습: 각 개념은 처음부터 가르치며, 기초 tutorial에서는 흔히 저수준 NumPy 유사 구현과 간결한 고수준 deep learning framework 버전을 함께 제시한다.이 접근법은 framework가 대개 감추는 세부 사항을 드러내면서도 이후에 사용할 실용적인 code를 유지한다.
- 요약: 이 책은 기초와 기초 학습에서 출발해 현대 deep learning 기법을 거쳐 확장성, 효율성, 실제 응용으로 나아간다.수치적 선수 지식, 회귀와 분류, CNN, RNN, attention mechanism, optimization, computational performance, computer vision, language representation model을 다룬다.
- 2 기초: 기초 학습에서는 data manipulation, 선형대수, 미적분, 확률, 표기법, 실행 가능한 Python workflow를 포함한 실용적 계산 기반을 확립한다.예제는 확률 추정치가 1/√n의 비율로 수렴한다는 점, 순차적 검정에서 conditional independence의 중요성, 추정이 느리게 수렴할 수 있다는 한계를 강조한다.
- Code: 대부분의 section은 실험을 위한 실행 가능한 code를 제공하지만, deep learning 실무에는 기법이 왜 작동하는지 설명할 만큼 충분한 formal theory가 부족한 경우가 많다는 점을 인정한다.경량 d2l package는 반복을 줄이며, code는 주로 PyTorch에 기반한다. PyTorch의 빠른 발전으로 인쇄판 code가 낡을 수 있지만 온라인 버전은 유지 관리된다.
- 요약: 대상 독자는 선형대수, 미적분, 확률, Python을 어느 정도 알고 있지만 사전 machine learning 또는 deep learning 배경지식은 없는 학생, engineer, researcher다.무료로 이용 가능한 notebook, 온라인 자료, 커뮤니티 지원을 통해 접근 장벽을 낮추도록 설계된 자원이다.
1. 관측 수에 따라 분산은 어떻게 변하는가? … 5. K-fold cross-validation 오차 추정량은 왜 편향되는가?
제공된 지문은 실용적이고 모듈화된 deep-learning 학습을 강조한다. 독자는 API를 살펴보고, linear model을 정식화하며, 이를 해석적으로 또는 minibatch SGD로 최적화하고, model 선택을 generalization 및 구현상의 trade-off와 연결한다.
- 2.7 Documentation: PyTorch 탐색은 공식 documentation, tutorial, example과 dir 및 help를 활용한 module introspection에서 시작한다.문서에서는 special 또는 internal name을 무시하고, 해석을 검증하며, documentation만으로 충분하지 않을 때 source code를 참조하라고 권한다.
- 3.1 Linear Regression: Linear regression은 noise로 measurement error를 설명하면서, feature의 가중합에 bias를 더해 수치형 target을 model한다.이 정식화는 componentwise 표기와 vector 또는 design-matrix 표기로 모두 표현된다.
- Loss Function: Squared error는 큰 prediction deviation을 불균형적으로 크게 penalize하므로, anomalous data가 loss를 지나치게 민감하게 만들 수 있다.Training에서는 example 전체에 대한 aggregate loss를 minimize한다.
- Analytic Solution: Augmented design matrix가 full rank이면 linear regression은 analytic least-squares solution을 허용하지만, 이러한 편의성은 대부분의 deep-learning model에는 적용되지 않는다.최적해는 X^⊤X가 invertible일 때만 unique하며, 이는 design-matrix column이 linearly independent인 경우와 동치다.
- Minibatch Stochastic Gradient Descent: Minibatch SGD는 무작위로 sampling한 중간 크기 batch에서 update함으로써 full-batch의 비효율성과 single-example SGD의 계산적·통계적 단점 사이에서 균형을 잡는다.시작점으로 32에서 256 사이의 minibatch size를 제안하며, learning rate와 batch size는 조정 가능한 hyperparameter로 남는다.
- 3.1.2 Vectorization for Speed: 구현을 vectorize하면 손으로 작성하는 수학식, 잠재적 오류, portability 문제를 줄이면서 order-of-magnitude speedups를 얻는다.library는 더 느린 대안보다 많은 계산을 직접 처리한다.
- 3.1.3 The Normal Distribution and Squared Loss: σ가 fixed일 때, additive Gaussian noise를 갖는 linear model에서 mean squared error는 maximum-likelihood estimation과 equivalent하다.Noise scale에 의존하는 multiplicative constant는 optimizer를 바꾸지 않는다.
- Book approach: 이 책은 explanation, mathematics, figure, interactive code를 결합한 runnable하고 modular한 notebook을 통해 deep learning을 소개한다.명시된 목표에는 free access, technical depth, practical code, rapid updates, interactive discussion forum이 포함된다.
1. 이를 위한 이진 코드를 설계하려 하면 어떤 문제가 생기는가? … 3. 연구자들은 일반적으로 중단 기준을 어떻게 정하는가?
이 절에서는 수치적으로 안정적인 softmax와 cross-entropy, 신뢰할 수 있는 데이터셋 및 평가 관행, 모델 용량·최적화·분포 이동·조기 종료에 관한 통찰 등 실용적인 deep learning의 기초를 다룬다. 접근하기 쉬운 고수준 추상화는 구현 수준의 이해와 신중한 검증을 함께 갖춰야 한다고 강조한다.
- 1. 이를 위한 이진 코드를 설계하려 하면 어떤 문제가 생기는가?: Fashion-MNIST는 10개의 의류 범주, 60,000개의 훈련 이미지, 10,000개의 테스트 이미지를 포함해 MNIST보다 현실적인 분류 벤치마크를 제공한다.이 데이터셋은 c × h × w 텐서로 표현되는 grayscale 이미지를 사용하며 minibatch 순회와 시각화를 지원한다.
- 2. temperature가 0에 가까워지면 어떤 일이 일어나는가?: LogSumExp trick을 사용해 logits에서 직접 softmax와 cross-entropy를 계산하면 출력 확률에 계속 접근하면서 overflow와 underflow를 피할 수 있다.이 loss는 softmax 확률을 입력으로 받는 대신 softmax와 그 로그를 함께 계산한다.
- 1. GPU와 CPU 사이에서 이것은 어떻게 달라지는가?: 고수준 API는 접근성과 간결성을 높이지만 수치적 위험을 감출 수 있으므로, 이 책은 bare-bones 구현과 우아한 구현을 모두 학습할 것을 권장한다.간결한 구현은 대체로 성능이 좋지만, convolution은 주요 예외로 확인된다.
- 2. 같은 테스트에서 모델을 계속 반복 평가하면 어떤 일이 일어나는가?: 테스트 세트 오차 추정치는 O(1/√n)으로 수렴하지만, 유한 표본의 불확실성 때문에 보고된 작은 개선을 신뢰성 있게 해석하기 어렵다.점근적으로 95% 신뢰구간이 ±0.01이 되려면 약 10,000개의 표본이 필요하지만, 유한 표본 계산에는 대략 15,000개의 예제가 필요하다.
- 3. 이를 사용해야 하는가? 언제 사용하는 것이 타당한가?: 분포 이동은 벤치마크 또는 합성 데이터에서 잘 작동하는 모델도 배포 환경에서는 실패하게 만들 수 있으며, 의료 샘플링 편향, 비현실적인 도로 질감, 시간에 따라 변하는 그림자가 이를 보여준다.가정이 제한된 방법은 때때로 분포 이동을 탐지하고 이에 적응해 원래 classifier의 정확도를 향상할 수 있다.
- 3. 다섯 차수 다항식 클래스의 VC dimension은 얼마인가?: 선형 모델은 제한적인 단조성과 feature 상호작용 가정을 부과하므로, 의미가 주변 픽셀에 의존하는 이미지 범주에는 부적합하다.단일 hidden-layer 네트워크는 충분한 노드와 적절한 가중치가 있으면 모든 함수를 표현할 수 있지만, 그러한 가중치를 학습하는 일은 여전히 어렵다.
- 8. 서로 다른 activation function을 시도해 보라. 어떤 것이 가장 잘 작동하는가?: ReLU는 그 미분값이 sigmoid와 tanh activation에서 널리 나타나는 vanishing-gradient 현상을 피하기 때문에 최적화를 개선한다.Xavier initialization은 fan-in과 fan-out을 바탕으로 분산을 선택하며, 유도 과정의 단순화된 가정에도 불구하고 실제로 잘 작동한다.
- 2. early stopping을 regularization 기법으로 볼 수 있는 이유는 무엇인가?: Deep network는 임의로 지정된 label이나 무작위 label에 맞출 수 있지만, 잘못된 label을 암기하기 전에 올바르게 label된 예제를 깨끗하게 학습하는 경우가 많으므로, 실용적인 제어 수단으로 early stopping을 사용하게 된다.훈련 데이터를 맞추는 일은 대체로 가능하지만, 최적화가 성공하는 이유와 gradient로 훈련된 모델이 그토록 잘 일반화하는 이유에 대한 종합적인 설명은 deep-learning 이론에 아직 없다.
4. 테스트 시 dropout을 일반적으로 사용하지 않는 이유는? … 4. backpropagation의 계산 비용은 얼마인가?
제공된 본문은 실용적 regularization과 Kaggle workflow, modular neural-network 구현, locality·parameter sharing·downsampling을 활용하는 convolutional architecture를 다룬다. preprocessing, validation, 재사용 가능한 module, 계산 복잡도 감소를 강조하지만, 제시된 dropout, memory, dimensionality, backpropagation 질문에 대한 직접적인 답은 제공하지 않는다.
- 1. 이 section의 prediction을 Kaggle에 제출하기: Kaggle은 정량적 비교와 code sharing을 위한 객관적 platform을 제공하며, competition에서는 labeled training data와 unlabeled test data를 분리하고 평가를 위해 prediction을 업로드해야 한다.training set에는 1460개 example과 80개 feature가 포함되는 반면, validation data에는 1459개 example과 80개 feature가 포함된다.
- 6.1 Layer와 Module: Neural-network module은 layer, multlayer component, 전체 model을 위한 재귀적 abstraction을 제공하며, forward propagation과 parameter 저장이 필요하고 automatic differentiation이 backpropagation을 제공한다.PyTorch의 nn.Sequential은 구성 module의 ordered list를 유지하므로, 256-unit ReLU hidden layer 뒤에 ten-unit output layer가 오는 network를 간결하게 구현할 수 있다.
- 3. Parameter sharing이 좋은 이유는 무엇인가?: Tied parameter는 동일한 exact tensor로 표현되므로, 한 layer의 parameter를 수정하면 다른 layer의 parameter도 함께 변경된다.본문은 parameter sharing을 설명하지만 memory footprint나 computational cost를 정량화하지는 않는다.
- 2. Mismatching dimension을 지정하면 어떻게 되는가?: Lazy initialization은 framework가 data로부터 parameter shape을 추론하도록 하여 architecture 변경을 단순화하고 흔한 오류 원인을 제거한다.Parameter는 model에 data가 전달될 때 initialized된다.
- 1. Audio에 locality와 translation invariance를 적용하고 싶은 경우는 언제인가?: Convolutional network는 interaction을 local neighborhood로 제한하고 spatial location 전반에서 filter를 공유하여 parameter를 줄이며, 달리 infeasible한 문제를 tractable model로 바꾼다.Convolution은 parameter count를 10^12에서 4 × 10^6으로 줄이고, locality는 이를 다시 4 × 10^6에서 4∆^2로 줄이며, ∆는 일반적으로 10보다 작다.
- 1. 이 section의 kernel K를 여기에 적용하면 어떻게 되는가?: Convolutional operation은 edge, line, blur, sharpen을 감지할 수 있으며, learned filter는 hand-designed feature-engineering heuristic을 대체한다.제공된 example은 cross-correlation이 white-to-black 및 black-to-white edge를 감지하고, predefined kernel에 가까운 kernel을 학습하며, kernel을 뒤집은 뒤 strict convolution과 cross-correlation이 동등함을 보여준다.
- 4. 1보다 큰 stride의 computational benefit은 무엇인가?: Pooling layer는 location에 대한 convolutional sensitivity를 완화하고 representation을 spatially downsample하며, 반복된 convolution이 image를 계속 축소하므로 padding과 stride가 output size를 제어한다.연속으로 수행한 10회의 5 × 5 convolution은 240 × 240 image를 200 × 200 pixel로 줄여 width와 height의 30%를 잘라낸다.
5. 왜 max-pooling과 average pooling은 다르게 작동할 것으로 예상하는가? … 3. 인과성은 텍스트에도 적용되는가? 어느 정도까지 적용되는가?
제공된 지문은 LeNet의 convolutional architecture와 pooling 기반 차원 축소에서 시작해 정확도, 효율성, trainability, scalability를 개선한 현대적 설계로 이어지는 CNN의 발전을 추적한다. 또한 구조화되어 있지만 희소한 n-gram 통계와 누적되는 prediction error에서 비롯되는 language modeling의 난제를 소개한다.
- 7.6 Convolutional Neural Networks (LeNet): LeNet은 sigmoid activation과 average pooling을 사용하는 두 개의 convolutional layer를 결합해, fully connected classification에 앞서 channel 수를 늘리면서 spatial dimension을 줄인다.재현된 model은 원래의 Gaussian activation layer를 softmax로 대체하지만 LeNet-5 architecture의 나머지 부분은 유지한다.
- 8.1.2 AlexNet: AlexNet은 2012 ImageNet challenge에서 큰 격차로 우승하며, 학습된 feature가 사람이 설계한 computer-vision feature를 능가할 수 있음을 보였다.이 8-layer CNN은 GPU 병렬화 convolution과 matrix multiplication을 통해 실용화되었다.
- 8.3 Network in Network (NiN): Global average pooling은 거대한 fully connected layer를 제거해 정확도를 해치지 않으면서 parameter를 크게 줄이고, 저해상도 representation에 translation invariance를 추가한다.Network-in-Network는 channel별 nonlinearity를 위한 1 × 1 convolution과 spatial location 전반의 global average pooling을 결합한다.
- 8.4 Multi-Branch Networks (GoogLeNet): GoogLeNet은 multi-branch convolution을 연결해 kernel size 중에서 선택하는 동시에 predecessor network보다 computation을 줄이고 정확도를 높인다.이는 evaluation cost와 predictive performance 사이의 의도적인 architectural trade-off로 향하는 전환을 나타낸다.
- 8.5 Batch Normalization: Batch normalization은 convergence를 가속하고 optimization을 regularize하지만, 원래의 internal-covariate-shift 설명은 타당하지 않은 것으로 여겨진다.그 효과는 특히 중간 규모 minibatch, 대략 50–100개의 example과 관련된다.
- 8.6 Residual Networks (ResNet): Residual connection은 identity mapping을 쉽게 표현하고 identity function으로 초기화된 상태에서 layer를 추가할 수 있게 해 훨씬 더 깊은 network를 가능하게 한다.원래 ResNet 연구는 최대 152개 layer를 갖는 network를 지원했으며, ResNeXt는 독립적인 group에서 반복 transformation을 사용해 효율성을 높였다.
- 9.1.4 Prediction: Autoregressive prediction은 4 step 동안은 좋아 보일 수 있지만, 각 prediction이 다음 input을 교란하면서 error가 누적되기 때문에 더 먼 미래에서는 거의 쓸모없어진다.Language model도 마찬가지로 “dog bites man”을 “man bites dog”보다 선호하는 것처럼 그럴듯한 sequence를 선택해 모호성을 해소한다.
- 9.2.5 Exploratory Language Statistics: Language는 unigram을 넘어 Zipf-like behavior를 보이며, 더 긴 sequence일수록 exponent가 작아지고, 서로 다른 n-gram inventory가 제한되며, 희귀한 n-gram이 많다.이러한 특성은 language의 구조를 드러내는 동시에 단순한 counting method를 robust language modeling에 부적합하게 만든다.
2. 대화는 어떻게 모델링할까? … 4. 위 결과는 RNN의 gradient에 무엇을 의미할까?
Recurrent neural network는 이전 입력을 요약하는 hidden state를 유지하고 시간축에서 parameter를 재사용해 sequence를 모델링한다. 긴 sequence는 sampling, history length, gradient 문제를 일으키므로 truncated backpropagation, gradient clipping, gated architecture가 필요하다.
- 3. 긴 sequence 데이터를 읽는 다른 방법으로 무엇을 생각할 수 있는가?: 긴 sequence를 학습하려면 sequence example을 어떻게 sampling할지, token을 얼마나 균일하게 노출할지 결정해야 하며, 무작위 초기 token을 버릴지 완전한 문장을 보존할지도 정해야 한다.제시된 연습문제는 minibatch sampling과 균일한 sequence coverage를 실용적인 설계 문제로 제시한다.
- 2. 예측에 사용하는 history의 길이를 제어하는 hyperparameter는 무엇인가?: 예측에 사용할 수 있는 history는 recurrent computation과 training을 구성하는 방식으로 결정되며, token input은 one-hot vector로 표현되어 vocabulary 크기의 prediction으로 매핑된다.RNN은 sequence를 단계별로 처리하며, language-model output dimension은 vocabulary size와 일치한다.
- 2. 대화는 어떻게 모델링할까?: RNN은 sequence history를 포착하는 hidden state를 유지하므로, sequence length가 늘어나도 parameter 수를 증가시키지 않고 character-level language modeling을 수행할 수 있다.각 단계에서 hidden state는 현재 input과 이전 hidden state를 결합하며, output layer는 다음 token을 예측한다.
- 3. 긴 sequence를 거쳐 backpropagation하면 gradient에 어떤 일이 일어나는가?: 많은 time step을 거쳐 backpropagation하면 깊이에 의존하는 gradient 문제가 발생한다. gradient가 vanish하거나 explode하여 optimization이 어려워지고, 불안정해지거나 발산할 수 있다.Exploding gradient는 수천 회의 iteration에서 얻은 진전을 무효화할 수 있는 반면, vanishing gradient는 recurrent architecture의 근본적인 장애로 남는다.
- 9. 이 절의 code를 gradient clipping 없이 실행해 보라. 어떤 일이 일어나는가?: Gradient clipping은 gradient를 반지름 θ인 ball에 projection하여 방향을 보존하면서 norm을 제한하고, 비정상적으로 큰 minibatch의 영향을 줄인다.Clipping은 실용적인 heuristic이다. robustness를 높이지만 더 이상 true gradient를 정확히 따르지는 않는다.
- 1. High-level API를 사용해 RNN model을 overfit시킬 수 있는가?: From-scratch RNN language model은 사용자가 제공한 prefix에서 continuation을 생성하는 반면, 최적화된 high-level implementation은 비슷한 perplexity를 달성하면서 더 빠르게 실행된다.Generation은 먼저 warm-up period 동안 prefix를 입력한 뒤, prediction을 subsequent input으로 다시 공급한다.
- 3. 긴 sequence를 거쳐 backpropagation하면 gradient에 어떤 일이 일어나는가?: Truncated backpropagation through time은 짧은 interaction range와 증가한 gradient variance가 덜 정확한 gradient에도 불구하고 유용할 수 있으므로 약한 regularizer로 작용할 수 있다.제시된 문단은 regular truncation을 short-range interaction만 학습해야 하는 model에 regularizing effect를 제공할 수 있는 전략으로 설명한다.
- 4. 위 결과는 RNN의 gradient에 무엇을 의미할까?: LSTM memory cell과 input 및 forget gate는 내부 state를 언제 보존하거나 교란할지 학습하여 vanishing gradient를 완화하며, GRU는 더 가벼운 computation으로 비슷한 performance를 제공한다.forget gate가 1이고 input gate가 0이면 cell state는 일정하게 유지된다. 또한 gated RNN은 simple RNN보다 long-distance dependency를 더 잘 포착한다.
1. 번역 결과를 개선하도록 hyperparameter를 조정할 수 있는가? … 2. 강력한 language model이 주어졌을 때 어떤 응용을 생각할 수 있는가?
이 절에서는 attention과 Transformer 메커니즘을 sequence modeling을 확장할 수 있는 접근법으로 제시하고, prompting과 대규모 pretraining으로 가능해진 language model 응용을 조명한다. 또한 deep-learning objective가 nonconvex하고 saddle point, local minima, vanishing gradients를 겪을 수 있어 optimization이 어렵다고 설명한다.
- 번역 결과를 개선하도록 hyperparameter를 조정할 수 있는가?: Beam search는 beam size k를 통해 greedy search의 효율성과 exhaustive search의 최적성 사이에서 절충하며, 계산 비용은 O(k |Y| T′)다.Greedy search의 비용은 O(|Y| T′)인 반면 exhaustive search의 비용은 O(|Y|^T′)이므로, vocabulary와 sequence가 크면 exhaustive decoding은 실행하기 어렵다.
- 학습 가능한 positional encoding method를 설계할 수 있는가?: Transformer는 recurrent connection을 attention mechanism으로 대체하며 natural language processing task의 지배적 model이 되었다.이 장에서는 기본적인 attention 직관에서 Transformer, vision Transformer, pretrained Transformer model로 나아간다.
- 입력 sequence가 매우 길다면 Transformer는 어떤 어려움을 겪을 수 있는가? 그 이유는 무엇인가?: Attention pooling은 간결한 query 기반 계산을 사용해 operation을 변경하지 않고 임의로 큰 key–value database에서 작동한다.이 메커니즘은 value의 weighted combination을 구성하며, 일반적으로 합이 1인 nonnegative weight를 사용한다.
- Decoder의 output layer를 설계하는 다른 방법도 있는가?: Attention은 전체 sequence를 하나의 고정 길이 vector로 압축하는 대신 각 prediction에 필요한 입력 정보를 선택적으로 집계한다.Bahdanau et al. (2014)은 sequence-to-sequence prediction을 위한 differentiable attention을 도입하고, 관련 있는 입력 부분을 사용해 decoder state를 업데이트했다.
- 강력한 language model이 주어졌을 때 어떤 응용을 생각할 수 있는가?: GPT-2는 하나의 language model이 model update 없이 여러 task를 지원할 수 있음을 보여 주었으며, 이 접근법은 fine-tuning보다 계산 효율이 높다.Fine-tuning에는 gradient computation을 통한 model parameter 업데이트가 필요하다.
- 강력한 language model이 주어졌을 때 어떤 응용을 생각할 수 있는가?: GPT-3의 few-shot 성능은 model size가 커질수록 가장 빠르게 증가하며, Transformer 성능은 parameter, token, compute에 대해 power-law scaling을 따른다.Large model은 더 나은 sample efficiency도 달성하므로, smaller model의 성능에 도달하는 데 필요한 training token 수가 더 적다.
- 강력한 language model이 주어졌을 때 어떤 응용을 생각할 수 있는가?: Prompting은 in-context learning을 통해 large language model이 task를 수행하도록 하며, 여기에는 chain-of-thought demonstration을 사용한 복잡한 reasoning도 포함된다.여러 reasoning path를 sampling하고, demonstration을 다양화하며, 문제를 분해하면 reasoning accuracy를 높일 수 있다. 또한 간단한 prompt로 zero-shot chain-of-thought reasoning을 유도할 수도 있다 (Kojima et al., 2022).
- 강력한 language model이 주어졌을 때 어떤 응용을 생각할 수 있는가?: Deep-learning optimization은 objective에 많은 local minima, 더 많은 saddle point, nonconvexity, vanishing gradients가 포함될 수 있어 어렵다.Training error를 최소화한다고 해서 generalization error도 최소화되는 것은 아니며, reparameterization과 좋은 initialization이 optimization challenge를 해결하는 데 도움을 줄 수 있다.
3. 딥러닝 최적화에서 어떤 다른 과제를 생각할 수 있는가? … 2. 알고리즘의 수렴 속도는 얼마나 빠른가?
이 절은 딥러닝 최적화를 이해하기 위한 다루기 쉬운 기반으로 convex optimization을 전개하면서, learning rate, stochasticity, constraints, curvature, momentum, adaptive scaling이 수렴에 미치는 영향을 보인다. convex 분석은 유용한 지침을 제공하지만, 딥러닝은 대체로 nonconvex이며 감소하는 learning rate와 minibatch 같은 실용적 절충이 필요하다는 결론을 내린다.
- 왜 이것이 어려운가?: convex 문제에서는 local minima가 global minima이며, twice-differentiable convexity는 positive-semidefinite Hessian으로 특징지어진다.이러한 성질은 convex objective를 더 쉽게 분석하고 optimization algorithm을 설계하게 하지만, 딥러닝 objective는 대체로 nonconvex다.
- 딥러닝 최적화에서 어떤 다른 과제를 생각할 수 있는가?: convex constraint는 Lagrangian, penalty 또는 projection으로 처리할 수 있지만, 실제로는 penalty가 더 robust한 경우가 많으며 nonconvex 문제에서는 exact optimality 성질이 성립하지 않을 수 있다.Lagrange multiplier는 saddle-point optimization을 통해 constraint를 강제하고, projection은 점을 convex set에서 가장 가까운 점으로 사상한다.
- 알고리즘의 수렴 속도는 얼마나 빠른가?: Learning rate 선택에는 근본적인 trade-off가 있다. 작은 rate는 느리게 수렴할 수 있는 반면, 큰 rate는 특히 ill-conditioned 방향에서 overshoot하거나 diverge할 수 있다.Scalar quadratic optimization에서는 |1 −ηλ| < 1일 때 수렴하고, 처음에는 η가 커질수록 개선되며, ηλ > 2이면 diverge한다.
- 알고리즘의 수렴 속도는 얼마나 빠른가?: Stochastic gradient는 평균적으로 unbiased이지만 minima 근처에서도 noisy하게 남으며, 감소하는 learning rate는 variance를 줄이지만 decay를 잘못 선택하면 여전히 수렴을 막을 수 있다.Inverse-square-root decay는 50 step 이후 수렴을 개선하는 반면, 다른 schedule은 1000 iteration 이후에도 x = (0, 0)에서 멀리 남아 수렴하지 못한다.
- 알고리즘의 수렴 속도는 얼마나 빠른가?: 볼록 목적 함수에서는 확률적 경사 하강법이 넓은 범위의 학습률에서 최적점으로 수렴하지만, 학습률은 결국 소멸해야 한다.수렴 속도는 O(1/√T)이며, 확률적 경사의 상한 L과 최적성에서의 초기 거리 r에 따라 달라진다.
- 알고리즘의 수렴 속도는 얼마나 빠른가?: Minibatch stochastic gradient descent는 수렴 속도와 계산 효율 사이에서 절충하며, 일반적으로 clock time 기준으로 stochastic gradient descent와 gradient descent보다 빠르다.Full-batch update는 6 step 이후 정체된 반면, minibatch는 epoch당 비용과 optimization progress 사이에서 더 유리한 균형을 이루었다.
- 이 효과를 optimization algorithm에도 활용할 수 있는가?: Momentum은 gradient를 leaky average로 대체하여 수렴을 가속하고, ordinary gradient descent보다 가능한 수렴 범위를 넓힌다.Momentum의 명시된 수렴 조건은 0 < ηλ < 2 + 2β이며, gradient descent에서는 0 < ηλ < 2다.
- 이 효과를 optimization algorithm에도 활용할 수 있는가?: Adaptive method는 누적된 gradient 정보를 사용해 coordinate의 scale을 조정함으로써 불균일하거나 sparse한 gradient를 처리하지만, Adagrad의 learning rate는 지나치게 빠르게 감소할 수 있고 RMSProp은 후반부 slowdown을 피한다.Adagrad는 sparse feature에 특히 효과적인 반면, RMSProp은 learning-rate control을 분리하여 later iteration에서 variable이 점점 느리게 이동하지 않도록 한다.
4. Adam이 발산하고 Yogi가 수렴하는 사례를 구성하려면? · 4. 워밍업은 얼마나 오래 지속해야 하는가? · 3. CPU의 cache 크기를 어떻게 측정할 수 있는가?
이 절에서는 learning-rate schedule, warmup, compilation, hardware-aware execution이 deep learning의 optimization, accuracy, generalization, computational performance에 미치는 영향을 설명한다. learning rate를 낮추면 accuracy를 높이고 overfitting을 줄일 수 있으며, warmup은 초기 발산을 방지하고 computational framework는 execution을 최적화할 수 있음을 강조한다.
- 12.11 Learning Rate Scheduling: learning-rate magnitude, decay rate, initialization, warmup, cyclical adjustment는 모두 optimization을 관리할 때 중요한 고려 사항이다.너무 큰 learning rate는 발산을 일으킬 수 있고, 너무 작은 learning rate는 training을 느리게 하며, 큰 learning rate가 계속 유지되면 optimality로의 수렴을 막을 수 있다.
- 12.11.2 Schedulers: toy Fashion-MNIST 문제에서 scheduling은 overfitting을 줄였으며, default training과 비교해 train loss 0.272, train acc 0.901, test acc 0.883을 얻었다.scheduler는 learning curve를 더 매끄럽게 만들었고 이전의 default setting보다 overfitting을 줄였다.
- Cosine Scheduler: Fashion-MNIST에서 cosine scheduling은 train loss 0.186, train acc 0.932, test acc 0.901을 달성했지만, cosine schedule의 개선이 보장되는 것은 아니다.이 schedule은 target rate를 사용하며 maximum update step 이후에도 해당 rate에 고정된다.
- 12.11.4 Summary: training 중 learning rate를 낮추면 accuracy를 높이고 overfitting을 줄일 수 있으며, progress가 plateau에 도달한 뒤 piecewise하게 낮추면 solution을 효율적으로 정교화할 수 있다.이 책은 reduced learning rate가 더 매끄러운 curve와 더 적은 overfitting을 만들 수 있다고 설명하지만, 이론적 설명은 아직 해결되지 않았다.
- Warmup: warmup period는 learning rate를 점진적으로 증가시킨 뒤 이를 낮추며, random initialization에서 발생하는 큰 update로 인한 초기 발산을 방지한다.warmup은 어떤 scheduler와도 함께 적용할 수 있으며, 매우 깊은 network에서 parameter divergence를 제한한다.
- 13.1.1 Symbolic Programming: symbolic programming은 Python interpreter bottleneck을 제거하고, compiler optimizations를 가능하게 하며, model을 Python 외부로 port하기 쉽게 만든다.compiler는 전체 computation을 검사하고 operation을 재작성하며, intermediate value가 더 이상 필요하지 않을 때 memory를 해제할 수 있다.
- Acceleration by Hybridization: torch.jit.script로 MLP를 compiling해도 computation result는 유지되며, 보고된 timing은 torchscript 없이 18.1045 sec, torchscript를 사용하면 20.5523 sec였다.주변 문맥에서는 nn.Sequential instance를 scripting하면 computing performance가 향상된다고 설명하지만, 표시된 timing 값은 그렇지 않다.
- 13.2.4 Summary: deep-learning framework는 decoupled execution backend, asynchronous command insertion, automatic parallelism, computation과 communication의 overlapping을 통해 computational performance를 향상한다.automatic scheduling은 전체 execution time을 개별 operation 시간의 합보다 짧게 만들 수 있으며, GPU memory가 충분할 때 data parallelism을 편리하게 사용할 수 있다.
5. 손으로 설계하는 대신 non-maximum suppression을 학습할 수 있는가? · 2. convolution을 구현하는 데 matrix multiplication을 사용하는 것이 효율적인가? 그 이유는 무엇인가?
이 글은 균일하게 샘플링한 anchor box와 layerwise receptive field를 통해 multiscale object detection을 제시한 뒤, convolution을 matrix multiplication으로 구현할 수 있으며 transposed convolution이 forward와 backward 연산을 서로 교환한다는 점을 설명한다.
- 14.5 다중 스케일 객체 탐지: 561×728 이미지에서 픽셀마다 다섯 개의 anchor box를 생성하려면 이백만 개가 넘는 anchor box에 대해 라벨을 지정하고 예측해야 한다.이는 고려할 anchor box의 수를 줄이는 동기가 된다.
- 14.5.1 Multiscale Anchor Boxes: Multiscale anchor generation은 feature-map 위치에서 중심을 균일하게 샘플링하면서 scale에 따라 anchor 크기와 sampling density를 변화시킨다.작은 object에는 더 많은 sampled region과 더 작은 anchor가 할당되고, 큰 object에는 더 적은 region과 더 큰 anchor가 할당된다.
- 14.5.1 Multiscale Anchor Boxes: 연속된 scale에서 scale 0.15인 4×4 feature map은 균일하게 분포된 중심을 제공하고, scale 0.4에서는 overlap이 발생하며, scale 0.8에서는 이미지 위에 anchor box의 중심을 둔다.feature-map 차원을 줄이면서 anchor scale을 키우면 점차 더 큰 object를 detection할 수 있다.
- 14.5.2 Multiscale Detection: Deep neural network는 multiscale object detection을 위해 여러 수준의 layerwise image representation을 활용한다.서로 다른 receptive-field 크기를 가진 feature map은 서로 다른 크기의 object를 detection한다.
- 14.6 The Object Detection Dataset: banana detection dataset에는 다양한 banana의 회전, 크기, 위치에 대해 labeled bounding box가 포함된 1000 training example과 100 validation example이 있다.이 dataset의 label에는 image-classification label과 달리 object class와 bounding-box coordinate가 포함된다.
- 14.7.1 Model: Single-shot multibox detection은 CNN base network와 multiscale feature-map block을 결합해 서로 다른 크기의 anchor box에 대한 class와 offset을 prediction한다.상위 수준의 feature map은 더 작고 receptive field가 더 크므로, 수는 적지만 더 큰 object에 적합하다. 원래 model은 truncated VGG network를 사용했다 (Liu et al., 2016).
- Class Prediction Layer: convolutional channel을 사용해 anchor-box class를 prediction하면 fully connected classification에 필요한 heavy parameterization을 줄일 수 있다.feature-map scale에 hwa anchor box가 있으면 fully connected classification은 실행이 어려워질 수 있다.
- 14.10.4 Summary: Convolution은 matrix multiplication으로 구현할 수 있는 반면, transposed convolution은 convolutional layer의 forward-propagation function과 backpropagation function을 서로 교환한다.Transposed convolution은 kernel을 통해 input element를 broadcast하여 input보다 큰 output을 생성하며, hyperparameter를 일치시키면 input shape을 복원할 수 있다.
2. hyperparameter를 조정해 모델의 정확도를 더 향상할 수 있는가? … 1. subsampling을 사용하지 않으면 이 절의 코드 실행 시간은 어떻게 변하는가?
제공된 지문은 pretrained feature representation과 가중 loss를 사용해 합성 이미지를 최적화하는 CNN 기반 neural style transfer를 설명한다. 또한 step당 비용이 noise sample 수에 좌우되거나 dictionary size의 logarithm에 비례하는 근사적 word-embedding 학습 방법을 요약한다.
- 14.12.1 방법: Style transfer는 합성 이미지만 업데이트하고, pretrained CNN은 고정된 채 계층적 content와 style feature를 추출한다.합성 이미지는 content image로 초기화하며, ImageNet으로 pretrained된 VGG-19를 feature extraction에 사용한다.
- 14.12.3 Preprocessing과 Postprocessing: 구현에서는 image를 resize하고 tensor로 변환한 뒤 RGB를 standardization하며, postprocessing에서는 복원된 pixel value를 [0, 1]로 clamp한다.content image와 style image는 300 by 450 pixel로 resize하고, 합성 이미지는 content image로 초기화한다.
- 1. 서로 다른 content layer와 style layer를 선택하면 output은 어떻게 변하는가?: 서로 다른 CNN layer는 서로 다른 정보를 제공한다. input에 가까운 layer는 image detail을 포착하는 반면, output에 가까운 layer는 global information을 포착한다.이 방법은 content layer와 style layer를 선택하고, 해당 intermediate output을 생성하는 데 필요한 VGG computation을 유지한다.
- 2. hyperparameter를 조정해 모델의 정확도를 더 향상할 수 있는가?: loss는 content, style, total variation 항을 결합해 hyperparameter가 content 보존, style transfer, noise reduction 사이의 균형을 조정하도록 한다.content loss는 content-layer feature를 비교하고, style loss는 Gram-matrix representation을 비교하며, total variation loss는 인접한 pixel을 더 가깝게 만들어 high-frequency noise를 줄인다.
- 14.12 Neural Style Transfer: 합성 이미지는 content scene을 유지하면서 style image의 color, block-like pattern, brush-stroke texture를 전달한다.실험에서는 landscape content image와 oil-painting style image를 사용한다.
- 1. negative sampling에서 noise word를 어떻게 sampling할 수 있는가?: Negative sampling은 gradient computation을 dictionary size와 무관하게 만들며, step마다 sampling하는 noise word 수 K에 선형적으로 의존하게 한다.요약된 내용은 negative sampling을 mutually independent한 positive event와 negative event를 사용하는 방법으로 설명한다.
- 1. subsampling을 사용하지 않으면 이 절의 코드 실행 시간은 어떻게 변하는가?: Hierarchical softmax는 binary tree의 root-to-leaf path를 통해 각 training step의 비용을 dictionary size의 logarithm에 의존하도록 줄인다.인용된 지문은 path length가 O(log2|V|)라고 설명하며, dictionary가 매우 클 때 비용을 줄인다.
4. byte pair encoding 아이디어를 phrase 추출에 확장하려면? … 3. machine translation에서 BERT를 활용할 수 있는가?
이 절에서는 similarity와 analogy task를 위한 pretrained word vector를 소개한 뒤, masked language modeling과 next sentence prediction으로 사전학습된 context-sensitive, bidirectional, task-agnostic representation model인 BERT를 전개한다. BERT는 architecture를 최소한으로 변경해 폭넓은 NLP application을 지원하며, 서로 다른 context에서 token에 서로 다른 representation을 생성한다.
- 15.8.1 Context-Independent에서 Context-Sensitive로: context와 무관한 embedding은 context에 관계없이 단어에 같은 vector를 할당하므로, 다의성과 복잡한 의미를 처리하는 데 한계가 있어 context-sensitive pretraining이 등장했다.ELMo는 6개 NLP task에서 state of the art를 향상시켰고, GPT는 task-agnostic 대안을 제공했지만 context를 left-to-right로만 encoding했다.
- 15.8.3 BERT: 두 접근의 장점을 결합하기: BERT는 폭넓은 natural language processing task에서 bidirectional context encoding과 minimal architecture changes를 결합한다.이는 ELMo의 task-specific architecture와 GPT의 left-to-right context 한계를 해결하면서 11개 task에서 state of the art를 향상시킨다.
- 15.8.4 Input Representation: BERT는 special classification 및 separation token, segment embedding, token embedding, learnable positional embedding을 사용해 단일 text와 text pair를 표현한다.text pair에서는 segment embedding eA와 eB가 두 sequence를 구분하며, input embedding은 token, segment, positional embedding의 합이다.
- 15.8.5 Pretraining Task: BERT pretraining은 bidirectional context에서 무작위로 mask된 token을 예측하는 masked language modeling과 text pair 간 관계를 modeling하는 next sentence prediction을 결합한다.토큰의 십오 퍼센트가 마스킹 대상으로 선택되며, 선택된 토큰은 80%의 경우 “<mask>”로, 10%의 경우 무작위 토큰으로, 10%의 경우 변경되지 않은 토큰으로 대체된다.
- 15.8.6 모두 결합하기: 구현은 BERTEncoder, MaskLM, NextSentencePred를 BERTModel로 조합하며, forward pass는 token representation, masked-language-model prediction, next-sentence prediction을 반환한다.encoder는 segment embedding과 learnable positional embedding을 포함한 Transformer block을 사용한다.
- 15.10.2 BERT로 Text 표현하기: BERT representation은 context-sensitive하다. 주변 context가 바뀌면 같은 token도 서로 다른 representation을 받는다.다의적 token “crane”의 representation은 “a crane driver came”와 “he just left”라는 sentence pair 및 다른 context에서 서로 다르다.
1. 상태의 집합은 무엇인가? … 3. 대신 무엇을 했어야 하는가?
이 절에서는 Markov decision process를 위한 policy, value function, action value를 정식화한 뒤, 최적 제어를 위한 dynamic programming과 반복 알고리즘을 유도한다. 또한 model-based Value Iteration과 model-free Q-Learning을 비교하며, 수렴과 효율성의 차이도 다룬다.
- 17.2.2 Value Function: Value function은 기대 discounted return을 즉시 보상과 다음 상태의 value로 분해하여 reinforcement learning의 dynamic programming 기반을 확립한다.이 분해는 Markov 가정하에서 모든 상태에 대해 성립하며, policy에 따른 action과 transition 결과에 대해 평균을 취한다.
- 17.2.4 Optimal Stochastic Policy: 최적 deterministic policy는 가능한 successor state에 대한 즉시 보상과 기대 discounted value의 합을 최대화하는 action을 선택한다.최적 policy는 모든 stochastic policy 중 가장 큰 평균 discounted return을 달성하는 policy로 정의된다.
- 17.2.6 Value Iteration: Value Iteration은 어떤 초기화에서도 최적 value function으로 수렴하며, 신뢰할 수 있는 transition을 가정한 FrozenLake 구현은 10 iterations 후 최적값에 도달한다.4 × 4 environment에는 hole, frozen cell, goal이 포함되며, 구현은 모든 non-hole state에서 goal에 도달하는 policy도 복원한다.
- 17.2.7 Policy Evaluation: Policy evaluation은 유사한 반복 update를 사용해 주어진 stochastic policy의 value function을 계산하며, 어떤 초기화에서도 올바른 값으로 수렴한다.Action-value function Qπ(s, a)도 유사한 방식으로 계산할 수 있다.
- 17.3 Q-Learning: Q-Learning은 완전한 MDP에 접근하지 않고 robot 자체의 data와 exploration을 사용해 action 추정치를 개선하면서 value function을 학습한다.Exploration은 추정된 Q 값이 큰 action을 선호하며, Q-Learning은 random exploratory policy에서 시작해도 최적 policy로 수렴할 수 있다.
- 17.3.5 Implementation of Q-Learning: Q-Learning은 대략 250 iterations 후 FrozenLake의 최적값을 찾는 반면, Value Iteration은 전체 MDP에 접근하므로 훨씬 적은 iterations만 필요로 한다.이 iteration 격차는 Value Iteration이 transition function과 reward function을 알고 있기 때문으로 설명된다.
- 18.1 Introduction to Gaussian Processes: Gaussian process는 function space에서 function에 대한 distribution을 지정하여, 유연한 infinite-parameter model을 finite computation 및 관측 data에서 멀어질수록 증가하는 uncertainty와 결합한다.Kernel 선택은 function의 특성을 제어하며, kernel hyperparameter를 학습한 뒤 exact GP regression inference를 closed form으로 수행할 수 있다.
- 19.1 What Is Hyperparameter Optimization?: Hyperparameter optimization은 validation error 또는 다른 business metric을 global optimization objective로 설정하며, random search, multi-fidelity method, asynchronous scheduling을 통해 resource 활용을 개선한다.일부 hyperparameter만 중요할 때 random search는 grid search보다 우수할 수 있으며, multi-fidelity method는 성능이 낮은 configuration을 조기에 중단한다.
1. 표준 ReLU activation을 leaky ReLU 대신 사용하면 어떻게 되는가?
제공된 문단은 Fashion-MNIST에 DCGAN을 적용해 어떤 범주가 잘 작동하고 어떤 범주가 그렇지 않은지에 초점을 둔다.
- 1. 표준 ReLU activation을 leaky ReLU 대신 사용하면 어떻게 되는가?: Fashion-MNIST dataset에 DCGAN을 적용한다.
- 1. 표준 ReLU activation을 leaky ReLU 대신 사용하면 어떻게 되는가?: DCGAN에서 서로 다른 Fashion-MNIST 범주가 얼마나 잘 수행되는지 평가한다.
- 1. 표준 ReLU activation을 leaky ReLU 대신 사용하면 어떻게 되는가?: 어떤 Fashion-MNIST 범주가 잘 작동하고 어떤 범주가 그렇지 않은지 식별한다.
A 딥러닝을 위한 수학 … A.4.6 Hessians
이 부록은 선형대수, 미적분, 확률, 통계, 정보이론을 아우르며 현대 딥러닝을 이해하는 데 필요한 수학적 기초를 전개한다. 기하학적 직관, 고유분해, gradient 및 관련 도구를 강조하되 모든 내용을 망라하지는 않는다.
- A 딥러닝을 위한 수학: 부록의 선형대수, 고유분해, 미적분, 확률, 통계, 정보이론 개념은 함께 딥러닝을 깊이 이해하기 위한 핵심 수학적 토대를 이룬다.실무에서 이론을 활용할 수 있도록 구성했지만, 실무자가 항상 완전한 수학적 기초를 필요로 하지는 않는다는 점도 인정한다.
- A 딥러닝을 위한 수학: 이 부록은 현대 딥러닝을 이해하기 위한 수학적 배경을 제공하며, 특히 architecture와 loss 선택이 gradient 흐름과 model 해석에 미치는 영향을 다룬다.망라적인 설명이라기보다 기초를 제공하는 것을 목표로 한다.
- A 딥러닝을 위한 수학: 확률, 통계, 정보이론은 불확실성, 추정량 평가, 가설검정, 신뢰구간, 정량적 정보 측정을 표현하는 언어를 제공한다.이 주제들은 naive Bayes classifier를 포함한 확률적 modeling을 뒷받침하며 bits-per-character와 같은 양을 해석하는 데 도움을 준다.
- A.1 기하와 선형대수 연산: 벡터는 점과 방향으로 기하학적으로 전개되며, dot product와 각도는 고차원 유사성을 추론하고 직교성을 판별하는 데 활용된다.각도 기반 관점은 rescaling에 불변이므로, 밝기나 문서 길이가 달라져도 내용이 유지될 때 유용하다.
- A.1.3 Hyperplanes: 초평면은 d차원 공간을 두 개의 반공간으로 나누며, linear classification과 decision plane의 기하학적 기반을 제공한다.Deep classifier는 최종 linear layer에 의해 target class가 분리될 수 있도록 학습된 nonlinear embedding으로 볼 수 있다.
- A.1.4 선형 변환의 기하: 행렬은 좌표의 비틀기, 회전, scaling을 통해 공간을 변환하는 반면, 선형 종속은 압축을 일으키고 rank는 남아 있는 독립 차원의 수를 측정한다.Full-rank square matrix는 invertible하다. 제시된 eigendecomposition 결과는 zero eigenvalue가 없다는 것과 invertibility를, non-zero eigenvalue의 수와 rank를 각각 동일시한다.
- A.3 단변수 미적분: 미적분 장에서는 도함수와 변화량을 계산하는 규칙을 전개하고, Taylor polynomial을 최선의 n차 근사로 사용하며, 미분을 다변수 설정으로 확장한다.수치 예제에서는 x = 4에서 도함수 값이 8임을 확인하며, 도함수 규칙은 사실상 원하는 어떤 식도 평가할 수 있는 유연한 도구를 제공한다.
A.4.7 간단한 행렬 미적분 … A.8.2 이산 균등분포
부록에서는 머신러닝의 실용적 기반으로 행렬 미적분, 적분, 확률분포, 최대우도를 전개한다. 간결한 행렬 미분, 미적분학의 기본정리와 변수변환법, 분포 요약, 우도 기반 추정을 강조한다.
- A.4.7 간단한 행렬 미적분: 행렬 미분은 유도 과정이 번거로운 경우가 많지만, 일변수 미적분과 유사한 간결한 결과를 내며 분모의 형태를 맞추기 위해 전치가 도입된다.분모 배치 관례는 분모와 같은 형태로 미분을 구성하므로, 행렬 곱에 전치가 나타나는 이유를 설명한다.
- A.5.2 미적분학의 기본정리: 미적분학의 기본정리는 정적분을 원시함수를 구한 뒤 양 끝점에서의 차를 계산하는 문제로 바꾸며, 덧셈 상수는 상쇄된다.이는 수치적으로 잘게 나누어 더한다는 직관을 미분 기반 계산으로 대체하며, 이후 적분 규칙의 기반이 된다.
- A.5.3 변수변환: 변수변환은 치환에 따른 구간의 늘어남을 반영해 적분을 변환하므로, 그렇지 않으면 계산하기 어려운 적분도 계산할 수 있게 한다.다차원에서는 이에 대응하는 늘어남의 인자를 Jacobian으로 나타내며, Jacobian의 determinant가 부피 스케일링을 측정한다.
- A.5.4 부호 관례에 대한 논평: 부록에서는 부호 있는 넓이의 관례를 제시한다. 음의 함수나 뒤집힌 적분 한계의 적분은 음수이며, 두 번 뒤집으면 상쇄된다.이는 determinant를 부호 있는 넓이로 해석하는 것과 평행한다.
- A.5.5 다중적분: 머신러닝과 관련된 연속함수의 경우, Fubini 정리로 형식화되듯 다중적분은 어느 적분 순서로든 반복해서 계산할 수 있다.이산화하면 논지는 작은 정사각형에 대한 합의 순서를 재배열하는 것에 해당하지만, 그 결과가 항상 성립하는 것은 아니다.
- 누적분포함수: 누적분포함수는 연속, 이산, 혼합 확률변수를 다루는 하나의 틀을 제공한다.혼합 예시에서는 동전 던지기와 주사위 굴리기 또는 다트가 떨어진 거리 중 하나를 결합한다.
- 연속체에서의 평균과 분산: 확률 요약량은 분포의 거동을 드러낼 수 있다. 어떤 변수는 유한한 분산뿐 아니라 잘 정의된 평균도 갖지 않을 수 있으며, covariance는 의존성을 정량화한다.covariance 예시에서 변수들이 최대한 일치하면 값은 2, 뒤집히면 −2, 서로 무관하면 0이다.
- 구체적인 예시: 최대우도는 직관적인 모수 추정값을 복원하며, 이산확률에서 연속 확률밀도로 확장된다.동전을 13번 던져 앞면이 9번이면 추정값은 θ̂ = 9/13이다. 음의 log-likelihood를 평균하면 cross-entropy와 관련된 성능 측도가 된다.
A.8.3 Continuous Uniform … Markdown Files in Jupyter
통합된 자료는 핵심 확률분포를 전개하고, Naive Bayes가 분류를 다루기 쉽게 만드는 방식을 보여 주며, 통계적 추론과 정보이론 도구를 소개한다. 또한 실행 가능한 Jupyter 기반 계산을 강조해 수학적 정의를 시각화, 샘플링, 추정 및 머신러닝 응용과 연결한다.
- A.8.3 Continuous Uniform: Continuous uniform 변수는 [a, b]에서 값을 균등하게 선택하며, 구간별 density와 cumulative distribution function, 그리고 U(0, 1)에서 크기를 조정한 샘플링을 사용한다.이 절에서는 두 함수를 시각화하고 (b - a) * torch.rand(...) + a를 사용해 임의 형태의 배열에서 샘플을 추출한다.
- B. Tools for Deep Learning / B.1 Using Jupyter Notebooks / Markdown Files in Jupyter: 이 장들 전반에서 수학적 설명은 확률 함수를 plotting하고, 분포에서 샘플을 추출하며, 데이터셋을 처리하고, 통계적 항등식과 머신러닝 목적 함수를 시연하는 executable Jupyter code와 통합된다.자료는 개념, 맥락, 코드, figure 및 interactive example을 결합한 개방형 실행 가능 업데이트 가능 리소스로 설계되었다.
- A.8.4 Binomial / A.8.5 Poisson: Binomial 변수는 n개의 독립적인 Bernoulli(p) 시행에서 성공 횟수를 세는 반면, Poisson 변수는 rate λ를 갖는 극한 계수 과정으로 희귀 사건의 도착을 모델링한다.Binomial 구성은 Bernoulli 변수의 합과 조합적 확률을 사용하며, Poisson rate는 단위 시간당 기대 도착 횟수를 뜻한다.
- A.8.6 Gaussian: central limit theorem은 서로 독립이고 동일하게 분포된 많은 변수의 표준화된 합이 Gaussian distribution에 가까워진다고 말하며, Gaussian modeling을 집계 측정의 기본 도구로 만든다.Gaussian은 유한한 fourth moment와 같은 조건에서 고정된 평균과 분산을 갖는 maximum-entropy, 즉 가장 보수적인 분포로도 제시된다.
- A.8.7 Exponential Family / A.8.8 Summary: Bernoulli, uniform, binomial, Poisson 및 Gaussian distribution은 exponential family로 통합되며, 이 family의 density는 base measure, natural parameter, sufficient statistic 및 normalizing cumulant function을 사용한다.Gaussian을 구체적인 예로 사용하며, 이 family가 machine learning에서 널리 사용된다고 설명한다.
- A.10 Statistics / The Bias-Variance Trade-off / A.10.2 Conducting Hypothesis Tests / A.10.3 Constructing Confidence Intervals: 통계 절에서는 모집단 parameter를 추론하기 위한 estimator 평가, hypothesis testing 및 confidence interval을 소개하며, mean squared error를 squared bias, variance 및 irreducible error로 분해한다.코드는 bias-variance decomposition을 수치적으로 검증하고, hypothesis testing은 실험 설계와 가능성이 낮은 null hypothesis를 기각할 때의 confidence를 정식화한다.
- A.11 Information Theory / A.11.1 Information / A.11.2 Entropy / A.11.3 Mutual Information / A.11.4 Kullback–Leibler Divergence / A.11.5 Cross-Entropy: 정보이론은 self-information, entropy, conditional information과 mutual information, KL divergence 및 cross-entropy를 정량화하며, entropy는 평균 code length를 제한하고 cross-entropy는 multiclass maximum likelihood와 일치한다.대칭적인 비교 distribution의 경우, 제시된 예에서는 관련 KL divergence 사이의 차이가 3% 미만이라고 보고한다.
Jupyter Notebook을 원격 서버에서 실행하기 … B.8.2 Functions
이 책은 Jupyter notebook을 로컬, 원격, 클라우드 및 Colab 환경에서 실행할 수 있도록 지원하며, GPU 인프라, 기여 workflow, API 사용법을 문서화한다. 실용적인 설정, 업데이트, 비용 관리와 커뮤니티 주도의 유지보수를 강조한다.
- Running Jupyter Notebooks on a Remote Server; B.1.3 Summary; B.1.4 Exercises: Jupyter notebook은 `ssh myserver -L 8888:localhost:8888`을 사용한 SSH port forwarding을 통해 로컬 또는 원격에서 편집하고 실행할 수 있으며, `http://localhost:8888`을 연다.원격 접속은 로컬 browser를 Jupyter notebook이 실행되는 서버에 연결한다.
- B.2 Using Amazon SageMaker; B.2.1 Signing Up; B.2.2 Creating a SageMaker Instance; B.2.3 Running and Stopping an Instance; B.2.4 Updating Notebooks; B.2.5 Summary; B.2.6 Exercises: Amazon SageMaker는 GPU 집약적 코드를 위한 notebook instance를 제공하며, Tesla V100 GPU 1개와 8코어 CPU를 갖춘 `ml.p3.2xlarge` instance를 포함한다.사용자는 instance를 생성할 때 책의 GitHub repository를 clone하고, 시작 후 Jupyter를 열며, terminal을 통해 notebook을 업데이트할 수 있다. 추가 요금을 피하려면 instance를 중지해야 한다.
- B.3 Using AWS EC2 Instances; B.3.1 Creating and Running an EC2 Instance; Presetting Location; Increasing Limits; Launching an Instance; Connecting to the Instance; B.3.2 Installing CUDA; B.3.3 Installing Libraries for Running the Code: AWS EC2 설정에는 GPU Linux instance 요청, CUDA 설치, deep learning framework 및 기타 library 설치가 포함된다.지침은 region 선택, instance limit 확인, Ubuntu AMI와 GPU configuration 선택, SSH key 보안 설정, 접속, CUDA 12.1 설치, library path 구성을 다룬다.
- B.3.4 Running the Jupyter Notebook remotely; B.3.5 Closing Unused Instances; B.3.6 Summary; B.3.7 Exercises: EC2 notebook은 environment를 활성화하고 Jupyter를 실행한 뒤 SSH port forwarding을 통해 구동하며, 표시된 URL은 forwarding된 로컬 port에 맞게 조정한다.사용하지 않는 instance는 중지하거나 종료해야 한다. 중지하면 데이터는 유지되지만 disk 요금이 계속 발생하는 반면, 종료하면 연결된 데이터가 삭제된다.
- B.4 Using Google Colab; B.4.1 Summary; B.4.2 Exercises: Google Colab에서는 각 책의 section에 있는 Colab button을 클릭해 실행할 수 있으며, section에 GPU가 필요하면 자동으로 GPU instance를 요청한다.workflow에는 최초 실행 경고를 닫고 Colab을 execution instance에 연결하는 과정이 포함된다.
- B.5 Selecting Servers and GPUs; B.5.1 Selecting Servers; B.5.3 Summary: GPU 선택과 server 구성에서는 compute power, memory, bandwidth, power supply, cooling, PCIe lane, CPU single-thread speed 및 물리적 호환성을 고려해야 한다.본문은 deep learning에서 GPU가 일반적으로 CPU보다 비용 효율적이라고 설명하며, multi-GPU system에는 점진적으로 더 강력한 power, cooling, memory 및 interconnect 지원이 필요하다고 말한다.
- B.5.2 GPU 선택: GPU 비교에서 세대가 최신일수록 cost effectiveness가 개선된다. GTX 1000 series는 900 series보다 performance-to-cost ratio가 약 두 배 높고, RTX 2000의 GFLOPs 성능은 가격의 affine function이다.또한 energy consumption은 computation에 따라 대체로 선형적으로 증가하고, 후속 세대일수록 더 효율적이며, RTX 2000의 동작은 TensorCores의 영향을 받는다고 설명한다.
- B.6 Contributing to This Book; B.6.1 Submitting Minor Changes; B.6.2 Proposing Major Changes; B.6.3 Submitting Major Changes; Installing Git; Logging in to GitHub; Cloning the Repository; Editing and Pushing; Submitting Pull Requests; B.6.4 Summary; B.6.5 Exercises; B.7 Utility Functions and Classes; B.8 The d2l API Document; B.8.1 Classes; B.8.2 Functions: 이 open-source 책은 GitHub 편집, pull request, 실행 가능한 notebook test 및 framework별 code marker를 통해 독자의 기여를 지원하며, 수 시간에서 수일 내에 수정과 업데이트가 가능하도록 한다.제공된 내용은 markdown source file 편집, 변경 제안, Jupyter에서의 code test, 제출 전 output 삭제, framework 구현에 `%%tab` 사용을 설명한다.