250x250
Link
λ‚˜μ˜ GitHub Contribution κ·Έλž˜ν”„
Loading data ...
Notice
Recent Posts
Recent Comments
관리 메뉴

Data Science LAB

[Deep Learning] ν™œμ„±ν™” ν•¨μˆ˜ μ’…λ₯˜ 및 비ꡐ 정리 λ³Έλ¬Έ

🧠 Deep Learning

[Deep Learning] ν™œμ„±ν™” ν•¨μˆ˜ μ’…λ₯˜ 및 비ꡐ 정리

γ…… γ…œ γ…” γ…‡ 2022. 11. 21. 17:40
728x90

1. ν™œμ„±ν™” ν•¨μˆ˜(Activation Function) 의미

λ”₯λŸ¬λ‹ λ„€νŠΈμ›Œν¬μ—μ„œ λ…Έλ“œμ— μž…λ ₯된 값듀을 λΉ„μ„ ν˜• ν•¨μˆ˜μ— ν†΅κ³Όμ‹œν‚¨ ν›„ λ‹€μŒ λ ˆμ΄μ–΄λ‘œ μ „λ‹¬ν•˜λŠ”λ°, 이 λ•Œ μ‚¬μš©ν•˜λŠ” ν•¨μˆ˜λ₯Ό μ˜λ―Έν•œλ‹€. μ„ ν˜• ν•¨μˆ˜κ°€ μ•„λ‹Œ λΉ„μ„ ν˜• ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” λ”₯λŸ¬λ‹ λͺ¨λΈμ˜ λ ˆμ΄μ–΄ 측을 깊게 κ°€μ Έκ°ˆ 수 있기 λ•Œλ¬Έμ΄λ‹€. 

ν™œμ„±ν™” ν•¨μˆ˜λŠ” μž…λ ₯ μ‹ ν˜Έμ™€ 편ν–₯의 총합을 κ³„μ‚°ν•˜μ—¬ λ‹€μŒ λ ˆμ΄μ–΄λ‘œ μ–΄λ–»κ²Œ 좜λ ₯ν•  지λ₯Ό κ²°μ •ν•œλ‹€. μ΄λ•Œ μ„€μ •ν•œ μž„κ³„κ°’μ„ κ²½κ³„λ‘œ 좜λ ₯값이 λ°”λ€Œκ²Œ λœλ‹€. 

 

 

 

 

2. ν™œμ„±ν™” ν•¨μˆ˜μ˜ μ’…λ₯˜

1 ) Sigmoid

- Logistic ν•¨μˆ˜λΌκ³  λΆˆλ¦¬κΈ°λ„ ν•˜λ©° x의 값에 따라 0~1 μ‚¬μ΄μ˜ 값을 좜λ ₯ν•˜λŠ” ν•¨μˆ˜μ΄λ‹€. 

sigmoid ν•¨μˆ˜μ •μ˜
sigmoid λ―ΈλΆ„ κ³Όμ •

- 파이썬 κ΅¬ν˜„

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

 

sigmoid 좜λ ₯ κ²°κ³Ό

- sigmoid νŠΉμ§•

- 음수 값을 0에 κ°€κΉκ²Œ ν‘œν˜„ν•˜κΈ° λ•Œλ¬Έμ— μž…λ ₯ 값이 μ΅œμ’… λ ˆμ΄μ–΄μ—μ„œ λ―ΈμΉ˜λŠ” 영ν–₯이 μ μ–΄μ§€λŠ” Vanishing Gradient Problem λ°œμƒ
- λ―ΈλΆ„ κ³„μˆ˜μ˜ μ΅œλŒ€κ°’μ΄ 0.25이기 λ•Œλ¬Έμ— ν•™μŠ΅μ„ μœ„ν•΄ Back-propagation을 κ³„μ‚°ν•˜λŠ” κ³Όμ •μ—μ„œ ν™œμ„±ν™” ν•¨μˆ˜μ˜ λ―ΈλΆ„ 값을 κ³±ν•˜λŠ” 과정이 ν¬ν•¨λ˜λŠ”λ°, sigmoidν•¨μˆ˜μ˜ 경우 μ€λ‹‰μΈ΅μ˜ κΉŠμ΄κ°€ 깊으면 μ˜€μ°¨μœ¨μ„ κ³„μ‚°ν•˜κΈ° 어렀움
- 쀑심이 0이 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— ν•™μŠ΅μ΄ 느렀질 수 μžˆλŠ” 단점
- ν•œ λ…Έλ“œμ—μ„œ λͺ¨λ“  νŒŒλΌλ―Έν„°μ˜ λ―ΈλΆ„ 값은 λͺ¨λ‘ 같은 λΆ€ν˜Έμ΄κΈ° λ•Œλ¬Έμ— 같은 λ°©ν–₯으둜 μ—…λ°μ΄νŠΈλ˜λŠ” 과정은 ν•™μŠ΅μ„ μ§€κ·Έμž¬κ·Έ ν˜•νƒœλ‘œ λ§Œλ“¦
- λ―ΈλΆ„ κ²°κ³Όκ°€ κ°„κ²°ν•˜κ³  μ‚¬μš©ν•˜κΈ° 쉬움
- λͺ¨λ“  μ‹€μˆ˜ 값을 0보닀 크고 1보닀 μž‘μ€ λ―ΈλΆ„ κ°€λŠ₯ν•œ 수둜 λ³€ν™˜ν•˜λŠ” νŠΉμ§• λ•Œλ¬Έμ— Logistic Classificationκ³Ό 같은 λΆ„λ₯˜ λ¬Έμ œμ— 자주 μ‚¬μš©
- return 값이 ν™•λ₯  값이기 λ•Œλ¬Έμ— κ²°κ³Όλ₯Ό ν™•λ₯ λ‘œ ν•΄μ„ν•˜κΈ° 유용

 

 

 

 

2) Hyperbolic Tangent ν•¨μˆ˜ (ν•˜μ΄νΌλ³Όλ¦­, tanh)

- μŒκ³‘μ„  ν•¨μˆ˜ 쀑 ν•˜λ‚˜λ‘œ, Sigmoid의 단점을 λ³΄μ™„ν•œ ν•¨μˆ˜μ΄λ‹€.

 

- 파이썬 κ΅¬ν˜„

def tanh(x):
	p_exp_x = np.exp(x)
    m_exp_x = np.exp(-x)
    y = (p_exp_x - m_exp_x) / (p_exp_x + m_exp_x)
    return y

 

 

- tanh νŠΉμ§•

- ν•¨μˆ˜μ˜ 쀑심점을 0으둜 μ„€μ •ν•΄ sigmoid의 단점인 μ΅œμ ν™” κ³Όμ •μ—μ„œ 속도가 느린 단점을 보완함
- κΈ°μšΈκΈ°κ°€ μ–‘μˆ˜μ™€ 음수 λͺ¨λ‘ λ‚˜μ˜¬ 수 있기 λ•Œλ¬Έμ— sigmoid보닀 ν•™μŠ΅ νš¨μœ¨μ„±μ΄ 뛰어남
- sigmoid에 λΉ„ν•΄ λ²”μœ„κ°€ λ„“κΈ° λ•Œλ¬Έμ— 좜λ ₯의 변화폭이 더 크고 Vanishing Gradient λ¬Έμ œκ°€ 더 적음
- λ―ΈλΆ„ ν•¨μˆ˜μ— λŒ€ν•΄ 일정 κ°’ μ΄μƒμ—μ„œ λ―ΈλΆ„ 값이 μ†Œμ‹€λ˜λŠ” Vanishing Gradient은 μ—¬μ „νžˆ λ‚¨μ•„μžˆμŒ

 

 

 

 

3) ReLU

- κ°€μž₯ 많이 μ‚¬μš©λ˜λŠ” ν™œμ„±ν™” ν•¨μˆ˜ 쀑 ν•˜λ‚˜λ‘œ μž…λ ₯이 0 이상이면 κ·ΈλŒ€λ‘œ 좜λ ₯, 0 μ΄ν•˜μ΄λ©΄ 0을 좜λ ₯ν•˜λŠ” ν•¨μˆ˜μ΄λ‹€. 

 

 

- 파이썬 κ΅¬ν˜„

def relu(x):
    return np.maximum(0,x)

 

 

- ReLU νŠΉμ§•

- xκ°€ 0보닀 크면 κΈ°μšΈκΈ°κ°€ 1인 직선, 0보닀 μž‘μœΌλ©΄ ν•¨μˆ˜ 값이 0이 λœλ‹€. μ΄λŠ” 0보닀 μž‘μ€ κ°’λ“€μ—μ„œ λ‰΄λŸ°μ΄ 죽을 수 μžˆλŠ” 단점 (죽은 relu 문제)
- sigmoid, tanh ν•¨μˆ˜λ³΄λ‹€ ν•™μŠ΅μ΄ λΉ λ₯΄κ³  κ΅¬ν˜„μ΄ 간단함

 

 

 

 

 

4) Leaky Relu

- 0보닀 μž‘κ±°λ‚˜ 같을 λ•Œ 0을 κ³±ν•˜λŠ” 것이 μ•„λ‹ˆλΌ x에 0.01을 κ³±ν•œ μž‘μ€ μ–‘μ˜ 기울기λ₯Ό μ‚¬μš©ν•¨

- 죽은 relu 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ“±μž₯

 

 

 

 

 

5) PReLU

- xκ°€ μ–‘μˆ˜μΌ λ•Œμ—λŠ” x값을 κ·ΈλŒ€λ‘œ λ„μΆœ, κ·Έμ™Έμ—λŠ” ax값을 λ„μΆœ (aλŠ” λ‹€λ₯Έ 신경망 λ§€κ°œλ³€μˆ˜μ™€ ν•¨κ»˜ ν•™μŠ΅λ˜λŠ” νŒŒλΌλ―Έν„°)

728x90
Comments