102. 완전 연결 층 (FC, Fully Connected Layer / Dense Layer)

⚠️ 이 문서는 딥러닝 이미지 인식(CNN)의 마지막 관문에서, 앞선 50개의 합성곱(Conv) 층들이 돋보기를 들이대며 뼈 빠지게 찾아낸 '고양이 귀, 털, 꼬리'라는 2차원(2D) 특성 맵 조각들을 **한 줄짜리 긴 1차원(1D) 국수 가락으로 쭉 펴버린(Flatten) 다음, 모든 뇌세포(뉴런)가 서로 1:1로 멱살을 잡고 거미줄처럼 완벽하게 연결되어 "그래서 결론이 뭔데? 이 사진 고양이야 개야?"라는 최종 판결(분류/회귀)의 방망이를 두드리는 심판관 계층인 '완전 연결 층(FC Layer)'**을 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: 앞선 층들이 "특징을 추출하는 눈(Eye)"이었다면, FC Layer는 그 모아진 특징 증거물들을 종합해 최종 결정을 내리는 "판사(Brain)"다. 전통적인 인공신경망(MLP)의 구조와 완벽히 똑같이 생겼다.
  2. 가치: 2차원의 공간적 패턴 데이터(지도)를 1차원의 수학적 확률 벡터로 변환하여, 이 사진이 개일 확률 90%, 고양이일 확률 10%라는 명확한 라벨링(Classification) 결과를 우리 손에 쥐여준다.
  3. 기술 체계: 특징 지도를 한 줄로 펴는 플래튼(Flatten) 작업 후, 모든 노드가 빽빽하게 선으로 이어진 Dense(밀집) 구조를 통과하며, 맨 마지막 출구에 소프트맥스(Softmax) 함수를 발라 확률의 합을 100%로 예쁘게 맞춰 출력한다.

Ⅰ. Flatten (평탄화): 2차원 지도를 1차원 국수 가락으로 펴기

법정에 증거물을 올리려면, 입체적인 지도를 한 줄의 리스트로 요약해야 한다.

  1. 공간 정보의 파괴 (의도적):
    • 앞단의 합성곱(Conv) 층을 다 돌고 나면 $7 \times 7$ 크기의 특징 맵(Feature Map)이 512장 남는다. (예: VGG16 모델)
    • 이 512장의 지도는 2차원(가로, 세로)에 채널(깊이)까지 있는 입체 블록 형태다.
    • 하지만 마지막 심판관인 다층 퍼셉트론(MLP) 뇌세포들은 구조상 오직 '1차원 일렬종대 리스트'로만 데이터를 받아먹을 수 있다.
  2. Flatten 연산 (주욱 펴기):
    • 블록 형태의 데이터($7 \times 7 \times 512$)를 다이너마이트로 터뜨려, 한 줄로 길게 이어 붙여 $25,088$개짜리 긴 1차원 숫자 배열(Vector)로 쭉 펴버린다. 이것을 Flatten이라고 한다.
    • 이때 "위쪽에 귀가 있고 아래쪽에 코가 있다"는 공간적(Spatial) 배열 정보는 완전히 박살 나며 영원히 사라진다.
    • 하지만 상관없다. 어차피 이 단계에 오면 사진이 아니라 고양이의 '정수(엑기스)'만 남은 상태이므로, 공간 위치 따위는 판결을 내리는 데 1도 중요하지 않다.

📢 섹션 요약 비유: 수사관들(Conv 층)이 사건 현장의 거대한 3D 입체 모형 지도(특성 맵)를 만들어왔습니다. 하지만 판사(FC Layer)는 법대에 앉아서 A4 용지로 된 텍스트 보고서(1차원 배열)만 읽을 수 있습니다. 그래서 수사관들은 모형 지도를 부수고(Flatten), "1번 단서: 지문 있음. 2번 단서: 혈흔 있음..." 식으로 일렬로 길게 나열한 2만 줄짜리 엑셀 리스트 보고서 한 장으로 요약해서 판사에게 제출하는 타협의 과정입니다.


Ⅱ. Fully Connected (완전 연결): 1억 개의 거미줄

모든 증거물과 모든 뇌세포가 1:1로 만나 피 튀기는 토론을 벌인다.

  1. 밀집 층 (Dense Layer)의 구조:
    • Flatten으로 펴진 $25,088$개의 증거물 노드(입력)가 대기하고 있다.
    • 그다음 칸에 4,096개의 뇌세포(은닉 노드)를 세워둔다.
    • **완전 연결(Fully Connected)**이라는 이름답게, $25,088$개의 입력 노드 각각이 $4,096$개의 뇌세포 모두에게 일일이 하나하나 선(가중치)을 그어 연결한다.
    • 선의 개수(가중치 파라미터) = $25,088 \times 4,096 \approx$ 1억 200만 개. 컴퓨터 메모리가 비명을 지른다.
  2. 거미줄 연산 (내적 합):
    • 1번 뇌세포는 2만 개의 증거물을 다 보고 "아, 뾰족한 수염 특징에 가중치를 세게 주자!"라고 판단하고, 2번 뇌세포는 "둥근 꼬리 특징에 가중치를 주자!"라고 판단한다.
    • 수억 번의 곱하기와 더하기를 거쳐, 모든 특징을 종합하여 이 사진이 어떤 동물에 가까운지 거시적인 융합 결론을 쥐어짜 낸다.
  3. 치명적 부작용: 오버피팅(암기)의 온상:
    • 가중치(선)가 1억 개나 되다 보니, AI가 수학 원리를 깨우치는 게 아니라 훈련 사진의 쓸데없는 노이즈(배경 색깔)까지 통째로 외워버리는 과적합(Overfitting) 병이 100% 터진다.
    • 그래서 FC Layer 사이사이에는 신경망 세포를 총으로 쏴서 50%를 억지로 기절시켜버리는 '드롭아웃(Dropout)' 방어막을 떡칠해 두어야만 모델이 바보가 되는 걸 막을 수 있다.

📢 섹션 요약 비유: 2만 명의 목격자(Flatten 증거물)와 4천 명의 배심원(FC 노드)이 광장에 모였습니다. '완전 연결'이란, 목격자 1명이 배심원 4천 명 모두에게 일일이 다가가서 귓속말(가중치 곱하기)을 전달하는 미친 노가다입니다. 정보의 누락 없이 모든 배심원이 모든 목격자의 증언을 취합해 가장 묵직하고 정확한 판단을 내리게 되지만, 광장에 선(파라미터)이 1억 개나 엉켜서 뇌가 터질 지경이 되므로 배심원 절반을 귀마개로 틀어막는(Dropout) 극약 처방이 꼭 필요합니다.


Ⅲ. 판결의 탕탕탕: Softmax와 최종 출력 (Output Layer)

애매한 점수를 버리고, 합치면 100%가 되는 예쁜 확률로 찍어내라.

  1. 출력 층 (Output Layer)의 설정:
    • 내가 구별하고 싶은 동물이 [개, 고양이, 쥐] 3종류라면, 이 거대한 네트워크의 맨 마지막 출구 층의 노드(뉴런) 개수는 무조건 3개로 딱 맞춰야 한다.
  2. 소프트맥스 (Softmax) 활성화 함수의 마법:
    • 1억 개의 거미줄 연산을 끝내고 출구 3개에 도착한 점수(Logit)는 엉망진창이다. [개: 145점, 고양이: 23점, 쥐: -10점].
    • 사람이 알아먹을 수 없으므로, 마지막에 **Softmax**라는 특수 물감(함수)을 확 들이붓는다.
    • 소프트맥스는 점수 차이를 유지하면서, 저 더러운 숫자들을 [개: $0.85$, 고양이: $0.14$, 쥐: $0.01$] 처럼 **'무조건 다 합치면 $1.0(100%)$이 되는 예쁜 확률 벡터'**로 완벽하게 변환해 준다.
  3. 최종 판결 (One-Hot Encoding과 Loss):
    • AI는 가장 높은 확률인 $85%$를 가리키며 "이 사진은 개입니다!"라고 판결 방망이를 두드린다.
    • 만약 진짜 정답이 '고양이'였다면? 정답지([0, 1, 0])와 방금 AI가 찍은 확률([0.85, 0.14, 0.01])을 비교해 어마어마한 크기의 **오차(Cross-Entropy Loss)**를 구한 뒤, "너 틀렸어! 1억 개 거미줄(가중치) 선 다시 똑바로 세팅해 와!" 라며 무자비한 역전파(Backpropagation) 채찍질이 시작된다.

📢 섹션 요약 비유: 심사위원(FC Layer) 4천 명이 토론을 끝내고 최종 점수를 칠판에 적었는데, '개: 1만 점, 고양이: 2천 점, 쥐: 마이너스 5백 점'이라고 중구난방으로 갈겨놨습니다. 소프트맥스(Softmax)는 똑똑한 아나운서입니다. 이 더러운 점수판을 쓱 보더니, 시청자가 알기 쉽게 "개일 확률 80%, 고양이 19%, 쥐 1%입니다! 합계 100%!"라고 방송용 시청률(확률)로 기가 막히게 환산하여 마이크에 대고 외쳐주는 최종 통역기입니다.