[cs231n] Lecture 4: Backpropagation and Neural Networks

강동연·2022λ…„ 1μ›” 19일
0

[CS231n-2017]

λͺ©λ‘ 보기
3/7

πŸ‘¨β€πŸ« λ³Έ λ¦¬λ·°λŠ” cs231n-2017 κ°•μ˜λ₯Ό λ°”νƒ•μœΌλ‘œ μ§„ν–‰ν–ˆμŠ΅λ‹ˆλ‹€.

Syllabus
Youtube Link

Backpropagation

πŸ“Œ μ „ κ°•μ˜λ“€μ—μ„œ λ‹€μ–‘ν•œ Loss functionκ³Ό Reqularzation 그리고 Optimazation에 λŒ€ν•΄μ„œ ν•™μŠ΅ν–ˆμŠ΅λ‹ˆλ‹€. 이번 μ‹œκ°„μ—λŠ” μ—­μ „νŒŒ(Backpropagation)에 λŒ€ν•΄ ν•™μŠ΅ν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

πŸ“Œ μœ„μ˜ 그림은 μš°λ¦¬κ°€ μ§€κΈˆκΉŒμ§€ λ°°μ› λ˜ Neural Network의 ꡬ쑰λ₯Ό λ”μš± κΉŠμ΄ν•œ, 쑰금 더 μ‹€μ œ λ”₯λŸ¬λ‹ λ„€νŠΈμ›Œν¬μ— κ°€κΉŒμš΄ κ·Έλ¦Όμž…λ‹ˆλ‹€. input imageλΆ€ν„° lossκΉŒμ§€ μ—°μ‚° κΉŠμ΄κ°€ λ„ˆλ¬΄λ‚˜λ„ κΉŠμŠ΅λ‹ˆλ‹€. 일반적으둜 input imageμ—μ„œ lossκΉŒμ§€μ˜ 연산을 μˆœμ „νŒŒλΌκ³  ν•©λ‹ˆλ‹€. μ—­μ „νŒŒλŠ” 이름 κ·ΈλŒ€λ‘œ λ°˜λŒ€λ‘œ ν•˜λŠ” μ—°μ‚°μž…λ‹ˆλ‹€.

πŸ“Œ μ—­μ „νŒŒκ°€ μ™œ ν•„μš”ν• κΉŒμš”? μš°λ¦¬λŠ” gradientλ₯Ό 톡해 optimization을 ν•΄μ•Όν•©λ‹ˆλ‹€. gradient 계산을 ν•˜κΈ° μœ„ν•΄μ„  λ‹Ήμ—°ν•˜κ²Œλ„ λ―ΈλΆ„ 값이 ν•„μš”ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ μœ„μ˜ 사진을 λ³Ό 수 μžˆλ“―μ΄ lossλ₯Ό κ΅¬ν•œ ν›„ λ‹€μ‹œ 각각의 λ―ΈλΆ„ 값을 κ΅¬ν•˜λŠ”κ±΄ λ„ˆλ¬΄λ‚˜λ„ λΉ„νš¨μœ¨μ μž…λ‹ˆλ‹€. κ·Έλž˜μ„œ 우린 연쇄법칙(Chain Rule)을 μ΄μš©ν•œ μ—­μ „νŒŒ 연산을 톡해 효율적으둜 λ―ΈλΆ„ 값을 계산 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ“Œ μœ„μ˜ 각각의 xx, yy, zz와 κ°„λ‹¨ν•œ 연산을 μ‚¬μš©ν•œ μ—­μ „νŒŒ μ˜ˆμ œμž…λ‹ˆλ‹€. μ΄ˆλ‘μƒ‰μœΌλ‘œ μžˆλŠ” 뢀뢄은 μˆœμ „νŒŒ μ—°μ‚°μ˜ κ²°κ³Όμž…λ‹ˆλ‹€. μš°λ¦¬λŠ” μ΄μ œλΆ€ν„° μ—­μ „νŒŒ 연산을 μ§„ν–‰ν•©λ‹ˆλ‹€. λ¨Όμ € βˆ‚fβˆ‚f\partial f\over\partial f 자기 μžμ‹ μ„ λ―ΈλΆ„ν•©λ‹ˆλ‹€. λ‹Ήμ—°νžˆ κ²°κ³ΌλŠ” 1 μž…λ‹ˆλ‹€.

πŸ“Œ λ‹€μŒμœΌλ‘œ βˆ‚fβˆ‚z\partial f\over\partial z둜 λ―ΈλΆ„ν•©λ‹ˆλ‹€. μœ„μ˜ referenceμ—μ„œ μΉœμ ˆν•˜κ²Œ qq(=3)라고 μ•Œλ €μ€λ‹ˆλ‹€.

πŸ“Œ λ‹€μŒμœΌλ‘œ βˆ‚fβˆ‚q\partial f\over\partial q둜 λ―ΈλΆ„ν•©λ‹ˆλ‹€. μ—­μ‹œλ‚˜ referenceμ—μ„œ μΉœμ ˆν•˜κ²Œ zz(=-4)라고 μ•Œλ €μ€λ‹ˆλ‹€.

πŸ“Œ μ΄μ œλΆ€ν„° 연쇄법칙(chain rule)을 μ‚¬μš©ν•΄ 연산을 μ§„ν–‰ν•©λ‹ˆλ‹€. μš°λ¦¬κ°€ κ³„μ‚°ν•˜κ³ μž ν•˜λŠ” λ―ΈλΆ„ 연산은 βˆ‚fβˆ‚y\partial f\over\partial y μž…λ‹ˆλ‹€. μš°λ¦¬λŠ” μœ„μ˜ μ‚¬μ§„μ˜ Chain rule을 μ‚¬μš©ν•΄ μ—°μ‚°ν•©λ‹ˆλ‹€. Chain rule을 μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” μš°λ¦¬λŠ” μ•žμ„  κ³„μ‚°μ—μ„œμ˜ λ―ΈλΆ„ 값을 μ•ŒκΈ° λ•Œλ¬Έμ— 자기 μ£Όλ³€μ˜ local에 λŒ€ν•œ λ―ΈλΆ„λ§Œμ„ κ³„μ‚°ν•œ ν›„ μ—°μ‚°ν•˜λ©΄ 되기 λ•Œλ¬Έμž…λ‹ˆλ‹€. ++ 연산에 λŒ€ν•œ 미뢄은 1이기 λ•Œλ¬Έμ— κ·ΈλŒ€λ‘œ -4κ°€ λ‚˜μ˜΅λ‹ˆλ‹€. λ‚˜λ¨Έμ§€ xx λ˜ν•œ λ™μΌν•œ λ°©λ²•μœΌλ‘œ μ§„ν–‰λ©λ‹ˆλ‹€.

πŸ“Œ μœ„μ˜ 사진과 같이 "local gradient"만 μ•Œ 수 μžˆλ‹€λ©΄, μ•žμ„ (upstream)의 λ―ΈλΆ„ κ°’μœΌλ‘œ Chain rule을 μ‚¬μš©ν•΄ μ‰½κ²Œ λ―ΈλΆ„ 연산을 진행할 수 μžˆμŠ΅λ‹ˆλ‹€. μš°λ¦¬λŠ” μˆœμ „νŒŒ μ—°μ‚°μ—μ„œ 각각의 κ°’λ§Œ μ €μž₯ν•΄ λ†“λŠ”λ‹€λ©΄ μ—­μ „νŒŒ 연산을 톡해 μ‰½κ²Œ grediantλ₯Ό 계산할 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ“Œ μœ„μ˜ 사진은 sigmode function(non-linear)을 μ‚¬μš©ν•œ 쑰금 더 λ³΅μž‘ν•œ μ—­μ „νŒŒ κ³„μ‚°μž…λ‹ˆλ‹€. ν•˜λ‚˜μ”© 천천히 연산을 μ§„ν–‰ν•˜λ©΄ 각각의 값을 계산할 수 μžˆμŠ΅λ‹ˆλ‹€.

Q. What is a max gate ?

πŸ“Œ μœ„μ˜ max gateλŠ” μ–΄λ–€ μ—­ν™œμ„ ν• κΉŒμš”? μœ„μ˜ μ‚¬μ§„μ—μ„œλŠ” gradient router 라고 ν‘œν˜„ν•©λ‹ˆλ‹€. μˆœμ „νŒŒλ‘œ μ§„ν–‰λ˜λŠ” max 연산을 생각해보면 max값을 μ œμ™Έλ§Œ λ‚˜λ¨Έμ§€ 값은 연산에 영ν–₯을 주지 μ•ŠμŠ΅λ‹ˆλ‹€. 그렇기에 μ—­μ „νŒŒ κ³Όμ •μ—μ„œλ„ 영ν–₯을 μ€€ λ…Έλ“œμ—κ²Œλ§Œ ν˜λŸ¬κ°‘λ‹ˆλ‹€.

Q. What is a mul gate ?

πŸ“Œ μœ„μ˜ mul gateλŠ” gradient switcher라고 ν‘œν˜„ν•©λ‹ˆλ‹€. μ—­μ „νŒŒ 흐름을 잘 보면 각각의 λ°˜λŒ€μ˜ 값을 κ³±ν•œ 값이 흐λ₯΄λŠ” 것을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

Q. What is the size Jacobain matrix?

πŸ“Œ 사싀 우린 슀칼라 값을 λ‹€λ£¨λŠ” κ²ƒμ΄μ•„λ‹ˆλΌ, λ°±ν„° 연산을 ν•©λ‹ˆλ‹€. 우린 μžμ½”λΉ„μ•ˆ 행렬을 μ‚¬μš©ν•΄ μ‹€μ œλ‘œ 연산을 μ§„ν–‰ν•©λ‹ˆλ‹€.(μžμ½”λΉ„μ•ˆ 행렬에 κ΄€λ ¨ 링크 μž…λ‹ˆλ‹€.) 4096개의 vectorλ₯Ό input λ„£μœΌλ©΄ [4096 x 4096]의 행렬을 이루고 μžˆμ„κ²λ‹ˆλ‹€.

πŸ“Œ μ§€κΈˆλΆ€ν„°λŠ” 벑터λ₯Ό μ‚¬μš©ν•œ μ˜ˆμ œμ— λŒ€ν•΄ ν•™μŠ΅ν•  κ²ƒμž…λ‹ˆλ‹€. 벑터에 λŒ€ν•œ μˆœμ „νŒŒ 연산을 μ§„ν–‰ν•©λ‹ˆλ‹€. 그리고 μš°λ¦¬λŠ” L2 Norm을 μ‚¬μš©ν–ˆκΈ°μ— βˆ‚fβˆ‚qi\partial f\over\partial q_i = 2qi2q_i κ²°κ³Όλ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ“Œ μ΄μ–΄μ„œ μ—­μ „νŒŒ 연산을 μ§„ν–‰ν•©λ‹ˆλ‹€. W에 λŒ€ν•œ λ―ΈλΆ„ 연산을 μ§„ν–‰ν•©λ‹ˆλ‹€. β–½wf=2qβˆ—xT\triangledown wf = 2q*x^T 의 연산을 μ§„ν–‰ν•©λ‹ˆλ‹€. 각각의 연산을 μˆ˜ν–‰ν•΄λ³΄λ©΄ 0.088=0.2βˆ—0.440.088 = 0.2* 0.44, 0.176=0.4βˆ—0.440.176 = 0.4* 0.44, 0.104=0.2βˆ—0.520.104 = 0.2* 0.52, 0.208=0.4βˆ—0.520.208 = 0.4* 0.52 연산을 μˆ˜ν–‰ν•©λ‹ˆλ‹€. λ˜ν•œ gradient와 κ°€μ€‘μΉ˜μ˜ shape은 항상 μΌμΉ˜ν•΄μ•Όν•©λ‹ˆλ‹€.

πŸ“Œ xx에 λŒ€ν•œ λ―ΈλΆ„ 연산을 λ˜ν•œ μ§„ν–‰ν•©λ‹ˆλ‹€. β–½xf=2WTβˆ—q\triangledown xf = 2W^T*q 의 연산을 μˆ˜ν–‰ν•©λ‹ˆλ‹€. 각각의 연산을 진행해보면 βˆ’0.112=0.1βˆ—0.44βˆ’0.3βˆ—0.52-0.112=0.1*0.44 - 0.3*0.52, 0.636=0.5βˆ—0.44βˆ’0.8βˆ—0.520.636=0.5*0.44 - 0.8*0.52 연산을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.

πŸ“Œ Multiply Gate μ˜ˆμ‹œ μ½”λ“œμž…λ‹ˆλ‹€. forwardμ‹œ 각각의 λ³€μˆ˜λ₯Ό λ”°λ‘œ μ €μž₯ν•©λ‹ˆλ‹€. backwardμ‹œ μ €μž₯ν•œ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•΄ 연산을 μ§„ν–‰ν•©λ‹ˆλ‹€.

profile
Maybe I will be an AI Engineer?

0개의 λŒ“κΈ€