λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
1️⃣ AI•DS/πŸ“’ Deep learning

[인곡지λŠ₯] Basic Neural Network

by isdawell 2022. 4. 21.
728x90

πŸ“Œ ꡐ내 '인곡지λŠ₯' μˆ˜μ—…μ„ 톡해 κ³΅λΆ€ν•œ λ‚΄μš©μ„ μ •λ¦¬ν•œ κ²ƒμž…λ‹ˆλ‹€. 

 

πŸ“ λͺ©μ°¨

 

β‘  νŒŒλΈ”λ‘œν”„μ˜ 개 예제 perceptron λͺ¨λΈλ§

 

β‘‘ Training a Perceptron 

  - Gradient desecent 

  - example

 

β‘’ batch computing, epoch, hyperparameter 

 

 

 


 

 

1️⃣  Neuron 으둜 'νŒŒλΈ”λ‘œν”„μ˜ 개' λͺ¨λΈλ§ 해보기 


 

 

β‘  Example 

 

πŸ‘€ μš©μ–΄ 정리 

 

  • Activation = Feature 
  • Synaptic weight = filter = kernel : μ‹œλƒ…μŠ€ 강도 
  • Thresholding = Activation Function 

 

πŸ‘€ Training 

 

 

  • κ°€μ€‘μΉ˜λ₯Ό μ‘°μ ˆν•˜μ—¬ ν•™μŠ΅μ„ μ§„ν–‰ν•œλ‹€. 

 

μŒμ‹κ³Ό 벨을 λ™μ‹œμ—

 

벨을 μšΈλ¦¬λŠ” μ‹œλƒ…μŠ€μ™€ μ—°κ²°λœ κ°€μ€‘μΉ˜λ₯Ό 1둜 μ‘°μ ˆν•˜μ—¬ 벨만 μšΈλ €λ„ 침을 흘리게 μœ λ„

 

 


 

 

 

2️⃣  Training a Perceptron


 

β‘  Neuron 의 μˆ˜ν•™ 곡식 

 

νΌμ…‰νŠΈλ‘ 

 

 

 

β‘‘ Gradient Descent 

 

  • κ°€μ€‘μΉ˜λ₯Ό ν•™μŠ΅ν•˜λŠ” 방법
  • λΉ„μš©ν•¨μˆ˜λ₯Ό μ΅œμ†Œν™”ν•˜λŠ” μ΅œμ ν™” μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ 많이 μ‚¬μš©λ€λ‹€. 
  • λΉ„μš©ν•¨μˆ˜μ˜ μ΅œμ†Œκ°’μ„ μ°ΎκΈ°μœ„ν•΄ κ°€μž₯ 경사가 κΈ‰ν•œ λ°©ν–₯으둜 움직인닀 πŸ’¨ Negative descent 

 

 

 

  • Learning rate  ν•™μŠ΅λ₯  : μ–Όλ§ˆλ‚˜ 빨리 움직일것인지 μ •ν•˜λŠ” νŒŒλΌλ―Έν„°λ‘œ, ν•™μŠ΅λ₯ μ΄ λ†’μœΌλ©΄ 더 많이 움직인닀.  
  • Gradient operator μœ„μ˜ μ˜ˆμ œμ—μ„  2x 

 

 

β‘’ Training Perceptron 

 

  • νΌμ…‰νŠΈλ‘ μ„ ν›ˆλ ¨ν•˜λŠ” 것은 κ°€μ€‘μΉ˜ μ΅œμ ν™” 문제λ₯Ό ν‘ΈλŠ” 것과 κ°™λ‹€ πŸ‘‰ error λ₯Ό μ΅œμ†Œν™”ν•˜λŠ” κ°€μ€‘μΉ˜ μ°ΎκΈ° 
  • error κ°€ μ΅œμ†Œν™” λ˜κ²Œλ” κ°€μ€‘μΉ˜λ₯Ό μ—…λ°μ΄νŠΈν•œλ‹€. 

 

argmin(error) with respect to W

 

 

πŸƒ‍♀️ ν›ˆλ ¨κ³Όμ • 

1. 0이 μ•„λ‹Œ 맀우 μž‘μ€ κ°’μœΌλ‘œ κ°€μ€‘μΉ˜ μ΄ˆκΈ°κ°’μ„ μ„€μ •ν•œλ‹€. 
2. For each training sample x(k)
   a. Output 값을 κ³„μ‚°ν•œλ‹€. 
   b. gradient λ₯Ό κ³„μ‚°ν•œλ‹€. 
   c. κ°€μ€‘μΉ˜λ₯Ό μ—…λ°μ΄νŠΈν•œλ‹€. 

* x(k) λŠ” μ—¬λŸ¬κ°œμ˜ feature 둜 κ΅¬μ„±λœ ν•˜λ‚˜μ˜ 데이터 행을 μ˜λ―Έν•œλ‹€. 
* EX. x(0) = ( x0(0), x1(0) ) 

 

πŸ“Œ ν•™μŠ΅ λͺ©μ  : input from bell = 1 μΌλ•Œ output = 1 이 λ˜λ„λ‘, 즉 벨만 μšΈλ €λ„ 침을 ν˜λ¦¬λ„λ‘ μœ λ„ 

 

(1)

 

2-(a)

 

 

2-(b) gradient 계산 ⭐⭐

 

 

2-(c) κ°€μ€‘μΉ˜ μ—…λ°μ΄νŠΈ

 

 

⭐ 이전 μ—…λ°μ΄νŠΈλœ κ°€μ€‘μΉ˜μ— λŒ€ν•˜μ—¬, λ‹€μŒ μž…λ ₯에 λŒ€ν•΄ 2-(a)~(c) λ₯Ό 반볡

 

 

 

πŸ‘€ 1번째 input 으둜 μ—…λ°μ΄νŠΈλœ κ°€μ€‘μΉ˜ κ°’μœΌλ‘œ 2번째 input을 λ„£κ³  output 을 κ³„μ‚°ν•˜μ—¬ μ›ν•˜λŠ” ν•™μŠ΅λͺ©ν‘œμ— 도달함!

 

* 2개의 feature 둜 κ΅¬μ„±λœ 3개의 sample 둜 ν•™μŠ΅μ„ 진행

 

 

β‘£ Matrix ν‘œν˜„μ‹

 

  • input κ³Ό weight λ₯Ό ν–‰λ ¬μ‹μœΌλ‘œ ν‘œν˜„ν•˜μ—¬ μ—°μ‚° πŸ‘‰ xºw λ²‘ν„°μ˜ 내적 

 

2-(a)

 

2-(b)

 

 

2-(c) ν•™μŠ΅λ₯  = 0.2

 

 


 

 

3️⃣  batch computing, epoch, hyperparameters 


 

β‘  Batch computing 

 

πŸ‘€ ν–‰λ ¬ 연산을 λ„μž…ν•œ 이유 = batch computing κ°œλ…μ„ λ„μž…ν•˜κΈ° μœ„ν•¨! 

 

ν•œ 묢음의 sample 에 λŒ€ν•΄ μž…λ ₯

 

πŸ’‘ 직접 batch 연산해보기 : error μ—μ„œ Σ(o-z) , o = Σxw 연이은 sigma 계산 주의! 

 

 

πŸ‘€ batch computing μ΄λž€?

 

  • 전체 데이터셋을 μ‚¬μš©ν•˜μ—¬ gradient 연산을 ν•˜λŠ” 것이 ν•„μš”ν•˜λ‹€. κ·ΈλŸ¬ν•œ μ μ—μ„œ ν–‰λ ¬λ‘œ κ³„μ‚°ν•˜λŠ” 것은 λ²‘ν„°λ‚˜ 슀칼라둜 κ³„μ‚°ν•˜λŠ” 것보닀 훨씬 속도가 λΉ λ₯΄λ‹€. 
  • κ·ΈλŸ¬λ‚˜ μ‹€μ œλ‘œλŠ” 전체 데이터셋에 λŒ€ν•΄ gradient λ₯Ό κ³„μ‚°ν•˜λŠ” 것은 λΆˆκ°€λŠ₯ν•˜λ‹€. λ§Œμ•½ 100만개의 데이터가 μžˆλ‹€κ³  ν•œλ‹€λ©΄ batch λ₯Ό ν•œλ²ˆ κ³„μ‚°ν•˜λŠ”λ°μ—λ„ ꡉμž₯히 였랜 μ‹œκ°„μ΄ 걸릴 것이닀. 
  • λ”°λΌμ„œ ν›ˆλ ¨ 데이터셋을 mini-batch (κ·Έλƒ₯ batch 라고 뢀름) 둜 λ‚˜λˆ„μ–΄ training 을 μ§„ν–‰ν•œλ‹€. 
  • 전체 데이터셋을 ν•œλ²ˆ μ­‰ ν›ˆλ ¨ν•œ 것을 1 epoch 라고 λΆ€λ₯Έλ‹€. 

 

 

 

 

 

β‘‘ Hyperparameter

 

 

πŸ‘€ ν•˜μ΄νΌ νŒŒλΌλ―Έν„° νŠœλ‹

 

  • ν•™μŠ΅λ₯ , λ―Έλ‹ˆλ°°μΉ˜ν¬κΈ°, 에포크 수 πŸ‘‰ μš°λ¦¬κ°€ 직접 값을 μ„€μ •ν•΄μ£Όμ–΄μ•Ό ν•˜λŠ” νŒŒλΌλ―Έν„° 

 

πŸ‘€ ν•˜μ΄νΌ νŒŒλΌλ―Έν„°κ°€ ν•™μŠ΅μ— λ―ΈμΉ˜λŠ” 영ν–₯ 

 

  • ν›ˆλ ¨ 속도와 정확도에 μ§μ ‘μ μœΌλ‘œ 영ν–₯을 미치기 λ•Œλ¬Έμ— μ μ ˆν•œ 값을 μ„€μ •ν•΄μ£ΌλŠ” 것이 μ€‘μš”ν•˜λ‹€. 

 

 

 

 

728x90

λŒ“κΈ€