티스토리 뷰

1. 배치(batch) 처리

배치 처리는 컴퓨터로 계산할 때 큰 이점을 준다. 두 가지 이유가 있다.

  • 수치 계산 라이브러리 대부분이 큰 배열을 효율적으로 처리하게끔 최적화 되어있다.
  • 느린 I/O를 통해 데이터를 읽는 횟수가 줄어, 빠른 CPU나 GPU로 순수 계산을 수행하는 비율이 높아진다.

 

 

 

 

2. 데이터 주도 학습

 

 

 

 

 

전통적인 기계학습에선 사람이 특징을 설계했지만, 신경망은 이미지에 포함된 중요한 특징까지도 기계가 스스로 학습한다. 그러므로 딥러닝을 종단간(end-to-end) 기계학습이라고 한다. 처음부터 끝까지 데이터에서 목표 결과를 사람의 개입 없이 얻는다는 뜻이다.

 

 

 

 

3. 손실 함수

신경망 학습에선 현재의 상태를 하나의 지표로 표현한다. 이 지표를 가장 좋게 만드는 가중치 매개변수 값을 탐색한다. 신경망에서 사용하는 지표를 손실 함수라고 한다. 대표적인 손실함수로 오차제곱합(sum of sqaures for error)과 교차 엔트로피 오차(cross entropy error)가 있다.

 

 

 

  • 오차 제곱합(sum of squares for eror)

 

예를들어 MNIST를 학습한다고 하자. $y_{k}=[0.1, 0.05,...,0.0]$은 신경망의 출력이고 $t_{k}$는 원-핫 인코딩된 정답 레이블이다.

 

 

 

  • 교차 엔트로피 오차(corss entropy error)

 

여기서 로그는 자연로그를 이다. MNIST를 예로들면, $t_{k}=1$인 정답에 해당하는 원소만 살아남게 된다. 그래서 실질적으론 정답일 때의 신경망의 출력의 자연로그를 계산한다. 실제 구현시 로그의 입력값으로 0이 들어가면 발산하는 문제를 방지하기 위해 $y_{k}$에 아주 작은 값을 더한다.

 

 

 

 

 

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

우리의 목표는 신경망의 정확도를 끌어내는 매개변수 값을 찾는 것이다. 그런데 왜 정확도라는 지표를 놔두고 손실 함수 값이라는 우회적인 방법을 택해야할까?

 

그 이유는 신경망 학습에서 미분의 역할에 있다. 미분을 통해 가중치 값을 아주 조금 변화시킬 때 손실 함수 값이 어떻게 변하는지를 알아내어 신경망을 학습한다. 정확도를 미분하면 안되는 이유는, 대부분의 장소에서 미분값이 0이기 때문이다. 생각해보면, 매개변수 값을 아주 조금 바꾼다고 해도 정확도(맞춘 개수$/$전체 개수)는 변하지 않을 가능성이 매우 높다. 변한다고 해도 33%에서 34%로 변화하듯, 불연속적이다.

 

그러나 손실 함수는 매개 변수 값이 조금 변하더라도 그에 민감하게 반응하여 연속적인 값으로 변화한다. 이는 신경망에서 계단 함수를 활성화 함수로 쓰면 안되는 맥락과 일치한다.

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

오차역전파법  (0) 2023.12.03
학습 알고리즘  (0) 2023.11.30
경사 하강법  (0) 2023.11.26
신경망  (0) 2023.11.25
퍼셉트론  (1) 2023.11.25
«   2024/05   »
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 29 30 31