신경망 이론

패턴인식 & 기계학습 2014. 11. 4. 17:28

1. 신경망의 분류

현재 다양한 신경망 모델들이 제안되고 있지만, 다음과 같이 몇가지 기준에 따라 신경망을 분류할 수 있다.

    1. 계층수 : 단층 구조, 다층 구조

    2. 출력 형태 : 순방향 구조, 순환 (궤환) 구조

    3. 데이터 유형 : 디지털, 아날로그

    4. 학습 방법 : 지도 학습, 자율학습, 경쟁식

    5. 활성화 함수 : 단극성, 양극성

신경망은 일반적으로 계층의 수에 따라 크게 단층 신경망과 다층 신경망의 2 가지로 구분된다.

단층 (single-layer) 신경망은 가장 단순한 구조로서 그림 1 에 도시한 바와 같이 외부 입력을 받아들이는 입력층 (input layer) X 와 신경망에서 처리된 결과를 출력하는 출력층 (output layer) Y 로 구성된다.

단층 신경망의 출력  은 다음과 같다.

여기서,  는 입력층 뉴런  와 출력층 뉴런  간의 연결강도이다.

다층 (multi-layer) 신경망은 여러 계층으로 구성된 신경망 구조이다. 일반적으로 가장 널리 사용되는 것은 3 계층 신경망 구조이며, 그 구조는 그림 2 에 도시한 바와 같다. 3 계층 신경망은 외부 입력을 받아들이는 입력층, 처리된 결과가 출력되는 출력층, 입력층과 출력층 사이에 위치하여 외부로 나타나지 않는 은닉층 (hidden layer) 의 3 계층으로 구성되어 있다.

그림 1  단층 신경망의 구조

그림 2  다층 신경망의 구조

3 계층 신경망 구조에서는 입력층의 입력에 따라 은닉층의 출력이 나오며, 은닉층의 출력은 다시 출력층에 입력되어 최종 출력이 나오게 된다.

은닉층의 출력  는 단층 신경망의 경우와 마찬가지로 다음과 같이 구할 수 있다.

여기서,  는 입력층 뉴런  와 은닉층 뉴런  간의 연결강도이다.

따라서, 최종 출력  은 다음과 같다.

여기서,  는 은닉층 뉴런  와 출력층 뉴런  간의 연결강도이다.

일반적으로 3 계층 신경망 구조가 널리 사용되지만, 특수한 응용 목적에 따라서는 2 개 또는 3 개의 은닉층을 사용하는 4 계층 또는 5 계층의 다층 신경망 구조도 이동되고 있다.

단층 신경망은 그림 3 (a) 에 도시한 바와 같이 AND, OR 연산 등 선형 분리 가능한 응용에만 적용할 수 있으나, 다층 신경망은 (b) 에 도시한 바와 같이 임의 유형의 분류가 가능하므로 보다 다양하게 응용될 수 있다.

또한, 신경망의 출력 형태에 따라서는 순방향 신경망 구조와 순환 신경망 구조의 2 가지로 구분할 수 있다.

그림 3  신경망 구조에 따른 기능

순방향 신경망 (forward network) 구조는 그림 4 (a) 에 도시한 바와 같이 신경망의 출력은 단지 입력에만 관련된다. 예를 들어, 그림 4 (b) 와 같은 순방향 구조의 단층 신경망의 출력  은 다음과 같다.

순환 신경망 (recurrent network) 구조는 그림 5 (a) 에 도시한 바와 같이 신경망의 출력이 다시 입력측에 궤환되어 새로운 출력이 나오는 형태이다. 예를 들어, 그림 5 (b) 와 같은 순환 구조의 단층 신경망의  번째 출력  은 다음과 같이 구할 수 있다.

    첫 번째 출력 :



       번째 출력 :

그림 4  순방향 신경망

그림 5  순환 신경망

또한, 신경망에 입력되는 데이터의 유형에 따라서는 디지털 신경망과 아날로그 신경망으로 구분된다. 학습 방법에 따라서는 지도학습과 자율학습으로 구분되며, 활성화 함수에 따라서는 단극성 및 양극성으로 구분된다. 활성화 함수와 학습 방법에 대해서는 활성화 함수와 신경망의 학습에서 자세히 언급하기로 한다.

그림 6 은 입력 데이터 및 학습 방법에 따라 신경망을 분류한 것이고, 표 1 은 다양한 응용분야에 따라 주로 활용되는 신경망 모델을 분류한 것이다.

그림 6  입력 데이터 및 학습 방법에 따른 신경망의 분류

표 1  응용 분야에 따른 신경망 모델의 분류

응        용

신경망 유형

패턴 분류

    ADALINE

    ART

    Boltzmann Machine

    Feature Map

    Hamming Net

    Multilayer Perceptron

음성 인식

    Multilayer Perceptron

    Silicon Cochlea

    Time-Delay Net

    Viterbi Net

영상 인식

    Cellular Automata

    Connectionist Model

    Neocognitron

    Silicon Retina

로봇 제어

    CMAC Cerebellum Model

    Multilayer Perceptron

    Topographic Map

연상 메모리

    Hopfield Model

    Bidirectional Associative Memory

신호 처리

    MADALINE

    Multilayer Perceptron

최적화 및 근사계산

    Boltzmann Machine

    Cellular Automata

    Counterpropagation Net

    Hopfield Model

    Winner-Take-All Net

2. 벡터

신경망에 있어서는 입출력이 벡터 형태이고, 연결강도가 벡터 또는 행렬형태이므로 벡터 및 행렬의 연산이 필수적으로 요구된다. 본 절에서는 먼저 신경망 이론 전개에 필요한 벡터의 특성에 대하여 알아 본다.

우리가 일상적으로 접하는 시간, 온도, 길이, 질량 등 크기만으로 표현할 수 있는 물리량은 스칼라이다. 이에 비하여 힘, 변위, 속도 등 크기와 방향으로 표현하여야 하는 물리량을 벡터 (vector) 라 한다. 이와 같이 2 가지 요소에 의해 표현될 수 있는 벡터는 그림 1 에 도시한 바와 같이 2 차원 공간에서 시점과 종점을 연결하는 방향성 선분으로써 기하학적으로 표현할 수 있으며,   로 표기한다.

마찬가지로, n 개의 요소에 의해서 특성이 결정되는 벡터  는 다음과 같이 표기할 수 있다.

                                                                       (1)

여기서,  을 벡터  의 구성 요소 (component) 라 하며, 구성 요소의 개수 n 을 벡터의 차원 (dimension) 이라고 한다.

그림 1  벡터의 기하학적 표현

또한, 식 (1) 과 같이 표현한 벡터를 열벡터 (row vector) 라 하며, 식 (2) 와 같이 표현한 벡터를 행벡터 (column vector) 라고 한다.

                                                                                      (2)

n 차원의 두 벡터  에 대하여 다음의 연산이 성립한다.

또한,  를 벡터라 하고,  을 스칼라라 하면 다음과 같은 벡터 연산이 성립한다.

    1. x + y = y + x

    2. (x + y) + z = x + (y + z)

    3. x + 0 = x

    4. x + (-x) = 0

    5. ( x) = () x

    6. (x + y) = x + x

    7. () x = x + x

    8. 1 x = x

  예제 1  

두 벡터 x = [1   2], y = [3   4] 가 있다. 2 x + y 는?

2 x = 2[1   2] = [2   4] 이므로

2 x + y = [2   4] + [3   4] = [5   8]

한편, n 차원 벡터 x 의 길이 (norm),  는 다음과 같이 구할 수 있다.

                                                                  (3)

  예제 2  

x = [1  2  1] 의 norm 을 구하여라.

x 의 norm 은 식 (3) 에 의하여,

이제, 벡터의 선형 독립성 (linearly independence) 에 대하여 알아 본다. 다음과 같이 벡터  들의 선형 결합인 벡터  가 있을 때

여기서,  는 스칼라이다. 만약,  를 만족하는 모두 0 이 아닌  존재하면  의 벡터 집합을 선형 종속이라하며, 그렇지 않으면 선형 독립이라 한다.

  예제 3  

다음 벡터는 선형 독립인가?

(a) 

(b) 

(a) 
      이므로 선형 독립이 아니다.

(b)  을 만족하는 모두 0 이 아닌 어떠한  도 존재하지 않으므로 선형 독립이다.

일반적으로  개의 입력을 받아 하나의 출력이 나가는 신경망의 경우에는 입력뿐만 아니라 연결강도도 역시 벡터 형태가 되므로 출력 뉴런의 NET 값을 구하기 위해서는 벡터의 곱셈이 요구된다.

 차원의 두 벡터  의 내적 (inner product) 은 다음과 같이 정의되며, 그 결과는 스칼라이다.

                                                                 (4)

  예제 4  

x = [1   2   3], y = [1   0.5   1] 의 내적은?

특히, 연상 메모리의 용량에는 저장되는 패턴 벡터들간의 직교성이 상당한 영향을 미치므로 벡터의 직교성에 대하여도 알아 둘 필요가 있다.

만약, 식 (4) 와 같이 구한 내적이  이면 두 벡터  와  는 서로 직교 (orthogonal) 한다고 하며,  개의 0 이 아닌 벡터  이 서로 직교하면 이 벡터들의 집합은 선형 독립이다.

  예제 5  

다음과 같은 두 벡터  와  는 서로 직교하는가?

x = [1   0]           y = [0   1]

 와  의 내적은 식 (4) 에 의하여

따라서, 내적이 0 이므로 벡터  와  는 서로 직교한다.

 

3. 매트릭스

단층 구조의 신경망에서 출력층의 뉴런이 다수이거나 다층 구조의 신경망에서 은닉층 및 출력층의 뉴런이 다수일 경우에는 연결강도가 행렬 형태가 되므로 행렬의 연산이 불가피하다. 본 절에서는 신경망 이론 전개에 필요한 행렬 (matrix) 의 특성에 대하여 알아본다.

숫자들의 사각형 배열을 행렬이라 정의하며, 배열내의 숫자들을 원소 (element) 라 한다. 일반적으로  개의 열 (row) 과  개의 행 (column) 으로 구성된 배열을  행렬라 한다.

                                                                           (1)

 행렬 W 에서  번째 열과  번째 행은 다음과 같으므로 열벡터는  행렬 , 행벡터는  행렬  로 간주할 수 있다.

한편, 식 (1) 에서  이면 정방형 (square) 행렬이라 한다. 행렬의 행과 열의 원소를 교환하여 생성된 것을 치환 (transposition) 행렬라 하고,  라 표현하며, 만약,  이면 대칭 (symmetric) 행렬이라 한다.

 행렬 X 와  행렬 W 를 곱하면 그 결과는 다음과 같이  행렬이 된다.

                                      ▲  ▲    =    ▲  ▲

 

 

 

 

 

 

 

 

 

 

 

 

XW 의  번째 원소는 다음과 같다.

                                                                       (2)

  예제 1  

다음 두 행렬을 곱하라.

(a) 

(b) 

(a) 

(b)

                                        ▲     ≠     ▲

 

 

 

 

 

 

 

 

 

 

 

 

(b) 의 경우에는 행렬 X 와 W 는 서로 곱할 수 없으나  를 취하면 곱할 수 있다.

  

                                      ▲  ▲    =    ▲  ▲

 

 

 

 

 

 

 

 

 

 

 

 

또한, 연상 메모리에서 저장 용량과 밀접한 관계가 있는 고유벡터 (eigenvector) 및 고유값 (eigenvalue) 에 대하여도 알아둘 필요가 있다.

만약,  행렬 W 에 대하여 다음 조건을 만족하는 0 이 아닌 벡터  가 존재할 때  를 고유벡터라 하며, 스칼라 λ 를 행렬 W 의 고유값이라 한다.

                                                                                             (3)

  예제 2  

행렬  의 고유값은?

식 (3) 에 의하여,

λ 가 고유값이면 0 이 아닌 해를 가져야 하므로,

즉, 

따라서, W 의 고유값은  이다.

 

4. 활성화 함수

인공 신경망 모델에서 뉴런의 주요 기능은 입력과 연결 강도의 가중합 NET 를 구한 다음 활성화 함수에 의해 출력을 내보내는 것이다. 따라서, 어떤 활성화 함수를 선택하느냐에 따라 뉴런의 출력이 달라질 수도 있다.

활성화 함수 (activation function) 는 단조 증가하는 함수이어야 하며, 일반적으로 다음과 같이 분류할 수 있다. 이들 분류 방법은 서로 연관되어 있기 때문에 엄밀히 구분하여 설명하기 보다는 독자의 이해를 돕기 위하여 일반적으로 사용되는 함수를 위주로 기술한다.

    1. 단극성 (unipolar) / 양극성 (bipolar) 함수

    2. 선형 (linear) / 비선형 (nonlinear) 함수

    3. 연속 (continuous) / 이진 (binary) 함수

4.1  항등 함수

항등 함수 (identity function) 는 그림 1 에 도시한 바와 같이 양극성이며, 선형 연속 함수이다. 항등 함수를 수학적으로 표현하면 다음과 같다. 따라서, 항등 함수를 활성화 함수로 사용하면 뉴런의 NET 즉, 입력의 가중합이 그대로 출력된다.

                                                                                     (1)

그림 1  항등함수

  예제 1  

다음과 같은 신경망 모델에서 그림 1 과 같은 항등 함수를 활성화 함수로 사용할 경우, 뉴런의 출력은?

입력 벡터 , 연결 강도  이므로, 뉴런의 입력 가중합 NET 는 다음과 같다.

NET = 

따라서, 뉴런의 출력은 식 (1) 에 의해,

 

4.2  경사 함수

경사 함수 (ramp function) 는 그림 2 에 도시한 바와 같이 단극성이며, 선형 연속 함수이다. 경사 함수를 수학적으로 표현하면 다음과 같다.

                                                            (2)

따라서, 경사 함수를 활성화 함수로 사용하면 NET 값이 0 보다 적을 경우에는 뉴런의 출력이 0 이지만, NET 값이 0 보다 크거나 같은 경우에는 항등 함수와 마찬가지로 NET 값이 그대로 출력된다.

  예제 2  

다음과 같은 신경망 모델에서 그림 2 와 같은 경사 함수를 활성화 함수로 사용할 경우, 뉴런의 출력은?

입력 벡터 , 연결 강도  이므로, 뉴런의 입력 가중합 NET 는 다음과 같다.

NET = 

따라서, 뉴런의 출력은 식 (2) 에 의해,

 

4.3  계단 함수

계단 함수 (step function) 는 그림 3 에 도시한 바와 같이 단극성 또는 양극성 이진 함수이며, 디지털 형태의 출력이 요구되는 경우에 주로 사용된다.

그림 3 (a) 는 단극성 이진 계단 함수이며, 수학적으로 표현하면 다음과 같다.

                                                            (3)

여기서, T 는 임계치이다. 식 (3) 과 같은 단극성 계단 함수를 활성화 함수로 사용하면 NET 값이 임계치보다 적을 경우에는 뉴런의 출력이 0 이며, NET 값이 임계치와 같거나 큰 경우에는 뉴런의 출력이 1 이다.

그림 3  계단 함수

그림 3 (b) 는 양극성 이진 계단 함수이며, 수학적으로 표현하면 다음과 같다.

                                                            (4)

여기서, T 는 임계치이다. 식 (4) 와 같은 양극성 계단 함수를 활성화 함수로 사용하면 NET 값이 임계치보다 적을 경우에는 뉴런의 출력이 -1 이며, NET 값이 임계치와 같거나 큰 경우에는 뉴런의 출력은 +1 이다.

  예제 3  

다음과 같은 신경망 모델에서 그림 3 (a) 와 같은 단극성 계단 함수를 활성화 함수로 사용할 경우, 뉴런의 출력은? 단, 임계치는 2 이다.

 

입력 벡터 , 연결 강도  이므로,

NET = 

따라서, 뉴런의 출력은 식 (3) 에 의해,

이 결과를 예제 1 과 비교해 보면 동일한 신경망 구조이지만 사용하는 활성화 함수에 따라 뉴런의 출력이 달라짐을 알 수 있다.

 

4.4  시그모이드 함수

시그모이드 함수 (sigmoid function) 는 그림 4 에 도시한 바와 같이 단극성 또는 양극성 비선형 연속 함수이며, 신경망 모델의 활성화 함수로써 가장 널리 사용되고 있다. 시그모이드 함수는 형태가 S 자 모양이므로 S 형 곡선이라고도 한다.

그림 4 (a) 는 단극성 시그모이드 함수이며, 수학적으로 표현하면 다음과 같다.

                                                                  (5)

여기서, λ 는 경사도이다.

식 (5) 와 같은 단극성 시그모이드 함수를 활성화 함수로 사용하면 뉴런의 출력은 0 에서 1 사이의 값이 되며, 만약 NET=0 이면 뉴런의 출력은 1 / 2 이 된다. 경사도 λ 가 커지면  값은 점점  축에 접근하게 되고, 만약 λ → ∞ 이면 시그모이드 함수는 계단 함수와 동일한 형태가 된다.

시그모이드 함수는 아날로그 출력이 나오는 장점은 있으나, exp(-λNET) 의 지수 함수 연산을 하여야 하는 문제점이 있다. 이 점을 고려하여 컴퓨터의 계산 시간을 감소시키고 오버플로우 또는 언더플로우의 방지를 위하여 일반적을 경사도 λ = 1 값을 사용한다.

시그모이드 함수의 또 다른 특징은 연속함수이므로 미분 가능하여 델타 학습 방법 등에의 활용이 가능하다는 점이다.

λ = 1 인 경우, 단극성 시그모이드 함수와 그 미분은 식 (6) 과 같다.

                                                                  (6)

그림 4 (b) 는 양극성 시그모이드 함수이며, 수학적으로 표현하면 다음과 같다.

                                                                  (7)

양극성 시그모이드 함수도 역시 단극성 시그모이드 함수와 유사한 특성을 가지고 있지만, 식 (7) 과 같은 양극성 시그모이드 함수를 활성화 함수로 사용하면 뉴런의 출력은 -1 에서 +1 사이의 값이 되며, 만약 NET = 0 이면 뉴런의 출력은 0 이다. 양극성 시그모이드 함수의 미분은 다음과 같다.

                                                        (8)

시그모이드 함수와 유사한 형태로서 다음과 같은 tanh(x) 함수를 사용하는 경우도 있다.

                                                     (9)

그림 4 시그모이드 함수

  예제 4  

다음과 같은 신경망 모델에서 단극성 시그모이드 함수를 활성화 함수로 사용할 경우, 뉴런의 출력은? 단, 경사도는 1 이다.

 

입력 벡터 , 연결 강도  이므로,

NET = 

따라서, 뉴런의 출력은 식 (6) 에 의해,

이 결과에서 보는 바와 같이 시그모이드 함수를 활성화 함수로 사용하면 뉴런의 출력이 아날로그 형태임을 알 수 있다.

 

5. 신경망의 학습

5.1  학습방법의 분류

인간이 어떤 일을 하기 위해서는 반복 학습이 이루어져야 하듯이 뉴로 컴퓨터도 역시 응용 분야에 활용하기 위해서는 신경망의 학습이 선행되어야 한다. 신경망에서의 학습이라 함은 특정한 응용 목적에 적합하도록 뉴런간의 연결강도를 적응시키는 과정이다. 신경망의 학습 방법은 다음과 같이 크게 3 가지로 구분할 수 있다.

    1. 지도 학습 (supervised learning)

    2. 자율 학습 (unsupervised learning)

    3. 경쟁식 학습 (competitive learning)

지도 학습 방법은 그림 1 (a) 에 도시한 바와 같이 신경망을 학습시키는데 있어서 반드시 입력 x 와 원하는 목표치 d 의 쌍 (x, d) 가 필요하며, 이를 학습 패턴쌍 (training pattern pair) 이라고 한다. 일반적인 학습 절차는 다음과 같다.

    1 단계 : 응용 목적에 적합한 신경망 구조를 설계한다.

    2 단계 : 연결강도를 초기화한다.

    3 단계 : 학습 패턴쌍 (x, d) 를 입력하여 신경망의 출력 y 를 구한다.

    4 단계 : 출력 y 와 목표치 d 를 비교하여 그 오차를 산출한다.

    5 단계 : 오차를 학습 신호 발생기에 입력하여 연결강도의 변화량 △w 를 계산한다.

    6 단계 : 연결강도를 △w 만큼 변경한다.

    7 단계 : 변경된 연결강도 (w + △w) 에 대하여 3 단계 ~ 6 단계를 반복한다.

    8 단계 : 더 이상 연결강도가 변하지 않으면 학습을 종료한다.

자율 학습 방법은 그림 1 (b) 에 도시한 바와 같이 신경망을 학습시키는데 목표치가 필요없는 방법이며, 일반적인 학습 절차는 다음과 같다.

    1 단계 : 응용 목적에 적합한 신경망 구조를 설계한다.

    2 단계 : 연결강도를 초기화한다.

    3 단계 : 학습 패턴 x 를 입력하여 신경망의 출력 y 를 구한다.

    4 단계 : 출력 y 를 학습 신호 발생기에 입력하여 연결강도의 변화량 △w 를 계산한다.

    5 단계 : 연결강도를 △w 만큼 변경한다.

    6 단계 : 변경된 연결강도  (w + △w) 에 대하여 3 단계 ~ 5 단계를 반복한다.

    7 단계 : 더 이상 연결강도가 변하지 않으면 학습을 종료한다.

경쟁식 학습 방법은 그림 1 (a) 의 지도 학습 방법과 동일한 절차이지만, 각 단계에서 전체 연결강도를 변경시키지 않고 단지 특정 부분의 연결강도만을 변화시키는 방법이다. 이 방법은 연결강도를 변화시키는 과정이 축소되므로 신경망의 학습에 소요되는 시간을 상당히 감소시킬 수 있다.

그림 1  신경망의 학습 방법

이미 기술한 바와 같이 신경망의 학습은 연결강도 w 를 변화시키는 과정이며, 일반적으로 연결강도의 변화량 △w 에는 그림 2 에 도시한 바와 같이 학습 신호 (learning signal) , 학습 입력 패턴 (training input pattern) x, 학습률 (learning rate) α 가 관련되므로  단계 학습과정에서의 연결강도 변화량  를 다음과 같이 표현할 수 있다.

                                                                           (1)

따라서,  단계 학습과정에서의 연결강도  은 다음과 같다.

                                                                                (2)

그림 2  연결강도 변경 매카니즘

5.2  Hebb 학습법

Hebb 학습법은 1949 년에 D. Hebb 이 처음 제안하였고, 1988 년 T. McClelland 와 D. Rumelhart 에 의해 확장된 학습 방법으로 순방향 신경망에만 적용될 수 있으며, 이진 또는 연속 활성화 함수가 사용될 수 있다. 초기 연결 강도는 모두 0 에 가까운 작은 값으로 하며, 그림 1 에 도시한 바와 같이 학습 신호로서 출력을 사용하는 점이 특징이다. 따라서, 학습 신호  은 다음과 같이 표현할 수 있다.

                                                                         (1)

 단계에서의 연결강도 변화량  는 신경망의 학습의 식 (1) 에 의해,

                                                                        (2)

따라서,  단계에서의 연결강도  은 다음과 같다.

                                                                         (3)

그림 1  Hebb 학습법

  예제 1  

초기 연결강도가  인 신경망을 Hebb 학습법으로 학습시킬 때 연결강도의 변화 과정은? 단, 학습률  이다.

학습 입력 : 

(a) 활성화 함수의 그림 3 (a) 의 계단 함수를 활성화 함수 (임계치 T = 0) 로 사용하는 경우

(b) 활성화 함수의 그림 4 (a) 의 시그모이드 함수를 활성화 함수로 사용하는 경우.

(a) 1 단계 : 입력  에 대한 뉴런의  값은,

    학습 신호  은 식 (1), 활성화 함수에서 식 (3) 에 의해,

    연결강도의 변화량  은 식 (2) 에 의해,

    따라서,  는 식 (3) 에 의해,

    2 단계 : 입력  에 대하여 1 단계와 마찬가지로  을 구할 수 있다.

    따라서,  은 다음과 같다.

    3 단계 : 입력  에 대하여도 동일하게  를 구할 수 있다.

(b) 1 단계 : 입력  에 대한 뉴런의  값은,

    학습 신호  은 식 (1), 활성화 함수에서 식 (6) 에 의해,

    연결강도의 변화량  은 식 (2) 에 의해,

    따라서,  는 식 (3) 에 의해,

2 단계 : 입력  에 대하여 1 단계와 마찬가지로  을 구할 수 있다.

    따라서,  은 다음과 같다.

3 단계 : 입력  에 대하여도 동일하게  를 구할 수 있다.

5.3  퍼셉트론 학습법

퍼셉트론 학습법 (Perceptron Learning) 은 1958년 F. Rosenblatt 가 제안한 학습 방법으로 이진 또는 연속 활성화 함수가 사용될 수 있다. 초기 연결강도는 임의의 값으로 할 수 있으며, 그림 1 에 도시한 바와 같이 학습 신호로써 목표치 d 와 실제 출력 y 의 차이 즉, 오차를 사용하는 점이 특징이다. 따라서, 학습신호  은 다음과 같이 구할 수 있다.

                                                                                              (1)

k 단계에서의 연결강도 변화량  는 신경망의 학습에서 식 (1) 에 의해,

                                                                                (2)

따라서,  단계의 연결강도  은 다음과 같다.

                                                                      (3)

한편, 퍼셉트론 학습법에서는 일반적으로 활성화 함수의 그림 3 (b) 와 같은 양극성 계단 함수를 주로 사용하므로, 식 (2) 는 다음과 같이 간략화될 수 있다.

                                                                  (4)

식 (4)에서 알 수 있듯이 만약, 목표치가 +1 일 때 실제 출력이 -1 이면,  만큼 연결강도를 감소시켜서 뉴런의 입력 가중합이 적어지게 함으로써 원하는 결과를 얻도록 하고 있다.

그림 1  퍼셉트론 학습법

  예제 1  

Hebb 학습법의 예제 1 과 동일한 조건의 신경망을 퍼셉트론 학습법으로 학습시킬 때 연결강도의 변화 과정은? 단,  이 입력될 경우에는 목표치가 +1,  와  가 입력될 경우에는 목표치가 -1 이 되도록 한다. 또한, 활성화 함수로 그림 3 (b) 의 양극성 계단 함수 (임계치 T = 0) 를 사용한다.

1 단계 : 입력  에 대한 뉴런의   과  값은,

    학습 신호  은 식 (1) 에 의해,

    따라서,  과  는 식 (2), (3) 에 의해,

    입력  에 대한 출력  과 목표치  이 동일하므로 연결강도를 변화시키지 않음을 알 수 있다.

2 단계 : 입력  에 대하여 1 단계와 마찬가지로  를 구할 수 있다.

    따라서,  은 다음과 같다.

    3 단계 : 입력  에 대하여도 동일하게  를 구할 수 있다.

5.4  델타 학습법

델타 학습법 (Delta Learning) 은 1986 년 T. McClelland 와 D. Rumelhart 가 제안한 학습 방법으로 연속 활성화 함수만을 사용한다. 그림 1 에 도시한 바와 같이 학습 신호로서 목표치 d 와 실제 출력 y 의 차이 뿐만 아니라 활성화 함수의 미분값이 사용되는 점이 특징이다. 따라서, 학습 신호  은 다음과 같이 구할 수 있다.

                                                                                 (1)

 단계에서의 연결강도 변화량  는 신경망의 학습의 식 (1) 에 의해

                                                          (2)

따라서,  단계의 연결강도  은 다음과 같다.

                                                           (3)

그림 1  델타 학습법

  예제 1  

퍼셉트론 학습법의 예제 1 과 동일한 조건의 신경망을 델타 학습법으로 학습시킬 때 연결강도의 변화 과정은? 단, 활성화 함수로는 활성화 함수의 그림 4 (a) 의 단극성 시그모이드 함수 을 사용한다.

1 단계 : 입력  에 대한 뉴런의   과  값은,

    식 활성화 함수의 식 (6) 에 의해  는,

    학습 신호  은 식 (1) 에 의해,

    연결강도 변화량  는 식 (2) 에 의해,

2 단계 : 입력  에 대하여 1 단계와 마찬가지로  ,  를 구할 수 있다.

    따라서, 식 (2), (3) 에 의해  은 다음과 같다.

    3 단계 : 입력  에 대하여도 동일하게  를 구할 수 있다.

 

5.5  LMS 학습법

LMS (Least Mean Square) 학습법은 1962 년 B. Widrow 가 제안한 방법으로 항등 함수를 활성화 함수로 사용한다. 초기 연결강도는 임의의 값으로 하며, 그림 1 에 도시한 바와 같이 학습 신호로써 목표치 d 와 실제 출력 y 의 차이가 사용되는 점이 특징이다. 따라서, 학습 신호  은 다음과 같이 표현할 수 있다.

                                                                                   (1)

k 단계에서의 연결강도 변화량  는 신경망의 학습의 식 (1) 에 의해

                                                                             (2)

따라서,  단계의 연결강도  은 다음과 같다.

                                                                   (3)

그림 1  LMS 학습법

  예제 1  

Hebb 학습법의 예제 1 과 동일한 조건의 신경망을 LMS 학습법으로 학습시킬 때 연결강도의 변화 과정은? 단, 항등 함수를 활성화 함수로 사용한다.

1 단계 : 입력  에 대한 뉴런의   과  값은,

    학습 신호  은 식 (1) 에 의해,

     과  는 식 (2), (3) 에 의해,

2 단계 : 입력  에 대하여 1 단계와 마찬가지로  ,  를 구할 수 있다.

    따라서,  는 식 (2), (3) 에 의해,

    3 단계 : 입력  에 대하여도 동일하게  를 구할 수 있다.

 

5.6  경쟁식 학습법

주로 사용되는 경쟁식 학습법 (Competitive Learning) 에는 1987 년 R. Hecht-Nielsen 이 제안한 instar 학습법과 1974 년 S. Grossberg 가 제안한 outstar 학습법 등이 있다.

instar 학습법은 경쟁식 신경망에 사용되며, 그림 1 (a) 에 도시한 바와 같이 학습 과정에서 winner 뉴런  와 관련된 연결강도  만을 변경하는 학습 방법이며, 연결강도의 변화량  는 다음과 같다.

반면에, outstar 학습법은 경쟁식 신경망에 사용되며, 그림 1 (b) 에 도시한 바와 같이 학습 과정에서 winner 뉴런  와 관련된 연결강도   만을 변경하는 학습 방법이며, 연결강도의 변화량  는 다음과 같다.

                                                                                   (1)

그림 1  경쟁식 학습법

지금까지 언급한 여러 가지 학습 방법의 특징을 표 1 에 비교하였다.

표 1  학습법의 특징 비교

학습법

초기 연결강도

연결강도 변화량

Hebb

적은 값

퍼셉트론

임의 값

델타

임의 값

LMS

임의 값

instar

임의 값

outstar

0

 

6. 표기법

본 절에서는 독자들의 이해를 돕기 위하여 신경망 모델에 일반적으로 사용되는 기호들을 정의하였다.

                

               

               

              

             

             

            

            

        

      

                

    입력층의  번째 뉴런

    입력 벡터

    출력층의  번째 뉴런 또는 출력

    출력층의  번째 뉴런의  단계에서의 출력

    출력 벡터

    은닉층의  번째 뉴런

    입력층의  번째 뉴런과 은닉층의  번째 뉴런간의 연결강도

    입력층 (은닉층) 의  번째 뉴런과 출력층의  번째 뉴런간의 연결강도

    연결강도 벡터 또는 매트릭스

     학습 단계에서의 연결강도

    연결강도의 변화량

    학습률

    학습 신호

    오차 신호

    활성화 함수

    뉴런의 입력 가중합

    뉴런  의  단계에서의 입력 가중합

    바이어스

    목표치

    임계치

    벡터  의 norm

    해밍거리

 

출처 : http://www.aistudy.com/neural/theory_oh.htm#_bookmark_2361618

'패턴인식 & 기계학습' 카테고리의 다른 글

SVM(Support Vector Machine)  (0) 2014.11.04
Heap theory(헵 이론)  (0) 2014.11.04
Boltzmann machine(볼츠만 머신)  (0) 2014.11.04
결정 트리 분기  (0) 2014.10.25
다층 퍼셉트론  (2) 2014.10.24

Boltzmann machine(볼츠만 머신)

패턴인식 & 기계학습 2014. 11. 4. 16:58

볼츠만 머신(Boltzmann machine)은 1985년 Geoffrey Hinton과 Terry Sejnowski이 발명한 방법으로 

확률적으로 순환하는 신경망 네트워크이다. 볼츠만 머신은 어떤면에선 확률적으로 발생되는 Hopfield nets

부분이라고 볼 수 있다. 볼츠만 머신은 신경망 네트워크의 첫번째 예로서 내부 구조에 의한 학습이 가능했다. 

또한 여러가지 조합된 문제들을 묘사하고 해결할수 있다. 하지만 아래와 같은 몇가지 문제가 존재한다. 

볼츠만 머신은 기계학습(Machine Learning)의 추구 사항인 자유로운 연결관계에 대해 증명되지 못하였다. 

하지만 지역적 Hebbian 학습 알고리즘과 유사하며, 뿐만 아니라 병렬 처리 및 간단한 물리적 동작 과정을 

수행하므로 이론적으로는 매우 흥미있는 신경망이다. 학습은 실용적 문제에 사용할수 있도록 효율적으로

이루어져 있다. [그림 1]은 볼츠만 머신을 그래픽으로 표현한 예이다. 각각의 에지는 서로의 연결성을 나타내며

3개의 hidden 유닛과 4개의 visible 유닛으로 구성되어 있다. [그림 1]은 Restricted Boltzmann machine(RBM)

이 아니다.


       [그림 1] Graphical Boltzmann machine


구조 

볼츠만 머신은 Hopfield network와 비슷하다. 네트워크 유닛들은 네트워크의 에너지를 정의한다. 또한

Hopfield nets와 다르게 이진유닛으로 구성된다. 볼츠만 머신 유닛은 확률적으로 동작한다. 

볼츠만 머신의 Global 에너지 E는 Hopfield network와 같다.


볼츠만 머신의 연결성은 2가지로 제한되어 있다.


출처 : 위키피디아(볼츠만 머신 : http://en.wikipedia.org/wiki/Boltzmann_machine)


'패턴인식 & 기계학습' 카테고리의 다른 글

Heap theory(헵 이론)  (0) 2014.11.04
신경망 이론  (0) 2014.11.04
결정 트리 분기  (0) 2014.10.25
다층 퍼셉트론  (2) 2014.10.24
신경망, 퍼셉트론  (0) 2014.10.24

결정 트리 분기

패턴인식 & 기계학습 2014. 10. 25. 20:52

이진트리의 경우 노드 Xt를 기준으로 왼쪽 자식과 오른쪽 자식으로 나뉘게 된다. 이때 어떤 것을 기준으로 자식을

둘로 나눌지를 선택해야 한다. 


                                [그림 1] 노드 분기


이때 어떤 기준으로 나눌지를 잘 선택해야 한다. 그냥 숫자의 경우 Xt보다 작으면 왼쪽, 크면 오른쪽으로 나누면 

그만이지만 여러개의 특징 벡터로 구성될 경우 쉽지 않은 질문이다. 정당한 방법에 의해 둘로 나눠야 한다. 이것은 

일종의 최적화 문제일 것이다.


후보들 중 여러개의 샘플들이 혼합되어 있는데, 이들을 어떻게 Xleft, Xright로 나눌지를 잘 결정해야 노드의 분기 과정

마지막에 잎노드에 도달했을때 같은 분류의 샘플들만 포함되어 있을것이다. 따라서 가능한 XTleft와 XTright에 각각 동질

의 샘플이 담기는 것이 좋다.


이런 동질을 측정해 주는 기준이 불순도(inpurity)이다. 불순도는 여러 방법으로 정의할 수 있는데, 엔트로피(entropy)

사용한 정의이다. [식 1]은 엔트로피를 사용한 정의를 나타낸다.



Wi는 M개의 부류 중에서 i번째를 나타내며 P(Wi|T)는 노드 T에서 Wi가 발생할 확률이다. 엔트로피는 M 개의 부류가

같은 확률을 가질 때 가장 큰 값을 가진다. 같은 확률이라는 사실은 Xt에 같은 빈도를 나타낸다는 것을 의미하므로 

불순도가 가장 높다. 엔트로피는 어느 부류 하나의 확률이 1이고 나머지는 모두 0일때 0이다. 이떄 불순도가 0으로 제일

낮은 경우이다.


또 다른 측정 방법은 [식 2]로 정의되는 지니 불순도(Gini impurity)이다. 이 식은 어느 부류가 1의 확률을 갖는 경우에

최소값 0을 갖는다.



마지막으로 [식 3]으로 정의되는 오분류 불순도(misclassification impurity)이다. [식 3]을 보면 불순도는 바로 샘플

들을 가장 높은 확률의 부류로 분류했을 때 발생하는 오분류 비율과 같다.



불순도 측정은 노드 T에서 Wi가 발생할 확률 P(Wi|T)를 사용하는데 이것을 어떻게 추정할 것인가? 주어진 정보는

오로지 Xt뿐이다. 따라서 Xt에 Wi가 발생하는 빈도를 이용하여 [식4]와 같이 정의한다. |Xt|는 집합 Xt의 크기이다.




예1) 불순도 측정

     노드 T의 샘플 집합 Xt가 아래와 같다고 하자.

          

이 집합에는 아홉 개의 샘플이 있고 부류 w1이 3번 w2이 4번 그리고 w3이 2번 나타났다. 따라서 [식4]에 의해서

P(w1|T) = 3/9, P(w2|T) = 4/9, P(w3|T) = 2/9이 된다. [식1], [식2], [식3]를 각각 구하면 다음과 같다.



불순도는 하나의 노드를 대상으로 측정한다. 이제 이것을 이용해서 [그림 1]의 노드 분기에 필요한 최적의 질문을 

고르는데 사용할 기준 함수를 만들어야 한다. 분기 결과로 만들어지는 새로운 샘플 집합 XTleft, XTright는 가급적

불순도가 낮은 것이 좋다. 따라서 불순도 감소량을 [식 5]로 정의하고 그것을 기준 함수로 사용하면 된다.



극단적 예를 든다면 왼쪽과 오른쪽 자식 노드 모두 한 부류의 샘플만을 가지게 되어 불순도가 둘 다 0이 된다면

[식5]의 불순도 감소량 im(T)가 되어 이때 최대값이 된다. 따라서 이런 결과를 만드는 질문이 있다면 당연히 

그것을 노드 T의 질문으로 선택해야 한다. 실제에서는 Δim(T)를 최대로 하는 질문을 취하면 된다. 


[식6]은 부모 노드와 자식 노드의 불순도를 독립적으로 계산한 후 이들을 이용하여 불순도 감소량을 계산한다. 

불순도 감소량을 측정하는 다른 방법으로 투잉기준(twoing criteria)것도 있다. [식 6]은 투잉기준을 정의한다.



현재까지 후보 질문을 어떻게 생성할 것인지에 대해 정리했다. 후보 질문을 어떻게 생성할 것인지에 대해

구체적으로 정의해야 한다. 특징들 중에는 비계량인것과 계량인것이 존재한다. 비계량의 특징은 한정된 계수를

갖는다. 예를 들어 혈액형이라고하면 A, B, O, AB의 네 가지 값만 갖을 것이다. 이 예에서는 네 개의 후보 질문이

생긴다. 'xi = a?' 의 질문만 만들면 된다. 이에 비해 계량인 경우는 까다롭다. 이 경우에도 몇 개의 이산 값만을 가지면 

'xi < a?' 식의 질문을 만들면 된다. 계량에서는 양이라는 개념을 가지므로 등호 대신 부등호를 사용한다. 실수의 경우

범위를 나누어 구간화 하던지 혹은 샘플들이 갖는 값의 분포를 보고 인접한 두 값의 가운데를 a로 사용하면 된다.


예2) 후보 질문 생성

예1)과 같은 샘플집합을 활용할때, 샘플은 아래와 같은 세 개의 특징으로 표현되는데 앞의 두 개는 비계량이고

세 번째는 실수로 표현되는 계량 데이터라고 가정한다.



노드 T의 샘플 집합 Xt가 아래와 같다고 할때, 몸무게는 소수점 이하 첫재 자리까지 표현했다.

   


앞의 두 특징으로 아래와 같은 12개의 후보 질문이 만들어 진다.



                                          [그림 2] 샘플 집합 Xt


x3의 후보 질문은 샘플 값을 보고 만든다. 그들의 값은 아래와 같이 분포한다.

인접한 두 값의 가운데 값을 a라고 쓴다면 아래와 같이 여덟 개의 후보 질문이 만들어 진다.


이렇게 총 20개의 후보 질문이 생성되었다.



예3) 불순도 감소량 계산

예제2)의 데이터를 재활용 해보면 생성된 20개의 후보 질문 중 하나에 대해서만 불순도 감소량을 계산해 본다.

사용할 질문은 'x2=3?'(즉 선호품목이 스포츠용품?)이고 그에 따른 분기 결과는 [그림 3]과 같다.


                                                  [그림 3] 스포츠 용품인가? 라는 질문에 따른 분기 결과


이 분기 결과에 대한 불순도 감소량을 계산해 보면




총 세가지 불순도 측정 방법과 두 가지 불순도 감소량 측정 방법을 제시하였는데, 어떤 것을 사용하여야 좋을까?

여러 문헌에서 결정 트리의 성능은 불순도 측정 방법보다 멈춤 조건과 노드 가지치기 방법에 더 영향을 받는다는

실험 결과를 언급하고 있다. 띠리사 이들 방법중 하나를 선택해 사용하면 된다. 만약 성능 평가가 중요한 상황이라면

훈련집합을 수집한 후 각각의 방법을 테스트 해 평가하고 그 결과에 따라 최적의 방법을 고르는 수 밖에 없다.



참조 : 컴퓨터비전, 패턴인식(오일석) 

'패턴인식 & 기계학습' 카테고리의 다른 글

신경망 이론  (0) 2014.11.04
Boltzmann machine(볼츠만 머신)  (0) 2014.11.04
다층 퍼셉트론  (2) 2014.10.24
신경망, 퍼셉트론  (0) 2014.10.24
기계학습 기초(학습)  (0) 2014.10.24

다층 퍼셉트론

패턴인식 & 기계학습 2014. 10. 24. 14:55

다층 퍼셉트론이 퍼셉트론 모델의 한계를 어떻게 극복할까?

간단한 예제로 살펴 볼 수 있다.

 

                                           [그림1] 다층 퍼셉트론 모델


하나의 퍼셉트론 은 네개의 샘플 중에서 세 개만 맞출 수 있다. 이 경우 75%의 인식률밖에 되지 않는다.

[그림 1]을 보면 두 개의 결정 직선을 이용해서 분류하는 모습을 볼 수 있다.

d1의 +영역과 d2의 +영역이 겹친 곳은 w1로 분류하고, 나머지 영역은 w2로 분류한다.

첫번째 단계에서 두 개의 퍼셉트론 d1과 d2를 이용하여 특징 벡터를 새로운 공간으로 매핑한 후,

새로운 공간에서 하나의 퍼셉트론 d3을 이용해서 최종 분류한다.


분류 결과는 [그림 2]와 같다.

       [그림 2] 다층 퍼셉트론 분류 결과


[그림 2]의 결과를 보면 같은 형태의 x1과 x4는 -1로 분류되었고, x2과 x3은 1로 분류됨을 확인할 수 있다.


                                               [그림 3] 다층 퍼셉트론 구조


[그림 3]을 보면 다층 퍼셉트론 구조를 볼 수 있다. 다층 퍼셉트론은 기본 퍼셉트론이 갖는 입력층, 출력층

이외에 은닉층을 갖는다. 은닉층은 값을 전달하는 기능만 한다. 신경망의 출력은 출력 벡터 o라고 하면

입력 x를 받아 o를 출력하는 함수로 간주 할 수 있다. 

수식으로 표현하면, 

       이다.


다층 퍼셉트론은 활성함수 τ()를 위해 퍼셉트론이 사용했던 계단 함수 대신 시그모이드라는 비선형

함수를 사용한다.

           

                                                                          [그림 4] 시그모이드 함수


다층 퍼셉트론 학습

지금까지는 신경망이 어떤 방식으로 동작하는지에 대한 정리를 하였다. 이제 신경망을 어떻게 어떤 방식으로

만드는지에 관해 알아보자. 다층 퍼셉트론(MLP)의 정의는 다음과 같다.

다층 퍼셉트론(Multi-Layer Perceptron)은 훈련집합 X = {(x1,t1), (x2,t2), ..., (xn,tn)}이 주어졌을 때, 

이들을 분류하는 다층 퍼셉트론(즉, Θ ={u,v})을 찾는것이다. 

(xi,ti)에서 xi는 특징벡터이며, ti는 목적벡터(target vector)로서 xi∈wj이면 ti=(-1,...1, ..., -1)이다.

 j번째 요소만 1을 갖고 나머지 요소는 -1을 갖는다.

 

현재 설정되어 있는 Θ ={u,v}의 품질을 측정할 수 있는 함수를 정의해야 한다.

하지만 현재 품질 측정 함수는 정의되지 않았다. 따라서 특정함수를 정의해야 한다.

다시말하면, 학습 하는 과정은 품질 측정함수를 정의하는 과정이다.

[그림 5]를 보면 여러층의 퍼셉트론 모델에서 입력값을 Θ(.)를 거쳐 출력값을 얻는다.

기대한 값과 다르면 Θ(.)를 수정하며 학습한다. 따라서 Θ(.)함수는 다른 의미에서는 오류 검출 함수이다.


   

                  [그림 5] 다층 퍼셉트론의 입력값, 출력값, 기대값


학습이란 E(Θ)를 최소로 하는 Θ의 값는 찾는과정이다.

                  


오류를 계속 줄여나가는 쪽으로 매개변수 Θ를 수정해 나가야 한다.

이 작업은 내리막 경사법(gradient descent)라고 한다. 



위 식은 내리막 경사법을 나타낸 것이다. 미분으로 오류가 줄어드는 방향을 알아내 Θ에 마이너스 해주면

오류를 줄이는 방향으로 갱신한 것이 된다. ρ는 학습률 로써, 갱신하는 양을 조절해 준다.


1
2
3
4
5
6
7
8
9
10
11
12
// 다층 퍼셉트론(MLP) 학습 알고리즘
// 입력 : 훈련 집합 X = {(x1,t1),(x2,t2), ..., (xn,tn)}, 학습률 ρ
// 출력 : 가중치 u, v
 
u와 v를 초기화한다.
repeat {
   for(X의 샘플 각각에 대해) {
      [식1]과 [식2]를 계산한다.
      ∂E/∂V 와 ∂E/∂u를 계산한다.
      [식3]과 [식4]로 새로운 u와 v를 계산한다.
   }        
}until(stop-condition);


다층 퍼셉트론(MLP) 학습 알고리즘에서 9행이 사용할 규칙 (∂E/∂V 와 ∂E/∂u를 계산)


이것을 일반 델타 규칙(generalized delta rule)이라고 부른다.



이제 학습이 완료된 다층 퍼셉트론을 이용해 새로운 모델을 인식시켜보자.


3~12행을 통해 전방계산으로 얻은 벡터 o = (o1, o2, ... , om)을 조사하여 가장 큰 값을 갖는 요소에 해당하는

부류를 분류 결과로 출력한다. 신경망 학습은 전방계산과 오류 역전파 과정을 반복하므로 시간이 오래 걸리지만

인식은 전방계산을 한번만 실행하면 되므로 빠르게 작동한다.



참조 : 컴퓨터비전, 패턴인식(오일석)

'패턴인식 & 기계학습' 카테고리의 다른 글

신경망 이론  (0) 2014.11.04
Boltzmann machine(볼츠만 머신)  (0) 2014.11.04
결정 트리 분기  (0) 2014.10.25
신경망, 퍼셉트론  (0) 2014.10.24
기계학습 기초(학습)  (0) 2014.10.24

신경망, 퍼셉트론

패턴인식 & 기계학습 2014. 10. 24. 10:31

그녀(her)란 영화를 보면 OS1이라는 운영체제가 나온다. 주인공 테오도르가 OS1을 처음 설치한 이후에, OS1은 

100분의 2초만에 '아기 이름 짓는 법'이라는 책에 나오는 18만개의 이름 중 하나를 선택해 자신의 이름으로 삼는다.

이 영화에서는 운영체제는 "또 하나의 의식" 이라고 소개한다.


        

                      [그림 1] 그녀(her) 영화속의 한 장면


데이터를 어떻게 분류할 것인가를 놓고 많은 기계학습 알고리즘이 등장했다. '의사결정나무' 혹은 베이지언 확률로 

접근하는 '베이지언망', '서포트벡터머신(SVM)', '신경망'이 대표적이다.


신경망이란 기존의 뇌 구조를 컴퓨터로 모방하려는 발상으로, 신경들을 모아 신경망 모델로 확장시키는 개념이다.

초기 신경망은 선형 분류기에 불과하다는 한계로 신경망 연구는 한동안 빛을 보지 못했다. 하지만 최근 퍼셉트론의 

원리를 계승하고, 다층 퍼셉트론이 등장하며 신경망 연구는 새롭게 부활하기 시작했다. 

가장 간단한 퍼셉트론 모델부터 살펴보자.


퍼셉트론

퍼셉트톤(perceptron)의 구조는 [그림 2]와 같다. 여러개의 입력층을 모아 하나의 출력을 낸다.


        

                          [그림 2] 퍼셉트론 구조 (1)


하나의 출력은 이진 형태의 출력이다. 1과 -1을 출력하는데 [그림 3]의 c형태와 같다.

각 에지는 가중치를 가지며, 여러개의 입력을 받아 [그림3]의 b형식으로 각각의 에지의 가중치와

입력값을 계산해 활성함수에서 1과 -1을 출력한다.


                     [그림 3] 퍼셉트론 구조 (2)


활성함수 τ는 activation function으로 불리며 [그림 3] c와 같은 계단 함수(step function)를 사용한다.


동작 과정의 예는 다음과 같다.

2차원 공간 상에 [그림 4] a와 같은 네 개의 샘플 x1, x2, x3, x4가 존재한다고 할때,

x1는 w2에 속함을 볼 수 있다.([그림 4]c)

샘플과 부류 값으로 표시하면 x1 = (0,0), t1=-1, x2=(1,0), t2=1, x3=(0,1), t3=1, x4=(1,1), t4=1 이다.

이때 ti는 xi가 속하는 부류 정보이다.(w1에 속하면 1이고, w2에 속하면 -1)


                                 [그림 4] 퍼셉트론 동작 예제


OR게이트 동작의 분류 문제로 간주할때, 이 퍼셉트론은 w=(1,1), b=0.5(가중치)를 가진다.



위와 같은 방식으로 x3은 1을 출력함을 볼 수 있다.


퍼셉트론 식을 정리하면 다음과 같다.


이 퍼셉트론 모델은 선형 분류기(linear classifier)에 해당한다. 특징 공간을 둘로 나누는 것이다.

이 경계는 2차원에서는 직선, 3차원에서는 평면, 4차원에서는 초평면(hyperplane)이라고 부른다.

하지만 여기서 문제가 발생한다.


                 [그림 5] 선형분리 가능 모델과 불가능 모델


[그림 5]를 보면 a의 경우 파란선으로 선형분리가 가능하다. 하지만 b를 보면 선형 분리가 불가능함을

볼 수 있다. 이러한 한계로 한동안 빛을 보지 못한 퍼셉트론 모델은 퍼셉트론을 확장한 다층 퍼셉트론이란

아이디어가 나온 이후로 신경망 연구를 살릴 수 있었다. 


다음 포스트에서 다층 퍼셉트론 모델을 살펴본다.


참조 : 네이버케스트(딥러닝 - http://navercast.naver.com/contents.nhn?rid=122&contents_id=64183) 

         컴퓨터비전(오일석)

'패턴인식 & 기계학습' 카테고리의 다른 글

신경망 이론  (0) 2014.11.04
Boltzmann machine(볼츠만 머신)  (0) 2014.11.04
결정 트리 분기  (0) 2014.10.25
다층 퍼셉트론  (2) 2014.10.24
기계학습 기초(학습)  (0) 2014.10.24

기계학습 기초(학습)

패턴인식 & 기계학습 2014. 10. 24. 09:47

사람의 능력 중 가장 뛰어난 능력은 학습 이라고 한다. 학습은 무엇일까?

처음 접하는 일은 처음에는 미숙하지만 시간이 지나고 보면 쉬운일이 된 경험이 많을 것이다.

또한 자전거를 처음 탈때 많이 넘어지고 다치며 자전거 균형 잡기 기술을 배우고 나면 

왠만해선 잘 넘어지지 않는다.


공학자에게는 항상 꿈이 있다. 이런 사람의 학습 기술을 기계에게 가르쳐 기계 스스로 학습하며 배워나갈수 

있는 환경을 구축하는 것이다. 

이런 꿈을 갖고 사람의 학습 방법과 기계의 학습 방법에 대해 살펴보자.


지도 학습과 비지도 학습


                           [그림 1] 사람의 학습과 기계의 학습


[그림 1]은 사람의 학습과 기계의 학습 방법을 설명하고 있다. 사람은 외부 환경으로부터 가르침을 받아

그것을 기억하고 다음 동일한 환경에 기억된 행동을 수행한다. 자전거를 탈때 균형 잡는 방법을 기억해 두었다가

추후 자전거를 탈때 균형을 잘 잡고 탄 경험이 있을 것이다.  


기계의 경우 특정 테스트 집합이 입력으로 들어 왔을때 이미 검증된 집합과 테스트 집합의 목록 중 테스트 모델이 

어디에 적합한지 확인하고 분류해 가며 학습함을 볼수 있다.

 

이렇게 기계 학습은 사람의 학습과 개념적으로는 비슷하지만, 학습 방법의 차이가 존재함을 볼 수 있다.

[그림 2]의 a를 보면 기계가 처음 학습 분류기를 생성하는 과정을 나타낸다. 학습 집합으로부터 특징을

추출한 뒤, 추출한 특징공간을 적절 나눈다. 나눈 특징들을 토대로 경계를 나눈 분류기를 만는다.

추후 테스트 영상이 들어왔때 학습 단계에서 사용한 방법과 동일하게 특징을 추출한 다음 분류기를 만들어

분류하는 과정을 거친다.


                         

                                                             [그림 2] 기계 학습


이와 같은 방법은 지도 학습(supervised learning) 이다. 즉 학습 집합에 있느 샘플은 (x, t)라는 정보를 갖는다.

x는 특징 벡터이고, t는 그것이 속하는 부류다. 하지만 때에 따라선 x만 있고, t의 정보가 없을때도 있다. 분류 정보가

없기 때문에 분류 작업을 수행할 수 없다. 이런 방법을 비지도 학습(unsupervised learning)이라고 부른다. 군집에서

유용한 정보 추출을 한다.(데이터 마이닝, 빅데이터, 정보 검색 등의 많은 응용)


두 가지 학습 방식의 중간에 속하는 경우를 준지도 학습(semi-supervised learning)이라고 한다. 


분류기 성능 평가

기계 학습은 학습 집합을 가지고 수행한다. 학습이 완료되면 테스트 집합으로 성능을 평가 한다.

그런데 데이터 수집에 상당한 비용이 들기 때문에 데이터 양이 충분하지 않은 경우 잘 분류되지 않거나, 잘못된

결과가 나오기도 한다. 이런 상황에서 유용하게 사용할 수 있는 방법을 몇가지 소개한다.


첫번째 방법은 재 샘플링(resampling)이다. 재 샘플링의 기본 아이디어는 같은 샘플을 이용해 여러번 학습 시키는 

것이다. 학습 데이터 량이 충분하지 않을때 유용하다. 


두번째 방법은 교차샘플이다. 교차 샘플은 분류기를 k-1개의 부분 집합으로 학습시키고 나머지 한 개의 부분 집합으로

분류기의 성능을 측정한다.


1
2
3
4
5
6
7
8
9
10
11
12
// 교차 검증
// 입력 : k(2≤k≤N), 훈련집합 X = {(x1,t1), (x2,t2), ..., (xN,tN)}
// 출력 : 성능Q
 
X를 k개의 부분집합으로 등분하고 그들을 x1, x2, ..., xk라고 한다.
 
for(i=1 to k) {
  X` = U(i=1, j≠i) Xj로 분류기를 학습
  Xi로 분류기의 성능을 측정하여 qi라 한다.
}
 
Q = (q1 + q2 + ... + qk) / K


이 과정을 서로 다른 부분 집합으로 k번 수행하여 얻은 성능의 평균값을 분류기의 성능으로 취한다.

이러한 방법을 k-겹 교차검증(f-fold cross validation)이라고 한다. 


세 번째 방법은 부스트랩(bootstrap)이다. 이 방법은 샘플의 중복 사용을 허용한다. 

N개의 샘플을 가진 집합 X에서 pN개의 샘플을 임의로 뽑는다. 이때 한거번에 하나씩 샘플을 뽑는데 뽑은 것을

다시 집합 X에 넣는다. 따라서 운이 좋은 경우 집합 X에서 여러번 뽑인 샘플도 있고, 한번도 뽑히지 않은 샘플이

존재할 수 있다. 이렇게 얻은 샘플 집합으로 성능을 측정한다. 

이 과정을 독립적으로 T번 수행하고, 그 결과를 평균한 값을 최종 성능으로 취한다.


1
2
3
4
5
6
7
8
9
10
11
// 부스트랩
// 입력 : 훈련집합 X = {(x1,t1), (x2,t2), ..., (xN,tN)}, 샘플링 비율 p(0<p≤1), 반복 횟수 T
// 출력 : 성능 Q
 
for(t=1 to T) {
   X에서 임의로 pN개의 샘플을 뽑아 Xt라고 한다. 이때 뽑은것을 다시 집어넣는다.
   Xt로 분류기를 학습시킨다.
   X-Xt로 분류기의 성능을 측정하여 qt라고 한다. 
}
 
Q = (q1 + q2, ..., qt)/T;


참조 : 컴퓨터비전(오일석)


'패턴인식 & 기계학습' 카테고리의 다른 글

신경망 이론  (0) 2014.11.04
Boltzmann machine(볼츠만 머신)  (0) 2014.11.04
결정 트리 분기  (0) 2014.10.25
다층 퍼셉트론  (2) 2014.10.24
신경망, 퍼셉트론  (0) 2014.10.24