VGG 신경망
- 3*3의 작은 필터를 사용한 합성곱 계층(Conv)
- 활성화 함수는 ReLU
- 풀링 계층 추가해 중간 데이터의 공간 크기를 줄여나감
- 완전연결 계층 뒤에 드롭 아웃 계층 사용
완전 연결 신경망이란, 인접하는 계층의 모든 뉴런과 결합되어 있는 신경망을 말한다. 입력 데이터와 가중치가 1대 1로 대응하는 것을 완전 연결(Fully-Connected)이라고 하며, 행렬의 내적(Affine)으로 표현된다.
- 드롭 아웃은 오버피팅(over-fit)을 막기 위한 방법으로 뉴럴 네트워크가 학습중일때, 랜덤하게 뉴런을 꺼서 학습을 방해함으로써, 학습이 학습용 데이타에 치우치는 현상을 막아준다. 일반적으로 CNN에서는 이 드롭아웃 레이어를 Fully connected network 뒤에 놓지만, 상황에 따라서는 max pooling 계층 뒤에 놓기도 한다.
- 가중치 매개변수 갱신(Adam을 사용해 최적화)
- 가중치 초기값: 'He' 초기값
ReLU계의 활성화 함수 사용 시 He 초기화 방법이 효율적이다.
현재 CNN을 기초로 한 기법들 중에서 MNIST 데이터셋에 대한 정확도 1위는 99.79% 이다. 오차율이 0.21%밖에 안된다. 2013년에 나온 기법이 그 후에 나온 기법들보다 성능이 우수하다. 1위를 한 기법도 합성곱 계층 2개에 완전연결 계층 2개인 신경망인데 무작정 깊다고 해서 정확도가 높아지는 건 아닌 것 같다.
아마도 단순하게 숫자를 인식하는 데에 그렇게까지 깊은 신경망을 사용하는 건 오히려 과한 것 같다고 볼 수 있다. 그래서 더 깊게 신경망을 구현해도 정확도가 더 높아지진 않았던 것 같다.
정확도를 높이기 위해 사용한 기법 Method들은 다양하게 있는데 그 중에서 데이터 확장 Data Augmentation은 정확도 개선에 아주 효과적이라는 게 입증된 방법이다.
데이터 확장 방법은 입력 이미지를 알고리즘을 이용해서 인위적으로 확장한다.
데이터가 몇 개 없는 상태에서 학습할 때 비슷비슷한 데이터를 임의로 만들어서 데이터 수를 늘릴 수 있으니 학습에 좋을 것이다. 손글씨 데이터의 경우에는 원본을 회전하거나 이동시키거나 약간 잘라내기도 하고 좌우 반전을 하기도 하는 등의 변화를 줘서 데이터 수를 늘릴 수 있다.
층을 깊게 하는 것의 이점
1. 신경망의 매개변수 수가 줄어든다.
5 X 5의 합성곱 연산 1회는 3 X 3의 합성곱 연산을 2회 수행하여 대체할 수 있다.
게다가 전자의 매개변수 수가 25개(5 X 5)인 반면, 후자는 총 18개(3 X 3 X 2)이며, 매개변수 수는 층을 반복할수록 적어진다. 그리고 그 개수의 차이는 층이 깊어질수록 커진다.
예를 들어 3 X 3의 합성곱 연산을 3회 반복하면 매개변수는 모두 27개가 되지만, 같은 크기의 영역을 1회의 합성곱 연산을 하기 위해서는 7 X 7 크기의 필터, 즉 매개변수 49개가 필요하다.
또한 activation 함수로 ReLU 라는 비선형 함수를 사용하는데 이 비선형 함수가 여러개 중첩될수록 더 복잡한 함수를 쉽게 구현할 수 있다.
2. 학습의 효율성
만약 강아지를 인식하는 모델이라고 했을 때 앞단의 합성곱 계층에서는 에지 등의 단순한 패턴에 뉴런이 반응하고 층이 깊어지면서 텍스처와 사물의 일부와 같이 점차 더 복잡한 것에 반응한다는 것을 배웠다.
이것을 레이어가 1, 2개와 같은 얕은 신경망으로 해결하려면 convolution 계층은 강아지의 특징을 한번에 이해해야 한다. 때문에 많은 학습 데이터가 필요하고, 학습시간도 더 오래걸린다.
3. 정보를 계층적으로 전달할 수 있다.
에지를 추출한 층의 다음 층은 에지 정보를 쓸 수 있고, 더 고도의 패턴을 효과적으로 학습하리라 기대할 수 있다.
즉, 층을 깊이 함으로써 각 층이 학습해야 할 문제를 '풀기 쉬운 단순한 문제'로 분해할 수 있어 효율적으로 학습하리라 기대할 수 있다.
유명한 신경망 - VGG, GoogleLeNet, Resnet
https://deep-learning-study.tistory.com/215?category=942011
사진 및 참고
https://velog.io/@dscwinterstudy/2020-01-28-1401-%EC%9E%91%EC%84%B1%EB%90%A8-tfk5xgv65x
https://deep-learning-study.tistory.com/209?category=942011
'딥러닝' 카테고리의 다른 글
밑바닥부터 시작하는 딥러닝 Chapter7 - CNN 합성곱신경망 (0) | 2022.06.28 |
---|---|
밑바닥부터 시작하는 딥러닝 Chapter6 - 배치 정규화 (0) | 2022.06.27 |
밑바닥부터 시작하는 딥러닝 Chapter6 - 가중치의 초깃값 (0) | 2022.06.26 |
밑바닥부터 시작하는 딥러닝 Chapter6 - 학습 관련 기술들 (0) | 2022.06.26 |
밑바닥부터 시작하는 딥러닝 Chapter5 - 오차역전파법 (0) | 2022.06.25 |
댓글