소소하지만 소소하지 않은 개발 공부/밑바닥부터 시작하는 딥러닝

Chapter8. 딥러닝, DL from Scratch, python

still..epochs 2022. 11. 17. 22:25

* 본 포스팅의 내용은 모두 밑바닥부터 시작하는 딥러닝 을 참고하여 작성한 내용입니다.

 

8.1 더 깊게

8.1.1 더 깊은 신경망으로

손글씨 숫자를 인식하는 CNN

여기에서 사용하는 합성곱 계층은 모두 3X3 크기의 작은 필터로, 층이 깊어지면서 채널 수가 더 늘어나는 것이 특징이다.(합성곱 계층의 채널 수는 앞 계층에서부터 순서대로 16, 16, 32 , 32, 64, 64 로 늘어간다) 또 그림과 같이 풀링 계층을 추가하여 중간 데이터의 공간 크기를 점차 줄여간다. 그리고 마지막 단의 완전연결 계층에서는 드롭아웃 계층을 사용한다.

 

가중치 초깃값 : He 초깃값

가중치 매개변수 갱신 : Adam

 

위의 신경망의 특징

- 3 x 3의 작은 필터를 사용한 합성곱 계층

- 활성화 함수는 ReLU

- 완전연결 계층 뒤에 드롭아웃 계층 사용

- Adam을 사용해 최적화

- 가중치 초깃값은 'He의 초깃값'

 

이 신경망의 정확도는 99.38% 이다!

 

 

8.1.2 정확도를 더 높이려면

앙상블 학습, 학습률 감소, 데이터 확장 등이 정확도 향상에 도움이 된다. 특히 데이터 확장은 손쉬운 방법이면서도 정확도 개선이 아주 효과적이다.

 

데이터 확장;data augmentation 은 입력 이미지(훈련 이미지)를 알고리즘을 동원해 '인위적'으로 확장한다. 아래의 그림과 같이 입력 이미지를 회전하거나 세로로 이동하는 등 미세한 변화를 주어 이미지의 개수를 늘리는 것이다. 이는 데이터가 몇 개 없을 때 특히 효과적인 수단이다.

 

 

8.1.3 깊게 하는 이유

층을 깊게 할 때의 이점 하나는 신경망의 매개변수 수가 줄어든다는 것이다. 층을 깊게 한 신경망은 깊지 않은 경우보다 적은 매개변수로 같은 (혹은 그 이상) 수준의 표현력을 달성할 수 있다. 합성곱 연산에서의 필터 크기에 주목해 생각해 보면 쉽게 이해할 수 있다.

5 x 5 합성곱 연산의 예

여기에서 주목할 점은 출력 데이터의 각 노드가 입력 데이터의 어느 영역으로부터 계산되었느냐는 것이다. 이어서 아래의 그림처럼 3x3의 합성곱 연산을 2회 반복하는 경우를 생각해보자. 이 경우 출력 노드 하나는 중간 데이터의 3x3 영역에서 계산된다.

그럼 중간 데이터의 3x3 영역은 그전 입력 데이터의 어느 영역에서 계산 된 것일까? 잘 보면 5x5 크기의 영역에서 계산되어 나오는 것을 알 수 있다. 즉, 위 그림의 출력 데이터는 입력 데이터의 5x5 영역을 '보고' 계산하게 된다.

 

5 X 5 의 합성곱 연산 1회는 3 X 3 합성곱 연산을 2회 수행하여 대체할 수 있다. 게다가 전자의 매개변수 수가 25개인 반면, 후자는 총 18개이며, 매개변수 수는 층을 반복할수록 적어진다. 그리고 그 개수의 차이는 층이 깊어질수록 커진다.

 

학습의 효율성도 층을 깊게 하는 것의 이점이다. 층을 깊게 함으로써 학습 데이터의 양을 줄여 학습을 고속으로 수행할 수 있다는 뜻이다. CNN의 합성곱 계층은 정보를 꼐층적으로 추출하고 있음을 7.6에서 설명했다. 앞단의 합성곱 계층에서는 에지 등의 단순한 패턴에 뉴련이 반응하고 층이 깊어지면서 텍스처와 사물의 일부와 같이 점차 더 복잡한 것에 반응한다고 설명했다.

 

그렇다면 '개'를 인식하는 문제를 생각해보자. 이 문제를 얕은 신경망에서 해결하려면 합성곱 계층은 개의 특징 대부분을 한 번에 '이해' 해야 한다. 견종도 다양하고 어느 각도에서 찍은 사진이냐 따라 완전히 다르게 보일 수 있다. 그래서 개의 특징을 이해하려면 변화가 풍부하고 많은 학습 데이터가 필요하고, 결과적으로 학습 시간이 오래 걸린다. 그러나 신경망을 깊게 하면 학습해야 할 문제를 계층적으로 분해할 수 있다.

즉, 각 층이 학습해야 할 문제를 더 단순한 문제로 대체할 수 있다는 것이다.

 

또, 층을 깊게 하면 정볼르 계층적으로 전달할 수 있다는 점도 중요하다. 예를들어 에지를 추출한 층의 다음 층은 에지 정보를 쓸 수 있고, 더 고도의 패턴을 효과적으로 학습하리라 기대할 수 있다. 즉, 층을 깊이 함으로써 각 층이 학습해야 할 문제를 '풀기 쉬운 간단한 문제'로 분해할 수 있어 효율적으로 학습할 것이라 기대할 수 있다.

 

 


이상으로 밑바닥부터 시작하는 딥러닝 제 1권을 1독하였는데.. 부트캠프 때 정신없이 들었던 내용들을 정리라면..정리..? 하면서 읽었던 것 같다. 아직까지도 수학 공식이라던가 조금 복잡한 개념이 나오면 이해하지 못하는 순간들이 있었지만 그래도 이제 이런 부분을 해보면 어떨까 ? 이건 또 어떻고 ? 와 같은 앞으로 무엇을 해보면 좋을지 갈피가 조금 잡히는 것 같긴하다. 기회가 된다면 2권도 구입해서 공부하겠지만..아직은 펴보지도 못한 딥러닝 교재들이 많기때문에.. 그것들부터 읽고나서 2권도 공부해보면 좋을 것 같다..! 비전공자 딥러닝 취직 가보자고