250x250
Link
๋์ GitHub Contribution ๊ทธ๋ํ
Loading data ...
Notice
Recent Posts
Recent Comments
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- iloc
- ์ธ๋์ํ๋ง
- ๋ฐ์ดํฐ๋ถ์์ค์ ๋ฌธ๊ฐ
- ์ฃผ์ฑ๋ถ๋ถ์
- ๋ฐ์ดํฐ๋ถ๊ท ํ
- ํ์ด์ฌ
- ์ค๋ฒ์ํ๋ง
- ๋น ๋ฐ์ดํฐ๋ถ์๊ธฐ์ฌ
- t-test
- ๋น ๋ฐ์ดํฐ
- ๋ ๋ฆฝํ๋ณธ
- opencv
- ADsP
- ํฌ๋กค๋ง
- PCA
- datascience
- dataframe
- ๊ตฐ์งํ
- LDA
- ๋ฐ์ดํฐ๋ถ์์ ๋ฌธ๊ฐ
- ADP
- pandas
- DBSCAN
- ์๋ํด๋ผ์ฐ๋
- numpy
- Lambda
- ํ ์คํธ๋ถ์
- Python
- ๋์ํ๋ณธ
- ๋ฐ์ดํฐ๋ถ์
Archives
Data Science LAB
[Deep Learning] ์ต์ ํ ๋ฐฉ๋ฒ ๋น๊ต (SGD, Momentum, AdaGrad, Adam ๋ณธ๋ฌธ
๐ง Deep Learning
[Deep Learning] ์ต์ ํ ๋ฐฉ๋ฒ ๋น๊ต (SGD, Momentum, AdaGrad, Adam
ใ ใ ใ ใ 2022. 11. 18. 00:20728x90
1. SGD (ํ๋ฅ ์ ๊ฒฝ์ฌ ํ๊ฐ๋ฒ)
- ๋งค๊ฐ ๋ณ์์ ๊ธฐ์ธ๊ธฐ๋ฅผ ๊ตฌํด ๊ธฐ์ธ์ด์ง ๋ฐฉํฅ์ผ๋ก ๋งค๊ฐ๋ณ์ ๊ฐ์ ๊ฐฑ์ ํ๋ ์ผ์ ๋ช ๋ฒ์ด๊ณ ๋ฐ๋ณตํ์ฌ ์ต์ ์ ๊ฐ์ ๋ค๊ฐ๊ฐ๋ ๊ฒ
- ๊ฒฝ์ฌ ํ๊ฐ๋ฒ๊ณผ๋ ๋ค๋ฅด๊ฒ ๋๋คํ๊ฒ ์ถ์ถํ ์ผ๋ถ ๋ฐ์ดํฐ์ ๋ํด์๋ง ๊ฐ์ค์น๋ฅผ ์กฐ์ ํจ
SGD์ ๋จ์
: ๋น๋ฑ๋ฐฉ์ฑ ํจ์(๊ธฐ์ธ๊ธฐ๊ฐ ๋ฌ๋ผ์ง๋ ํจ์)์์๋ ํ์ ๊ฒฝ๋ก๊ฐ ๋นํจ์จ์ ์
- ํ์ด์ฌ ์ฝ๋ ๊ตฌํ
class SGD:
def __init__(self, lr=0.01):
self.lr = lr
def update(self, params, grads):
for key in params.keys():
params[key] -= self.lr * grad[key]
2. Momentum (๋ชจ๋ฉํ )
- ๋ชจ๋ฉํ ์ '์ด๋๋'์ ๋ปํ๋ ๋จ์ด๋ก ๊ธฐ์ธ๊ธฐ ๋ฐฉํฅ์ผ๋ก ํ์ ๋ฐ์ ๋ฌผ์ฒด๊ฐ ๊ฐ์๋๋ค๋ ๋ฌผ๋ฆฌ ๋ฒ์น์ ์ด์ฉํด ๊ณต์ด ๊ทธ๋ฆ์ ๋ฐ๋ฅ์ ๊ตฌ๋ฅด๋ ๋ฏํ ์์ง์์ ๋ณด์ฌ์ค
- ๊ฒฝ์ฌ ํ๊ฐ๋ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋งค๋ฒ ๊ธฐ์ธ๊ธฐ๋ฅผ ๊ตฌํ์ง๋ง, ์ด์ ์ ๋ฐฉํฅ์ ์ฐธ๊ณ ํ์ฌ (+,-) ๊ฐ์ ๋ฐฉํฅ์ผ๋ก ์ผ์ ๋น์จ๋ง์ ์์ ๋๊ฒ ํ๋ ๋ฐฉ๋ฒ
- +, - ๋ฐฉํฅ์ด ๋ฒ๊ฐ์๊ฐ๋ฉฐ ๋ํ๋๋ ์ง๊ทธ์ฌ๊ทธ ํ์์ ์ค์ด๊ณ , ์ด์ ์ด๋ ๊ฐ์ ๊ณ ๋ คํด์ ์ผ์ ๋น์จ๋งํผ ๋ค์ ๊ฐ์ ๊ฒฐ์ ํ๋ฏ๋ก ๊ด์ฑ์ ์ฑ์ง์ ์ด์ฉํ ์ ์์
- ํ์ด์ฌ ์ฝ๋ ๊ตฌํ
class Momentum:
def __init__(self, lr=0.01, momentum=0.9):
self.lr = lr
self.momentum = momentum
self.v = None
def update(self, params, grads):
if self.v is None:
self.v = {}
for key, val in params.items():
self.v[key] = np.zeros_like(val)
for key in params.keys():
self.v[key] = self.momentum * self.v[key] - self.lr * grads[key]
params[key] += self.v[key]
3. AdaGrad
- ๊ฐ๋ณ ๋งค๊ฐ๋ณ์์ ์ ์์ ์ผ๋ก ํ์ต๋ฅ ์ ์กฐ์ ํ๋ฉฐ ํ์ต์ ์งํํจ
- ๋ณ์์ ์ ๋ฐ์ดํธ ํ์์ ๋ฐ๋ผ ํ์ต๋ฅ ์ ์กฐ์ ํ๋ ์ต์ ์ด ์ถ๊ฐ๋ ๋ฐฉ๋ฒ
- ๋ง์ด ๋ณํํ์ง ์์ ๋ณ์๋ค์ ํ์ต๋ฅ ์ ํฌ๊ฒํ๊ณ , ๋ง์ด ๋ณํ๋ ๋ณ์๋ค์ ํ์ต๋ฅ ์ ์๊ฒํจ (๋ณํํ ๋ณ์๋ ์ต์ ๊ฐ์ ๊ทผ์ ํ์ ๊ฒ์ด๋ผ๋ ๊ฐ์ ํ์ ์์ ํฌ๊ธฐ๋ก ์ด๋ํ๋ฉด์ ์ธ๋ฐํ ๊ฐ์ ์กฐ์ ํ๊ณ , ๋ฐ๋๋ก ์ ๊ฒ ๋ณํํ ๋ณ์๋ค์ ํ์ต๋ฅ ์ ํฌ๊ฒํ์ฌ ๋น ๋ฅด๊ฒ loss๊ฐ์ ์ค์)
- ํ์ด์ฌ ์ฝ๋ ๊ตฌํ
class AdaGrad:
def __init__(self,lr=0.01):
self.lr = lr
self.h = None
def update(self, params, grads):
if self.h == None:
self.h = {}
for key, val in params.items():
self.h[key] = np.zeros_like(val)
for key in params.keys():
self.h[key] += grads[key] * grads[key]
params[key] -= self.lr * grads[key] / (np.sqrt(self.h[key]) + 1e-7)
4. Adam
- Momentum๊ณผ AdaGrad์ ์ฅ์ ์ ์ตํฉ
- ํ์ดํผ ํ๋ผ๋ฏธํฐ์ ํธํฅ ๋ณด์
- ํ์ด์ฌ ์ฝ๋ ๊ตฌํ
class Adam:
def __init__(self, lr=0.001, beta1=0.9, beta2=0.999):
self.lr = lr
self.beta1 = beta1
self.beta2 = beta2
self.iter = 0
self.m = None
self.v = None
def update(self, params, grads):
if self.m is None:
self.m, self.v = {}, {}
for key, val in params.items():
self.m[key] = np.zeros_like(val)
self.v[key] = np.zeros_like(val)
self.iter += 1
lr_t = self.lr * np.sqrt(1.0 - self.beta2**self.iter) / (1.0 -self.beta1**self.iter)
for key in params.keys():
self.m[key] += (1 - self.beta1) * (grads[key] - self.m[key])
self.v[key] += (1 - self.beta2) * (grads[key] - self.v[key])
params[key] -= lr_t * self.m[key] / (np.sqrt(self.v[key]) + 1e-7)
4๊ฐ์ง ๋ฐฉ๋ฒ์ ์ต์ ํ ๋ฐฉ๋ฒ ๋น๊ต
๋ฐ์ดํฐ์ ์ข ๋ฅ์ ๋ฐ๋ผ ๋ง์ถฐ ์ ํํด์ผํจ
ํ์ต ์ง๋ ๋ณ ๋น๊ต
๊ฐ์ฅ ์ ๋ช ํ ๋ฐ์ดํฐ ์ ์ธ MNIST ์ ๊ฐ ์ต์ ํ ๋ฐฉ์์ ์ ์ฉํ์ ๋์ ํ์ต ์ง๋๋ฅผ ๋ํ๋ธ ๊ทธ๋ฆผ์ด๋ค.
MNIST์๋ AdaGrad๊ฐ ๋ฏธ์ธํ๊ฒ ๊ฐ์ฅ ์ข์๋ณด์ด๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
728x90
'๐ง Deep Learning' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Deep Learning] ๋ฅ๋ฌ๋์์ super().__init__ ์ฌ์ฉ (ํด๋์ค ์์) (0) | 2022.12.07 |
---|---|
[Deep Learning] Tensorflow์์ Sequential ๋ชจ๋ธ ์์ฑํ๋ ๋ฒ (0) | 2022.11.24 |
[Deep Learning] ์ถ๋ ฅ์ธต ์ค๊ณ (softmax, ํญ๋ฑ ํจ์) (0) | 2022.11.23 |
[Deep Learning] ํ์ฑํ ํจ์ ์ข ๋ฅ ๋ฐ ๋น๊ต ์ ๋ฆฌ (0) | 2022.11.21 |
Deep Learning๊ณผ Machine Learning ์ฐจ์ด์ (0) | 2022.02.13 |
Comments