본문 바로가기
COURSERA

week 1_Regularization neural network (Andrew Ng)

by HYUNHP 2022. 2. 16.
728x90
반응형

안녕하세요, HELLO

 

오늘은 DeepLearning.AI에서 진행하는 앤드류 응(Andrew Ng) 교수님의 딥러닝 전문화의 두 번째 과정인 "Improving Deep Neural Networks: Hyperparameter Tuning, Regularization and Optimization"을 정리하려고 합니다.

 

"Improving Deep Neural Networks: Hyperparameter Tuning, Regularization and Optimization"의 강의 목적은 '랜덤 초기화, L2 및 드롭아웃 정규화, 하이퍼 파라미터 튜닝, 배치 정규화 및 기울기 검사와 같은 표준 신경망 기술' 등을 배우며, 강의는 아래와 같이 구성되어 있습니다.

 

~ Practical Aspects of Deep Learning

~ Optimization Algorithms

~ Hyperparameter Tuning, Batch Normalization and Programming Frameworks

 

"Improving Deep Neural Networks" (Andrew Ng) 1주차 "Regularization neural network"의 강의 내용입니다.


CHAPTER 1. 'Regularization'

 

CHAPTER 2. 'Why regularization reduces overfitting'


CHAPTER 1. 'Regularization'

 

□ Logistic regression

 

과대 적합(overfitting)을 방지(분산을 줄이는)하는 방법으로는 데이터를 늘리는 방법이 있지만, 대용량의 데이터 수준이 어려운 경우에는 과적합을 해소하기 위해 정규화(regulation)로 해결할 수 있습니다. 

■ L1 regulation (L1 정규화)

L1 정규화는 딥러닝 모델을 sparse(희소) 상태로 만듭니다. (weight, w will be sparse) 이때 lambda는 일반화 파라미터 (dev set, cross validation 사용됨)로서, 딥러닝 알고리즘 개선에 조정되는 하이퍼 파라미터의 일종입니다. 추가적으로 lambda는 파이썬에서 예약어입니다. 


■ L2 regulation (L2 정규화)

L2 regularization에서 w(가중치)를 활용하고, 잔차(b)를 사용하지 않는 이유는 w는 높은 변동성을 가지고, b는 상수로 큰 영향을 주지 않기 때문입니다. 


 

 

CHAPTER 2. 'Why regularization reduces overfitting'

 

■ Lambda 활용

 

lambda 값을 크게 만들어, 가중치 행렬 w를 0에 가깝게 설정할 수 있습니다. 이에 따라 신경망이 간단하고 작은 유닛으로 이뤄져서 과대 적합이 덜 일어납니다.


■ tanh 함수 사용

 

tanh 함수를 사용하면 lambda 값 커지면 비용 함수에 의해 가중치 w는 작아지게 되며, z = w*x + b에 의해 z도 작아지게 됩니다.

lambda 값을 크게 하면, 가중치 w의 값은 작아지게 되는데, 이는 gradient 값에 lambda 값이 더해져서 업데이트되기 때문입니다.

결론적으로 일반화 파라미터, lambda가 커지면, w 매개 변수는 작아지고 이에 따라 결괏값 z도 작은 범위를 가지게 되며, tanh 함수는 상대적으로 선형 관계를 보여줍니다.


□ Dropout Regularzation

드롭아웃(Dropout) 방식은 신경망 각각의 층에 대해 노드를 삭제하는 확률(1 - keep_prob)을 설정하는 것입니다. 삭제할 노드를 확률에 따라 랜덤으로 선정하여 삭제된 노드의 들어가는 경로와 나가는 경로를 모두 삭제합니다. 이에 따라 기존 모델에 비해 작고 간소화된 네트워크가 만들어지며, 작아진 네트워크로 훈련을 진행하게 됩니다. 무작위로 코딩을 진행하기에 훈련이 잘 안 될 거라 생각되지만, 적은 네트워크로 훈련하기에 네트워크를 일반화할 수 있는 지를 판단할 수 있습니다.

 

역 드롭아웃(Inverted dropout)은 드롭아웃 방식에 따라 노드를 삭제 후에 얻은 활성화 값에 삭제하지 않을 확률(keep_prob)을 나눠주는 것입니다. 이는 기존에 삭제하지 않았을 때의 활성화 값의 기댓값으로 맞춰주기 위함입니다. 

 

파이썬으로 코드를 실행하면 np.random.rand(a3.shape[0], a3.shape[1]) < keep_prob 은 boolean 형태로 저장됩니다.

그리고 np.multiply 함수는 boolean 값인 True, False를 각각 0, 1로 인식해서 계산해줍니다.

 

반응형

 

□ Understanding dropout

 

드롭아웃(dropout)은 랜덤으로 노드를 삭제시키기 때문에, 하나의 특성에 의존하지 못하며 가중치를 다른 곳으로 분산시키는 효과가 있습니다.

 

input value에 있어서 값을 그대로 가져오려면 노드를 유지하는 비율(keep_prob)을 1 또는 0.9로 높게 설정하면, input value을 그대로 가져옵니다. 마찬가지로 output layer에서도 출력 값을 그대로 가져오기 위해서는 keep_prob 비율을 1에 가깝게 설정하면 됩니다. 그리고 각각의 은닉층에 있어서는 drop out 설정을 조정해서 입력하면 됩니다. 즉, 드롭아웃의 노드를 유지하는 확률(keep_prob) 확률은 각 층마다 다르게 설정할 수 있습니다. 

 

 모든 시행(iteratino)에서 잘 정의된 비용 함수가 하강하는지 확인하는 게 어렵습니다. 따라서 드롭아웃을 사용하지 않고, 비용 함수가 단조 감소, 단조 증가인지 확인 후에 사용해야 합니다.


□ Other regularization model

 

L2 일반화와 drop out 외에도 정규화 방식이 있습니다.

 

■ 데이터 증식(data augmentation)

 

- Data augmentation은 일반화 테크닉을 적용하여 일반화와 유사하게 적용합니다.

- 이미지 데이터는 더 많은 훈련 데이터를 사용함으로써 과대 적합을 해결할 수 있습니다.

- 대칭, 확대, 왜곡, 회전 등의 방법을 통해 새로운 훈련 데이터를 얻을 수 있습니다.

- 하지만, 새로운 독립적인 이미지 샘플을 얻는 것보다는 좋지 못 하지만, 컴퓨팅 비용이 적게 드는 장점이 있습니다.

 

■ 조기 종료(Early stopping)

 

- 훈련 세트의 오차는 단조 하강 함수로 그려질 것입니다.

- 조기 종료 방법은 개발 세트의 오차도 그려줍니다.

- 만약에 개발 세트의 오차가 하락하지 않고 증가하기 시작하면, 해당 부분이 과대 적합이 되는 시점입니다.

- 조기 종료는 신경망이 개발 세트의 오차 저점 부근인 '가장 잘 작동하는 점'일 때 훈련을 멈추는 것입니다.

- 머신러닝 알고리즘의 훈련 목적은 비용 함수를 최적화시키는 작업과 과대 적합하지 않게 만드는 것입니다. 각 과정은 별개이며, 이를 직교화 (Orthogonalization)라고 합니다. 두 개 작업은 별개의 작업으로 다른 방법으로 접근해야 합니다. 하지만 조기 종료 시에는 두 가지 방법을 섞어서 동시에 처리하며, 두 가지 방법 모두 최적화하지 못합니다. 따라서 최적의 조건을 차지 못할 수도 있습니다.


■ 마무리

 

"Improving Deep Neural Networks" (Andrew Ng) 1주차 "Regularization neural network"에 대해서 정리해봤습니다.

 

그럼 오늘 하루도 즐거운 나날 되길 기도하겠습니다

좋아요와 댓글 부탁드립니다 :)

 

감사합니다.

 

반응형

댓글