본문 바로가기
ML&DATA/밑바닥부터 시작하는 딥러닝

4 - 신경망 학습

by sun__ 2020. 9. 10.

학습이란 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 조정하는 것을 의미함.

 

손실함수의 결과값을 가장 작게 만드는 가중치 매개변수를 찾는 것이 이번 장의 목표

 


4.1 데이터에서 학습

기계학습은 훈련데이터와 시험데이터를 분리해야 한다. 범용 능력을 제대로 평가하기 위함이다.

 

한 데이터셋에만 지나치게 최적화된 상태를 오버피팅이라고 한다. 이를 극복하는 것이 기계학습의 중요한 과제이다.

 

딥러닝을 종단간 기계학습이라고도 한다. 처음부터 끝까지 사람의 개입없이 출력을 얻는다는 뜻을 담고 있다.

 

 

 

 


4.2 손실함수

손실함수가 가장 적도록 하는 가중치벡터를 찾는 것이 학습이라고 했다.

 

손실함수로 단순히 정확도를 사용하지 않는 것은 경사하강법을 위해 미분가능한 함수를 사용해야 하기 때문.

 

1. 오차제곱 합 (SSE)

 

예를들어, mnist 손글씨 예측의 결과값(신경망이 추정한 값)을 softmax 함수(확률)로 나타냈다면, target 레이블을 one-hot encoding으로 나타낸 것과 대응된다.

 

위 상황에서 오차제곱합을 구한다면 다음 코드와 같다.

y = [0.1, 0.05, 0.6, 0.0, 0.05, 0.1, 0.0, 0.1, 0.0, 0.0]
t = [0,0,1,0,0,0,0,0,0,0]

def sum_squares_error(y,t):
	return 0.5 * np.sum((y-t)**2)
    
sum_squares_error(np.array(y), np.array(t))
#0.0975

 


 

2. 교차 엔트로피 오차 (CEE)

분류문제에서 많이 사용.

 

one-hot encoding의 경우 레이블만 1이고 나머지가 0이므로, $t_k$가 1인 항만 영향을 준다.

y = [0.1, 0.05, 0.6, 0.0, 0.05, 0.1, 0.0, 0.1, 0.0, 0.0]
t = [0,0,1,0,0,0,0,0,0,0]

def cross_entropy_error(y,t):
    delta = 1e-7	#y_k가 0인 경우를 대비함.
    return -np.sum(t*np.log(y+delta))

cross_entropy_error(np.array(y), np.array(t))
#0.510825457099338

 


 

 

3. 미니배치 학습에서의 교차 엔트로피 오차 구현

 

batchsize 만큼의 데이터에서 손실함수는 보통 각 데이터의 손실함수값의 평균으로 구한다.

 

미니배치 선택

train_size = x_train.shape[0]
batch_size = 10
batch_mask = np.random.choice(train_size, batch_size)
x_batch = x_train[batch_mask]
t_batch = t_train[batch_mask]

 

미니 배치 학습에서의 교차 엔트로피 오차

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(t*np.log(y+1e-7)) / batch_size
    
    #one hot encoding이 아닐때
    #return -np.sum(np.log(y[np.arange(batch_size),t]+1e-7)) / batch_size

 

 


4.3 수치 미분

 생략

 

4.4 경사하강법

n차원 공간의 어떤 지점에서 기울기는 각각의 차원에서 편미분한 값의 벡터로 나타낼 수 있다.

 

경사하강법 수행시 학습률을 잘 정해줘야 하는데, 이런 사람이 직접 설정해야 하는 매개변수를 하이퍼파라미터라고 한다.

 


4.5 학습 알고리즘 구현

생략

'ML&DATA > 밑바닥부터 시작하는 딥러닝' 카테고리의 다른 글

7 - CNN  (0) 2020.10.07
5 - 오차역전파법  (0) 2020.09.18
3. 신경망  (0) 2020.09.08