ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AI] 신경망 ν•™μŠ΅(λ°‘λ°”λ‹₯λΆ€ν„° μ‹œμž‘ν•˜λŠ” λ”₯λŸ¬λ‹)
    πŸ’»Programming/AI 2023. 12. 18. 20:23

    μ‹ κ²½λ§μ˜ κ°€μ€‘μΉ˜ λ§€κ°œλ³€μˆ˜μ˜ 값을 데이터λ₯Ό 보고 μžλ™μœΌλ‘œ κ²°μ •ν•œλ‹€. μ•„μ£Ό 큰 μž₯점이닀.

    πŸ”— 데이터 주도 ν•™μŠ΅

    ν•™μŠ΅: ν›ˆλ ¨ λ°μ΄ν„°λ‘œλΆ€ν„° κ°€μ€‘μΉ˜ λ§€κ°œλ³€μˆ˜μ˜ μ΅œμ κ°’μ„ μžλ™μœΌλ‘œ νšλ“ν•˜λŠ” 것

    κΈ°κ³„ν•™μŠ΅

    1. λ°μ΄ν„°μ—μ„œ 닡을 μ°Ύκ³  λ°μ΄ν„°μ—μ„œ νŒ¨ν„΄μ„ λ°œκ²¬ν•˜κ³  λ°μ΄ν„°λ‘œ 이야기λ₯Ό λ§Œλ“¦

    2. μ‚¬λžŒμ˜ κ°œμž…μ„ μ΅œμ†Œν™”ν•˜κ³  μˆ˜μ§‘ν•œ λ°μ΄ν„°λ‘œλΆ€ν„° νŒ¨ν„΄μ„ 찾으렀 μ‹œλ„

    πŸ“ 쒅단간 κΈ°κ³„ν•™μŠ΅(end-to-end machine learning)

    κΈ°κ³„ν•™μŠ΅: λ°μ΄ν„°μ˜ νŠΉμ§•μ„ λ²‘ν„°λ‘œ λ³€ν™˜ν•˜λŠ” 것은 'μ‚¬λžŒμ΄' 섀계

    λ”₯λŸ¬λ‹: 데이터 μž…λ ₯μ—μ„œ λͺ©ν‘œν•œ κ²°κ³Όλ₯Ό μ‚¬λžŒμ˜ κ°œμž… 없이 μ–»μŒ.

    두 번째 μ ‘κ·Ό λ°©μ‹μ—μ„œλŠ” μ‚¬λžŒμ΄ νŠΉμ§•μ„ μ‚¬λžŒμ΄ μ„€κ³„ν–ˆμ§€λ§Œ, 신경망은 이미지에 ν¬ν•¨λœ μ€‘μš”ν•œ νŠΉμ§•κΉŒμ§€λ„ '기계'κ°€ 슀슀둜 ν•™μŠ΅ν•  것이닀. 

    μ΄λ ‡κ²Œ λ”₯λŸ¬λ‹μ€ μ²˜μŒλΆ€ν„° λκΉŒμ§€ 데이터(μž…λ ₯)μ—μ„œ λͺ©ν‘œν•œ κ²°κ³Ό(좜λ ₯)을 μ‚¬λžŒμ˜ κ°œμž… 없이 얻을 수 μžˆλ‹€λŠ” μ μ—μ„œ μ²˜μŒλΆ€ν„° λκΉŒμ§€λΌλŠ” 의미λ₯Ό 가진 쒅단간 κΈ°κ³„ν•™μŠ΅μ΄λΌκ³ λ„ λΆˆλ¦°λ‹€.


    πŸ”— ν›ˆλ ¨ 데이터와 μ‹œν—˜ 데이터

    • ν›ˆλ ¨ 데이터(trainig data): 졜적의 λ§€κ°œλ³€μˆ˜λ₯Ό νƒμƒ‰ν•˜λŠ”λ° μ‚¬μš©
    • μ‹œν—˜ 데이터(test data): ν›ˆλ ¨ν•œ λͺ¨λΈμ˜ μ„±λŠ₯을 ν‰κ°€ν•˜λŠ”λ° μ‚¬μš©
    • μ™œ ν›ˆλ ¨ 데이터와 μ‹œν—˜ 데이터λ₯Ό λ‚˜λˆ„λŠ”κ°€?: λͺ¨λΈμ˜ "λ²”μš© λŠ₯λ ₯(=ν›ˆλ ¨ 데이터가 μ•„λ‹Œ λ°μ΄ν„°λ‘œλ„ 문제λ₯Ό μ˜¬λ°”λ₯΄κ²Œ ν’€μ–΄λ‚΄λŠ” λŠ₯λ ₯)"을 μ œλŒ€λ‘œ ν‰κ°€ν•˜κΈ° μœ„ν•΄
    • μ˜€λ²„ν”ΌνŒ…(overfitting): ν•œ λ°μ΄ν„°μ…‹μ—λ§Œ μ§€λ‚˜μΉ˜κ²Œ μ΅œμ ν™”λœ μƒνƒœ

    μ™Όμͺ½μ€ κ³Όμ†Œ 적합(μ–Έλ”ν”ΌνŒ…)의 μ˜ˆμ‹œμ΄κ³ , 였λ₯Έμͺ½μ€ κ³ΌλŒ€ 적합(μ˜€λ²„ν”ΌνŒ…)의 μ˜ˆμ‹œμ΄λ‹€.


    πŸ”— 손싀 ν•¨μˆ˜(loss function)

    손싀 ν•¨μˆ˜λŠ” 신경망 μ„±λŠ₯의 'λ‚˜μ¨'을 λ‚˜νƒ€λ‚΄λŠ” μ§€ν‘œλ‘œ, ν˜„μž¬μ˜ 신경망이 ν›ˆλ ¨ 데이터λ₯Ό μ–Όλ§ˆλ‚˜ 잘 μ²˜λ¦¬ν•˜μ§€ 'λͺ»ν•˜λŠλƒ'λ₯Ό κΈ°μ€€μœΌλ‘œ ν•œλ‹€. 

    평균 제곱 μ˜€μ°¨μ™€ ꡐ차 μ—”νŠΈλ‘œν”Ό 였차λ₯Ό 일반적으둜 μ‚¬μš©

    πŸ“ 평균 제곱 였차(Mean Squared Error, MSE)

    평균 제곱 였차 μˆ˜μ‹

    ✨ 평균 제곱 였차 κ΅¬ν˜„

    def mean_squared_error(y, t):
    	return 0.5 * np.sum((y-t)**2)

    ✨ 원-ν•« 인코딩

    데이터λ₯Ό μ‰½κ²Œ 쀑볡 없이 ν‘œν˜„ν•  λ•Œ μ‚¬μš©ν•˜λŠ” ν˜•μ‹

    1. 각 단어에 κ³ μœ ν•œ 인덱슀 λΆ€μ—¬

    2. ν‘œν˜„ν•˜κ³  싢은 λ‹¨μ–΄μ˜ 인덱슀 μœ„μΉ˜μ— 1을 λΆ€μ—¬, λ‹€λ₯Έ λ‹¨μ–΄μ˜ 인덱슀 μœ„μΉ˜μ—λŠ” 0을 λΆ€μ—¬

    단점: 단어가 많으면 μΈλ±μŠ€κ°€ 길어진닀 / λΆˆν•„μš”ν•œ 곡간을 μ°¨μ§€ν•˜λŠ” κ²½μš°κ°€ λ§Žμ•„μ§„λ‹€. 

    πŸ“ ꡐ차 μ—”νŠΈλ‘œν”Ό 였차(Cross Entropy Error, CEE)

    ꡐ차 μ—”νŠΈλ‘œν”Ό 였차 μˆ˜μ‹

    yλŠ” μ‹ κ²½λ§μ˜ 좜λ ₯, tλŠ” μ •λ‹΅ λ ˆμ΄λΈ”λ‘œ tλŠ” 정닡에 ν•΄λ‹Ήν•˜λŠ” 인덱슀의 μ›μ†Œλ§Œ 1이고 λ‚˜λ¨Έμ§€λŠ” 0(원-ν•« 인코딩). κ·Έλž˜μ„œ 이 μˆ˜μ‹μ€ μ‹€μ§ˆμ μœΌλ‘œ 정닡일 λ•Œμ˜ μžμ—° 둜그λ₯Ό κ³„μ‚°ν•˜λŠ” 식이 λœλ‹€. ꡐ차 μ—”νŠΈλ‘œν”Ό μ˜€μ°¨λŠ” 정닡일 λ•Œμ˜ 좜λ ₯이 전체 값을 μ •ν•˜κ²Œ λœλ‹€.

    ✨ ꡐ차 μ—”νŠΈλ‘œν”Ό 였차의 κ΅¬ν˜„

    def cross_entropy_error(y, t):
    	delta = 1e-7
        return -np.sum(t * np.log(y+delta))

    πŸ”— λ―Έλ‹ˆ 배치 ν•™μŠ΅

    κΈ°κ³„ν•™μŠ΅ λ¬Έμ œλŠ” ν›ˆλ ¨ 데이터λ₯Ό μ‚¬μš©ν•΄ ν•™μŠ΅ν•œλ‹€. ꡬ체적으둜 λ§ν•˜λ©΄ ν›ˆλ ¨ 데이터에 λŒ€ν•œ 손싀 ν•¨μˆ˜μ˜ 값을 κ΅¬ν•˜κ³ , κ·Έ 값을 μ΅œλŒ€ν•œ μ€„μ—¬μ£ΌλŠ” λ§€κ°œλ³€μˆ˜λ₯Ό μ°Ύμ•„λ‚Έλ‹€. μ΄λ ‡κ²Œ ν•˜κΈ° μœ„ν•΄μ„  λͺ¨λ“  ν›ˆλ ¨ 데이터λ₯Ό λŒ€μƒμœΌλ‘œ 손싀 ν•¨μˆ˜ 값을 ꡬ해야 ν•œλ‹€. 

    λͺ¨λ“  데이터에 λŒ€ν•œ μ†μ‹€ν•¨μˆ˜μ˜ κ°’μ˜ 합을 κ΅¬ν•˜λŠ” μˆ˜μ‹

    μœ„μ˜ ꡐ차 μ—”νŠΈλ‘œν”Ό 였차λ₯Ό μ΄μš©ν•˜μ—¬ λͺ¨λ“  ν›ˆλ ¨ 데이터에 λŒ€ν•œ μ†μ‹€ν•¨μˆ˜μ˜ 값을 ꡬ해 평균을 λ‚΄λŠ” μˆ˜μ‹μ΄λ‹€. 

    μ΄λ ‡κ²Œ 되면 ν›ˆλ ¨ 데이터가 1000κ°œμ΄λ˜μ§€ 10000κ°œμ΄λ˜μ§€ 평균 손싀 ν•¨μˆ˜λ₯Ό ꡬ할 수 μžˆλ‹€. ν•˜μ§€λ§Œ μ‹€μ œ μ‚¬μš©λ˜λŠ” λΉ…λ°μ΄ν„°λŠ” κ·Έ μˆ˜λŠ” μˆ˜λ°±λ§Œμ—μ„œ 수천만이 λ„˜λŠ” κ±°λŒ€ν•œ 값이 λ˜κΈ°λ„ ν•˜λŠ”λ°, 이 λ§Žμ€ 데이터λ₯Ό λŒ€μƒμœΌλ‘œ 일일이 손싀 ν•¨μˆ˜λ₯Ό κ³„μ‚°ν•˜λŠ” 것은 ꡉμž₯히 였랜 μ‹œκ°„μ΄ 걸릴 것이닀. κ·Έλž˜μ„œ λ‚˜μ˜¨ κ°œλ…μ΄ λ―Έλ‹ˆλ°°μΉ˜μ΄λ‹€

    ✨ λ―Έλ‹ˆ 배치

    데이터 일뢀λ₯Ό μΆ”λ € μ „μ²΄μ˜ 'κ·Όμ‚¬μΉ˜'둜 μ΄μš©ν•  수 μžˆλ‹€. 이 일뢀λ₯Ό 'λ―Έλ‹ˆλ°°μΉ˜'라고 ν•œλ‹€. 예λ₯Ό λ“€μ–΄ 60000μž₯의 ν›ˆλ ¨ 데이터 μ€‘μ—μ„œ 100μž₯을 λ¬΄μž‘μœ„λ‘œ 뽑아 100μž₯λ§Œμ„ μ‚¬μš©ν•˜μ—¬ ν•™μŠ΅ν•˜λŠ” 것을 λ―Έλ‹ˆλ°°μΉ˜ ν•™μŠ΅μ΄λΌκ³  ν•œλ‹€. 

    ✨ (배치용) ꡐ차 μ—”νŠΈλ‘œν”Ό 였차 κ΅¬ν˜„ν•˜κΈ°

    # μ •λ‹΅ λ ˆμ΄λΈ”μ΄ 원-ν•« 인코딩인 경우
    def cross_entropy_error(y, t):
    	if y.ndim == 1:	# yκ°€ 1차원이라면, 데이터 ν•˜λ‚˜λ‹Ή ꡐ차 μ—”νŠΈλ‘œν”Ό 였차λ₯Ό κ΅¬ν•˜λŠ” 경우 reshape ν•¨μˆ˜λ‘œ λ°μ΄ν„°μ˜ ν˜•μƒμ„ λ°”κΏ”μ€Œ
        	t = t.reshape(1, t.size)
            y = y.reshape(1, y.size)
        
        batch_size = y.shape[0]
        return -np.sum(t * np.log(y + 1e-7)) / batch_size
    
    # μ •λ‹΅ λ ˆμ΄λΈ”μ΄ 숫자 λ ˆμ΄λΈ”λ‘œ 주어진 경우
    def cross_entropy_error(y, t):
    	if y.ndim == 1:
        	t = t.reshape(1, t.size)
            y = y.reshape(1, y.size)
        batch_size = y.shape[0]
        return -np.sum(np.log(y[np.arrange(batch_size), t] + 1e-7)) / batch_size

    πŸ”— μ™œ 손싀 ν•¨μˆ˜λ₯Ό μ„€μ •ν•˜λŠ”κ°€?

    우리의 λͺ©μ μ€ 높은 "정확도"λ₯Ό λŒμ–΄λ‚΄λŠ” λ§€κ°œλ³€μˆ˜ 값을 μ°ΎλŠ” 것인데, μ™œ μ •ν™•λ„λΌλŠ” μ§€ν‘œ λŒ€μ‹ μ— 손싀 ν•¨μˆ˜μ˜ κ°’μ΄λΌλŠ” μ§€ν‘œλ₯Ό νƒν•˜λŠ” κ²ƒμΌκΉŒ? -> 신경망 ν•™μŠ΅μ—μ„œμ˜ λ―ΈλΆ„μ˜ 역할에 μ£Όλͺ©

    신경망 ν•™μŠ΅μ—μ„œλŠ” 졜적의 λ§€κ°œλ³€μˆ˜λ₯Ό 탐색할 λ•Œ 손싀 ν•¨μˆ˜μ˜ 값을 κ°€λŠ₯ν•œ μž‘κ²Œ ν•˜λŠ” λ§€κ°œλ³€μˆ˜ 값을 μ°ΎλŠ”λ‹€. 이 λ•Œ λ§€κ°œλ³€μˆ˜μ˜ 미뢄값을 κ³„μ‚°ν•˜κ³ , κ·Έ 미뢄값을 λ‹¨μ„œλ‘œ λ§€κ°œλ³€μˆ˜λ₯Ό κ°±μ‹ ν•˜λŠ” 과정을 λ°˜λ³΅ν•œλ‹€. λ§Œμ•½ 미뢄값이 음수이면 κ·Έ λ§€κ°œλ³€μˆ˜λ₯Ό μ–‘μ˜ λ°©ν–₯으둜 λ³€ν™”μ‹œμΌœ 손싀 ν•¨μˆ˜μ˜ 값을 쀄일 수 μžˆλ‹€. λ°˜λŒ€λ‘œ μ–‘μˆ˜μ΄λ©΄ 음의 λ°©ν–₯으둜 λ³€ν™”μ‹œμΌœ μ†μ‹€ν•¨μˆ˜μ˜ 값을 쀄일 수 μžˆλ‹€. ν•˜μ§€λ§Œ 미뢄값이 0이면 κ°€μ€‘μΉ˜ λ§€κ°œλ³€μˆ˜λ₯Ό μ–΄λŠμͺ½μœΌλ‘œ 움직여도 μ†μ‹€ν•¨μˆ˜μ˜ 값은 달라지지 μ•ŠκΈ° λ•Œλ¬Έμ— κ°€μ€‘μΉ˜ λ§€κ°œλ³€μˆ˜μ˜ 갱신은 κ±°κΈ°μ„œ λ©ˆμΆ”κ²Œ λœλ‹€. 

    정확도λ₯Ό μ§€ν‘œλ‘œ μ‚ΌμœΌλ©΄ μ•ˆλ˜λŠ” μ΄μœ λŠ” λ―ΈλΆ„ 값이 λŒ€λΆ€λΆ„μ˜ μž₯μ†Œμ—μ„œ 0이 λ˜μ–΄ λ§€κ°œλ³€μˆ˜λ₯Ό κ°±μ‹ ν•  수 μ—†κΈ° λ•Œλ¬Έ.

    정확도가 κ°œμ„ λœλ‹€κ³  ν•˜λ”λΌλ„ λΆˆμ—°μ†μ μΈ κ°’μœΌλ‘œ 변함. 

    예: 100μž₯의 ν›ˆλ ¨ 데이터 쀑 32μž₯을 맞좘 신경망이 μžˆλ‹€κ³  ν•œλ‹€λ©΄, κ°€μ€‘μΉ˜λ₯Ό λ³€κ²½ν•΄ 정확도λ₯Ό 높이더라도 34, 35%λ“± λΆˆμ—°μ†μ μœΌλ‘œ 변함. μ†μ‹€ν•¨μˆ˜μ˜ 경우 λ§€κ°œλ³€μˆ˜κ°€ μ£ΌλŠ” μž‘μ€ λ³€ν™”κ°€ μ£ΌλŠ” 파μž₯을 μž‘μ„ 수 μžˆλ‹€. 

    πŸ”— 수치 λ―ΈλΆ„

    • 수치 λ―ΈλΆ„: ν•¨μˆ˜μ˜ νŠΉμ • μ μ—μ„œμ˜ 기울기λ₯Ό κ·Όμ‚¬μ μœΌλ‘œ κ³„μ‚°ν•˜λŠ” 방법
    • λ―ΈλΆ„: 'νŠΉμ • μˆœκ°„'의 λ³€ν™”λŸ‰
    • 쀑심 μ°¨λΆ„: xλ₯Ό μ€‘μ‹¬μœΌλ‘œ κ·Έ μ „ν›„μ˜ μ°¨λΆ„ 계산 (x+h) - (x-h)
    • μ „λ°© μ°¨λΆ„: (x+h) - (x)
    • νŽΈλ―ΈλΆ„: λ³€μˆ˜κ°€ μ—¬λŸΏμΈ ν•¨μˆ˜μ— λŒ€ν•œ λ―ΈλΆ„

    λ³€μˆ˜κ°€ μ—¬λŸΏμΈ ν•¨μˆ˜

    • 기울기: λͺ¨λ“  λ³€μˆ˜μ˜ νŽΈλ―ΈλΆ„μ„ λ²‘ν„°λ‘œ μ •λ¦¬ν•œ 것

    μœ„μ˜ μ‹μ˜ 기울기

    κΈ°μšΈκΈ°κ°€ κ°€λ¦¬ν‚€λŠ” μͺ½μ€ 각 μž₯μ†Œμ—μ„œ ν•¨μˆ˜μ˜ 좜λ ₯값을 κ°€μž₯ 크게 μ€„μ΄λŠ” λ°©ν–₯이닀.


    πŸ”— κ²½μ‚¬ν•˜κ°•λ²•(Gradient Descent Method)

    λ§€κ°œλ³€μˆ˜ 곡간이 κ΄‘λŒ€ν•˜μ—¬ μ–΄λ””κ°€ μ΅œμ†Œκ°’μ΄ λ˜λŠ” 곳인지 μ§μž‘ν•  수 없을 λ•Œ, "기울기"λ₯Ό μ΄μš©ν•΄ 손싀 ν•¨μˆ˜μ˜ μ΅œμ†Œκ°’μ„ μ°ΎμœΌλ €λŠ” 것

    ✨ ν•™μŠ΅λ₯ (learning rate)

    ν•œ 번의 ν•™μŠ΅μœΌλ‘œ μ–Όλ§ˆλ§ŒνΌ ν•™μŠ΅ν•΄μ•Ό 할지, λ§€κ°œλ³€μˆ˜ 값을 μ–Όλ§ˆλ‚˜ κ°±μ‹ ν•΄μ•Ό ν•  지λ₯Ό μ •ν•˜λŠ” 것

    λ„ˆλ¬΄ 크면 큰 κ°’μœΌλ‘œ λ°œμ‚°ν•˜κ±°λ‚˜ Oscillation(진동)을 μˆ˜ν–‰ν•˜λ©° μˆ˜λ ΄λ˜μ§€ μ•ŠλŠ”λ‹€.

    λ„ˆλ¬΄ μž‘μœΌλ©΄, 거의 κ°±μ‹ λ˜μ§€ μ•Šμ€ 채 수렴이 λλ‚œλ‹€. 

    ✨ ν•˜μ΄νΌνŒŒλΌλ―Έν„°(hyper parameter)

    ν•™μŠ΅λ₯ κ³Ό 같이 μ‚¬λžŒμ΄ 직접 μ„€μ •ν•΄μ•Ό ν•˜λŠ” λ§€κ°œλ³€μˆ˜λ‘œ μ‹€ν—˜μ μœΌλ‘œ λ°˜λ³΅μ„ 톡해 μ°Ύμ•„λ‚Έλ‹€. 

    경사법 μˆ˜μ‹

    졜적(Optimization): 손싀 ν•¨μˆ˜ 값이 μ΅œμ†Œκ°’μ΄ 될 λ•Œμ˜ λ§€κ°œλ³€μˆ˜ κ°’

    πŸ“ μ‹ κ²½λ§μ—μ„œμ˜ 기울기

    κ°€μ€‘μΉ˜ λ§€κ°œλ³€μˆ˜μ— λŒ€ν•œ 손싀 ν•¨μˆ˜μ˜ 기울기

    κ°€μ€‘μΉ˜ λ§€κ°œλ³€μˆ˜μ˜ ν˜•μƒκ³Ό κ°€μ€‘μΉ˜ λ§€κ°œλ³€μˆ˜μ— λŒ€ν•œ μ†μ‹€ν•¨μˆ˜μ˜ ν˜•μƒμ€ κ°™λ‹€.


    πŸ”— ν•™μŠ΅ μ•Œκ³ λ¦¬μ¦˜ κ΅¬ν˜„ν•˜κΈ°

    ✨ μ „μ œ

    μ‹ κ²½λ§μ—λŠ” 적응 κ°€λŠ₯ν•œ κ°€μ€‘μΉ˜μ™€ 편ν–₯이 있고, 이 κ°€μ€‘μΉ˜μ™€ 편ν–₯을 ν›ˆλ ¨ 데이터에 μ μš©ν•˜λ„λ‘ μ‘°μ •ν•˜λŠ” 과정을 'ν•™μŠ΅'이라고 ν•œλ‹€. 

    ✨ 1단계: λ―Έλ‹ˆλ°°μΉ˜

    ν›ˆλ ¨ 데이터 쀑 일뢀λ₯Ό λ¬΄μž‘μœ„λ‘œ κ°€μ Έμ˜΄. μ΄λ ‡κ²Œ μ„ λ³„ν•œ 데이터λ₯Ό λ―Έλ‹ˆλ°°μΉ˜λΌ ν•˜λ©°, κ·Έ λ―Έλ‹ˆλ°°μΉ˜μ˜ μ†μ‹€ν•¨μˆ˜ 값을 μ€„μ΄λŠ” 것이 λͺ©ν‘œ

    ✨ 2단계: 기울기 μ‚°μΆœ

    λ―Έλ‹ˆλ°°μΉ˜μ˜ 손싀 ν•¨μˆ˜ 값을 쀄이기 μœ„ν•΄ 각 κ°€μ€‘μΉ˜ λ§€κ°œλ³€μˆ˜μ˜ 기울기λ₯Ό ꡬ함. κΈ°μšΈκΈ°λŠ” 손싀 ν•¨μˆ˜μ˜ 값을 κ°€μž₯ μž‘κ²Œ ν•˜λŠ” λ°©ν–₯을 μ œμ‹œν•¨.

    ✨ 3단계: λ§€κ°œλ³€μˆ˜ κ°±μ‹ 

    κ°€μ€‘μΉ˜ λ§€κ°œλ³€μˆ˜λ₯Ό 기울기 λ°©ν–₯으둜 μ•„μ£Ό 쑰금 κ°±μ‹ 

    ✨ 4단계: 1~3단계λ₯Ό 반볡

    λͺ¨λ“  데이터가 μ†Œμ§„λ  λ•ŒκΉŒμ§€ 반볡적으둜 λ―Έλ‹ˆλ°°μΉ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ λͺ¨λΈμ„ μ—…λ°μ΄νŠΈ

     

    이것이 경사 ν•˜κ°•λ²•μœΌλ‘œ λ§€κ°œλ³€μˆ˜λ₯Ό κ°±μ‹ ν•˜λŠ” 방법이며, 이 λ•Œ 데이터λ₯Ό λ―Έλ‹ˆλ°°μΉ˜λ‘œ λ¬΄μž‘μœ„λ‘œ μ„ μ •ν•˜κΈ° λ•Œλ¬Έμ— ν™•λ₯ μ  경사 ν•˜κ°•λ²•(Stochastic Gradient Descent, SGD)라고 λΆ€λ₯Έλ‹€. λŒ€λΆ€λΆ„μ˜ λ”₯λŸ¬λ‹ ν”„λ ˆμž„μ›Œν¬λŠ” ν™•λ₯ μ  경사 ν•˜κ°•λ²•μ˜ λ¨Έλ¦¬κΈ€μžλ₯Ό λ”΄ SGDλΌλŠ” ν•¨μˆ˜λ‘œ 이 κΈ°λŠ₯ κ΅¬ν˜„.

     

    에폭(epoch): ν•™μŠ΅μ—μ„œ ν›ˆλ ¨ 데이터λ₯Ό λͺ¨λ‘ μ†Œμ§„ν–ˆμ„ λ–„μ˜ 횟수

    λ―Έλ‹ˆλ°°μΉ˜ ν•™μŠ΅μ—μ„œ 배치 크기와 에폭을 ν•˜μ΄νΌ νŒŒλΌλ―Έν„°λ‘œ 쀄 수 μžˆλ‹€. 

    예: ν›ˆλ ¨ 데이터 10000개λ₯Ό 100개의 λ―Έλ‹ˆλ°°μΉ˜λ‘œ ν•™μŠ΅ν•  경우, ν™•λ₯ μ  경사 ν•˜κ°•λ²•μ„ 100회 λ°˜λ³΅ν•˜λ©΄ λͺ¨λ“  ν›ˆλ ¨ 데이터λ₯Ό μ†Œμ§„ν•˜κ²Œ 되며, 이 경우 100νšŒκ°€ 1 에폭이 λœλ‹€. 


    πŸ”— 정리

    1. κΈ°κ³„ν•™μŠ΅μ—μ„œ μ‚¬μš©ν•˜λŠ” 데이터셋은 ν›ˆλ ¨ 데이터와 μ‹œν—˜ λ°μ΄ν„°λ‘œ λ‚˜λˆ  μ‚¬μš©

    2. ν›ˆλ ¨ λ°μ΄ν„°λ‘œ ν•™μŠ΅ν•œ λͺ¨λΈμ˜ λ²”μš© λŠ₯λ ₯을 μ‹œν—˜ λ°μ΄ν„°λ‘œ 평가

    3. 신경망 ν•™μŠ΅μ€ 손싀 ν•¨μˆ˜λ₯Ό μ§€ν‘œλ‘œ, 손싀 ν•¨μˆ˜μ˜ 값이 μž‘μ•„μ§€λŠ” λ°©ν–₯으둜 κ°€μ€‘μΉ˜ λ§€κ°œλ³€μˆ˜λ₯Ό κ°±μ‹ 

    4. κ°€μ€‘μΉ˜ λ§€κ°œλ³€μˆ˜λ₯Ό κ°±μ‹ ν•  λ•ŒλŠ” κ°€μ€‘μΉ˜ λ§€κ°œλ³€μˆ˜μ˜ 기울기λ₯Ό μ΄μš©ν•˜κ³ , κΈ°μšΈμ–΄μ§„ λ°©ν–₯으둜 κ°€μ€‘μΉ˜μ˜ 값을 κ°±μ‹ ν•˜λŠ” μž‘μ—…μ„ 반볡

    5. μ•„μ£Ό μž‘μ€ 값을 μ£Όμ—ˆμ„ λ•Œμ˜ μ°¨λΆ„μœΌλ‘œ λ―ΈλΆ„ν•˜λŠ” 것을 수치 미뢄이라 ν•˜κ³ , 수치 미뢄을 μ΄μš©ν•΄ κ°€μ€‘μΉ˜ λ§€κ°œλ³€μˆ˜μ˜ 기울기λ₯Ό ꡬ할 수 μžˆλ‹€.

Designed by Tistory.