딥러닝이란 층을 깊게 한 심층 신경망을 의미한다. 신경망의 층이 깊어지면 깊어질수록 너비가 늘어난다. 이에 대한 자세한 설명은 여기를 참고하길 바란다. 층이 깊어질수록 너비가 늘어나는 이유는 합성곱 이후의 너비는 필터 개수와 연관이 있기 때문이다. 내가 지정한 필터 수가 늘어나면 늘어날수록 합성곱 계층의 너비 또한 늘어난다.
이러한 딥러닝 신경망의 정확도를 높이기 위해서는 앙상블 학습, 학습률 감소(Learning Rate 감소), 데이터 확장(Data Augmentation) 등을 하는데 특히 이 중에 데이터 확장은 훈련 이미지를 인위적으로 확장하는 방법이다. (필자도 예전에 케글 당뇨성 망막증 대회를 참여했을 때 이 방법을 사용하여 데이터 개수를 늘렸었다.) 이 방법은 데이터가 몇 개 없을 때 효과적인 수단으로 훈련 데이터를 회전, 이동, 확대, 축소, 밝기 변형, 좌우 반전(flip)을 하는 등의 미세한 변화로 데이터의 개수를 늘리는 방법이다.
신경망을 깊게 하는 이유
신경망이 깊을수록 처음에는 단순한 특징에만 반응하다 점점 더 복잡하고 추상화된 정보의 특징을 파악하며 결론적으로는 사물의 의미를 이해하게 된다는 것을 이전에 말했었다. 직관적으로 이해가 가면서도 이해가 되지 않는다. 지금부터는 이 부분에 대해서 조금 더 자세하게 설명하도록 하겠다.
오른쪽의 3x3 연산을 2회 수행한 것은 왼쪽의 5x5 합성곱 연산을 한 것과 동일한 결과를 낼 수 있다. 그런데 왜 3x3을 굳이 2번이나 반복할까? 그냥 5x5 합성곱 연산을 한번만 하는게 훨씬 이득이 아닐까?
5x5 합성곱 연산은 매개변수(Filter)가 25(5x5)개이지만, 3x3 합성곱 연산 2회 반복은 매개변수가 18(2x3x3)개이다. 이러한 매개변수 개수 차이는 층이 깊어지면 깊어질수록 더 커지게 된다. 결국 신경망이 깊어질수록 매개변수가 줄어들어, 층이 깊지 않은 경우보다 적은 매개변수로 같은 수준의 표현력을 달성할 수 있다는 것이다.
매개변수가 줄어들 때의 장점은 무엇일까? 첫번째로 넓은 수용 영역(Receptive Field)를 소화할 수 있다는 장점이 생기는데, 쉽게 말하면 필터가 작을수록 국소부위에 대한 특징을 잡아낼 수 있어 더 많은 디테일을 찾아낼 수 있다는 것이다. 두번째로는 층마다 활성화 함수를 사용하면서 활성화 함수가 신경망의 비선형을 유지시키며 신경망의 표현력을 개선할 수 있다는 것이다. 또 층이 깊어질수록 사물을 이해하기 때문에 비교적 적은 학습 데이터로도 좋은 성능의 신경망을 만들 수 있어 학습의 효율성 또한 좋아진다.
전이 학습 (Transfer Learning)
전이학습은 이미지넷(100만장이 넘는 이미지를 담고 있는 데이터셋으로 각 이미지에 레이블이 붙어 있음)이 제공하는 거대한 데이터셋으로 학습한 가중치의 일부를 능력이 유사하거나 새로운 분야의 신경망에 복사한 후, 그 상태로 재학습을 수행하는 것을 의미한다. 전이 학습은 학습 데이터가 부족한 프로젝트를 진행하는 경우 매우 큰 도움이 된다.
예를 들자면 내가 동양인과 서양인을 구분하는 신경망을 구현하고자 할 때, 여자와 남자를 구분하는 신경망에서 이미지의 특징을 추출하는 부분에 대한 파라미터들을 가져와 나머지를 내 데이터로 학습시켜 완성도를 높이는 것이 전이 학습이다.
전이 학습은 데이터의 수가 적을 때도(물론 많을 때도) 매우 효과적이며 학습 속도 또한 빠르고 전이 학습 없이 학습하는 것보다 훨씬 높은 정확도를 제공한다는 장점이 있다. 전이 학습에 대한 코드적인 자세한 예제는 여기와 여기를 참고하길 바란다.
강화 학습 (Reinforcement Learning)
위의 그림처럼 에이전트가 더 좋은 보상을 받기 위해 스스로 학습하는 것을 강화 학습이라고 한다. 강화 학습은 기존의 지도 학습과는 다르다. 지도 학습은 정답과 예측 값에 대한 오차를 통해(가르침) 모델을 완성하는 반면, 강화 학습은 에이전트라는 것이 환경에 맞게 행동을 선택하고, 그 행동에 의해서 환경이 변하면서 그에 맞는 보상을 얻으며 모델을 완성해간다. 강화 학습의 보상은 명확한 것이 아니라 상황에 따라 달라지기 때문에 게임 점수나 게임 종료와 같은 명확한 지표로부터 역산하여 예상 보상을 정해야 한다. 강화학습에 대한 코드적인 예제는 여기와 여기를 참고하길 바란다.
'인공지능 > 인공지능 이론' 카테고리의 다른 글
24. im2col 이해하기 - Pooling Layer (0) | 2020.08.13 |
---|---|
23. im2col 이해하기 - 합성곱 계층(Convolution Layer) (4) | 2020.08.12 |
21. CNN (합성곱 신경망) (2) | 2020.08.07 |
20. 배치 정규화 (Batch Normalization), 과적합 (Overfitting) (0) | 2020.08.06 |
19. 가중치 초깃값 (0) | 2020.08.06 |