층을 깊이 쌓기만 하면 복잡한 기능을 할 수 있는 신경망 모델을 만들어 낼 수 있을 것으로 기대했지만, 층을 깊이 쌓을수록 신경망은 더 정교한 기능을 하는 것이 아니라 학습을 하지 못 하는 모델이 되어버림
역전파 될수록 신호가 소실되는 사라지는 경사 문제 발생
폭발하는 경사 문제도 존재
시그모이드, 균등분포
사용
대칭함수를 활용
사라지는 경사 폭발 경사 문제 해결하기 위해
연결강도 초기화를 해야함.
각 은닉층의 크기가 동일해야 함
입력되는 신호의 개수 팬-인
출력 팬-아웃
연결강도 초기화 방법 글로럿 초기화, 세이비어 초기화
시그모이드 함수 -> 역전파에 부적합하여
ReLU와 같은 정류화 함수들이 잘 동작하는 것이 발견
은닉층을 매우 많이 쌓은 신경망에서 ReLU활성화를 사용할 때 글로럿 초기화보다 빠르게 수렴
허 초기화
연결강도를 초기화 할 때 표준편차가 정규분포로 난수를 발생시키는 것
글로럿 초기화 방법은 균등분표로 제안
서로 다른 초기화 방법이 제안된 이유는 활성화 함수에 따라 신호 전파가 다르기 때문
깊은 층 --> ReLU
but 쉽게 죽는다는 단점
ReLU변종을 통해 개선
leaky ReLU
입력이 음수인 곳에서 0을 출력하지 않고 1보다 작은 기울기로 약간의 신호를 내어 보냄
이 구간에서 미분은 a가 되고 이 값은 0이 아니기 때문에 오차를 내려 보내어 연결강도 조정 가능
PReLU
a가 하이퍼파라미터가 아니라 파라미터로 만들어 학습 과정에 이것도 함께 학습
ELU
음수 구간에서 선형모델사용하지 않고 지수함수를 사용
경사하강법
기울기를 따라가는 방법이 최적해를 향하는 가장 빠른길을 따르지 못 함
학습률은 기울기를 따라 얼마나 이동할 것인지를 결정하는 하이퍼파라미터이며 작게 유지하면 기울기를 따라 조금씩 움직일 것이고,
그 결과 아래 그림과 같이 급한 경사를 먼저 내려간 뒤에 골을 따라 최적해로 이동하게 될 것
학습률이 너무 크면 골을 여러번 건너며 빠르게 수렴하지 못하거나 발산할 수 있음
이러한 방법은 학습률을 안전하게 작은 값으로 두는 것
문제를 개선하고 학습률을 크게 하면서 큰 걸음으로 최적해에 도달 할 수 있도록 하는 다양한 변형 기법들이 등장
모멘텀을 사용하는 방법
현재위치에서 계산된 기울기만으로 이동방향을 정하는 것이 아니라 지금까지 기울기를 따라 이동한 경로를 누적한 모ㅔㄴ텀을 정의하고 이를 이용해 파라미터 갱신
네스테로프 가속 경사
손실 함수 곡면의 기울기를 계산할 때 이전 모멘텀만큼 이동한 곳에서 기울기를 측정하여 이 기울기와 모멘텀을 함께 고려하여 최종적으로 이동할 곳을 찾는 것
AdaGrad
적응적 경사 기법
경사가 급한 곳은 천천히 이동하게 하면 손실 함수의 곡면의 왜곡 보정역할
RMSProp알고리즘
일정한 비율로 쇠퇴하게 만들고 새로운 값이 쇠퇴한 만큼 추가되도록 하는 것으로 쇠퇴 비율은 보통 0.9 정도를 사용
모멘텀 최적화 RMSProp을 섞어서 사용하는
적응적 모멘텀 추정기법
일반적으로 Adam
네스테로프 기법을 추가적으로 혼합한 방법인 Nadam
텐서플로우
MNIST데이터
0~255를 0에서 1 사이 값으로 정규화
keras.model
Sequential모델을 사용
28x28크기의 이미지는 1차원 배열로 변환 경우 784개의 값이 되는데 이값이 신경 회로망을 통과하여 10개중 하나의 범주로 분류
학습층을 만드는 명령이 keras.layers.Dense이며 Dense는 학습을 위한 연결을 밀집된 구조의 네트워크 층 혹은 완전연결층으로 한다는 의미
최종적으로 10개의 카테고리에 입력이 연결되도록 하는 케라스 모델을 keras.Sequentai 로 생성
compile함수에서 모델의 하이퍼 파라미터
최적화 함수 optimizer
손실 함수 loss
정답 레이블과의 차이를 결정하는 metrics
측정기법 accuracy
model.fit함수를 통해서 최적화를 수행
미니배치
디폴트 32
신경망모델이 어떤형태, 몇개의 파라미터를 훈련시켜서 만든 모델인가를 model.summary를 통해 확인
입력 데이터가 첫번째 은닉층을 통과할 때 784개의 입력과 1개의 편향값(784+1)에 대하여 256개의 은칙층 노드간의 연결이 필요하므로
785*256 = 200,960개의 파라미터를 훈련시켜야 함
256개의 은닉층과 10개의 출력층을 연결하는 파라미터에도 편향값 추가 2570개가 훈련 파라미터가 필요
200,960 + 2570 = 253,530개의 매우 많은 파라미터
'Tech Stack > Machine learning' 카테고리의 다른 글
기계학습 10 - CNN (0) | 2024.01.11 |
---|---|
기계학습 - 8 softmax, dropout (1) | 2024.01.11 |
기계학습 6 - 역전파 공부 (0) | 2024.01.08 |
기계학습 - 5 다항회귀, 지니 불순도, SVM (3) | 2024.01.02 |
기계학습 4 - predict, 분류, 등 (1) | 2024.01.01 |