본문 바로가기

DeepLearningFromScratch

(9)
Extra) Hyperparameter Search 쉽지 않은 이해에 참고 자료 중 가장 효율적으로 정리할 수 있었던 본 포스팅의 내용은 https://www.youtube.com/watch?v=PTxqPfG_lXY 에 내용을 요약한 것이다. 나의 이해를 위한 것이기에 내용 정렬이 강의의 순서와 동일하다. 그러므로 좀 더 나은 이해를 위해 접속하여 확인하길 바란다. Hyperparameter 란? learning rate 와 같은 요소로서 학습에서 성능 향상에 중요한 도움을 줄 수 있는 세팅을 말한다. 가령 예를들어 learning rate 가 너무 작으면 학습의 속도가 너무 느려지게 되고 너무 크면 발산하여 수렴하지 않을 수 있다는 것이 이것의 중요성을 대변해주는 것이다. Hyperparameter의 종류 Learning rate, Number of L..
7. 합성곱 신경망(CNN) 지금까지의 경우 대부분 책의 순서를 따르려고 노력했지만, 중간중간 추가 정보를 파악하며 넘어갔다. 하지만 CNN 의 챕터의 내용 구성이 충분한 관계로 책의 순서를 그대로 따르려고한다. 이미지의 경우, 내가 가장 즐겨 찾는 곳인 https://towardsdatascience.com/a-comprehensive-guide-to-convolutional-neural-networks-the-eli5-way-3bd2b1164a53 의 것을 참고하여 사용하겠다. 7.1 전체 구조 이전 Fully connected Layer 혹은 심층 신경망 구조에 익숙하다면, CNN 의 네트워크 구조는 합성곱 계층(Convolutional layer) 와 풀링 계층(Pooling layer) 가 새롭게 등장한다. 이전에 심층 신..
6.4 - 6.5 오버피팅을 제거하기 위한 올바른 학습과 하이퍼파라미터 튜닝 6.4 바른 학습 바른 학습 (오버피팅 방지) 부터 천천히 살펴보자. 1. 오버피팅 ? (Overfitting) 오버피팅 이란 훈련 데이터에서의 학습에 굉장히 모델이 강건해지다보니 오히려 테스트 데이터(범용적 데이터)에서 성능의 저하가 굉장히 뚜렷하게 나타날 수 있다는 것이다. 아래의 경우 흔하게 일어나는 현상이다. (1) 매개변수가 많아서 표현력이 높은 모델 (2) 훈련데이터의 수가 적은 경우 오버피팅을 해결하기 위하여 여러 방법이 있지만, weight decay (Regularization, 초깃값 설정 등), Dropout, BN(Batch Normalization)등의 방법들이 존재한다. 2. 언더피팅 ? (Underfitting) 언더피팅이란 오버피팅의 절반정도는 반대어 이다. 훈련데이터에서의 ..
6.3 배치 정규화 (Batch Normalization) 배치 정규화란? 가중치 초기값을 적절히 설정하면 각 층의 활성화 값이 적절하게 고른 분포를 나타내며 분포하게 된다. (이해되지 않는다면 6.2 가중치 초기화 부분을 참고하길 바란다.) 그렇다면 각 층이 적당히 활성화 값을 퍼뜨리도록 가중치의 초깃값 설정이라는 불편함이 아니라 강제로 설정하는 방법? 이것이 바로 배치 정규화의 concept 의 출발이다. 1) 배치 정규화 알고리즘 먼저 왜 사용하는가에 따라 장점을 알고 넘어가자!! 1) 학습을 빠르게 진행할 수 있다. 잠시 Andrew Ng 교수님의 stanford university deep learning specialization lecture 의 내용을 인용하면 직관적으로 생각해보라. 만약 입력값으로 들어와서 연산을 해야할 값이 variation 이..
6.2 가중치의 초기값 1. 초기값을 0 으로 설정하면? 가중치 감소(weight decay) : 오버피팅을 억제해 범용성을 높이는 테크닉. 가중치 감소는 말그래도 가중치 매개변수의 값이 작아지도록 학습하는 방법이다. 가중치 값을 작게 하여 오버피팅이 일어나지 않게 하는 것이다. 하지만 가중치를 작게하라? 가중치를 작게 만들고 싶다면 가중치의 초기값을 작게 만들면 된다. 단순하다. 초깃값을 모두 0으로 하면 안되는 이유는 무엇일까요? (정확하게는 가중치를 균일한 값으로 설정해서 안되는 이유) 그 이유는 바로 오차역전파법에서 모든 가중치의 값이 똑같이 갱신되기 때문이다. 결과적으로 말하면 가중치들은 같은 초기값에서 시작하고 갱신을 거쳐도 여전히 같은 값을 유지하게 되는 것이다. 노드를 늘려서 가중치를 여러 개 갖게 하는 것이 의..
6-1. 매개변수 갱신 (Optimizer and Optimization problem) 매개변수 갱신이란? 신경망 학습의 목적은 손실 함수의 값을 가능한 한 낮추는 매개변수를 찾는 것이다. 이는 곧 매개변수 즉 parameter 의 Loss function 에 대한 최적값을 찾는 문제가 된다. 최적의 매개변수 값을 찾는 단서로 매개변수의 기울기(미분)을 이용하였다. 1. Gradient Descent 경사하강법(Gradient Descent)의 경우도 마찬가지이다. 단순하게 어떤 Error 에 대한 함수인 Loss function or Cost function 이라고 불리는 것을 정의하고 그것을 최소로 만들어 줄 수 있는 매개변수를 찾기 위하여 weight 와 bias 를 갱신하여주는 과정을 사용하였다. 여기서 간단하게 직관적으로만 생각하고 넘어갈 생각이지만, Gradient Descent..
5. 오차역전파법 (Backpropagation) 오차역전파법이란 ? - 가중치 매개변수의 기울기를 효율적으로 계산하는 방법이다. 이해하는 방법에는 크게 두 가지로 나눌 수 있다. (1) 수식을 통한 이해 (2) 계산 그래프(Computation graph)로써의 이해 -목차- (1) 계산 그래프 (2) 연쇄법칙 (3) 역전파 (4) 단순한 계층 구현 (5) 활성화 함수 계층 구현 (6) Affine / Softmax 계층 구현 (7) 오차역전파법 구현 1. 계산 그래프 계산 그래프는 계산 과정을 그래프로 나타낸 것이다. 전체적인 표현으로는 복수의 노드(node)와 에지(edge)로 표현하게 된다. 계산 그래프의 특징은 '국소적 계산'을 전파함으로써 최종 결과를 얻는다는 점에 있다. 계산그래프의 이점은? 가장 첫번째 이점은 앞서 언급된 국소적 계산이다...
4. 신경망 학습 주제 : 신경망 학습 -> 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것 1. 데이터에서 학습하다 2. 손실 함수 3. 수치 미분 4. 기울기 5. 학습 알고리즘 구현 1. 데이터에서 학습하다 보통 어떤 문제를 해결하고자 하면, 특히 어떤 패턴을 찾아내야하는 규칙정이 있는 문제를 푸는 경우 사람의 경험과 직관을 단서로 시행착오를 거듭하며 일을 진행한다. 반면, 기계학습에서는 사람의 개입을 최소화하고 수집한 데이터로부터 패턴을 찾으려고 시도한다. 게다가 신경망과 딥러닝은 기존 기계학습에서 사용하던 방법보다 사람의 개입을 더욱 배제할 수 있게 해주는 중요한 특성을 지닌다. 하나의 예로 이미지에서 특징(feature)을 추출하고 그 특징의 패턴을 기계학습 기술로 학습하는 방법이 있다. 기계..