SlideShare a Scribd company logo
1 of 80
Download to read offline
밑바닥부터 시작하는 딥러닝
박성현 zkfthfl123@naver.com
목차
• 매개변수 갱신
• 가중치 초기값 설정
• 배치 정규화
• 학습 테크닉
• 하이퍼파라미터 값 찾기
매개변수 갱신
Batch Gradient Descent (Batch GD)
• 주어진 학습데이터에 대해서 한꺼번에 gradient 값을 구하여
가중치를 갱신한다.
• 단점
1. 계산량이 너무 많음.
2. Overfitting 확률이 높음.
평균 기울기 값을 구해 매개변수를
업데이트 하면 한번의 epoch 가
끝나게 된다.
참고 : https://deepapple.tistory.com/7
확률적 경사 하강법(SGD) Stochastic Gradient Descent
• 학습데이터 set 에서 설정한 batch 크기 만큼 샘플을 고른 후
gradient값을 구하여 가중치를 갱신한다.
• GD 와 비교했을 시 장점
1. 랜덤으로 샘플을 고르기 때문에 기울기의
변동성이 커져 local minima 에서 빠져나오기 쉽다.
2. 계산량이 낮아져 빠르다.
일부 sample을 사용하여 기울기를
계산, 가중치 업데이트
GD vs SGD
참고 : https://seamless.tistory.com/38
확률적 경사 하강법(SGD) Stochastic Gradient Descent
𝑊 ← 𝑊 − 𝜂
𝜕𝑓
𝜕𝑊
* 𝜂 : 학습률
SGD 는 기울어진 방향으로 일정 거리만 가겠다는 단순한 방법
확률적 경사 하강법(SGD) Stochastic Gradient Descent
SGD의 단점
𝑓 𝑥, 𝑦 =
1
20
𝑥2 + 𝑦2
SGD의 단점
최솟값인 (0,0) 까지 지그재그로 이동한다. -> 비효율적이다.
무작정 기울어진 방향으로
진행하는 단순한 방식보다
더 좋은 방법이 없을까?
모멘텀 (Momentum)
𝑣 𝑡 = 𝛼𝑣 𝑡−1 − 𝜂
𝜕𝐿
𝜕𝑊
𝑊 = 𝑊 + 𝑣 𝑡 ∗ 𝑣 : 속도
기울기 방향으로 힘을 받아 물체가 가속된다는 물리 법칙을 나타낸다.
𝛼 는 얼마나 momentum 을 줄 것인지에 대한 momentum term 이다. (보통 0.9)
관성 적용!
참고 : http://shuuki4.github.io/deep%20learning/2016/05/20/Gradient-Descent-Algorithm-Overview.html
모멘텀 (Momentum)
모멘텀 (Momentum)
장점
기존에 이동했던 방향에 관성이 있어 local
minima 를 빠져나올 수 있음을 기대 할 수
있다.
단점
기존의 변수들 외에도 과거에 이동했던 양을
변수별로 저장해야 하므로 변수에 대한 메모
리가 기존의 두 배로 필요하게 된다.
모멘텀 (Momentum)
공이 바닥을 구르듯 움직인다.
X 축의 힘은 작지만 방향은 변하지
않아서 한 방향으로 일정하게 가속
Nesterov Accelerated Gradient (NAG)
• Momentum 방식과 비교
이동 백터 𝑣 𝑡 를 계산할 때 현재 위치에
서의 gradient 와 momentum step 을
독립적으로 계산하고 합친다.
Momentum step 을 먼저 고려하여, momentum
step 을 먼저 이동했다고 생각한 후 그 자리에서
의 gradient 를 구해서 gradient step을 이동한다.
Nesterov Accelerated Gradient (NAG)
𝑣 𝑡 = 𝛼𝑣 𝑡−1 − 𝜂
𝜕𝐿
𝜕(𝑊 + 𝛼𝑣 𝑡−1)
𝑊 = 𝑊 + 𝑣 𝑡 ∗ 𝑣 : 속도
Momentum : 멈춰야 할 시점에서도 관성에 의해 훨씬 멀리 갈수도 있음
NAG : 멈춰야 할 적절한 시점에서 제동을 거는 데에 훨씬 용이하다.
수식 불확실
Nesterov Accelerated Gradient (NAG)
AdaGrad
• 신경망 학습에서는 학습률이 중요하다.
• 학습률이 너무 작으면 학습시간이 너무 길어지고
• 학습률이 너무 커지면 발산하여 학습이 제대로 이뤄지지 않는다.
• 학습률 감소 (learning rate decay)
학습을 진행하면서 학습률을 점차 줄여가는 방법.
Adagrad 는 개별 매개변수에 적응적으로 학습률을 조정해준다.
AdaGrad
ℎ ← ℎ +
𝜕𝐿
𝜕𝑊
⊙
𝜕𝐿
𝜕𝑊
W ← 𝑊 − 𝜂
1
ℎ
𝜕𝐿
𝜕𝑊
* ⊙ : 원소별 곱셈
ℎ 는 기존 기울기 값을 제곱하여 계속 더해준다.
매개변수를 갱신할 때
1
ℎ
를 곱해 학습률을 조정한다.
매개변수의 원소 중 많이 움직인 원소는 학습률이 낮아진다.
즉, 학습률 감소가 매개변수의 원소마다 다르게 적용된다.
자주 등장하거나 변화를 많이 한 변수들의 경
우 optimum에 있을 확률이 높기때문에 작은
크기로 이동하면서 세밀한 값을 조정하고,
적게 변화한 변수들은 optimum 값에 도달하
기 위해서는 많이 이동해야 할 확률이 높기 때
문에 먼저 빠르게 loss 값을 줄이는 방향으로
이동하려는 방식
AdaGrad
0으로 나누는 경우 방지
AdaGrad
최솟값을 향해 효율적으로 움직인다.
Y축 방향은 기울기가 커서 처음에는 크게
움직이지만, 그 큰 움직임에 비례해 갱신
정도도 큰 폭으로 작아지도록 조정됨.
AdaGrad 의 단점
AdaGrad를 사용한 경우 ℎ 에는 계속 제곱한 값을 넣어 주기 때문에
값들은 증가하게 되고
1
ℎ
𝜕𝐿
𝜕𝑊
의 값은 학습이 진행됨에 따라 0으로 가까워지게 된다.
이 문제를 개선한 기법으로써 RMSProp, AdaDelta 라는 방법이 있다.
* Adagrad
ℎ ← ℎ +
𝜕𝐿
𝜕𝑊
⊙
𝜕𝐿
𝜕𝑊
W ← 𝑊 − 𝜂
1
ℎ
𝜕𝐿
𝜕𝑊
* ⊙ : 원소별 곱셈
RMSProp
ℎ ← 𝛼ℎ + (1 − 𝛼)
𝜕𝐿
𝜕𝑊
⊙
𝜕𝐿
𝜕𝑊
𝑊 ← 𝑊 − 𝜂
1
ℎ
𝜕𝐿
𝜕𝑊
ℎ 부분을 합이 아니라 지수이동평균(EMA)으로 바꾸어서 대체한 방법
과거의 기울기를 균일하게 더해가는 것이 아니라, 먼 과거의 기울기는
서서히 잊고 새로운 기울기 정보를 크게 반영한다.
Adam
• Momentum + RMSProp
𝑣 𝑡 = 𝛽2 𝑣 𝑡−1 − (1 − 𝛽2)
𝜕𝐿
𝜕𝑊
⊙
𝜕𝐿
𝜕𝑊
𝑚 𝑡 = 𝛽1 𝑚 𝑡−1 − (1 − 𝛽1)
𝜕𝐿
𝜕𝑊
𝑊 = 𝑊 − 𝜂
1
ො𝑣 𝑡
ෝ𝑚 𝑡
ෝ𝑚 𝑡 =
𝑚 𝑡
1 − 𝛽1
𝑡
ො𝑣 𝑡 =
𝑣 𝑡
1 − 𝛽2
𝑡
보통 설정은…
𝛽1 = 0.9
𝛽2 = 0.999
Adam
Adam
모멘텀 보다 좌우 흔들림이 적다.
대표적 기법 비교
SGD Momentum Adagrad Adam
기법마다 각자의 장단점이 존재하므로 상황을 고려해 사용하자.
MNIST 데이터셋으로 본 갱신 방법 비교
SGD 의 학습 진도가 가장 느림
정리
• GD
• SGD
• Momentum
• NAG
• AdaGrad
• RMSProp
• Adam
정리
가중치 초기값 설정
가중치 초기값
• 가중치 감소
가중치 매개변수의 값이 작아지도록 학습하는 방법
가중치 값을 작게 하여 오버피팅이 일어나지 않게 한다.
• 만약 가중치의 초기값이 모두 0이면?
학습이 올바로 이뤄지지 않음!
모든 가중치의 값이 똑같이 갱신되기 때문이다.
가중치가 고르게 되어버리는 상황을 막으려면
초기값을 무작위로 설정해야 함.
은닉층의 활성화값 분포
• 은닉층의 활성화값의 분포를 관찰하면 중요한 정보를 얻을 수 있다.
Layer : 5
Layer 당 뉴런 : 100
활성화 함수 : Sigmoid
입력 Data : 1,000 (정규분포 무작위 추출)
가중치 : (정규분포 무작위 추출/ 표준편차 : 1)
각 층의 활성화 값들이 0과 1에 치우쳐 분포되어 있다.
시그모이드 함수는 출력이 0 또는 1에 가까워지면 그
미분(기울기)은 0에 가까워진다.
데이터가 0과 1에 치우쳐 분포하게 되면 역전파의 기
울기는 사라지게 된다.
-> 기울기 소실 (gradient vanishing)
참고 : 확률 밀도 함수
은닉층의 활성화값 분포
Layer : 5
Layer 당 뉴런 : 100
활성화 함수 : Sigmoid
입력 Data : 1,000 (정규분포 무작위 추출)
가중치 : (정규분포 무작위 추출/ 표준편차 : 0.01)
각 층의 활성화 값들이 0.5에 집중되어 있다.
기울기 소실 문제는 일어나지 않는다.
하지만 활성화 값들이 치우쳐 있다는 것은…
-> 다수의 뉴런이 거의 같은 값을 출력
-> 뉴런을 여러 개 둔 의미가 없어진다.
-> 뉴런들의 표현력이 제한되었다.
Gradient vanishing
Sigmoid 의 출력이 0 또는 1인 부분
을 미분하면 0이나 0에 가깝게 된다.
Input layer 에 가까워질 수록 전달 받는 값
이 없어서 업데이트가 없게 되는 현상 발생
참고 : https://seamless.tistory.com/34?category=705977
Xavier 초깃값
• Xavier Glorot(사비에르 글로로트) 와 Yoshua Bengio(요슈아 벤지오) 의 논문에서 권장하는 가중치 초깃값
• 앞 계층의 노드가 𝑛개라면 표준편차가
1
𝑛
인 분포를 사용하면 된다는 결론을 이끌었다.
* 논문에는 앞층의 입력 노드 수 외에 다음 층의 출력 노드 수도 고려한 설정값을 제안한다.
Xavier 초깃값 적용
Layer : 5
Layer 당 뉴런 : 100
활성화 함수 : Sigmoid
입력 Data : 1,000 (정규분포 무작위 추출)
가중치 : (정규분포 무작위 추출/ 표준편차 :
1
100
=
1
10
)
앞에서 본 방식보다는 넓게 분포됨을 알 수 있다.
각 층에 흐르는 데이터가 적당히 퍼져있다.
-> 시그모이드 함수의 표현력이 제한받지 않는다.
• 오른쪽으로 갈수록 약간씩 일그러지고 있다.
• 이는 sigmoid 대신 tanh 함수를 이용하면 개선된다고 한다.
Hyperbolic Tangent(tanh) 함수 적용
• 활성화 함수를 sigmoid 대신 tanh 로 적용시키면?
• 확장된 시그모이드 함수
• 출력 범위가 더 넓다.
• 경사면이 큰 범위가 더 크기 때문에 더 빠르게 수렴하여 학습하는 특성이 있음
참고 : http://taewan.kim/post/tanh_diff/
말끔한 종모양이 나온다!
하지만 sigmoid 의 단점인 gradient
vanishing 문제는 그대로 갖고있다.
ReLU를 사용할 때의 가중치 초깃값
• Xavier 초깃값은 활성화 함수가 선형인 것을 전제로 이끈 결과.
• Sigmoid 함수와 tanh 함수는 좌우 대칭이라 중앙 부근이 선형
인 함수로 볼 수 있다.
참고 : https://excelsior-cjh.tistory.com/177
ReLU를 사용할 때의 가중치 초깃값
• 반면 ReLU를 사용할 때는 ReLU에 특화된 초기값을 이용하라고 권장.
-> He 초깃값
앞 계층의 노드가 𝑛개일 때, 표준편차가
2
𝑛
인 정규분포를 사용
* ReLU는 음의영역이 0 이라서 더 넓게 분포 시키기 위해 2배의 계수가 필요 하다고 생각한다.
ReLU를 사용할 때의 가중치 초깃값
표준편차 0.01 Xavier He
1. 신경망에 아주 작은 값들이 흐르므로 가중치의 기울기 역시 작아질 것이다. (학습이 거의 이뤄지지 않는다.)
2. 층이 깊어지면서 치우침이 조금씩 커진다. (기울기 소실 문제)
3. 모든 층에서 균일하게 분포되었다.
1 2 3
MNIST 데이터셋으로 본 가중치 초깃값 비교
은닉층 : 5개
층별 뉴런수 : 100개
활성화 함수: ReLU
가중치 초기값이 학습에 미치는 영향은 상당하다.
정리
• 활성화 함수로 ReLU를 사용할 때는 He 초깃값을
• Sigmoid, tanh 등의 S자 모양 곡선일 때는 Xavier 초기값 사용이 권장
배치 정규화
배치 정규화
• 가중치 초깃값을 적절히 설정하면
각 층의 활성화값 분포가 적당히 퍼지면서
학습이 원활하게 수행됨을 확인했다.
• 만약 각 층이 활성화를 적당히 퍼뜨리도록 강제하면???
-> 배치 정규화
배치 정규화
• 장점
1. 학습 속도 개선
2. 초깃값에 크게 의존하지 않음
3. 오버피팅을 억제 (드롭아웃 등의 필요성 감소)
배치 정규화
Affine
Batch
Norm
Affine
Affine
Batch
Norm
Affine
Affine Softmax
배치 정규화 계층을 신경망에 삽입
배치 정규화
𝜇 𝐵 ←
1
𝑚
෍
𝑖=1
𝑚
𝑥𝑖
𝜎 𝐵
2
←
1
𝑚
෍
𝑖=1
𝑚
(𝑥𝑖 − 𝜇 𝐵)2
ො𝑥𝑖 ←
𝑥𝑖 − 𝜇 𝐵
𝜎 𝐵
2
+ 𝜀
평균
분산
𝐵 = 𝑥1, 𝑥2, … , 𝑥 𝑚 이라는 𝑚 개의 입력 데이터의 집합에 대해 평균과 분산을 구합니다.
그리고 입력 데이터를 평균0, 분산1 이 되게 정규화 합니다. (𝜀 = 작은값(10e-7 등), 0으로 나누는 사태를 예방)
이 처리를 활성화 함수의 앞(혹은 뒤)에 삽입 함으로써 데이터 분포가 덜 치우치게 할 수 있습니다.
배치 정규화
𝑦𝑖 ← 𝛾 ො𝑥𝑖 + 𝛽
참고 : https://kratzert.github.io/2016/02/12/understanding-the-gradient-flow-through-the-batch-normalization-layer.html
배치 정규화 계층마다 정규화된 데이터에 고유한 확대와 이동변환을 수행한다.
𝛾 : 확대
𝛽 : 이동
𝛾 = 1 , 𝛽 = 0 부터 시작, 학습을 통해 적합한 값으로 조정됨
배치 정규화
𝜇 𝐵 ←
1
𝑚
෍
𝑖=1
𝑚
𝑥𝑖 𝜎 𝐵
2
←
1
𝑚
෍
𝑖=1
𝑚
(𝑥𝑖 − 𝜇 𝐵)2
𝑦𝑖 ← 𝛾 ො𝑥𝑖 + 𝛽ො𝑥𝑖 ←
𝑥𝑖 − 𝜇 𝐵
𝜎 𝐵
2
+ 𝜀
배치 정규화 역전파 과정
Step 9
𝛽 의 원소에 역전파 값들이 모인다.
N : Batch size
D : 데이터 갯수
* 덧셈노드의 역전파 참고
배치 정규화 역전파 과정
Step 8 * 곱셈노드의 역전파 참고
배치 정규화 역전파 과정
Step 7
배치 정규화 역전파 과정
Step 6
‘/’ 노드의 역전파 :
𝜕𝑦
𝜕𝑥
= −𝑦2
= −
1
𝑥2
배치 정규화 역전파 과정
Step 5
위 노드의 역전파 :
𝜕𝑦
𝜕𝑥
= −
𝑦
2𝑥
배치 정규화 역전파 과정
Step 4
배치 정규화 역전파 과정
Step 3
배치 정규화 역전파 과정
Step 2
배치 정규화 역전파 과정
Step 1
배치 정규화 결과
거의 모든 경우에서 배치 정규화를 사용할 때의
학습 진도가 빠른 것으로 나타난다.
정리
• 배치 정규화를 사용하면 학습이 빨라진다.
• 가중치 초깃값에 크게 의존하지 않아도 된다.
학습 테크닉
오버피팅
• 기계학습에서는 오버피팅이 문제가 되는 일이 많다.
• 오버피팅이 주로 일어나는 경우
1. 매개변수가 많고 표현력이 높은 모델
2. 훈련 데이터가 적음
* 오버피팅 : 훈련데이터만 지나치게 적응되어 그 외의 데이터에는 제대로 대응하지 못하는 상태
오버피팅
일부러 2가지 요건을 충족시켜 오버피팅을 일으킨 결과 :
훈련 데이터 : 300
테스트 데이터 : 300
7층 네트워크 (복잡성 증가)
가중치 감소(weight decay)
• 오버피팅을 억제하기 위해 사용하는 방법 중 하나.
• 학습 과정에서 큰 가중치에 대해서는
그에 상응하는 큰 페널티를 부과하여
오버피팅을 억제하는 방법
(오버피팅은 가중치 매개변수의 값이 커서 발생하는 경우가 많기 때문)
가중치 감소
• 신경망 학습의 목적은 손실 함수의 값을 줄이는 것.
• 가중치의 제곱 노름(norm) (L2 노름) 을 손실 함수에 더하면…
• 가중치가 커지는 것을 억제할 수 있다.
• 가중치를 𝑊라고 하면 L2 노름에 따른 가중치 감소는
1
2
𝜆𝑊2
• 이를 모든 가중치 각각의 손실 함수에 더한다.
• 가중치의 기울기를 구하는 계산에서는
오차역전파법에 따른 결과에 정규화 항을 미분한 𝜆𝑊를 더한다.
* 𝜆 : 정규화 세기를 조절 /
1
2
:
1
2
𝜆𝑊2
의 미분 결과인 𝜆𝑊 를 조정
가중치 감소
훈련 데이터와 테스트 데이터의 차이가 줄어들었다.
앞과 달리 훈련 데이터에 대한 정확도가 100%로 도달하지 못했다.
드롭아웃(Dropout)
• 신경망 모델이 복잡해지면 가중치 감소만으로는 대응하기 어렵다.
• 드롭아웃 기법을 이용하자.
드롭아웃
훈련 때 은닉층의 뉴런을 무작위로 골라 삭제
• 뉴런을 임의로 삭제하면서 학습하는 방법
• 삭제된 뉴런은 신호를 전달하지 않음
• 훈련때는 데이터를 흘릴 때마다 삭제할 뉴런을
무작위로 선택하고,
• 시험 때는 모든 뉴런에 신호를 전달한다.
• 단, 시험 때는 각 뉴런의 출력에 훈련 때 삭제
한 비율을 곱하여 출력한다. (안 곱해도 된다.)
드롭아웃 구현
훈련일때 True
드롭아웃
훈련 데이터와 테스트 데이터의 차이가 더욱 줄어들었다.
정리
• 오버피팅을 억제하는 방법
1. 가중치 감소
2. 드롭아웃 (신경망이 복잡할 경우)
하이퍼파라미터 값 찾기
적절한 하이퍼파라미터 값
• 신경망에는 하이퍼파라미터가 다수 등장한다.
* 하이퍼파라미터 : 뉴런 수, 배치 크기, 학습률, 가중치 감소
• 이러한 값들을 적절히 설정하지 않으면 모델의 성능이 크게 떨어진다.
• 어떻게하면 효율적으로 하이퍼파라미터의 값을 알아낼 수 있을까?
적절한 하이퍼파라미터 값
• 훈련데이터 : 매개변수 학습
• 검증 데이터 : 하이퍼파라미터 성능 평가
• 시험 데이터 : 신경망의 범용 성능 평가
-> 검증 데이터의 추가
하이퍼파라미터를 평가할때는 시험 데이터를 이용하면 안된다!
-> 하이퍼파라미터의 값이 시험 데이터에 오버피팅되기 때문.
검증 데이터
Train Dataset
20%
훈련 데이터 검증 데이터
보통 20%
하이퍼파라미터 설정 과정
• 0 단계
하이퍼파라미터 값의 범위를 설정
• 1 단계
설정된 범위에서 하이퍼파라미터의 값을 무작위로 추출
• 2 단계
1단계에서 샘플링한 하이퍼파라미터 값을 사용하여 학습하고, 검증 데이터로 정확도를 평가한다.
(단, 에폭은 작게 설정)
• 3단계
1단계와 2단계를 특정 횟수(100회 등) 반복하며, 그 정확도의 결과를 보고 하이퍼파라미터의 범위를 좁힙니다.
이 방법은 실용적인 방법
더 세련된 기법인 베이즈 최적화(Bayesian optimization)가 존재함.
하이퍼파라미터 최적화 구현
• 가중치 감소 계수를 탐색해보자!
• 가중치 감소 계수를 (10−8~10−4)
• 학습률을 (10−6~10−2) 범위부터 시작.
보통 로그 스케일로 지정한다.
(10의 거듭제곱 단위)
하이퍼파라미터 최적화 구현
결과를 보면 학습이 잘 진행될 때의 학습률은 0.001~ 0.01,
가중치 감소 계수는 10−9
~10−5
정도라는 것을 알 수 있다.
이런 식으로 범위를 축소하며 반복하여 특정 단계에서 최종
값을 하나 선택한다.
정리
• 하이퍼파라미터 값 탐색은 최적 값이 존재할 법한 범위를 점차 좁히면서
하는것이 효과적이다.

More Related Content

What's hot

Decision Trees und Random Forest mit Python
Decision Trees und Random Forest mit PythonDecision Trees und Random Forest mit Python
Decision Trees und Random Forest mit PythonDatamics
 
Ensemble methods in machine learning
Ensemble methods in machine learningEnsemble methods in machine learning
Ensemble methods in machine learningSANTHOSH RAJA M G
 
Visual odometry & slam utilizing indoor structured environments
Visual odometry & slam utilizing indoor structured environmentsVisual odometry & slam utilizing indoor structured environments
Visual odometry & slam utilizing indoor structured environmentsNAVER Engineering
 
Machine Learning Introduction
Machine Learning IntroductionMachine Learning Introduction
Machine Learning IntroductionYounesCharfaoui
 
알파고 (바둑 인공지능)의 작동 원리
알파고 (바둑 인공지능)의 작동 원리알파고 (바둑 인공지능)의 작동 원리
알파고 (바둑 인공지능)의 작동 원리Shane (Seungwhan) Moon
 
Lecture1 introduction to machine learning
Lecture1 introduction to machine learningLecture1 introduction to machine learning
Lecture1 introduction to machine learningUmmeSalmaM1
 
Training Neural Networks
Training Neural NetworksTraining Neural Networks
Training Neural NetworksDatabricks
 
Reinforcement Learning 8: Planning and Learning with Tabular Methods
Reinforcement Learning 8: Planning and Learning with Tabular MethodsReinforcement Learning 8: Planning and Learning with Tabular Methods
Reinforcement Learning 8: Planning and Learning with Tabular MethodsSeung Jae Lee
 
Optimization/Gradient Descent
Optimization/Gradient DescentOptimization/Gradient Descent
Optimization/Gradient Descentkandelin
 
Hillclimbing search algorthim #introduction
Hillclimbing search algorthim #introductionHillclimbing search algorthim #introduction
Hillclimbing search algorthim #introductionMohamed Gad
 
Lecture 2 Camera Calibration
Lecture 2   Camera CalibrationLecture 2   Camera Calibration
Lecture 2 Camera CalibrationJoaquim Salvi
 
Dimensionality reduction
Dimensionality reductionDimensionality reduction
Dimensionality reductionShatakirti Er
 
2018.02 intro to visual odometry
2018.02 intro to visual odometry2018.02 intro to visual odometry
2018.02 intro to visual odometryBrianHoltPhD
 
Deep Belief nets
Deep Belief netsDeep Belief nets
Deep Belief netsbutest
 
Deep Learning in Computer Vision
Deep Learning in Computer VisionDeep Learning in Computer Vision
Deep Learning in Computer VisionSungjoon Choi
 
정말 딥러닝은 사람처럼 세상을 인식하고 있을까?
정말 딥러닝은 사람처럼 세상을 인식하고 있을까?정말 딥러닝은 사람처럼 세상을 인식하고 있을까?
정말 딥러닝은 사람처럼 세상을 인식하고 있을까?NAVER Engineering
 
polynomial linear regression
polynomial linear regressionpolynomial linear regression
polynomial linear regressionAkhilesh Joshi
 
“Introduction to Simultaneous Localization and Mapping (SLAM),” a Presentatio...
“Introduction to Simultaneous Localization and Mapping (SLAM),” a Presentatio...“Introduction to Simultaneous Localization and Mapping (SLAM),” a Presentatio...
“Introduction to Simultaneous Localization and Mapping (SLAM),” a Presentatio...Edge AI and Vision Alliance
 
Chapter 7 Regularization for deep learning - 2
Chapter 7 Regularization for deep learning - 2Chapter 7 Regularization for deep learning - 2
Chapter 7 Regularization for deep learning - 2KyeongUkJang
 

What's hot (20)

Decision Trees und Random Forest mit Python
Decision Trees und Random Forest mit PythonDecision Trees und Random Forest mit Python
Decision Trees und Random Forest mit Python
 
Ensemble methods in machine learning
Ensemble methods in machine learningEnsemble methods in machine learning
Ensemble methods in machine learning
 
Visual odometry & slam utilizing indoor structured environments
Visual odometry & slam utilizing indoor structured environmentsVisual odometry & slam utilizing indoor structured environments
Visual odometry & slam utilizing indoor structured environments
 
Machine Learning Introduction
Machine Learning IntroductionMachine Learning Introduction
Machine Learning Introduction
 
알파고 (바둑 인공지능)의 작동 원리
알파고 (바둑 인공지능)의 작동 원리알파고 (바둑 인공지능)의 작동 원리
알파고 (바둑 인공지능)의 작동 원리
 
Lecture1 introduction to machine learning
Lecture1 introduction to machine learningLecture1 introduction to machine learning
Lecture1 introduction to machine learning
 
Training Neural Networks
Training Neural NetworksTraining Neural Networks
Training Neural Networks
 
Reinforcement Learning 8: Planning and Learning with Tabular Methods
Reinforcement Learning 8: Planning and Learning with Tabular MethodsReinforcement Learning 8: Planning and Learning with Tabular Methods
Reinforcement Learning 8: Planning and Learning with Tabular Methods
 
Optimization/Gradient Descent
Optimization/Gradient DescentOptimization/Gradient Descent
Optimization/Gradient Descent
 
Hillclimbing search algorthim #introduction
Hillclimbing search algorthim #introductionHillclimbing search algorthim #introduction
Hillclimbing search algorthim #introduction
 
Lecture 2 Camera Calibration
Lecture 2   Camera CalibrationLecture 2   Camera Calibration
Lecture 2 Camera Calibration
 
Dimensionality reduction
Dimensionality reductionDimensionality reduction
Dimensionality reduction
 
2018.02 intro to visual odometry
2018.02 intro to visual odometry2018.02 intro to visual odometry
2018.02 intro to visual odometry
 
Deep Belief nets
Deep Belief netsDeep Belief nets
Deep Belief nets
 
Policy gradient
Policy gradientPolicy gradient
Policy gradient
 
Deep Learning in Computer Vision
Deep Learning in Computer VisionDeep Learning in Computer Vision
Deep Learning in Computer Vision
 
정말 딥러닝은 사람처럼 세상을 인식하고 있을까?
정말 딥러닝은 사람처럼 세상을 인식하고 있을까?정말 딥러닝은 사람처럼 세상을 인식하고 있을까?
정말 딥러닝은 사람처럼 세상을 인식하고 있을까?
 
polynomial linear regression
polynomial linear regressionpolynomial linear regression
polynomial linear regression
 
“Introduction to Simultaneous Localization and Mapping (SLAM),” a Presentatio...
“Introduction to Simultaneous Localization and Mapping (SLAM),” a Presentatio...“Introduction to Simultaneous Localization and Mapping (SLAM),” a Presentatio...
“Introduction to Simultaneous Localization and Mapping (SLAM),” a Presentatio...
 
Chapter 7 Regularization for deep learning - 2
Chapter 7 Regularization for deep learning - 2Chapter 7 Regularization for deep learning - 2
Chapter 7 Regularization for deep learning - 2
 

Similar to DL from scratch(6)

Learning method
Learning methodLearning method
Learning methodchs71
 
[밑러닝] Chap06 학습관련기술들
[밑러닝] Chap06 학습관련기술들[밑러닝] Chap06 학습관련기술들
[밑러닝] Chap06 학습관련기술들종현 최
 
Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리SANG WON PARK
 
Deep Learning from scratch 4장 : neural network learning
Deep Learning from scratch 4장 : neural network learningDeep Learning from scratch 4장 : neural network learning
Deep Learning from scratch 4장 : neural network learningJinSooKim80
 
Supervised Constrastive Learning
Supervised Constrastive LearningSupervised Constrastive Learning
Supervised Constrastive LearningSungchul Kim
 
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련Haesun Park
 
Chapter 8 - optimization for training deep models
Chapter 8 - optimization for training deep modelsChapter 8 - optimization for training deep models
Chapter 8 - optimization for training deep modelsKyeongUkJang
 
2.supervised learning(epoch#2)-3
2.supervised learning(epoch#2)-32.supervised learning(epoch#2)-3
2.supervised learning(epoch#2)-3Haesun Park
 
밑바닥부터 시작하는 딥러닝 - 학습관련기술들 스크립트
밑바닥부터 시작하는 딥러닝 - 학습관련기술들 스크립트밑바닥부터 시작하는 딥러닝 - 학습관련기술들 스크립트
밑바닥부터 시작하는 딥러닝 - 학습관련기술들 스크립트혜승 이
 
딥러닝의 기본
딥러닝의 기본딥러닝의 기본
딥러닝의 기본deepseaswjh
 
SAGAN_2024seminar announce_seoultech.pptx
SAGAN_2024seminar announce_seoultech.pptxSAGAN_2024seminar announce_seoultech.pptx
SAGAN_2024seminar announce_seoultech.pptxssuser4b2fe7
 
딥러닝 기본 원리의 이해
딥러닝 기본 원리의 이해딥러닝 기본 원리의 이해
딥러닝 기본 원리의 이해Hee Won Park
 
Deep Learning from scratch 5장 : backpropagation
 Deep Learning from scratch 5장 : backpropagation Deep Learning from scratch 5장 : backpropagation
Deep Learning from scratch 5장 : backpropagationJinSooKim80
 
Guided policy search
Guided policy searchGuided policy search
Guided policy searchJaehyeon Park
 
3.unsupervised learing
3.unsupervised learing3.unsupervised learing
3.unsupervised learingHaesun Park
 
2.supervised learning(epoch#2)-2
2.supervised learning(epoch#2)-22.supervised learning(epoch#2)-2
2.supervised learning(epoch#2)-2Haesun Park
 
Vector Optimization
Vector Optimization Vector Optimization
Vector Optimization SEMINARGROOT
 
Lecture 4: Neural Networks I
Lecture 4: Neural Networks ILecture 4: Neural Networks I
Lecture 4: Neural Networks ISang Jun Lee
 
인공 신경망 구현에 관한 간단한 설명
인공 신경망 구현에 관한 간단한 설명인공 신경망 구현에 관한 간단한 설명
인공 신경망 구현에 관한 간단한 설명Woonghee Lee
 

Similar to DL from scratch(6) (20)

Learning method
Learning methodLearning method
Learning method
 
[밑러닝] Chap06 학습관련기술들
[밑러닝] Chap06 학습관련기술들[밑러닝] Chap06 학습관련기술들
[밑러닝] Chap06 학습관련기술들
 
Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리
 
Deep Learning from scratch 4장 : neural network learning
Deep Learning from scratch 4장 : neural network learningDeep Learning from scratch 4장 : neural network learning
Deep Learning from scratch 4장 : neural network learning
 
DL from scratch(4~5)
DL from scratch(4~5)DL from scratch(4~5)
DL from scratch(4~5)
 
Supervised Constrastive Learning
Supervised Constrastive LearningSupervised Constrastive Learning
Supervised Constrastive Learning
 
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
 
Chapter 8 - optimization for training deep models
Chapter 8 - optimization for training deep modelsChapter 8 - optimization for training deep models
Chapter 8 - optimization for training deep models
 
2.supervised learning(epoch#2)-3
2.supervised learning(epoch#2)-32.supervised learning(epoch#2)-3
2.supervised learning(epoch#2)-3
 
밑바닥부터 시작하는 딥러닝 - 학습관련기술들 스크립트
밑바닥부터 시작하는 딥러닝 - 학습관련기술들 스크립트밑바닥부터 시작하는 딥러닝 - 학습관련기술들 스크립트
밑바닥부터 시작하는 딥러닝 - 학습관련기술들 스크립트
 
딥러닝의 기본
딥러닝의 기본딥러닝의 기본
딥러닝의 기본
 
SAGAN_2024seminar announce_seoultech.pptx
SAGAN_2024seminar announce_seoultech.pptxSAGAN_2024seminar announce_seoultech.pptx
SAGAN_2024seminar announce_seoultech.pptx
 
딥러닝 기본 원리의 이해
딥러닝 기본 원리의 이해딥러닝 기본 원리의 이해
딥러닝 기본 원리의 이해
 
Deep Learning from scratch 5장 : backpropagation
 Deep Learning from scratch 5장 : backpropagation Deep Learning from scratch 5장 : backpropagation
Deep Learning from scratch 5장 : backpropagation
 
Guided policy search
Guided policy searchGuided policy search
Guided policy search
 
3.unsupervised learing
3.unsupervised learing3.unsupervised learing
3.unsupervised learing
 
2.supervised learning(epoch#2)-2
2.supervised learning(epoch#2)-22.supervised learning(epoch#2)-2
2.supervised learning(epoch#2)-2
 
Vector Optimization
Vector Optimization Vector Optimization
Vector Optimization
 
Lecture 4: Neural Networks I
Lecture 4: Neural Networks ILecture 4: Neural Networks I
Lecture 4: Neural Networks I
 
인공 신경망 구현에 관한 간단한 설명
인공 신경망 구현에 관한 간단한 설명인공 신경망 구현에 관한 간단한 설명
인공 신경망 구현에 관한 간단한 설명
 

DL from scratch(6)

  • 2. 목차 • 매개변수 갱신 • 가중치 초기값 설정 • 배치 정규화 • 학습 테크닉 • 하이퍼파라미터 값 찾기
  • 4. Batch Gradient Descent (Batch GD) • 주어진 학습데이터에 대해서 한꺼번에 gradient 값을 구하여 가중치를 갱신한다. • 단점 1. 계산량이 너무 많음. 2. Overfitting 확률이 높음. 평균 기울기 값을 구해 매개변수를 업데이트 하면 한번의 epoch 가 끝나게 된다. 참고 : https://deepapple.tistory.com/7
  • 5. 확률적 경사 하강법(SGD) Stochastic Gradient Descent • 학습데이터 set 에서 설정한 batch 크기 만큼 샘플을 고른 후 gradient값을 구하여 가중치를 갱신한다. • GD 와 비교했을 시 장점 1. 랜덤으로 샘플을 고르기 때문에 기울기의 변동성이 커져 local minima 에서 빠져나오기 쉽다. 2. 계산량이 낮아져 빠르다. 일부 sample을 사용하여 기울기를 계산, 가중치 업데이트
  • 6. GD vs SGD 참고 : https://seamless.tistory.com/38
  • 7. 확률적 경사 하강법(SGD) Stochastic Gradient Descent 𝑊 ← 𝑊 − 𝜂 𝜕𝑓 𝜕𝑊 * 𝜂 : 학습률 SGD 는 기울어진 방향으로 일정 거리만 가겠다는 단순한 방법
  • 8. 확률적 경사 하강법(SGD) Stochastic Gradient Descent
  • 9. SGD의 단점 𝑓 𝑥, 𝑦 = 1 20 𝑥2 + 𝑦2
  • 10. SGD의 단점 최솟값인 (0,0) 까지 지그재그로 이동한다. -> 비효율적이다. 무작정 기울어진 방향으로 진행하는 단순한 방식보다 더 좋은 방법이 없을까?
  • 11. 모멘텀 (Momentum) 𝑣 𝑡 = 𝛼𝑣 𝑡−1 − 𝜂 𝜕𝐿 𝜕𝑊 𝑊 = 𝑊 + 𝑣 𝑡 ∗ 𝑣 : 속도 기울기 방향으로 힘을 받아 물체가 가속된다는 물리 법칙을 나타낸다. 𝛼 는 얼마나 momentum 을 줄 것인지에 대한 momentum term 이다. (보통 0.9) 관성 적용! 참고 : http://shuuki4.github.io/deep%20learning/2016/05/20/Gradient-Descent-Algorithm-Overview.html
  • 13. 모멘텀 (Momentum) 장점 기존에 이동했던 방향에 관성이 있어 local minima 를 빠져나올 수 있음을 기대 할 수 있다. 단점 기존의 변수들 외에도 과거에 이동했던 양을 변수별로 저장해야 하므로 변수에 대한 메모 리가 기존의 두 배로 필요하게 된다.
  • 14. 모멘텀 (Momentum) 공이 바닥을 구르듯 움직인다. X 축의 힘은 작지만 방향은 변하지 않아서 한 방향으로 일정하게 가속
  • 15. Nesterov Accelerated Gradient (NAG) • Momentum 방식과 비교 이동 백터 𝑣 𝑡 를 계산할 때 현재 위치에 서의 gradient 와 momentum step 을 독립적으로 계산하고 합친다. Momentum step 을 먼저 고려하여, momentum step 을 먼저 이동했다고 생각한 후 그 자리에서 의 gradient 를 구해서 gradient step을 이동한다.
  • 16. Nesterov Accelerated Gradient (NAG) 𝑣 𝑡 = 𝛼𝑣 𝑡−1 − 𝜂 𝜕𝐿 𝜕(𝑊 + 𝛼𝑣 𝑡−1) 𝑊 = 𝑊 + 𝑣 𝑡 ∗ 𝑣 : 속도 Momentum : 멈춰야 할 시점에서도 관성에 의해 훨씬 멀리 갈수도 있음 NAG : 멈춰야 할 적절한 시점에서 제동을 거는 데에 훨씬 용이하다. 수식 불확실
  • 18. AdaGrad • 신경망 학습에서는 학습률이 중요하다. • 학습률이 너무 작으면 학습시간이 너무 길어지고 • 학습률이 너무 커지면 발산하여 학습이 제대로 이뤄지지 않는다. • 학습률 감소 (learning rate decay) 학습을 진행하면서 학습률을 점차 줄여가는 방법. Adagrad 는 개별 매개변수에 적응적으로 학습률을 조정해준다.
  • 19. AdaGrad ℎ ← ℎ + 𝜕𝐿 𝜕𝑊 ⊙ 𝜕𝐿 𝜕𝑊 W ← 𝑊 − 𝜂 1 ℎ 𝜕𝐿 𝜕𝑊 * ⊙ : 원소별 곱셈 ℎ 는 기존 기울기 값을 제곱하여 계속 더해준다. 매개변수를 갱신할 때 1 ℎ 를 곱해 학습률을 조정한다. 매개변수의 원소 중 많이 움직인 원소는 학습률이 낮아진다. 즉, 학습률 감소가 매개변수의 원소마다 다르게 적용된다. 자주 등장하거나 변화를 많이 한 변수들의 경 우 optimum에 있을 확률이 높기때문에 작은 크기로 이동하면서 세밀한 값을 조정하고, 적게 변화한 변수들은 optimum 값에 도달하 기 위해서는 많이 이동해야 할 확률이 높기 때 문에 먼저 빠르게 loss 값을 줄이는 방향으로 이동하려는 방식
  • 21. AdaGrad 최솟값을 향해 효율적으로 움직인다. Y축 방향은 기울기가 커서 처음에는 크게 움직이지만, 그 큰 움직임에 비례해 갱신 정도도 큰 폭으로 작아지도록 조정됨.
  • 22. AdaGrad 의 단점 AdaGrad를 사용한 경우 ℎ 에는 계속 제곱한 값을 넣어 주기 때문에 값들은 증가하게 되고 1 ℎ 𝜕𝐿 𝜕𝑊 의 값은 학습이 진행됨에 따라 0으로 가까워지게 된다. 이 문제를 개선한 기법으로써 RMSProp, AdaDelta 라는 방법이 있다. * Adagrad ℎ ← ℎ + 𝜕𝐿 𝜕𝑊 ⊙ 𝜕𝐿 𝜕𝑊 W ← 𝑊 − 𝜂 1 ℎ 𝜕𝐿 𝜕𝑊 * ⊙ : 원소별 곱셈
  • 23. RMSProp ℎ ← 𝛼ℎ + (1 − 𝛼) 𝜕𝐿 𝜕𝑊 ⊙ 𝜕𝐿 𝜕𝑊 𝑊 ← 𝑊 − 𝜂 1 ℎ 𝜕𝐿 𝜕𝑊 ℎ 부분을 합이 아니라 지수이동평균(EMA)으로 바꾸어서 대체한 방법 과거의 기울기를 균일하게 더해가는 것이 아니라, 먼 과거의 기울기는 서서히 잊고 새로운 기울기 정보를 크게 반영한다.
  • 24. Adam • Momentum + RMSProp 𝑣 𝑡 = 𝛽2 𝑣 𝑡−1 − (1 − 𝛽2) 𝜕𝐿 𝜕𝑊 ⊙ 𝜕𝐿 𝜕𝑊 𝑚 𝑡 = 𝛽1 𝑚 𝑡−1 − (1 − 𝛽1) 𝜕𝐿 𝜕𝑊 𝑊 = 𝑊 − 𝜂 1 ො𝑣 𝑡 ෝ𝑚 𝑡 ෝ𝑚 𝑡 = 𝑚 𝑡 1 − 𝛽1 𝑡 ො𝑣 𝑡 = 𝑣 𝑡 1 − 𝛽2 𝑡 보통 설정은… 𝛽1 = 0.9 𝛽2 = 0.999
  • 25. Adam
  • 26. Adam 모멘텀 보다 좌우 흔들림이 적다.
  • 27. 대표적 기법 비교 SGD Momentum Adagrad Adam 기법마다 각자의 장단점이 존재하므로 상황을 고려해 사용하자.
  • 28. MNIST 데이터셋으로 본 갱신 방법 비교 SGD 의 학습 진도가 가장 느림
  • 29. 정리 • GD • SGD • Momentum • NAG • AdaGrad • RMSProp • Adam
  • 32. 가중치 초기값 • 가중치 감소 가중치 매개변수의 값이 작아지도록 학습하는 방법 가중치 값을 작게 하여 오버피팅이 일어나지 않게 한다. • 만약 가중치의 초기값이 모두 0이면? 학습이 올바로 이뤄지지 않음! 모든 가중치의 값이 똑같이 갱신되기 때문이다. 가중치가 고르게 되어버리는 상황을 막으려면 초기값을 무작위로 설정해야 함.
  • 33. 은닉층의 활성화값 분포 • 은닉층의 활성화값의 분포를 관찰하면 중요한 정보를 얻을 수 있다. Layer : 5 Layer 당 뉴런 : 100 활성화 함수 : Sigmoid 입력 Data : 1,000 (정규분포 무작위 추출) 가중치 : (정규분포 무작위 추출/ 표준편차 : 1) 각 층의 활성화 값들이 0과 1에 치우쳐 분포되어 있다. 시그모이드 함수는 출력이 0 또는 1에 가까워지면 그 미분(기울기)은 0에 가까워진다. 데이터가 0과 1에 치우쳐 분포하게 되면 역전파의 기 울기는 사라지게 된다. -> 기울기 소실 (gradient vanishing) 참고 : 확률 밀도 함수
  • 34. 은닉층의 활성화값 분포 Layer : 5 Layer 당 뉴런 : 100 활성화 함수 : Sigmoid 입력 Data : 1,000 (정규분포 무작위 추출) 가중치 : (정규분포 무작위 추출/ 표준편차 : 0.01) 각 층의 활성화 값들이 0.5에 집중되어 있다. 기울기 소실 문제는 일어나지 않는다. 하지만 활성화 값들이 치우쳐 있다는 것은… -> 다수의 뉴런이 거의 같은 값을 출력 -> 뉴런을 여러 개 둔 의미가 없어진다. -> 뉴런들의 표현력이 제한되었다.
  • 35. Gradient vanishing Sigmoid 의 출력이 0 또는 1인 부분 을 미분하면 0이나 0에 가깝게 된다. Input layer 에 가까워질 수록 전달 받는 값 이 없어서 업데이트가 없게 되는 현상 발생 참고 : https://seamless.tistory.com/34?category=705977
  • 36. Xavier 초깃값 • Xavier Glorot(사비에르 글로로트) 와 Yoshua Bengio(요슈아 벤지오) 의 논문에서 권장하는 가중치 초깃값 • 앞 계층의 노드가 𝑛개라면 표준편차가 1 𝑛 인 분포를 사용하면 된다는 결론을 이끌었다. * 논문에는 앞층의 입력 노드 수 외에 다음 층의 출력 노드 수도 고려한 설정값을 제안한다.
  • 37. Xavier 초깃값 적용 Layer : 5 Layer 당 뉴런 : 100 활성화 함수 : Sigmoid 입력 Data : 1,000 (정규분포 무작위 추출) 가중치 : (정규분포 무작위 추출/ 표준편차 : 1 100 = 1 10 ) 앞에서 본 방식보다는 넓게 분포됨을 알 수 있다. 각 층에 흐르는 데이터가 적당히 퍼져있다. -> 시그모이드 함수의 표현력이 제한받지 않는다. • 오른쪽으로 갈수록 약간씩 일그러지고 있다. • 이는 sigmoid 대신 tanh 함수를 이용하면 개선된다고 한다.
  • 38. Hyperbolic Tangent(tanh) 함수 적용 • 활성화 함수를 sigmoid 대신 tanh 로 적용시키면? • 확장된 시그모이드 함수 • 출력 범위가 더 넓다. • 경사면이 큰 범위가 더 크기 때문에 더 빠르게 수렴하여 학습하는 특성이 있음 참고 : http://taewan.kim/post/tanh_diff/ 말끔한 종모양이 나온다! 하지만 sigmoid 의 단점인 gradient vanishing 문제는 그대로 갖고있다.
  • 39. ReLU를 사용할 때의 가중치 초깃값 • Xavier 초깃값은 활성화 함수가 선형인 것을 전제로 이끈 결과. • Sigmoid 함수와 tanh 함수는 좌우 대칭이라 중앙 부근이 선형 인 함수로 볼 수 있다. 참고 : https://excelsior-cjh.tistory.com/177
  • 40. ReLU를 사용할 때의 가중치 초깃값 • 반면 ReLU를 사용할 때는 ReLU에 특화된 초기값을 이용하라고 권장. -> He 초깃값 앞 계층의 노드가 𝑛개일 때, 표준편차가 2 𝑛 인 정규분포를 사용 * ReLU는 음의영역이 0 이라서 더 넓게 분포 시키기 위해 2배의 계수가 필요 하다고 생각한다.
  • 41. ReLU를 사용할 때의 가중치 초깃값 표준편차 0.01 Xavier He 1. 신경망에 아주 작은 값들이 흐르므로 가중치의 기울기 역시 작아질 것이다. (학습이 거의 이뤄지지 않는다.) 2. 층이 깊어지면서 치우침이 조금씩 커진다. (기울기 소실 문제) 3. 모든 층에서 균일하게 분포되었다. 1 2 3
  • 42. MNIST 데이터셋으로 본 가중치 초깃값 비교 은닉층 : 5개 층별 뉴런수 : 100개 활성화 함수: ReLU 가중치 초기값이 학습에 미치는 영향은 상당하다.
  • 43. 정리 • 활성화 함수로 ReLU를 사용할 때는 He 초깃값을 • Sigmoid, tanh 등의 S자 모양 곡선일 때는 Xavier 초기값 사용이 권장
  • 45. 배치 정규화 • 가중치 초깃값을 적절히 설정하면 각 층의 활성화값 분포가 적당히 퍼지면서 학습이 원활하게 수행됨을 확인했다. • 만약 각 층이 활성화를 적당히 퍼뜨리도록 강제하면??? -> 배치 정규화
  • 46. 배치 정규화 • 장점 1. 학습 속도 개선 2. 초깃값에 크게 의존하지 않음 3. 오버피팅을 억제 (드롭아웃 등의 필요성 감소)
  • 48. 배치 정규화 𝜇 𝐵 ← 1 𝑚 ෍ 𝑖=1 𝑚 𝑥𝑖 𝜎 𝐵 2 ← 1 𝑚 ෍ 𝑖=1 𝑚 (𝑥𝑖 − 𝜇 𝐵)2 ො𝑥𝑖 ← 𝑥𝑖 − 𝜇 𝐵 𝜎 𝐵 2 + 𝜀 평균 분산 𝐵 = 𝑥1, 𝑥2, … , 𝑥 𝑚 이라는 𝑚 개의 입력 데이터의 집합에 대해 평균과 분산을 구합니다. 그리고 입력 데이터를 평균0, 분산1 이 되게 정규화 합니다. (𝜀 = 작은값(10e-7 등), 0으로 나누는 사태를 예방) 이 처리를 활성화 함수의 앞(혹은 뒤)에 삽입 함으로써 데이터 분포가 덜 치우치게 할 수 있습니다.
  • 49. 배치 정규화 𝑦𝑖 ← 𝛾 ො𝑥𝑖 + 𝛽 참고 : https://kratzert.github.io/2016/02/12/understanding-the-gradient-flow-through-the-batch-normalization-layer.html 배치 정규화 계층마다 정규화된 데이터에 고유한 확대와 이동변환을 수행한다. 𝛾 : 확대 𝛽 : 이동 𝛾 = 1 , 𝛽 = 0 부터 시작, 학습을 통해 적합한 값으로 조정됨
  • 50. 배치 정규화 𝜇 𝐵 ← 1 𝑚 ෍ 𝑖=1 𝑚 𝑥𝑖 𝜎 𝐵 2 ← 1 𝑚 ෍ 𝑖=1 𝑚 (𝑥𝑖 − 𝜇 𝐵)2 𝑦𝑖 ← 𝛾 ො𝑥𝑖 + 𝛽ො𝑥𝑖 ← 𝑥𝑖 − 𝜇 𝐵 𝜎 𝐵 2 + 𝜀
  • 51. 배치 정규화 역전파 과정 Step 9 𝛽 의 원소에 역전파 값들이 모인다. N : Batch size D : 데이터 갯수 * 덧셈노드의 역전파 참고
  • 52. 배치 정규화 역전파 과정 Step 8 * 곱셈노드의 역전파 참고
  • 53. 배치 정규화 역전파 과정 Step 7
  • 54. 배치 정규화 역전파 과정 Step 6 ‘/’ 노드의 역전파 : 𝜕𝑦 𝜕𝑥 = −𝑦2 = − 1 𝑥2
  • 55. 배치 정규화 역전파 과정 Step 5 위 노드의 역전파 : 𝜕𝑦 𝜕𝑥 = − 𝑦 2𝑥
  • 56. 배치 정규화 역전파 과정 Step 4
  • 57. 배치 정규화 역전파 과정 Step 3
  • 58. 배치 정규화 역전파 과정 Step 2
  • 59. 배치 정규화 역전파 과정 Step 1
  • 60. 배치 정규화 결과 거의 모든 경우에서 배치 정규화를 사용할 때의 학습 진도가 빠른 것으로 나타난다.
  • 61. 정리 • 배치 정규화를 사용하면 학습이 빨라진다. • 가중치 초깃값에 크게 의존하지 않아도 된다.
  • 63. 오버피팅 • 기계학습에서는 오버피팅이 문제가 되는 일이 많다. • 오버피팅이 주로 일어나는 경우 1. 매개변수가 많고 표현력이 높은 모델 2. 훈련 데이터가 적음 * 오버피팅 : 훈련데이터만 지나치게 적응되어 그 외의 데이터에는 제대로 대응하지 못하는 상태
  • 64. 오버피팅 일부러 2가지 요건을 충족시켜 오버피팅을 일으킨 결과 : 훈련 데이터 : 300 테스트 데이터 : 300 7층 네트워크 (복잡성 증가)
  • 65. 가중치 감소(weight decay) • 오버피팅을 억제하기 위해 사용하는 방법 중 하나. • 학습 과정에서 큰 가중치에 대해서는 그에 상응하는 큰 페널티를 부과하여 오버피팅을 억제하는 방법 (오버피팅은 가중치 매개변수의 값이 커서 발생하는 경우가 많기 때문)
  • 66. 가중치 감소 • 신경망 학습의 목적은 손실 함수의 값을 줄이는 것. • 가중치의 제곱 노름(norm) (L2 노름) 을 손실 함수에 더하면… • 가중치가 커지는 것을 억제할 수 있다. • 가중치를 𝑊라고 하면 L2 노름에 따른 가중치 감소는 1 2 𝜆𝑊2 • 이를 모든 가중치 각각의 손실 함수에 더한다. • 가중치의 기울기를 구하는 계산에서는 오차역전파법에 따른 결과에 정규화 항을 미분한 𝜆𝑊를 더한다. * 𝜆 : 정규화 세기를 조절 / 1 2 : 1 2 𝜆𝑊2 의 미분 결과인 𝜆𝑊 를 조정
  • 67. 가중치 감소 훈련 데이터와 테스트 데이터의 차이가 줄어들었다. 앞과 달리 훈련 데이터에 대한 정확도가 100%로 도달하지 못했다.
  • 68. 드롭아웃(Dropout) • 신경망 모델이 복잡해지면 가중치 감소만으로는 대응하기 어렵다. • 드롭아웃 기법을 이용하자.
  • 69. 드롭아웃 훈련 때 은닉층의 뉴런을 무작위로 골라 삭제 • 뉴런을 임의로 삭제하면서 학습하는 방법 • 삭제된 뉴런은 신호를 전달하지 않음 • 훈련때는 데이터를 흘릴 때마다 삭제할 뉴런을 무작위로 선택하고, • 시험 때는 모든 뉴런에 신호를 전달한다. • 단, 시험 때는 각 뉴런의 출력에 훈련 때 삭제 한 비율을 곱하여 출력한다. (안 곱해도 된다.)
  • 71. 드롭아웃 훈련 데이터와 테스트 데이터의 차이가 더욱 줄어들었다.
  • 72. 정리 • 오버피팅을 억제하는 방법 1. 가중치 감소 2. 드롭아웃 (신경망이 복잡할 경우)
  • 74. 적절한 하이퍼파라미터 값 • 신경망에는 하이퍼파라미터가 다수 등장한다. * 하이퍼파라미터 : 뉴런 수, 배치 크기, 학습률, 가중치 감소 • 이러한 값들을 적절히 설정하지 않으면 모델의 성능이 크게 떨어진다. • 어떻게하면 효율적으로 하이퍼파라미터의 값을 알아낼 수 있을까?
  • 75. 적절한 하이퍼파라미터 값 • 훈련데이터 : 매개변수 학습 • 검증 데이터 : 하이퍼파라미터 성능 평가 • 시험 데이터 : 신경망의 범용 성능 평가 -> 검증 데이터의 추가 하이퍼파라미터를 평가할때는 시험 데이터를 이용하면 안된다! -> 하이퍼파라미터의 값이 시험 데이터에 오버피팅되기 때문.
  • 76. 검증 데이터 Train Dataset 20% 훈련 데이터 검증 데이터 보통 20%
  • 77. 하이퍼파라미터 설정 과정 • 0 단계 하이퍼파라미터 값의 범위를 설정 • 1 단계 설정된 범위에서 하이퍼파라미터의 값을 무작위로 추출 • 2 단계 1단계에서 샘플링한 하이퍼파라미터 값을 사용하여 학습하고, 검증 데이터로 정확도를 평가한다. (단, 에폭은 작게 설정) • 3단계 1단계와 2단계를 특정 횟수(100회 등) 반복하며, 그 정확도의 결과를 보고 하이퍼파라미터의 범위를 좁힙니다. 이 방법은 실용적인 방법 더 세련된 기법인 베이즈 최적화(Bayesian optimization)가 존재함.
  • 78. 하이퍼파라미터 최적화 구현 • 가중치 감소 계수를 탐색해보자! • 가중치 감소 계수를 (10−8~10−4) • 학습률을 (10−6~10−2) 범위부터 시작. 보통 로그 스케일로 지정한다. (10의 거듭제곱 단위)
  • 79. 하이퍼파라미터 최적화 구현 결과를 보면 학습이 잘 진행될 때의 학습률은 0.001~ 0.01, 가중치 감소 계수는 10−9 ~10−5 정도라는 것을 알 수 있다. 이런 식으로 범위를 축소하며 반복하여 특정 단계에서 최종 값을 하나 선택한다.
  • 80. 정리 • 하이퍼파라미터 값 탐색은 최적 값이 존재할 법한 범위를 점차 좁히면서 하는것이 효과적이다.