11장 연습문제
1. He 초기화를 사용하여 무작위로 선택한 값이라면 모든 가중치를 같은 값으로 초기화 해도 괜찮을까요
모든 가중치를 같은값으로 초기화해버리면, 대칭성을 가지게 된다. 즉 모두 동일한 값을 가진 한 층의 모든 뉴런은 하나의 뉴런으로 취급된다. 이는 훈련이 지속되도 계속 동일한 값을 가진다는 의미이다.
따라서 모든 뉴런을 독립적으로 무작위로 정의하는 것은 대칭성을 제거하기 위함이다.
2. 편향을 0 으로 초기화 해도 괜찮을 까요?
편향을 0 으로 초기화하는 것은 아무 상관이 없다. 또는 편향을 가중치처럼 초기화 해도 상관없다.
3. ReLu 보다 Selu가 나은 이유 3가지
- 음수를 받을 수 있어서, 가중치 합이 음수로 내려갈 경우 그레디언트 소실 문제를 완화할 수 있다.
- 도함수의 값이 항상 0 이 아니라서 Relu에서의 죽은 뉴런 문제가 발생하지 않는다.
- 조건이 맞을 때 추가적인 정규화층이 필요없이 자기 정규화로 그레디언트 폭주나 소실문제를 완화한다.
4. 어떤 경우에 SELU, LeakyReLU, ReLU, tanh, 로지스틱, 소프트맥스와 같은 활성화 함수를 사용하나요?
SELU : 입력이 정규화된 순차모델, 르쿤 초기화, 드롭아웃이나 l1규제와 같은 호환이 안되는 층이 없을 경우 대부분..
LeakyReLU : 가능한 빠른 신경망 또는 하이퍼파라미터가 상관없을 때
ReLU : 빠르고 하이퍼 파라미터도 부담스러울 때 또는 정확히 0 을 출력하는 기능이 유용할때
tanh : -1 ~ 1 사이의 값을 가져야 하는 출력층
로지스틱 : 이진 분류에서 확률을 추정할 필요가 있을때
소프트 맥스 : 상호적인 베타 클래스간의 확률을 출력하는 상황
5. SGD 옵티마이저의 momentum 을 1에 아주 가깝게 설정할 경우 (0.99999) 어떤일이 발생하나요?
모멘텀 옵티마이저의 모멘텀 파라미터는 마찰저항을 의미하고, 이는 그레디언트를 누적하는 모멘텀방식에서 값이 아주 커지는 것을 방지한다. 그런데 1 과 가깝게 누적되는 그레디언트가 너무 커져서 최적점을 지나칠 수 있다. 그후 느려저서 반대로 내려오고 또 너무 커져서 지나치고 이런 진동이 계속될 수 있다. 그래서 수렴하는데 훨씬 오래걸릴 것이다.
6. 희소모델을 만드는 방법 세가지?
희소모델 : 대부분의 가중치가 0 인 모델
- 평범하게 모델을 훈련시키고 작은 가중치를 0으로 만든다.
- 훈련하는 동안 l1 규제를 사용한다.
- 텐서플로의 모델 최적화 도구 를 사용한다.
7. 드롭아웃이 훈련 속도를 늦추나요? 추론inference 도 느리게 만드나요? MC드롭아웃은 무엇인가요?
예 드롭아웃은 보통 두배정도 훈련속도를 느리게만든다. 훈련시 절반정도만 가중치를 변경하기 때문에.
드롭아웃은 훈련에만 사용하므로 추론에는 영향이 없다.
MC드롭아웃은 훈련하는 동안 기본 드롭아웃과 동일하지만, 추론시에도 작동하기 때문에 추론의 속도도 늦춘다. 그리고 수많은 예측을 평균하기 때문에 추론속도가 훨씬 느려진다.
8. CIFAR10 이미지 데이터셋에 심층 신경망을 훈련하자.
a. 100개의 뉴런을 가진 은닉층 20개로 신경망만들기, He초기화, elu활성화 함수 사용하기
b. Nadam 옵티마이저와 조기종료로 CIFAR10 훈련하기.
c. 배치 정규화를 추가하고 학습 곡선을 비교, 훈련 속도 및 성능 확인하기
d. 배치 정규화를 selu 로 변경하기, 저기 정규화를 위한 조건 충족시키기
e. 알파 드롭아웃을 규제로 적용후 훈련하기, 추가적인 훈련없이 MC드롭아웃을 통해 예측 정확도 늘려보기
f. 1 사이클 스케줄링으로 모델을 다시 훈련하고, 훈련 속도, 정확도 비교
https://github.com/kimhwijin/HandsOnMachineLearing/blob/main/HOML_Exercise_11.ipynb
GitHub - kimhwijin/HandsOnMachineLearing
Contribute to kimhwijin/HandsOnMachineLearing development by creating an account on GitHub.
github.com