인공지능/공부

딥러닝 응용 4 - Architecture of DNNs

이게될까 2025. 10. 10. 17:21
728x90
728x90

이미지 데이터는 공간에 대한 정보가 들어있다. 

그래서 단순한 네트워크보단 순서와, 위치 정보를 파악할 수 있도록 Convolution Neural Networks를 사용해야 함 

Kernel(filter), Stride, Padding을 통해 조절 

하나의 Filter를 학습시키면 되기에 weight를 공유하고, Pooling을 통해 Summarization 진행 (Average나 Max 풀링)

CNN의 반복으로 LeNet 등장 

CNN, Pooling 반복 후 Fully Connect layer 3번 

 

AlexNet은 한개의 이미지를 2개의 Filter를 통해 2개로 나누어 진행, 그 후에 혼합 학습 

 

Time Delay Neural Networks

1D-Convoluction을 통해 시계열 데이터도 연산할 수 있게 됨 

CNN의 행렬 연산

이런 형식으로 Up sampling도 가능하다. 

Residual Networks

더보기

요점만 잡아 설명할게요.

이 슬라이드가 말하려는 핵심

  • **Residual block은 “교체(replacement)”가 아니라 “미세 보정(perturbation)”**을 학습한다는 것.
    수식으로는
    [
    z_l = a\big(I,z_{l-1} + f(z_{l-1})\big),\quad f(z)=V,a(Wz)
    ]
    즉, 이전 층 출력을 그대로( (I z_{l-1}) ) 통과시키되, 옆 가지(branch)가 만든 (f(\cdot)) 를 덧붙여 보정한다는 뜻입니다.

왜 ReLU가 들어가고, (V=0) 이야기를 하는가

  • 우측 하단의 전개는 “ReLU일 때 블록이 ‘항등 경로’를 보장한다”는 걸 보이는 장난감 증명입니다. 슬라이드의 두 번째 줄을 보면
    [
    z_l=a(z_{l-1})\quad(\text{즉 }V=0\text{이면 residual branch가 0})
    ]
    라고 두고, 이어서
    [
    a(z_{l-1})=\mathrm{ReLU}(z_{l-1})
    =\mathrm{ReLU}(\mathrm{ReLU}(W_{l-1}z_{l-2}))
    =\mathrm{ReLU}(W_{l-1}z_{l-2})
    = z_{l-1}
    ]
    를 적습니다. ReLU의 멱등성(ReLU(ReLU(u)) = ReLU(u)) 때문에, 이전 층이 이미 ReLU를 거쳤다면 한 번 더 ReLU를 적용해도 값이 그대로라서 블록이 항등(Identity) 처럼 동작합니다.

요약: (V=0) 가 “항상 그렇게 쓴다”는 뜻이 아니라, 설계 상 항등으로 수렴할 수 있는 구조임을 보여 주는 예시입니다. 실제 ResNet은 잔차 가지 (f(\cdot)) 의 학습으로 (I + f) 를 점점 ‘좋은 함수’로 만들어 갑니다.

그라디언트가 왜 안 죽는가 (수식 직관)

  • 출력 (y=\mathrm{ReLU}(x+F(x))) 라고 쓰면, 활성 영역((x+F(x)>0))에서
    [
    \frac{\partial y}{\partial x}
    = I + J_F(x)
    ]
    항등 항 (I) 이 항상 포함됩니다. 즉, 옆 가지의 비선형/포화 때문에 (J_F) 가 약해져도 직결(skip) 경로가 최소 1의 흐름을 제공하므로 기울기 소실을 크게 완화합니다. (슬라이드가 ‘skip connection’ 도식을 붙인 이유)

추가 맥락

  • ReLU를 예로 든 이유는 멱등성 덕에 “(V=0) ⇒ 항등”이 눈에 잘 보이기 때문입니다. Tanh 같은 포화 함수에선 이런 깔끔한 항등 보장이 약해집니다.
  • 실전 ResNet들은 초기화를 항등에 가깝게 만들기 위해 마지막 BN의 (\gamma) 를 0으로 두는 등(=초기 (f\approx 0))의 트릭을 씁니다. 그러면 학습 초기에 블록은 거의 (I) 이고, 필요할 때만 (f) 로 “미세 보정”을 키웁니다.

정리: 이 페이지는 “ResNet은 입력을 ‘그대로 + 잔차’로 보내는 구조이며, ReLU에서는 필요하면 정확히 항등으로도 동작할 수 있어 학습·전파가 안정적”임을 수식으로 보여 주는 것입니다.

 

핵심만 정리해 줄게요.

1) (f(x)+x) vs (f(x)+g(x))

  • 표준 ResNet 블록
    [
    y=x+F(x)
    ]
    처럼 입력 (x) 를 그대로 더하는 항등(skip) 경로가 기본입니다.
  • 다만 차원/해상도가 바뀌는 블록(채널 수 변경, stride=2 다운샘플)에서는 (x) 를 그대로 더할 수 없어
    [
    y=G(x)+F(x)
    ]
    로 바꿔서, (G) 에 1×1 컨브(프로젝션) 등을 넣어 모양만 맞춰 더합니다.
    ⇒ 네, “(f(x)+g(x))”라고 생각해도 되지만 원래 의도는 (G(x)=x) (항등)이고, 부득이할 때만 (G) 를 씁니다.

2) residual = skip connection 이냐?

  • Residual connection“출력에서 입력을 더하는(additive) 형태의 skip” 을 말합니다.
    즉, Residual ⊂ Skip 입니다.
    • 예) U-Net의 concat skip 은 skip이지만 residual은 아닙니다.
    • ResNet의 add skip 은 둘 다 맞습니다(= residual skip).

3) 왜 이 구조가 좋은가 (직관)

  • 덧셈 뒤의 활성 구간에서
    [
    \frac{\partial y}{\partial x}=I + J_{F}(x)\quad (\text{또는 }P+J_F \text{ if } G(x)=Px)
    ]
    처럼 항등(또는 투영 (P)) 성분이 항상 포함됩니다.
    → 비선형 가지 (F) 가 포화로 약해져도 기울기가 직접 통과해 소실이 완화됩니다.
  • 슬라이드의 ReLU 전개는 ReLU의 멱등성 때문에, 가지 (F) 가 0이면 블록이 사실상 항등(= “아무 것도 안 함”) 으로 동작할 수 있음을 보인 예입니다. 그래서 “필요할 땐 그대로, 필요해지면 (F) 로 미세 보정”이 가능합니다.

4) 기억 포인트

  • 기본 사고방식: “입력 (x) + 작은 보정 (F(x))” → 학습이 쉬워지고, 깊어져도 안정.
  • (G(x)) 는 항등이 원칙, 차원 맞춤용 예외에서만 1×1 conv/stride 등으로 사용.
  • “Residual”은 더하기 기반 skip 을 가리키는 특정한 형태의 용어입니다.

gating을 통해 적절히 일정 정보만 전달 조정 가능 

RNN

시계열 데이터를 잘 해결하기 위해 등장 

언어도 시계열 데이터임 

이 전의 데이터가 입력으로 다시 들어가서 문제를 해결한다. 

backpropagation은 동일하게 체인 룰을 활용해서 진행된다. 

그런데 기울기 계산이 연속적으로 일어나서 기울기 소실이나 폭발 가능함 

 

LSTM 모듈이 나옴

더보기

좋은 예시 슬라이드예요. 이 페이지가 말하는 건 LSTM이 ‘먼 거리 의존성(long-distance dependency)’을 어떻게 기억하고 꺼내 쓰는가입니다. 예문 두 개의 차이는 주어가 man/woman이라서, 훗날 등장하는 대명사 his/her가 달라진다는 점이죠. LSTM은 중간에 who entered the house 같은 삽입절이 길게 끼어들어도, 게이트로 주어의 성(성별) 정보를 메모리에 저장·보존했다가 필요한 시점에 출력합니다.

그림과 수식이 뜻하는 바

  • 오른쪽 식은 표준 LSTM 갱신식입니다. 입력게이트 (i_t), 망각게이트 (f_t), 출력게이트 (o_t), 셀상태 (c_t), 은닉 (z_t)가 다음처럼 동작합니다:
    [
    \begin{aligned}
    i^t&=\sigma(W_{xi}x^t+W_{zi}z^{t-1}+W_{ci}c^{t-1})\
    f^t&=\sigma(W_{xf}x^t+W_{zf}z^{t-1}+W_{cf}c^{t-1})\
    c^t&=f^t\odot c^{t-1}+i^t\odot\tanh(W_{xc}x^t+W_{zc}z^{t-1})\
    o^t&=\sigma(W_{xo}x^t+W_{zo}z^{t-1}+W_{co}c^{t-1}),\quad
    z^t=o^t\odot\tanh(c^t)
    \end{aligned}
    ]
    핵심은 (c^t)가 가산(additive) 형태로 이어져 있어 정보(및 그래디언트)가 잘 보존된다는 점입니다.

예문에 적용한 직관적 타임라인

  1. t=1 (주어: man/woman)
    • 입력게이트 (i_1!\uparrow) (열림): “성별” 특징을 셀상태 (c_1) 에 저장.
    • 망각게이트 (f_1)은 초기화 수준.
  2. t=2–5 (삽입절: who entered the house)
    • 이 구간은 대명사 결정엔 불필요하므로 (i_t!\downarrow) (닫힘)으로 새 정보 유입을 억제, (f_t!\uparrow) (열림)으로 (c_t)를 그대로 유지.
    • 결과적으로 “주어의 성별”이 셀 메모리에 그대로 붙들려 지나간다.
  3. t=6 (대명사: his/her)
    • 출력게이트 (o_6!\uparrow) (열림): (,z_6=o_6\odot\tanh(c_6))이 방출되어 his/her 중 올바른 형태를 내도록 도움.
  4. t=7 이후 필요하면 (f_t)로 메모리를 지우거나 다른 정보를 저장.
    이 프로세스가 슬라이드의 도식(검은/흰 노드로 표시된 활성)과 함께 암시됩니다.

왜 RNN보다 끈질기게 기억하나?

  • 가산 경로 (c^t=f^t\odot c^{t-1}+\cdots) 덕분에, (f^t\approx 1)이면 정보와 그래디언트가 별 손실 없이 흘러 긴 간격을 버팁니다(“constant error” 경로). 순수 RNN은 곱셈만 반복되어 소실/폭주가 심합니다.

한 줄 요약

LSTM은 게이트로 “무엇을 저장/보존/꺼낼지”를 제어해, 주어와 대명사 같은 장거리 의존성을 안정적으로 처리한다—예문에서 man/woman → his/her를 몇 단어가 지나도 맞추게 해 주는 이유가 바로 이것.

Medical References

  1. None
    DOI: file_00000000176461fab8083c1bbff76b36

이제 새로운 모듈인 GRU도 나온다.

LSTM의 구조가 너무 복잡하여 단순화한 GRU이다. 

더보기

짧은 답: GRU는 LSTM이 “문제가 있어서”라기보다는, LSTM을 더 단순·가볍게 만들어 속도·메모리·튜닝성을 높이려는 실용적 대안으로 등장했습니다. 대부분의 과제에서 성능은 비슷하고, 연산/파라미터는 더 적어 빠르고 덜 과적합되기 쉬운 장점이 있습니다.


왜 GRU가 나왔나

  • 단순화: LSTM의 3개 게이트(입력/망각/출력) + 별도 셀상태 (c_t) 구조를 2개 게이트로 축소하고, 셀상태와 은닉상태를 통합해서 계산·메모리를 줄임.
  • 효율성: 게이트/가중치가 적어 훈련·추론이 빠르고 메모리 사용이 적음(대략 LSTM 대비 파라미터 ~25%↓).
  • 튜닝 용이: 구성요소가 적어 작은 데이터·저자원 환경에서 과적합/불안정성이 줄어드는 경우가 많음.

GRU와 LSTM, 구조 차이(직관)

LSTM

  • (i_t) (입력), (f_t) (망각), (o_t) (출력) 게이트 + 셀상태 (c_t)
  • (c_t=f_t\odot c_{t-1}+i_t\odot\tilde c_t,\quad h_t=o_t\odot\tanh(c_t))

GRU

  • 업데이트 게이트 (z_t=\sigma(W_zx_t+U_zh_{t-1}))
  • 리셋 게이트 (r_t=\sigma(W_rx_t+U_rh_{t-1}))
  • 후보 ( \tilde h_t=\tanh(Wx_t+U(r_t\odot h_{t-1})) )
  • 은닉 ( h_t=(1-z_t)\odot h_{t-1}+z_t\odot\tilde h_t )

대응 관계(느슨히):

  • 업데이트 (z_t) ≈ “얼마나 새로 쓸지”(LSTM의 입력·망각 결합)
  • 리셋 (r_t) ≈ “이전 기억을 후보 계산에 얼마나 반영할지”
  • 출력 게이트 없음: (h_t) 자체가 외부로 나감(셀/은닉 분리가 없음)

가산 혼합( (h_t=\text{keep}\oplus\text{write}) ) 덕분에 기울기 경로가 유지되어 장기 의존성도 일정 부분 버팁니다.


언제 무엇을 쓰나 (실전 가이드)

GRU 선호

  • 모델을 작게/빠르게: 모바일·온디바이스, 지연 민감 서비스
  • 데이터/자원 제한: 작은 코퍼스, 빠른 프로토타입
  • 의존 길이 중간: 수십–수백 토큰/프레임 수준

LSTM 선호

  • 아주 긴 의존성이나 정교한 게이팅 제어가 필요한 경우(출력 게이트, peephole 등 변형 활용)
  • 대규모 데이터/충분한 자원, 최고의 성능을 끝까지 쥐어짜야 할 때

한 줄 결론

GRU = LSTM의 실용형 경량화. LSTM이 “틀려서”가 아니라, 비슷한 표현력을 유지하면서 더 적은 파라미터와 더 빠른 학습을 노린 선택지입니다. 작업·자원·지연 요구에 맞춰 두 모델 중 골라 쓰면 됩니다(요즘은 많은 과제에서 Transformer로 대체되지만, 저자원·스트리밍 환경에선 여전히 유효).

 

NAS - Neural Architecture Search

더보기

다음 한 번에 이해되는 NAS(Neural Architecture Search) 요약입니다.

NAS가 뭔가요?

사람이 일일이 네트워크 구조(층·커널·스킵 연결 등)를 설계하지 않고, 알고리즘이 ‘좋은 아키텍처’를 자동으로 찾아내는 방법론입니다. 보통

  • 탐색공간(Search Space): 가능한 블록/연결/하이퍼(예: Conv3×3, SepConv, Skip, 채널 수…)
  • 탐색전략(Search Strategy): 그 공간을 헤매는 방식(진화, 강화학습, 그라디언트 기반 등)
  • 평가/목적함수(Evaluator/Objective): 성능+제약(정확도, 지연/메모리/FLOPs/에너지)
    으로 구성됩니다. 최종 산출물은 모델 구조(예: 셀/스테이지 정의)이고, 대개 처음부터 재학습하여 보고합니다.

왜 쓰나요?

  • 디자인의 병목 제거: 사람이 놓치기 쉬운 조합을 광범위하게 탐색
  • 다목적 최적화: 정확도만이 아니라 모바일 지연, 파라미터수, 전력 같은 하드웨어 제약까지 함께 최적화(파레토 프런티어)
  • 도메인 이전: 다른 데이터/기기에도 적응 가능한 블록을 자동 설계

대표 접근법(핵심만)

  1. 진화/강화학습형
    • 개체(아키텍처)를 변이·교차(EA)하거나, 컨트롤러(RL)가 다음 구조를 샘플 → 짧게 학습해 점수로 피드백.
    • 예: NASNet, AmoebaNet, MnasNet.
  2. 가중치 공유(원샷) + 미분형
    • 슈퍼넷(supernet) 안에 모든 선택지를 넣고 가중치 공유로 학습 비용 절감.
    • DARTS류: 연산 선택을 연속 변수(α) 로 완화해 검증 손실의 그라디언트로 구조를 최적화(쌍수 최적화; W는 train, α는 valid).
    • ENAS/Proxyless/FBNet/Once-for-All 등: 서브넷 샘플링, 하드웨어 지연을 목적에 직접 포함.
  3. 베이지안/흑상자 최적화
    • 하이퍼+구조를 혼합 공간으로 보고 횟수 제한 하에 효율적으로 탐색.

한 장짜리 작동 원리(미분형 예시)

  1. 슈퍼넷 정의: 각 에지에 연산 후보 {Conv3×3, SepConv, Skip, Zero…}와 선택 파라미터 α를 둠.
  2. 순환 학습
    • W 업데이트: train 배치로 슈퍼넷 가중치 학습
    • α 업데이트: valid 배치로 구조 파라미터(Softmax(α))를 미분 업데이트
  3. 추출 & 재학습: 에지마다 argmax(α)로 이산 구조를 뽑아 처음부터 재학습 → 최종 성능 보고.

의사코드

while not done:
  W ← W − ηw ∇W Ltrain(W, α)       # 모델 가중치
  α ← α − ηα ∇α Lvalid(W, α)       # 구조 파라미터
arch = discretize(α)               # 최종 구조
retrain(arch)                      # from scratch

장점과 한계

  • 장점: 자동화, 다목적 최적화, 기기 맞춤 설계, 빠른 프로토타이핑.
  • 한계/주의
    • 비용/재현성: 순진한 NAS는 매우 비쌉니다(원샷·프록시·조기중단으로 완화).
    • 랭킹 불일치(weight sharing): 슈퍼넷에서 좋던 후보가 재학습 후 뒤바뀌는 현상 → 공정 샘플링, 정규화, 재평가로 완화.
    • DARTS 병리: skip에 쏠림·불안정 → 정규화/감산항/강건화 변형이 표준.

언제 쓰면 유리한가

  • 모바일/엣지 배포: 지연·메모리 제약이 빡센 경우(MnasNet, Proxyless, OFA 같은 계열)
  • 새 도메인/멀티목표: 정확도 vs 비용의 파레토 설계가 필요할 때
  • 탐색 자동화: 사람 설계 시간을 크게 줄이고 싶을 때
    (반면, 대규모 일반 NLP/비전은 요즘 스케일링/트랜스포머 표준 설계가 강력하여 NAS 이득이 작을 수 있음. 하지만 경량화·지연 최적화 과제에선 여전히 전략 카드입니다.)

바로 적용하려면(실전 팁)

  • 탐색공간을 작게/의미 있게: 표준 “셀” 검색(연산 5–7개, 노드 4–6개)부터.
  • 목적함수에 지연/메모리를 명시: 타깃 기기 프로파일을 포함해 다목적으로.
  • 프록시 학습: 작은 해상도/짧은 에폭으로 랭킹만 가리기 → 상위 K개 재학습.
  • 도구: 가볍게는 KerasTuner/AutoKeras/NNI/Ray Tune 등에서 하이브리드 검색으로 시작.

한 줄 결론: NAS는 “모델 구조까지 학습하는 AutoML”. 잘 설계한 탐색공간과 현실적 목적(정확도+지연/메모리)을 넣으면, 사람 손 설계를 뛰어넘는 ‘기기 맞춤’ 모델을 자동으로 뽑아낼 수 있습니다.

Optimal brain damage - 최소 손실을 지운다!

다양한 실험을 통해 최적의 Neural Net 구조 및 하이퍼 파라미터를 작성

 

더보기

DNN 아키텍처 — 핵심 요약

1) 수업 목표

  • 주요 **네트워크 계열(CNN/ResNet/RNN/LSTM/GRU/NAS)**의 개념과 쓰임새 이해
  • 과제 특성에 맞는 적절한 구조 설계·튜닝 역량 확보

2) Convolutional Neural Networks (CNN)

  • 핵심 아이디어: 지역성(receptive field) + 가중치 공유로 파라미터 수 절감·병렬화 용이.
  • 구성: 컨볼루션 → 활성화 → 풀링(평균/최대) 반복, 마지막에 분류기(FC/Global Pool).
  • 전형 사례: LeNet-5(디지트), AlexNet(대규모 이미지넷) — 현대 비전의 출발점.
  • 파생: TDNN(시계열/음성에 1D-Conv), Transposed Conv(업샘플링/디코더).
  • 구현 팁: Conv/Pooling을 행렬곱으로 펼쳐 훈련(효율적 계산).

3) Residual/Highway Networks

  • Residual(ResNet): (z_l = z_{l-1}+f(z_{l-1})) 스킵 연결로 깊은 망의 학습 안정화(기울기 보존).
  • Highway: 게이팅으로 잔차 경로/변환 경로를 동적으로 혼합.
  • 실무 포인트: 동일 파라미터 수라면 깊이↑ + 스킵이 일반적으로 표현력·일반화에 유리.

4) 순환 신경망(RNN)과 BPTT

  • RNN: 시간 불변 가중치로 순차 데이터 모델링(내부 상태=단기 기억).
  • 전개(unroll)BPTT로 시간축 그래디언트 역전파 → 소실/폭주 위험.
  • LSTM/GRU: 게이트(입력/망각/출력, 업데이트/리셋)로 장기 의존성 안정 학습.
    • LSTM: (c_t=f_t\odot c_{t-1}+i_t\odot \tanh(\cdot),\ z_t=o_t\odot \tanh(c_t))
    • GRU: (z_t=(1-u_t)\odot z_{t-1}+u_t\odot \tilde z_t) (파라미터·계산량 절약)

5) 아키텍처 설계 & NAS

  • 설계 축: 활성함수, 층/노드 수(깊이 vs 너비), 연결 방식(Conv/Residual/Recurrent/Attention).
  • 튜닝 전략: 직관→그리드/랜덤→베이지안 최적화→PBT/AutoML.
  • NAS: 진화·강화학습·보 Bayesian/경사 기반 탐색 + 경량 평가(축소 데이터·서브그래프 택).

6) 언제 무엇을 쓰나 (실전 가이드)

  • 이미지/공간 패턴: CNN(Backbone: ResNet류, 업샘플: Transposed Conv/UNet).
  • 음성/시계열: TDNN/1D-CNN → LSTM/GRU(길면 Transformer도 고려).
  • 깊은 분류기: 기본은 ResNet 스타일; 소규모·경량 요구 시 깊이/너비 균형 조정.
  • 검색·자동 설계 필요: NAS로 후보 구조 생성 → 축소 검증 → 정식 학습.

7) 체크리스트

  1. 데이터 구조(공간·시간)를 먼저 규정 → CNN/RNN류 선택
  2. 스킵 연결로 깊이 확장, BN/LN·적절한 활성(GELU/ReLU) 채택
  3. 파라미터·연산 예산 내에서 깊이 vs 너비 스윕
  4. 튜닝 파이프라인: 초기 랜덤/그리드 → 베이지안 → 필요 시 NAS
  5. 최종 모델은 검증 성능 + 복잡도(추론 지연/메모리) 함께 평가

필요하시면 위 요약을 1페이지 치트시트모델 선택 플로우차트로 변환해 드리겠습니다.

 

 

728x90