김호쭈
DevForYou
김호쭈
전체 방문자
오늘
어제
  • 분류 전체보기 (321)
    • • 데이터베이스(DB) (9)
      • __SQL__ (9)
    • •알고리즘(Algorithm ) (117)
      • 문제풀이 (99)
      • 스터디 (14)
      • 알고리즘 팁 (4)
    • •Compter Science (57)
      • Operating System (25)
      • Computer Network (1)
      • Computer Vision (16)
      • Artificial Intelligence (14)
      • Software Technology (1)
    • • 독서 (36)
      • Design Pattern (24)
      • 객체지향의 사실과 오해 (1)
      • Object Oriented Software En.. (11)
    • • 개발 (26)
      • React (3)
      • node.js (6)
      • Django (11)
      • Spring boot (6)
    • • 개발Tip (4)
      • GitHub (0)
    • •프로젝트 (2)
      • 물물 (2)
    • •App (54)
      • 안드로이드 with Kotlin (50)
      • 코틀린(Kotiln) (4)
    • •회고 (8)
    • •취준일기 (3)
    • • 기타 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 원격저장소
  • local저장소
  • Remote저장소
  • ㄱ
  • 로컬저장소
  • GitHubDesktop
  • 깃허브데스크탑
  • KMU_WINK

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
김호쭈

DevForYou

[컴퓨터비전#15/11-21] 행렬(텐서)or벡터의 역전파 과정, 자코비안,Local Gradient Slice, Batch Normalization
•Compter Science/Computer Vision

[컴퓨터비전#15/11-21] 행렬(텐서)or벡터의 역전파 과정, 자코비안,Local Gradient Slice, Batch Normalization

2022. 11. 22. 17:00
 

[컴퓨터비전#14/11-16] 1*1 Convolution, pooling, conv의 output과 wieght개수 계산, Batch-Normalization

[컴퓨터비전#13/11-14] Convolution Layer- 필터(Feature-map,padding,stride) [컴퓨터비전#12/11-07] 오류역전파방법, 모듈로 사고의 확장, dropout, earlystop [컴퓨터비전#11/10-31] L1놈과 L2놈을 이용한 Regularization(정규

devforyou.tistory.com

본 포스팅은 2022-11-21(월), 국민대학교 김장호 교수님의 컴퓨터 비전 수업을 통해 배운내용을 정리하기 위한 게시글입니다.


# Batch Normalization

저번 시간에 공부하다가 만 Batch Normalization에 대해서 조금 더 알아보자. Batch Normalization은 배치단위로 정규화를 수행하는 것이다.

 

## Batch Norm

배치 단위로 정규화는 한다는 것은, 보는 데이터가 배치갯수(N)이 된다. 한 데이터 input이 3개의채널로 이루어져 있을때, 이렇게 3개의 채널로 이루어진 데이터가 N(배치)개가 존재하게 된다. 그럴 때, 배치단위로 본다는 것은, 1번데이터 C1 , 2번데이터 C1, 3번 데이터 C1 .. N번 데이터 C1을 함께 보게 되는 것이고, 채널 갯수만큼 보게 된다.

 

그렇다면 CNN의 구조에서는 이러한 채널이 들어 있기 때문에, 아래와 같이 normalize를 계산할 수 있다.

입력에 대해서 N개에서 채널끼리 보기 때문에 최종 C개가 나온다.

 

## Layer Norm

Layer는 채널끼리를 봐버 리기 때문에, N개가 된다. 아래 식은 FC예시지만, D이제 ( Channel * H * W )일 경우 CNN이고, 그럴 경우에도 결국 N이 된다.

 

# vector_backprop

 

[컴퓨터비전#12/11-07] 오류역전파방법, 모듈로 사고의 확장, dropout, earlystop

[컴퓨터비전#11/10-31] L1놈과 L2놈을 이용한 Regularization(정규화) [컴퓨터비전#10/10-09] 로지스틱 회귀 손실함수, 이진 크로스엔트로피 미분하여 경사하강법 도출, [컴퓨터비전#9/10-05] Classification, Linear

devforyou.tistory.com

 지난 시간에 배웠던 역전파 방법은, 스칼라인 상황에서만이었다. 그러나 실제 영역에서는 벡터, 매트릭스끼리의 역전파가 이루어지기 때문에 조금은 복잡해진다. 먼저 위 정리글을 한번보고나서 다시 공부해야 했다.

먼저 ChainRule에서 Upstream-Gradient와 Local-Gradient, Downstream-Gradient가 어떤 역할을 하고 왜 나오게 됐는지를 이해한다면 그렇게 어렵지 않을 것이다.

## 자코비안

스칼라,스칼라의 미분은 일반적인 미분이었다면, 입력이 N차원 출력이 스칼라일때는, 그래디언트였다. x,y모두가 N차원이라면 이를 자코비안이라고 한다.

그냥 한번 더 미분해준 거다.

 

# 역전파 - 벡터

다음과 같은, x나 y의 그래디언트를 찾아야 한다고 했을때, dL/dz의 업스트림그래디언트를 로컬그래디언트에 곱해서 얻어낼 수 있다. 그러나 입력값이 벡터라면, 이 LocalGradeint를 구할때 자코비안행렬이 나오고 그 크기는 Dx * Dz가 된다.

다음과 같이 ReLu를 거쳤다고 가정했을때, 어떻게 구해지는 봐보자.

4*4의 자코비안이 나오게 된다. 

 

# 역전파 - 행렬(or Tensor)

이제 인풋과 output이 행렬이라면 어떻게 될까? vector와 비슷하다.

x => Dx * Mx 이고 z=> Dz * Mz이다. 그래서 Local Jacobian은 위 벡터와 똑같이 두개의 크기가 이용된다.

 즉 dL/dx를 구하기 위해서 [(N*D) * (N*M)]의 메모리 공간이 필요하게 된다. 위에서 써있는것처럼의 예시라면 256기가나 필요하다고 한다. 정말 엄청난 양 이다. 

그러나 굳이 자코비안을 쓰지 않고도 구할 수 있기 때문에 그 방법을 알아보도록 하자.

 

# 자코비안을 쓰지 않고 구하는 방법

 그래디언트는 해당 값이 연산에 기여를 했다면 무조건적으로 존재하게된다. 그러면 구하려는 그래디언트가 어디에 기여를 했는지를 안다면 쉽게 구할 수 있을 것이다.

dL/dx(1,1)을 구해보자.

위와 같이 Local Gradeinet Slice를 활용해서 풀 수 있는데, 아래에 손으로 정리 해 봤다.

 

## 결론



자코비안을 쓰지 않고 구할 수 있기 때문에, 메모리를 훨씬 적게 사용 할 수 있다.

저작자표시 (새창열림)

'•Compter Science > Computer Vision' 카테고리의 다른 글

[컴퓨터비전#16/11-28] CNN모델 알아보기 AlexNet,VGG,GoogLenet,ResNet  (1) 2022.11.29
[컴퓨터비전#14/11-16] 1*1 Convolution, pooling, conv의 output과 wieght개수 계산, Batch-Normalization  (0) 2022.11.21
[컴퓨터비전#13/11-14] Convolution Layer- 필터(Feature-map,padding,stride)  (1) 2022.11.16
[컴퓨터비전#12/11-07] 오류역전파방법, 모듈로 사고의 확장, dropout, earlystop  (0) 2022.11.08
[컴퓨터비전#11/10-31] L1놈과 L2놈을 이용한 Regularization(정규화)  (0) 2022.10.31
    '•Compter Science/Computer Vision' 카테고리의 다른 글
    • [컴퓨터비전#16/11-28] CNN모델 알아보기 AlexNet,VGG,GoogLenet,ResNet
    • [컴퓨터비전#14/11-16] 1*1 Convolution, pooling, conv의 output과 wieght개수 계산, Batch-Normalization
    • [컴퓨터비전#13/11-14] Convolution Layer- 필터(Feature-map,padding,stride)
    • [컴퓨터비전#12/11-07] 오류역전파방법, 모듈로 사고의 확장, dropout, earlystop
    김호쭈
    김호쭈
    공부하고 정리하고 기록하기

    티스토리툴바