Programmer Application Note

2017년 7월 26일 수요일

신경망의 추론과정

오전 1:01 Posted by PAN.SPOT , , No comments
1. 신경망의 순전파
   입력층에서 들어오는 데이터는 각각의 가충지를 곱하고 바이어스를 더하여 은닉층의 노드로 전달되며, 전달된 값은 활성함수를 통해 출력된다. 이를 수치로 나타내면 다음과 같다.
  가중합 : v = w1x2 + w2x2 + .... + b (바이어스)  = wx + b
  출력 :  y = φ(v) = φ(wx + b)      φ = 활성함수



2. 활성함수
    뇌의 뉴런은 입력값이 바로 다른 뉴런으로 전달 되지 않고 어느 분계값에 도달 해야지만 출력값을 생성한다. 입력 신호를 받아 특정 분계점을 넘어서는 경우 출력 신호를 생성 해주는 함수는 활성 함수라 한다. 가장 간단하는 계단 함수가 있으며 계단 함수보다 훨씬 부드러운 S자 형태를 가지는 시그모이드 함수가 활성 함수로 많이 사용되며 출력이 (0~1)로 제한된다. 현시점에서는 시그모이드 함수보다 ReLU 함수가  현업에서 많이 사용된다.




3. 출력층에서의 활성함수
  일반적으로 출력층의 활성함수는 다르게 사용되는데 회귀문제는 항등함수(그대로 출력) 이진분류에서는 시그모이드 함수 다범주분류에서는 소프트맥스 함수를 사용 하는 것이 일반적이며, 소프트맥스 함수의 경우 출력값의 총합이 1인 함수로 출력값의 확률을 계산할때 용이 하다. 다만 지수 계산이 필요하므로 학습에서만 사용되며, 추론 과정에서는 비용이 많이 들지 않는 활성 함수를 사용하는 경우가 많다.

4. 행렬을 이용한 가중합 계산 방법
   신경망 관련서적에는 행렬로 계산 되는 다양한 방법들이 있는데 대중적으로 많이 쓰이는 방법을 사용 하도록 한다.
   
일반적으로 행렬을 표기 할 때 전치행렬 성질을 이용하여 신경망의 좌측 입력 부분을 행렬의 뒤에 연산 한다. 그러므로 입력값은 1차원 벡터를 2차원의 행렬로 변환 후 전치행렬을 이용하여 행과 열을 서로 바꿔야 한다.
전치행렬 성질 : (XW)^T = W^TX^T

5. 배치처리
   일반적으로 입력데이터를 하나씩 계산 하는것 보다 한꺼번에 많은 데이터를 하나로 묶어서 처리하는것이 속도면에서 훨씬 빠르다. 컴퓨터의 수치 계사는 큰 배열을 효율적으로 처리 할 수 있으며 데이터를 읽는 횟수를 줄여 속도를 향상 시킬 수 있다. 이를 행렬로 보면 아래와 같이 가능 하다.
 
해당 행렬은 784개(28x28)의 픽셀가진 이미지를 100장씩 묶어 처리를 하면 출력층의 노드가 10개일 때 100X10의 행렬로 출력 된다.



참고:
딥러닝첫걸음 - 머신러닝에서 컨벌루션 신경망까지 / 김성필 | 한빛미디어
밑바닥부터 시작하는 딥러닝 - 파이썬으로 익히는 딥러닝 이론과구현 / 사이토고키 | 한빛미디어
신경망첫걸음 - 수포자도 이해하는 신경망 동작 원리와 딥러닝 기초 / 타리크라시드 | 한빛 미디어


0 개의 댓글:

댓글 쓰기