https://blog.naver.com/PostView.naver?blogId=laonple&logNo=222323644067&parentCategoryNo=&categoryNo=49&viewDate=&isShowPopularPosts=true&from=search
블로그 글을 통한 기사에서 많은 내용을 참고했습니다.
Convolutional Layer
convolutionlal이라는 단어만 검색해보면 '얽힘,결합,나선형의' 등의 뜻으로 사전에 등재되어 있는 것을 알 수 있다. 다만 이것만으로는 합성곱이라는 용어와 딱 매칭되는 느낌은 없는데 대략 느낌적으로 어떤 다른 두 개(2가지)를 화학적으로 혼합시켜준다는? 느낌이지 않을까 한다. 그냥 단순히 합성곱이라고 번역돼서 많이 쓰이기 때문에 합성곱이라고 이해해도 괜찮을 것 같다. 합성곱은 그 용어에서 짐작할 수 있듯이 두 함수를 곱하고 합한다는 뜻을 가지고 있는데, 신호나 영상을 바탕으로 하는 함수를 통해, 과거, 현재, 그리고 미래의 값들을 생각해서 곱하고 합치는 연산이라고 할 수 있다고 한다. 그래서 Convolutional layer는 입력데이터에 2차원행렬(어쩌면 filter?)을 콘볼루션해주는 계층이라고 생각하면 될 것 같다. 신경망에서는 '수용장(receptive field)'이라는 용어와 혼용되는 것 같다. Convolution 연산의 예를 그림으로 살펴보면
위와 같은데, 콘볼루션 연산은 입력데이터에 3x3 형태의 필터를 이동시키면서 데이터 전 영역에 동일한 연산을 반복하게 되는데 필터 안에 빨간 글자는 필터의 계수를 의미하며 이를 합성곱해서 추출해낸 값이 feature(추출해낸 특징)이고, 최종적으로 오른쪽의 작은 형태의 맵(feature map)을 얻으려고 한다. 합성곱 신경망은 합성곱 계층(Convolution layer)과 완전연결 계층(Dense layer)을 함께 사용하기 때문에, 합성곱 계층의 2차원적인 특징을 나중에 1차원으로 바꿔줄 필요가 있다고 한다.
Subsampling Layer
Subsampling 이라는 말이 의미하듯, Subsampling layer가 하는 기능적인 역할은 입력 데이터의 크기를 줄이는 것이다. 이런 subsampling layer가 필요한 이유는, 위치 이동, 회전 및 부분적인 변화와 왜곡에 강인한 인식 능력을 키우는데 있어, Subsampling이 중요한 역할을 하기 때문이다. 위치 이동이나 회전을 아주 작은 부분씩 행하면서 이를 모두 변수에 집어넣어서 학습시켜준다면 비효율적이기 때문에 데이터의 강한 특징을 학습시켜준다면 작은 변화에 대하여 강력한 인식능력(invariance)가 생기기 때문에 subsampling이 필요한 것이다. Subsampling은 pooling이라는 용어로도 혼용되어 사용되며, Subsampling 방식은 크게 보면 Max-pooling과 Average-pooling 2가지 방식이 주로 쓰인다. pooling 방식은 다음 그림으로 쉽게 알 수 있다.
그렇다면, 어느 경우에 어떤 pooling 방식을 사용해야 할까?
Max-pooling은 큰 값만 사용하기 때문에 잡음이나 자잘한 변화에 강인하지만 상세부분이 사라지는 단점이 있으며, Average-pooling은 평균을 취하기 때문에 모든 값을 고려하고 결과를 다음 단으로 넘겨주는 장점이 있는 반면에 잡음이나 자잘한 변화에 강인하지 못한 특징이 있다. 이러한 차이점으로 인해 2가지 pooling 방식의 차이를 정확하게 이해하면서 사용하는 것이 좋을 것 같다.
그림 5.는 Max-pooling과 Average-pooling의 차이점을 명확히 알 수 있는 극단적인 예이다. 그림에서 상단은 흰 바탕에 검은 사선이 있는 경우로 Max-pooling을 하면 큰 값만을 취하기 때문에 검은 사선을 잡음으로 처리해서 결과적으로 검은 사선이 사라지게 된다. 그렇지만 검은 사선이 데이터의 특징 중 하나라면 이럴 때는 맥스풀링 방식을 사용하면 안 될 것이다. 반면, Average-pooling방식을 사용하면 평균을 취하기 때문에 검은 사선의 영향력이 어느 정도 남아 있게 된다.마찬가지로, 하단은 검은 바탕에 하얀 사선이 있는 경우로 Max-pooling은 최대값을 선택하기 때문에 하얀 사선이 좀 더 굵어지는 형태가 되지만, Average-pooling을 하면 오른쪽과 같은 형태가 된다.
출처 : YTIMES청년신문(http://www.ytimes.co.kr)
https://www.ytimes.co.kr/news/articleView.html?idxno=5832
각 레이어의 설명이 잘 정리되어 있네요. pooling 방식 비교도 좋습니다!