Data Science!/이론

[중고등학생도 이해할 수 있는 AI 이야기] CNN (합성곱 신경망) 2 - 풀링, FC 레이어

양국남자 2023. 6. 10. 01:25

양 : 강형ㅇ 동영상 다 봤지? 참 요즘 할거 많아. 우리 어릴땐 그냥 플래시 게임이었는데 ㅋㅋㅋ 

 

조 : 에이 형 피시방가서 친구들하고 카오스, 와우, 그런거 겁나했다면서.

 

양 : 플래시는 문자 그대로 초등학생때지. 너네 쥬니버 들어가던 거처럼. 그나저나 플래시 너희 어릴때 단종됫다며? 혹시 플래시로 뭐 만들어보고 그랬니?

 

조 : 나도 게임 만들어 보려고 한번 손대봤어. 그런데 플래시 이야기는 왜?

 

양 : 딥러닝 이야기 다시 하려고 그런다. 플래시 보면 '레이어' 라는 기능 있지? 

 

조 : 그 층층이 있는거? 

 

 

양 : 그게 딥러닝에도 사용되. 우리가 사고하는 단계를 레이어로 표현한거야. 아까 그렇게 말하던 합성곱은 그 레이어 중 하나야.위에 사진을 보면 예시가 나와있는데, 주로 합성곱->풀링->합성곱->FC 순서로 처리가 되. 

 

조 : 합성곱은 저 사진에서 나왔듯이 사진 일부분을 숫자로 처리하는거였고, 나머지 둘은 뭐야?

 

양 : 잘 질문했어. 강아지 사진에 비유하자면 풀링 레이어는 너가 강아지 사진을 좀 더 큰 관점에서 바라보면서 '여기쯤에 이 큰 검은 점은 코고, 이 조그만 점들은 눈이구나' 하면서 전체적으로 강아지가 어떻게 생겼는지 확인하는 단계라고 생각하면 되.

 

설명을 위해 첨부한 웰시코기

조 : 그렇다면 뭐 웰시코기는 머리가 귀가 크고 뾰족한 여우같고, 다리는 짧고 이런 특징을 본다는거야?

 

양 : 대략 그렇지. 풀링 레이어에서는 미세한 합성곱의 가장 큰 특징만 뽑아내서 추려내. 아까 말했듯이 웰시코기의 '귀가 크다' '다리가 짧다' 같은 변수들은 컴퓨터에겐 다 숫자니까, 그냥 특징적으로 큰 숫자들만 추려내서 각인시키는거지. 그 다음에는 다시 합성곱 레이어를 하나 더 깔아서 풀링에서 뽑아낸 특징들하고 비교대조하면서 다시 학습하고. 유명한 CNN 들의 이름에 VGG16, Resnet32 이런 숫자가 많이 붙는데, 이 숫자는 풀링과 합성곱 레이어의 수를 표현한거야.

 

조 : 숫자가 더 많으면 더 정확해져?

 

양 : 당연하지. 저 코기 사진을 똑같이 10초간 10번하고 10초간 한번 보는 거 중 어느게 웰시코기 생김새에 대해서 더 잘 기억할 수 있을거 같아? 물론 시간도 많이들고 컴퓨팅 리소스도 많이 잡아먹지. 정말 사람이랑 비슷한게 사람이 저렇게 특이한 특징만 잘 잡잖아? 그래서 컴퓨터도 max pooling 이라고 해서 큰 숫자 위주로 쏙쏙 빼.

 

조 : 그러면 저번에 말한 합성곱하고 풀링하고 한 다음에 마지막에 코기라고 어떻게 결과내려? 위에 보면 flatten layer 하고 적힌거도 있는거같은데

 

양 : flatten layer 는 말그대로 납작하게 만드는 곳이야. 숫자들을 처음에 n x n 행렬로 받았는데 이걸 n*n x 1 의 한줄로 만들어서 컴퓨터가 연산하기 쉽게 만드는 곳이라 생각하면 되.

 

조 : FC 레이어는 뭐야? 무슨 축구팀 같은데?

 

양 : 형이 비록 중증 축빠지만 이런곳에서 쓰잘데기없이 축구를 끌고 오지는 않는단다. Football Club 이 아니라 Fully Connected 야. FC 레이어에서는 최종 결단을 내려. 

 

조 : 왜 fully connected 인거야?

 

양 : 아까 flatten layer 에서 나온 게 다 최종 점수들하고 연결이 되어있어서야. 우리는 '크기, 키, 몸무게, 색상' 등으로 강아지를 구별하는데에 익숙하지만, 저번에 말했듯이 딥러닝은 이런 기준(=파라미터) 를 잡지 않아. 이런걸 처리하는게 뉴런이라 하는데, 하여튼 그냥 컴터가 알아낸 판별방법 abcde 라고 하고 넘어갈거애. 여기서 총합을 내서 a 1점, b2점, c3점, d4점, e5점 이면 코기야. 마지막에는 softmax 라는 함수를 돌려서 이게 코기인지 닥스훈트인지 셔틀랜드쉽독인지 결단을 내.

 

 

조 : 그럼 요약하면 Convolution, 합성곱에서는 숫자로 변환하고. Pooling 에서는 특징을 추출하고. Flatten 에서는 컴퓨터가 처리하기 쉽게 하고. FC 에서는 아까 말한 소프트머시기 함수 돌려서 최종 하는거지? 그나저나 함수 어떻게 생겼는지 보여줘. 뭐 y=ax+b 이런거 아냐?

 

 

양 : 그거의 엄청 복잡한 버젼이지. 중학생을 위한거니 설명은 생략. 너 중학생 맞아? 왜이렇게 빠르게 이해했어?

 

조 : 아 나 이래봐도 전교권이라고. 다음에는 뭐할꺼야? 

 

양 : 글쎄... RNN 해볼까?