티스토리 뷰

"해당 포스팅은 Coursera 에서 수강한 Andew Ng 의 deep learning specialization 코스를 요약한 것입니다." 


 

이번 주 수업은 classical CNN 모델들의 architecture를 자세히 보고 배워보는 시간! 

 

Le Net, AlexNet, VGG-16까지 차례로 봤다. 자세한 건 그냥 복습용 슬라이드 볼 것. 무엇보다 중요한 건 그동안 이해못했던 Residual networks (ResNets) 를 드디어 이해했다는 것 (그것도 엄청 쉽게 설명한 Andrew Ng 의 강의력 무엇..?) 

 

1. Residual Network 

CNN 이든 뭐든 결국 모델이 복잡 (deep layers) 하면 학습이 어렵다. 왜냐고? Vanishing & Exploding gradient 때문에! 

아주 간단하게 수식으로 설명하면 이렇다. 

 

$$ a^{[l+2]} = g(z^{[l+2]}) = g(w^{[l+2]}*a^{[l+1]}+b^{[l+2]}) $$

여기서 $[l+1]$ 은 layer 의 index 임. 즉, activation $a^{[l+2]}$ 를 계산할 때, previous layer 의 activation, 즉 $a[l+1]$ 만 계산에 들어가는 게 보통임. 그런데 activation $a[l+2]$ 를 계산하기 위해 linear calculation 을 할 때, $a[l]$ 를 바로 집어넣는게 바로 residual block 의 핵심이다. 

수식으로 표현하면 

$$a^{[l+2]} = g(z^{[l+2]} + a^{[l]}) $$ 

이다. 

즉, l+2 layer 에서 activation 함수 전에 들어가는 거고 $+ a^{[l]}$ 이 부분이 바로 residual block 을 만든다고 할 수 있다. 

 

 

 

Andrew Ng 이 skip connection 을 그림으로 표현한 것

 

그림으로 표현하면 위와 같이 l 번째 layer 의 activation 이 곧바로 $a^{[l+2]}$ 를 만들기 위한 layer 의 input 으로 들어가는 것을 볼 수 있다. 단, 저 하나의 layer 는 이미 Linear + Relu (Non-Linearity) 인데 이 $a^{[l]}$ 은 저 사이에, 즉 relu activation 전에 들어간 다는 것을 명심! 

 

위에서 그림으로 표현한 게 하나의 Residual Block 이고, 이게 각 layer 에서 반복되면 Residual Network 라고 부르는 거지. 

 

 

 

 

근데 왜 ResNets 이 잘 먹히냐고? 

 

간단하게 말해서 위에서 나온 수식해서 l+2 번째 layer 의 weight 과 bias 가 아주 작은 값, 아니 아예 그냥 0이라고 치자. 그러면 

$$ a^{[l+2]} = a^{[l]} $$ 

이 형태가 되는데 결국 항등함수이고, 그렇기 때문에 Learing 이 더 쉽다. 이 때 중요한 건 $a^{[l]}$ 은 무조건 0 에서 1 사이의 값이라는 것 (Relu 를 거쳤기 때문에 0에서 1사이의 값이 나옴). 

 

 

위 그림에서 첫번째 그림은 plain network 이고 2번째 그림은 skip connection 이 있는 residual block 이다. 어쨌든 residual network 를 이용하면 아주 deep 한 networks 도 vanishing & exploding gradient 문제 없이 학습이 가능하다. 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함