deep learning for sinlim

28
밑바닥부터 시작하는 딥러닝

Upload: -

Post on 14-Apr-2017

147 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: deep learning for sinlim

밑바닥부터 시작하는 딥러닝

Page 2: deep learning for sinlim

3장 신경망 ”“

1. 퍼셉트론에서 신경망으로(63~68p) 2. 활성화함수(68~77) 3. 다차원배열의 계산(77~83) 4. 3층 신경망의 구현(83~90) 5. 출력층 설계(90~96) 6. 손글씨 숫자 인식(96~105) 7. 정리(105-106)

총 63~106 = 43p

Page 3: deep learning for sinlim

3.2 활성화함수1. 시그모이드 함수

68p 계단함수 : 임계값을 경계로 출력이 바뀜. 활성화함수를 계단 함수에서 다른 함수로 변경하는 것이 신경망의 세계로 나아가는 열쇠시그모이드 = 신경망에서 자주 이용되는 활성화 함수

Page 4: deep learning for sinlim

• 91p 항등함수 = 입력을 그대로 출력에 사용 한편 분류에서 사용하는 것이 소프트맥스 함수 ( 확률로 나눠지게 되는데 다 더하면 1이 된다.)

3.5 출력층 설계하기1 항등함수와 소프트 맥스 함수 구현하기

공식

Page 5: deep learning for sinlim

4장 신경망 학습 ”“

1. 데이터에서 학습한다(107~111p: 4p) 2. 손실함수(111~121p:11p) 3. 수치미분(121~127p:7p) 4. 기울기(127~136p: 10p) 5. 학습알고리즘 구현하기(136~145:10p) 6. 정리 (146)

107~146 = 39p

Page 6: deep learning for sinlim

4.1 데이터에서 학습한다.중요한 점만 요약;;

108p : 5를 숫자를 인식하는 프로그램을 구현할 때 당장 떠오르는 알고리즘이 없다. 의외로 어려운 문제

109p : 5를 인식하는 알고리즘을 밑바닥부터 설계하는 대신 주어진 데이터를 잘 활용하여 해결 하고 싶어짐..

=> 특징을 추출. 그 특징의 패턴을 기계학습기술로 학습110p : 신경망은 있는 그대로 학습한다

Page 7: deep learning for sinlim

4.1 데이터에서 학습한다.4.1.2 훈련데이터와 시험 데이터

110p :

훈련데이터와 시험데이터를 나눠서 사용 (training data, test data) 범용능력은 아직 보지 못한 데이터를 가지고도 문제를 올바르게 풀어내는 능력

오버피팅 : 한 데이터에만 지나치게 최적화된 상태

Page 8: deep learning for sinlim

4.2 손실함수목차

1 평균제곱오차 2 교차 엔트로피 오차 3 미니배치학습 4 (배치용)교차엔트로피 오차 구현 5 왜 손실함수를 설정하는가

Page 9: deep learning for sinlim

4.2 손실함수들어가면서

손실함수 : 신경망 성능의 좋고 나쁨을 나타내는 지표훈련데이터를 얼마나 잘 처리하지 못하느냐를 나타냄=> 낮을 수록 좋다. 비용함수라고도 함.(cost function)

Page 10: deep learning for sinlim

4.2 손실함수1 평균제곱오차

공식

Page 11: deep learning for sinlim

4.2 손실함수2. 교차엔트로피 오차

공식

교차엔트로피 손실함수적을 수록 정답에 가깝다.

Page 12: deep learning for sinlim

4.2 손실함수3 미니배치학습

지금까지는 데이터 하나에 대한 손실 함수만 생각했지만, 훈련 데이터 모두에 대한손실 함수는..?

Page 13: deep learning for sinlim

4.2 손실함수3 미니배치학습

116p : 미니배치학습 : 훈련 데이터로부터 일부만 골라 학습을 수행

예를 들어서 mnist 에서 x_train, x_train 은 (60000, 784) (60000, 10) 임..

117p : 훈련데이터에서 무작위로 10장만 빼낼려면 어떻게 해야 하는가..?넘파이의 np.random.choice() 함수를 쓰면 다음과 같이 간단히 해결..

p.random.choice(60000, 10) <= 60000미만의 수 중에서 무작위로 10개를 골라냄

Page 14: deep learning for sinlim

4.2 손실함수4 (배치용)교차 엔트로피 구하기

Page 15: deep learning for sinlim

4.2 손실함수5 왜 손실함수를 설정하는가?

119~120p

왜 손실함수를 설정하는가..?

미분의 역할에 주목하면 됨…

미분 값이 음수면 그 가중치 매개변수를 양의 방향으로 변화시켜 손실함수의 값을 줄일수 있다. 반대로 이 미분값이 양수면 그 가중치 매개변수를 음의 방향으로 변화시켜손실함수의 값을 줄일 수 있다.

Page 16: deep learning for sinlim

4.3 수치미분들어가면서…(121~127P)

1. 미분 2. 수치미분의 예 3. 편미분

Page 17: deep learning for sinlim

4.3 수치미분1. 미분

121p : 미분이란 특정 시간의 변화량. h 를 한없이 0에 가깝게 했을 때의 변화량~

122p : 문제 : 반올림오차(0에 가까운 값), 함수 f 의 차분 => 수치미분

Page 18: deep learning for sinlim

4.3 수치미분2. 수치미분의 예

Page 19: deep learning for sinlim

4.3 수치미분3. 편미분

1. 이제 변수가 2개 이상된다면..? 변수가 여럿인 함수에 대한 미분을 편미분이라고 함. .

Page 20: deep learning for sinlim

4.4 기울기들어가며(127~129P)

1. 127p 편미분을 따로 계산했었는데.. 편미분을 동시에 계산하고 싶다면?모든 변수의 편미분을 벡터로 계산한 것을 기울기라고 한다. 기울기가 가리키는 쪽이 함수의 출력값을 줄이는 방향

Page 21: deep learning for sinlim

4.4 기울기1 경사법(경사하강법)

최적화하려는 함수 f 초깃값 학습률 반복횟수

공식

Page 22: deep learning for sinlim

4.4 기울기2 신경망에서의 기울기 ( 133~136)

1. 127p 편미분을 따로 계산했었는데.. 편미분을 동시에 계산하고 싶다면?모든 변수의 편미분을 벡터로 계산한 것을 기울기라고 한다. 기울기가 가리키는 쪽이 함수의 출력값을 줄이는 방향

Page 23: deep learning for sinlim

4.4 기울기2 신경망에서의 기울기 ( 133~136)

편미분 (두 변수)

미분 (변수하나)

기울기(NUMERICAL_GRADIENT)

(동시계산)

경사법 (GRADIENT_DESCENT) (기울어진 거리만큼 이동)

신경망에서의 기울기 (SIMPLE NET)

Page 24: deep learning for sinlim

4.5 기울기들어가며(136~137)

1. 미니배치 2. 기울기산출 3. 매개변수 갱신 4. 반복 SGD 확률적 경사 하강법 : 데이터를 미니배치로 무작위로 선정

Page 25: deep learning for sinlim

4.5 기울기1. 2층 신경망 구현하기 (137~141)

1. input_size = 784, hidden_size = 100, output_size = 10 자세한 내용은 이해에 맡긴다. 후후후

Page 26: deep learning for sinlim

4.5 기울기3. 시험데이터로 평가하기

1. 에폭 : 학습에서 훈련데이터를 모두 소진했을 때의 횟수에 해당함.10000개를 100개의 미니배치로 학습할 경우 확률적 경사하강법을 100회학습하면 100회가 1에폭이 됨..

Page 27: deep learning for sinlim

4.5 기울기2. 미니배치 학습 구현하기

1. train_size = 60000,784 batch_mask 로 무작위 100을 골라 x_batch에서는 100,784를 만들어냄. 경사하강법 시전..

Page 28: deep learning for sinlim