#6. 다층 퍼셉트론 및 딥러닝 기초

2022. 11. 1. 15:40
Update Log
| 22.09.27 First Upload
| 22.09.29 Second Upload
| 22.10.06 Third Upload
| 22.10.12 네번째 재업로드...

 


신경망의 기초

신경망

  • 기계학습 역사에서 가장 오래된 학습 모델이다.
  • 현재는 가장 다양한 형태를 가진다.
  • 1950년대의 퍼셉트론은 1980년대에 다층 퍼셉트론으로 변화하였다.
  • 그리고 이는 깊은 인공신경망으로 변화하였다.

사람의 뉴런

  • 두뇌의 가장 작은 정보처리 단위이다.
  • 세포체 (Cell body): 간단한 연산
  • 수상돌기 (Dendrite): 신호 수신
  • 축삭 (Axon): 처리 결과를 전송.
  • 뉴런을 모방한 것이 퍼셉트론이다.

 


신경망의 종류

 

신경망에는 아주 다양한 모델이 존재한다.

비교가 되는 모델들을 통해서 알아보자.

 

전방 신경망 vs 순환 신경망

 

전방 신경망과 순환신경망

전방 신경망

(Feedforward Neural Network)

 

노드 간의 연결이 순환을 형성하지 않는 인공신경망이다.

 

순환 신경망

(Recurrent Neural Network, = RNN)

 

인공 신경망의 한 종류로, 유닛 간의 연결이 순환적 구조를 가지는 특징이 있다.

순방향 신경망과 달리 내부의 메모리를 이용해 시퀀스 형태의 입력을 처리할 수 있다.

 

 


얕은 신경망 vs 깊은 신경망

 

얕은 신경망과 깊은 신경망

얕은 신경망

(Shallow Nerual Network)

 

입력, 은닉, 출력의 3가지 계층으로 되어 있으며,

은닉 계층과 출력 계층이 Fully Connected 계층인 모델을

얕은 신경망이라고 한다.

 

깊은 신경망

(Deep Neural Network, = DNN)

 

위와 같은 신경망을 3개 이상 중첩한 구조깊은 신경망이라고 부른다.

이를 활용한 머신러닝 학습을 특별히 딥러닝이라고 부른다.

 


결정론 신경망 vs 스토캐스틱 신경망

 

 

결정론 신경망

(Deterministic Neural Network)

 

모델의 매개변수와 조건에 의해 출력이 완전히 결정되는 신경망

 

스토캐스틱 신경망

(Stochastic Neural Network)

 

고유의 임의성을 갖고 매개변수와 조건이 같더라도 다른 출력을 가지는 신경망

 


퍼셉트론
  • 노드(Node = 절) , 가중치(Weight) , 층 (Layer) 과 같은 새로운 개념을 도입
  • 제시된 퍼셉트론 구조의 학습 알고리즘을 창안
  • 퍼셉트론은 원시적 신경망이지만, 딥러닝을 포함한 현대 신경망은 퍼셉트론을 병렬과 순차 구조로 결합하여 만듦.
  • 이는 현대 신경망에 중요한 구성 요소임.

퍼셉트론의 구조

1) 입력층과 출력층을 가짐

 

입력층은 연산을 하지 않으므로 퍼셉트론은 단일 층 구조라고 간주한다.

퍼셉트론의 구조

 

2) 입력층의 i 번째의 노드는 특징 벡터 x = (x1, x2... xd)^T의 요소 xi를 담당한다.

 

3) 항상 1이 입력되는 바이어스 노드를 가진다.

 

4) 출력층은 한 개의 노드이다.

 

5) i 번째 입력층 노드와 출력층을 연결하는 Edge는 가중치 wi를 가진다.

 

 

퍼셉트론의 동작

  • 특징 값과 가중치를 곱한 결과를 모두 더하여서 s를 구하고 활성 함수 τ 를 적용한다.
  • 이는 선형연산에서 비선형 연산으로 간다고 생각할 수 있다.

퍼셉트론에서의 활성함수

활성 함수 τ 로 계단 함수를 사용하므로 최종 출력 y는 +1 또는 -1 이 출력 값

 

퍼셉트론의 출력값

 


<예시>

 

퍼셉트론 동작의 예시

<해설>

퍼셉트론 동장의 예시에 대한 해설

 

퍼셉트론의 행렬 표기

퍼셉트론의 행렬 표기

퍼셉트론의 학습

 

 

  • 위의 결과를 기하학적으로 설명해보자
    • 결정 직선은 특징 공간을 +1과 -1의 두 부분공간으로 이분할하는 분류기 역할이다.
    • 임계값을 구분하는 비선형함수인 활성함수를 0점에서 비교하도록 만들어주는 것이다.
  • d차원 공간으로 일반화하면
    • 2차원 : 결정 직선, 3차원 : 결정 평면, 4차원 이상 : 결정 초평면

AND 분류 문제

  • 지금까지는 학습을 마친 퍼셉트론의 동작을 설명한 것이다
  • 가중치 벡터, 즉 파라미터 w 가 어떠한 값을 가져야 옳게 분류할까?
    • 사실상 다음과 같은 그림은 2차원 공간에 4개의 샘플이 있는 훈련 집합 (Training Set)이지만
    • 현실 세계는 d차원 공간에 수백 ~ 수만의 샘플이 존재한다.
      • (예) MNIST Data Set은 784차원에 6만 개의 샘플이 존재한다.
  • 실제값과 예측값이 일치하도록 손실함수를 낮추면서 올바른 가중치 벡터를 찾는 것이 학습이다.

  • 일반적인 분류기의 학습과정
    • 이를 해결하기 위해서 목적함수를 설정한다.
    • 퍼셉트론의 매개변수를 다음과 같이 행렬로 표현하면

퍼셉트론의 매개변수

  • 이때의 매개변수의 집합은다음과 같다.

매개변수의 집합

 

이때 우리는 목적함수를 다음과 같이 표기한다.

 

 

 

목적함수의 조건

목적함수의 조건

  • 물론 이것이 필수적인 조건은 아니다.
  • 일반적으로 나오는 목적함수의 조건이다.
  • 그렇다면 퍼셉트론의 목적함수는 어떻게 될까?

 

  • Y는 w가 틀리는 샘플의 집합이다.
  • 조건을 3가지 만족하는지에 대해서 알아보자
    • 1번째 조건 (J >=0)
      • 임의의 샘플 xk가 Y에 속한다면, 퍼셉트론의 예측 값과 실제값은 부호가 다르다. 
    • 2번째 조건 (w 가 최적이면, 즉 모든 샘플을 맞히면 J(w) = 0 이다.) 
      • Y가 공집합일때, 즉 퍼셉트론이 모든 샘플을 맞출떄, J = 0이다.
    • 3번째 조건 (틀리는 샘플이 많은 일수록 J(w)는 큰 값을 가진다.
      • 결국 Y가 클수록, 틀린 샘플이 많을수록, J는 큰 값을 가진다.

 

경사하강법

  • 최소  그래디언트 를 이용하여 반복 탐색하여 극값을 찾음
  • 손실함수(목적함수)의 미분의 값최소화 되도록 해야함.
  • 그래디언트 계산
    • 일반화된 가중치 갱신 규칙 를 적용하려면 경사도 가 필요하다.
      • ρ는 learning rate(학습률)
      • Θ는 가중치
      • g는 그래디언트.
    • 목적함수(손실함수)를 편미분하면,
    • 편미분 결과를 대입하면,
      • 델타 규칙 : 
    • 델타 규칙은 퍼셉트론의 학습 방법이다.
  • 학습률(learning rate)는 한번 업데이트할 때마다 얼마나 움직일지 결정한다.
    • 너무 작아서도 안되고, 너무 커서도 안된다.

다층 퍼셉트론

퍼셉트론은 선형 분류기라는 한계가 있다.

즉 선형 분리 불가능한 상황에서는 일정한 양의 오류가 나온다는 뜻이다.

앞선 포스팅에서 가장 많이 나오는 예시를 들어보자

선형 불가능한 상황

 

민스키의 Pereptrons에서는

1) 퍼셉트론의 한계를 지적하고 다층 구조를 이용한 극복 방안 제시.

당시 기술로는 실현이 불가능했다.

 

2) 1974년 웨어 보스는 박사 논문에서 '오류 역전파 알고리즘'을 제안했다.

 

3) 1986년 루멜하트의 저서 "Parallel Distributed Processing"에서 다층 퍼셉트론 이론을 정립하여

신경망을 부활시켰다.

 

 

 

 

다층 퍼셉트론의 핵심 아이디어.

1) 은닉층을 둔다

  • 은닉층은 원래 특징 공간을 분류하는 데 훨씬 유리한 새로운 특징 공간으로 변환한다.

 

2) 시그모이드 활성 함수를 도입한다.

  • 퍼셉트론은 계단 함수를 활성 함수로 사용하였다.
  • 이 함수는 경성 (Hard) 의사결정에 해당한다.
  • 반면 , 다층 퍼셉트론은 연성(soft) 의사결정이 가능한 시그모이드 함수를 활성 함수로 사용한다.
  • 연성에서는 출력이 연속 값인데, 출력을 신뢰도로 간주함으로써 더 융통성 있게 의사결정을 할 수 있다.

 

3) 오류 역전파 알고리즘을 사용한다.

  • 다층 퍼셉트론은 여러 층이 순차적으로 이어진 구조이다.
  • 따라서 역방향으로 진행하면서 한 번에 한 층씩 그레이디언트를 계산하고
  • 가중치를 갱신하는 방식의 오류 역전파 알고리즘을 사용한다

 


특징 공간 변환

앞에서 이야기했던 특징 공간에 대한 변환에 대해서 알아보자

  • 다음과 같이 이전에는 선형 분류기로 풀 수없던 문제를
  • 퍼셉트론을 2개를 사용해서 특징 공간을 변형시키면 풀 수 있다.
  • 위에서 나온 대로 퍼셉트론 1과 퍼셉트론 2가 모두 +1 인지 아닌지로 판별한다.
  • 이때 이 퍼셉트론 2개를 병렬로 결합하면 원래의 공간에서 새로운 특징 공간으로 변한다.
  • 그림으로 살펴보자

 

병렬로 퍼셉트론을 결합한 후의 특징 공간

이때  새로운 특징공간 z에서 선형 분리를 수행하는 퍼셉트론 3을 순차 결합하면 다층 퍼셉트론이 된다.

 

  • 다음과 같이 3개 퍼셉트론을 결합하면, 2차원 공간을 7개 영역으로 나누고
  • 각 영역을 3차원 점으로 변환한다.
  • 활성 함수로 계단함수를 사용하므로 영역을 점으로 변환된다.
  • 또한 차원이 커질수록 학습의 양은 많아진다.
  • 이는 weight 값을 구해야 할 것들이 많아진다는 뜻이다.

 

 

결론적으로 일반화를 한다면

  • p개의 퍼셉트론을 결합하면 p차원 공간으로 변환된다.

다음과 같이 영역이 분할된다.


활성 함수
  • 이제는 활성 함수로 퍼셉트론에서 사용한 계단 함수가 아닌
  • 이제는 시그모이드 함수를 사용하게 된다.
  • 시그모이드 함수도 한 개만 있는 것이 아니라 다양하게 존재한다.

신경망이 사용하는 활성함수

  • 계단 함수딱딱한 의사결정 (영역을 점으로 변환)
  • 나머지 활성 함수부드러운 의사결정 (영역을 영역으로 변환)한다.

  • 즉 다시 이야기를 한다면 0 이전과 이후의 값들이 확연하게 바로 바뀌는 것이 아니라
  • 어느 정도의 영향을 미치는지 까지도 반영한 것이다.
  • 연속적인 공간 분할이다.

활성함수로 사용되는 여러 함수

 

  • 로지스틱 시그모이드와 하이퍼 볼릭 탄젠트 a가 커질수록 계단 함수에 가까워진다.
  • 모두 1차 도함수의 계산이 빠르다.
    • 특히 ReLU는 비교 연산이 한 번만 있다.
  • 퍼셉트론:  계단 함수
  • 다층 퍼셉트론" 로지스틱 시그모이드와 하이퍼볼릭 탄젠트
  • 딥러닝 :  ReLU

 


다층 퍼셉트론 구조

다층 퍼셉트론의 구조

왼쪽 그림은

  • 입력층 - 은닉층 -출력층의 2층 구조이다.
    • d+1 개의 입력 노드 (d는 특징의 개수)
    • c개의 출력 노드 (c는 부류 개수)
    • p개의 출력노드
      • p는 하이퍼 매개변수, 즉 사용자가 정해주는 매개변수
      • p가 너무 크면 과잉적합이다.
      • p가 너무 작으면 과소적합이다.
      • 이는 하이퍼 매개변수 최적화에서 다룰것이다.

오른쪽 그림은 

  • 입력층 - 은닉층 - 은닉층 - 출력층의 3층 구조이다.

다층 퍼셉트론의 매개변수 (가중치)

 

 

일단 2층 퍼셉트론에서의 가중치 행렬을 알아보자

먼저 표현에 대해서 익숙해져 보자.

2층 퍼셉트론의 가중치의 행렬
입력층 - 은닉층 , 은닉층 - 출력층

 


이때 특징 벡터 x를 출력 벡터 o로 매핑하는 함수로 간주할 수 있다.

 

  • 왼쪽 다층 퍼셉트론은 2층 퍼셉트론이다.
  • 오른쪽 다층 퍼셉트론은 3층 퍼셉트론이다.
  • 앞에서 벡터로 보았던 것을 매핑 함수로 보면 다음과 같이 볼 수 있다.

 

특칭벡터를 출력벡터로 매핑하는 함수.

 

이때 깊은 신경망은 다음과 같이 표현할 수 있다.

 


다층 퍼셉트론 동작

이제부터 이 노드들이

수행하는 연산을 구체적으로 써보자.

j 번째 은닉 노드의 연산
k번쨰 출력 노드의 연산
벡터의 표현식

 

다층 퍼셉트론의 동작을 행렬로 표기하면 다음과 같다.

다층 퍼셉트론의 동작의 행렬 표시

 


은닉층

  • 은닉층은 특징 추출기라고 생각하자.
  • 은닉층은 특징 벡터분류에 더 유리한 새로운 특징 공간으로 변환시킨다.
  • 현대 기계학습에서는 특징 학습(Feature Learning) 이라고 부른다.
  • 또한 딥러닝은 더 많은 단계를 거쳐 특정 학습을 한다.

 

특징 추출기로서의 은닉층

 


오류 역전파

오류역전파를 위한 목적함수의 정의

특징벡터 집합
부류벡터집합



훈련집합 (Traing Set)

  • 특징벡터집합 X 와 부류벡터 집합 Y로 나뉜다.
  • 부류벡터 Y는 원핫코드로 표현된다.
    • 카테고리가 a,b,c 가 있다고 가정하자
      • a -> 1 0 0, b-> 0 1 0 c -> 0 0 1 과 같이 mapping 하는 것을 말한다.

 

ONE-HOT-CODE로 표현된 부류벡터

 

  • 이를 설계 행렬로 쓰게 되면

설계행렬로 표현

기계학습의 목표

  • 기계학습의 목표는 모든 샘플을 옳게 분류하는 함수 f를 찾는 일이다.
  • 사실상으로는 overfitting 때문에 전부다 하면 안된다.
  • 여기에서는 오류 역전파를 알아보기 위해서 한 것이다.

목적함수(손실함수)

  • 우리는 평균 제곱 오차 (MSE)로 정의한다.

MSE 의 정의

  • y : 내가 가진 모델의 출력
  • o : f(x) : 내가 가진 딥러닝 모델의 예측값
  • 여기서 배치란 데이터 샘플을 여러개 가지고 계산한 것이다.

 

  • 이때 이를 최저점을 찾아주는 경사하강법을 적용하면

 

 

 

 

 

오류역전파의 유도

  • 위의 알고리즘 3-3 에서의 라인 6번째를 위한 도함수를 구하는 과정이다.

그레디언트 구하는 과정

우리가 구하는 미분값의 부분을

빨간색으로 표현하면 다음과 같다.

이후에 u1을 갱신하는 식은 다음과 같다.

이를 그림으로 표현한 식은 다음과 같다.

 

그럼 지금까지 유도한 식을 정리하면 다음과 같다.

 

 

 

오류 역전파 (Error back - propagation) 알고리즘은
출력층의 오류를 역방향 (왼쪽)으로 전파하여 그레디언트를 계산하는 알고리즘이다.

 

 

 

 

이를 임의 샘플링 방식으로 바꾸려면

이를 행렬 표기로 표현하면 다음과 같다.


미니 배치 스토캐스틱 경사 하강법

미니 배치

  • 한 번에 t개의 샘플을 처리한다. (t는 미니 배치의 크기이다.)
    • t = 1이면 스토캐스틱 경사 하강법이다.
    • t = n 이면 배치 경사 하강법이다.
  • 미니 배치 방식은 보통 t = 수십에서 ~ 수백이다.
    • 그래디언트의 잡음을 줄여주는 효과 때문에 수렴이 빨라진다.
    • GPU를 사용한 병렬 처리에도 유리하다.
  • 현대 기계 학습은 미니 배치를 표준처럼 여겨 널리 사용한

다층퍼셉트론에 대한 인식
  • 예측 또는 테스트 단계
    • 학습을 마친 후 현장 설치하여 사용한다.
    • 또는 테스트 집합으로 성능 테스트를 한다.

다층 퍼셉트론을 이용한 인식

  • 이는 전방 계산 한번만 사용하므로 빠르다.

 

오류역전파는

  • 전방 계산보다 약 1.5~2배의 시간이 소요된다, 비교적 빠른 계산이 가능하다. (연쇄법칙)
    • c: 분류수, d: 특징차원, p : 은닉층 차원
  • 하지만 학습 알고리즘은 수렴할 때까지 오류 역전파를 반복해야 하므로 점근적 시간 복잡도는 다음과 같다.
    • n: 훈련집합의 크기 . q: epoch 수

학습알고리즘 (오류역전파의 반복)

 


다층 퍼셉트론의 특성

모든 함수를 정확하게 근사할 수 있는 능력

  • 은닉 노드가 충분히 많다면 활성함수로 무엇을 사용하든 표준 다층 퍼셉트론은 어떤 함수라도 원하는 정확도 만큼 근사화 가능하다.
  • 은닉 노드를 무수히 많게 할 수 없으므로, 실질적으로는 복잡한 구조의 데이터에서는 성능 한계가 있다.

성능 향상을 위한 휴릭스틱의 중요성

 

  • 순수한 최적화 알고리즘으로는 높은 성능이 불가능하다.
    • 데이터의 희소성, 잡음, 미숙한 신경망 구조 등의 이유가 있다.
    • 성능 향상을 위한 갖가지 휴리스틱을 개발하고 공유했다.
  • 휴리스틱 개발에서 중요쟁점
    • 중요한 점은 결정된 것이 아니라, 경험적으로 정해야 한다는 것이다. 
    • 아키텍쳐
      • 은닉층과 은닉 노드의 개수를 정해야 한다. 
      • 적절한 규제 기법을 적용해야 한다.
    • 초깃값
      • 라인 1에서의 가중치를 초기화 하는데 난수의 범위가 중요하다.
    • 학습률
      • 처음부터 끝까지 같은 학습률을 사용하는 방식
      • 처음에는 큰 값으로 시작하고 점점 줄이는 적응적 방식
    • 활성함수
      • 보통은 ReLU를 지금은 사용을 한다.
    • 실용적인 성능
      • 1980년대에서 1990년대에 다층 퍼셉트론은 실용시스템 제작에 크게 기여했다.
    • 한계
      • 잡음이 섞인 상황에서 음성인식 성능 저하
      • 필기 주소 인식 능력 저하
      • 바둑에서의 한계

'STUDY > 인공지능' 카테고리의 다른 글

#8. Pytorch 실습  (0) 2022.11.01
#7. 딥러닝과 깊은 퍼셉트론  (0) 2022.11.01
#5. 최적화 이론  (1) 2022.11.01
#4. 기계학습 수학2  (1) 2022.11.01
#3. 기계학습 수학 1  (0) 2022.11.01

BELATED ARTICLES

more