통계, IT, AI

딥러닝: 화풍을 모방하기 (2) - 책 요약: 2. 앞먹임 신경망 본문

머신러닝

딥러닝: 화풍을 모방하기 (2) - 책 요약: 2. 앞먹임 신경망

Harold_Finch 2017. 1. 30. 14:47

2. 앞먹임 신경망: Feedforward Neural Network


2.1 유닛의 출력


- 앞먹임 신경망은 층(layer) 모양으로 늘어선 유닛이 인접한 층과 결합한 구조이다. 

- 정보가 입력 측에서 출력 측으로만 흐르기 때문에 Feedforward라는 이름이 붙여졌다. 

- Multi-layer perceptron이라고도 부르지만 최초 제안된 perceptron은 입출력 함수가 step 함수로만 제한되었기 때문에 약간 다르다.

- 유닛 한 개의 입출력의 예시는 아래와 같다.


그림 2-1. 유닛 한개의 입출력


- 이 유닛이 받는 총 입력은 u1=b1+w11x1+w12x2+w13x3+w14x4이다.

- b1은 bias라고 부르며 1에 곱해지는 가중치이다.

- wji[각주:1]는 입력에 대한 가중치이며 b1은 회귀분석에서 y 절편과 같은 역할이다.

- z1u1에 활성화 함수를 적용한 값으로 z1=f(u1)이다.


- 여러 출력을 갖는 신경망의 예시는 그림 2-2와 같다.


그림 2-2. 여러 출력을 갖는 단층 신경망


- 첫번째 층의 유닛의 수를 i=1,,I, 두번째 층의 유닛의 수를 j=1,,J라고 하자.

- 두번째 층의 입력과 출력을 다음과 같이 쓸 수 있다. 

uj=i=1Iwjixi+bj,zj=f(uj)


- 벡터와 행렬 표기법을 사용하면 다음과 같다.

u=Xw+b,z=f(u)

X=[x1xI]T,w=[w11wJ1w1IwJI],b=[b1bJ]T,u=[u1uJ]T,z=[f(u1)f(uJ)]T=[z1zJ]T



2.2 활성화 함수


- 유닛의 활성화 함수로는 통상적으로 단조증가하는 비선형함수가 사용된다.

- 가장 많이 사용되는 함수는 로지스틱 함수(logistic function)로 다음과 같은 형태를 갖는다.

f(u)=11+eu


- 로지스틱과 유사한 형태를 보이는 함수로 쌍곡선 접점함수도 있다. 

f(u)=tanh(u)=eueueu+eu


- 두 함수 모두 출력의 상하한선이 존재하며 그 사이의 값에 대해서 서서히 변화하는 특징을 갖는다.

- 최근에는 단순하고 계산량도 적어 학습이 빠른 램프함수를 더 많이 사용하며 그 형태는 다음과 같다.

f(u)=max(0,u)


- 그림 2-3은 자주 사용되는 활성화 함수이며 이를 그리기 위한 코드를 첨부한다. figure_2_3.R

그림 2-3. 자주 사용되는 활성화 함수

- 이외에도 항등함수, 소프트맥스, 맥스함수 등이 사용된다.


- 최근에는 퍼포먼스의 문제로 Prameric Rectifiers도 사용한다고 하였다. 이 함수는 다음과 같은 정의를 갖는다. 단, a는 0보다 작은 상수이다.

f(x)={xx0axx<0


- 여기에 덧붙여 BatchNormalization이라는 방법도 사용된다.


2.3 다층 신경망


- 이상의 내용을 임의의 L개의 층수를 갖는 신경망으로 일반화 할 수 있다. 

- 즉, 층 l+1의 출력 z(l+1)은 바로 이전 층l의 출력 z(l)로부터 다음과 같이 계산할 수 있다. 단, 윗첨자는 해당 층을 나타낸다.

u(l+1)=z(l)w(l+1)+b(l+1),z(l+1)=f(u(l+1))


-z(1)=X이며 최종 층의 출력 yz(L)과 같다. 활성화 함수 f는 각 층 그리고 각 유닛마다 서로 다른 것을 사용할 수도 있다.

- 앞먹임 신경망은 주어진 X에 대하여 입력층에서 출력층 방향으로 앞선 계산을 반복하는 함수이다.

- 이 함수를 결정하는 것은 w(l)b(l)이며 이들을 파라미터라고 부른다. 

- 파라미터들을 간결하게 w라고 표현하며 함수는 y(x;w)라고 표현한다.



2.4 출력층의 설계와 오차함수


2.4.1 학습의 얼개


- 하나의 입력 xi에 대하여 바람직한 출력을 di라고 하자. di는 스칼라일 수도 있고 벡터일 수도 있다. 

- 학습이란 모든 입출력 쌍에 대하여 y(xi;w)가 최대한 di에 가까워지도록 w를 조절하는 과정이다. 

- 이때 y(xi;w)di에 가까운 정도를 측정해야 하는데 이 척도를 오차함수(error function)라고 부른다.


2.4.2 회귀


- 출력이 연속적인 값을 가지는 경우 파라미터를 찾는 문제를 회귀라고 한다. 

- 출력과 같은 치역을 갖는 함수를 출력층의 활성화 함수로 고르는 것이 좋다. 

- 회귀 문제의 경우 오차 함수 E(w)는 아래와 같다.

E(w)=12i=1Ny(xi;w)di2


2.4.3 이진 분류


- x에 따라 출력이 두 종류(d[0,1])인 문제를 이진 분류라고 한다. 

- x가 정해져 있을 때 d=1이 되는 사후확률 p(d=1|x)을 추정한다.

- 확률의 범위는 (0,1)이므로 z(L)은 로지스틱 함수를 사용하여 구한다.

- d가 binary distribution을 따르므로 w의 데이터에 대한 우도 함수(likelihood function)을 다음과 같다.

L(w)=i=1Np(di|xi;w)=i=1N{y(xi;w)}di{1y(xi;w)}1di


- 이 우도에 로그를 취하고 최소화를 위하여 부호를 바꾼 후 오차함수로 한다.

E(w)=i=1N[dilog{y(xi;w)}+(1di)log{1y(xi;w)}]


2.4.4 다클래스 분류


- x에 따라 출력이 두 종류 이상인 문제를 이진 분류라고 한다. 

- x가 정해져 있을 때 d=k이 되는 사후확률 p(d=k|x)을 추정한다.

- z(L)은 소프트맥스 함수를 사용하여 구한다.

- 즉, 이 출력층의 k번째 유닛의 출력은 다음과 같다. 

yk=zk(L)=exp(uk(L))j=1Kexp(uj(L))

- 정의에 의하여 출력의 합은 항상 1이 된다. 

- d가 categorical distribution을 따르므로 이진 분류와 유사하게 오차함수를 정의할 수 있으며 이 함수를 교차 엔트로피(corss entropy)라고 부른다.

E(w)=i=1Nk=1Kdiklog{yk(xi;w)}


- 단, dik는 i번째 sample이 k class를 가질때 0 그렇지 않으면 1의 값을 갖는다.

  1. 전층의 i번째 출력이 다음 층의 j번째 입력으로 전달될 때의 가중치 [본문으로]