27.12.2016 Views

밑바닥부터 시작하는 딥러닝 - 미리보기

사이토 고키 지음 | 개앞맵시(이복연) 옮김 | 24,000원 | 한빛미디어 | 2017.01.03 "직접 구현하고 움직여보며 익히는 가장 쉬운 딥러닝 입문서 " 이 책은 라이브러리나 프레임워크에 의존하지 않고, 딥러닝의 핵심을 ‘밑바닥부터’ 직접 만들어보며 즐겁게 배울 수 있는 본격 딥러닝 입문서입니다. 술술 읽힐 만큼 쉽게 설명하였고, 역전파처럼 어려운 내용은 ‘계산 그래프’ 기법으로 시각적으로 풀이했습니다. 무엇보다 작동하는 코드가 있어 직접 돌려보고 요리조리 수정해보면 어려운 이론도 명확하게 이해할 수 있습니다. 딥러닝에 새롭게 입문하려는 분과 기초를 다시금 정리하고 싶은 현업 연구자와 개발자에게 최고의 책이 될 것입니다.

사이토 고키 지음 | 개앞맵시(이복연) 옮김 | 24,000원 | 한빛미디어 | 2017.01.03

"직접 구현하고 움직여보며 익히는 가장 쉬운 딥러닝 입문서 "

이 책은 라이브러리나 프레임워크에 의존하지 않고, 딥러닝의 핵심을 ‘밑바닥부터’ 직접 만들어보며 즐겁게 배울 수 있는 본격 딥러닝 입문서입니다. 술술 읽힐 만큼 쉽게 설명하였고, 역전파처럼 어려운 내용은 ‘계산 그래프’ 기법으로 시각적으로 풀이했습니다. 무엇보다 작동하는 코드가 있어 직접 돌려보고 요리조리 수정해보면 어려운 이론도 명확하게 이해할 수 있습니다. 딥러닝에 새롭게 입문하려는 분과 기초를 다시금 정리하고 싶은 현업 연구자와 개발자에게 최고의 책이 될 것입니다.

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

W!<br />

W<br />

ƞ<br />

2 2 W L<br />

[식 6.1]<br />

2L<br />

여기에서 W는 갱신할 가중치 매개변수고 2W은 W에 대한 손실 함수의 기울기입니다. ƞ는 학<br />

습률을 의미하는데, 실제로는 0.01이나 0.001과 같은 값을 미리 정해서 사용합니다. 또, ←는<br />

우변의 값으로 좌변의 값을 갱신한다는 뜻입니다. [식 6.1 ]에서 보듯 SGD는 기울어진 방향으<br />

로 일정 거리만 가겠다는 단순한 방법입니다. 그러면 이 SGD를 파이썬 클래스로 구현해보죠<br />

(나중에 사용할 것을 생각해 클래스 이름도 SGD로 했습니다).<br />

class SGD:<br />

def __init__(self, lr=0.01):<br />

self.lr = lr<br />

def update(self, params, grads):<br />

for key in params.keys():<br />

params[key] -= self.lr * grads[key]<br />

초기화 때 받는 인수인 lr은 learning rate(학습률)를 뜻합니다. 이 학습률을 인스턴스 변수<br />

로 유지합니다. update(params, grads) 메서드는 SGD 과정에서 반복해서 불리게 됩니다.<br />

인수인 params와 grads는 (지금까지의 신경망 구현과 마찬가지로) 딕셔너리 변수입니다.<br />

params['W1'], grads['W1'] 등과 같이 각각 가중치 매개변수와 기울기를 저장하고 있습니다.<br />

SGD 클래스를 사용하면 신경망 매개변수의 진행을 다음과 같이 수행할 수 있습니다(다음 코<br />

드는 실제로는 동작하지 않는 의사 코드입니다).<br />

network = TwoLayerNet(...)<br />

optimizer = SGD()<br />

for i in range(10000):<br />

...<br />

x_batch, t_batch = get_mini_batch(...) # 미니배치<br />

grads = network.gradient(x_batch, t_batch)<br />

params = network.params<br />

optimizer.update(params, grads)<br />

...<br />

optimizer 변수는 ‘최적화를 행하는 자’라는 뜻의 단어입니다. 이 코드에서는 SGD가 그 역할<br />

6장 - 학습 관련 기술들<br />

191

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!