Open JunDamin opened 3 years ago
말씀하신대로 레이어를 그냥 추가해도 같은 수준의 정확도, 혹은 더 높은 수준의 정확도를 보일 수 있습니다. 심지어 한 개의 히든 레이어만 가지고 있는 Neural Network가 어떠한 함수든 근사시킬 수 있다는 정리도 있습니다 (Universal Approximation Theorem).
그럼에도 불구하고 우리가 CNN이나 Maxpooling, 혹은 다른 테크닉들을 사용하는 이유는 네트워크를 학습하는 과정에서 일종의 힌트를 제공하기 위함입니다. 이미지로 예를 들어보겠습니다. 대부분의 이미지에서 우리는 이미지의 한 픽셀이 바로 인접한 픽셀과 크게 연관되고 있다는 사실을 알고 있습니다. 예를 들어 한 픽셀이 눈동자의 일부이면 그 이웃 픽셀도 눈동자의 일부거나, 눈동자와 연관된 무언가일 가능성이 높죠. 그런 지역적인 연관성을 모델이 쉽게 캐치하도록 돕기 위해 CNN을 사용합니다. 만약 Convolution을 사용하지않았다면 이 픽셀과 다른 픽셀의 연관성을 찾기위해 모든 픽셀들과 연산을 하는 비효율적인 과정을 거치겠죠? Maxpooling을 사용하는 이유도 비슷합니다. 이웃한 픽셀들은 비슷한 정보를 가지고 있기 때문에, 굳이 모든 정보들을 다 다음 레이어로 넘겨주는 것이 아니라 그 중에 가장 강한 시그널을 가지고 있는 정보만 다음 레이어로 넘겨주는 것입니다.
그렇군요.
그러면 구조를 만든다는 것이 ▲피팅이 더 빠르다는 장점 말고도 ▲모델의 설명력(어떻게 구동되는지) 알 수 있고 ▲잡음에 대한 저항성도 더 커질 것 같네요.(아주 멀리 떨어진 곳의 시그널은 필터 안에 들어오지 못하니까요)
답변 감사드립니다.
해결하고자 하는 문제
안녕하세요. 이번에 처음으로 텐서플로우를 배워보고 있는 초보 입니다. 초보자들을 위해서 간단한 것에서 점점 복잡하게 만들어가서 마냥 무서웠던 딥러닝에 대한 맛을 볼 수 있었던 것 같습니다. 강의를 들으면서 Convolution이나 Maxpooling을 도입해서 설계를 하는 것을 보았는데요.
CNN 또는 Maxpooling = 제약이 있는 레이어?
잘 모르는 사람이 보기에는 필터를 쓰거나 풀링을 하는 것이 weight를 줄 수 있는 노드를 제약한 레이어를 추가 하는 것과 동일하지 않을까 생각이 들었습니다. 즉 레이어를 그냥 추가해도 충분한 학습이 진행되면 같은 수준의 정확도가 생기지 않을까 싶었습니다. 어쩌면 비선형적 특성을 가지고 있는 부분을 놓치지 않고 패턴이 반영되서 더 나을 수도 있지 않을까 싶었습니다.
찾아야 하는 파라미터를 줄여서 학습시간이 짧아지는 장점 말고 Convolution이나 Maxpooling을 사용하는 이유가 혹시 있을지 문의드립니다.