4.1 딥러닝 알고리즘 학습 방법

노드 값 계산 방법

  • 입력층과 은닉층에는 일반적으로 바이오스 노드 존재
  • 바이오스 노의 값은 1로 고정되며 입력 웨이트를 갖지 않음
  • 바이오스란 입력값이 0일 때 곱하면 항상 0이 출력되므로 이를 방지하기 위해 추가한 임의의 값
  • 활성화 함수 f(연결가중치 w * 입력값 + 바이오스 b)
  • 노드 값 v_i 는 앞 층의 노드 값과 해당 연결가중치의 곱을 모두 더해 활성화함수에 대입해 나온 값
  • vi = h(w1 * v1, i-1 + w2 * v2, i-1 + .....)
  • vi는 i 층의 노드 값
  • 활성화 함수의 종류
    • 시냅스는 전달된 전기신호가 최소한의 자극값을 초과하면 활성화되어 다음 뉴런으로 신호 전달
    • 값이 최솟값보다 작을 때 출력값을 작은 값으로 막고, 일정한 값을 초과하면 출력값이 커지는 함수 사용
    • 은닉층에서 주로 사용되는 활성화 함수
      • 쌍곡탄젠트 함수
      • sigmoid 함수
      • ReLU(Rectified Linear Unit) 함수, y = 0(x < 0), y = x (x > 0)
        • 쌍곡탄젠트와 sigmoid 함수의 경우 값이 커지면 함수의 경사가 0에 가까워짐
        • 경사가 0에 가까워지면 학습이 더 이상 진행 x
        • 이에 비해 ReLU 함수는 학습속도가 빠르고 중단되는 일이 적어 최근 많이 사용됨
        • ReLU는 0보다 작은 값에서 경사가 0이므로 이 부분에 경사를 준 ReLU 함수도 자주 이용됨
    • 출력층에서는 소프트맥스(softmax) 함수가 자주 사용됨
      • 인공신경망의 출력값으로 확률 벡터를 얻고 싶을 때
      • vi = exp(-o_i) / exp(-o_1) + ..... + exp(-o_n)
      • vi의 모든 값을 더하면 1이 되어야 함

계층의 종류

  • 전결합층

    • 앞 층 노드와 자기 층의 노드가 모두 웨이트로 연결되어 있는 층

    • 단, 자기 층의 바이오스 노드는 제외

    • 전결합층의 노드 값은 노드값, 연결가중치, 활성화 함수로 계산됨

    • 연결된 모든 조합에 대해 처리해야 하므로 계산량이 많이 필요

    • 은닉층 후반부 또는 출력층에 자주 사용

  • 컨볼루션층

    • 앞 층에서 인접한 노드끼리의 집합과 자기 층의 노드가 웨이트로 연결되어 있는 층

    • 컨볼루션층의 노드값도 노드값, 연결가중치, 활성화 함수로 계산됨

    • 인접한 노드끼리의 집합을 국소적 노드라고 부르기도 함

    • 컨볼루션층은 이미지에 필터를 사용하는 것과 같은 효과(필터의 특성은 연결가중치에 의해 결정)

    • 컨볼루션층은 이지미에서 특징을 추출한다고 볼 수 있음

    • 필터란 이미지 속 특징을 강조하는 계산

  • 풀링층

    • 앞 층과 국소적으로 연결되어 있다는 점에서 컨볼루션층과 유사

    • 노드 계산 방법이 전결합층이나 컨볼루션 층과 다름

    • 앞 층의 국소적인 노드에서 결정된 값을 자기 층의 노드 값으로 취함

    • 예를 들어 국소적인 노드의 최대값을 자기 노드값으로 취함

    • 풀링층으로 이미지를 계산하면 이미지의 작은 변화를 흡수(특정 영역에서의 최댓값을 취해 계산)

    • 범위 내 아주 작은 위치 변화가 있어도 풀링층에서는 같은 값을 반환

    • 이미지가 조금 변해도 같은 결과

  • 다른 타입의 층을 조합

    • 예를 들어, 이미지 인식에서 컨볼루션층이 특징량을 추출하고 풀링층이 위치 변화를 흡수해 결괏값의 변화를 최소화

4.2 신경망 학습 방법

  • 출력층의 값과 실제 데이터와 차이(오차)를 계산
  • 오차의 제곱합을 최소화

경사 하강법

  • 변수의 초기값 정함
  • 변수값에 대응하는 함수의 경사도 계산
  • 변수를 경사 방향으로 움직여 다음 변수값으로 설정
  • 함수의 최소값이 되는 변수값으로 근접해 나감
  • x_i+1 = x_i - 학습률 * 기울기(미분값)
  • 경사 하강법에는 변수, 함수, 함수의 경사가 필요함
    • 변수 : 각 웨이트의 가중치
    • 함수 : 출력층 값과 훈련 데이터의 오차의 제곱 합을 데이터 갯수만큼 더한 것
  • 제곱합을 총합을 계산하는 부분이 병목현상 지점(데이터 개수가 많아질수록 총합 계산할 숫자가 증가)
  • 경사 하강법의 종류
    1. 배치법 : 모든 데이터를 이용해 갱신 처리를 수행(기본방식)
    2. 미니 배치법 : 훈련 데이터에서 소량의 데이터를 적당히 선택해 갱신 처리 수행(처음에 이렇게 10개, 다음에 다르게 10개.. 반복)
    3. 확률적 경사 하강법 : 훈련 데이터에서 하나씩 적당히 선택해 갱신(처음에는 A, 다음에는 B)
  • 데이터가 만힉 때문에 주로 확률적 경사 하강법이나 미니배치법 자주 사용
  • 경사 하강법을 이용하려면 함수의 경사도를 계산할 수 있어야 함
  • 신경망 학습 처리에서 최소화되는 함수의 경사를 효율적으로 계산하기 위한 방법으로 오류역전파법 사용
오류 역전파에 의한 경사 계산
  • 전방전파 : 입력층 -> 순차적으로 은닉층 -> 출력층 노드 값 결정
  • 역전파 : 출력층으로터 은닉층 거쳐서 입력층까지 진행되는 것
  • 역전파시키는 것은 오류(오차)
  • 우선, 전방전파 방법으로 입력,은닉,출력층의 노드 값 계산하고 이 값 저장
  • 출력층 각 노드에서 데이터값과의 오차 계산
  • 은닉층의 노드는 다음 층의 노드들과 연결가중치로 연결
  • 노드 간의 오차는 웨이트로 연결된 노드, 연결가중치, 노드 자신의 값에서 계산
  • 출력층부터 차례대로 역방향으로 따라 올라가게 각 층에 있는 노드의 오차를 계산
  • 각 노드의 오차를 계산하면 그 오차를 사용해 함수의 경사를 계산
  • 결과적으로 신경망 학습에 경사 하강법을 사용할 수 있게 되고, 연결가중치 최적화
드롭아웃
  • 신경망 학습 시 계산 과정을 반복하면서 임의의 노드 몇개를 샌략하여 학습, 다음 계산 때는 다른 노드 생략하고 학습 반복
  • 일반적으로 입력층 20%, 은닉층 50% 생략
  • 고성능인 이유는 앙상블 학습과 비슷(여러가지 기계학습 결과로 판단을 내려 학습 성능 증가)
  • 그 외 드롭커넥트(연결가중치를 랜덤하게 생략), 어댑티브 드롭아웃(상황에 따라 노드 생략)
  • 정밀 학습 방법으로 아다그라드(AdaGrad)나 아다델타(AdaDelta), 아담(Adam) 등이 있음 - 학습에 맞추어 학습률 최적화

4.3 딥러닝 알고리즘

컨볼루션 신경망 학습 방법

  • CNN : 컨볼루션층과 풀링층을 포함하는 신경망

  • 오류역전파법을 적용한 확률적 경사법 or 미니배치법에 의한 경사법으로 학습진행

  • 보통 드롭아웃이나 아다그라드도 병행하여 이용

  • 전합결층은 층이 깊어져도 정밀도가 높아지지 않는 문제 발생

  • CNN은 이와 비교했을 때 층이 깊어도 통상적인 신경망 학습방법으로 높은 정밀도

오토인코더 학습 방법

  • 입력층과 출력층의 값이 같은 신경망
  • 주어진 데이터는 입력 데이터 뿐 (주어진 입력 데이터가 훈련데이터도 겸하고 있다)
  • 오토 인코더는 입력과 출력이 가급적 똑같게 하는 신경망
  • 층이 깊은 오토인코더는 단순히 오류역전파법에 의한 학습으로 정밀도 안 나옴
  • 대안으로 층별로 학습하는 방법 제안됨
  • 입력층 - 은닉 1 - 은닉 2 - 은닉 3 - 출력층이라고 할 때,
    • 입력층 - 은닉 1 - 출력층으로 만든 오토인코더에서, 입력층과 은닉층 연결 가중치를 본래의 입력층과 첫번째 은닉층의 연결가중치로, 은닉층과 출력층 연결 가중치를 본래의 은닉 3과 출력층의 연결 가중치로 정함
    • 은닉 1(입) - 은닉 2 - 은닉 3(출)으로 만든 오토인코더에서, 입 - 은닉 가중치를 본래의 은닉 1과 은닉 2의 가중치로, 은닉- 출 가중치를 원래의 은닉 2와 은닉 3의 가중치로 정함
    • 이렇게 설정된 연결가중치를 초기값으로 본래의 오토인코더를 오류역전파법으로 학습하면 높은 정밀도로 학습 가능

순환 신경망 학습 방법

  • 은닉층에 자기 순환 기능이 있고, 시계열 데이터를 적용하는 신경망

  • 훈련 데이터로는 시계열의 입력 데이터와 시계열의 지도 학습 데이터가 쌍으로 사용됨

  • 은닉층에 자기 순환 기능이 있어 위의 신경망 학습방법 적용 불가능

  • BPTT(Back Propagation Through Time)

  • 입력층 - 은닉(순환) - 출력층을 펼친다.

  • 입력층 입력층

  • 은닉(h1) -----> 은닉(h2) --------> 은닉(h3)...

  • 순환 순환

  • 이렇게 전개한 후 오류역전파법 적용

  • 오차 계산법이 다른 신경망과 조금 다름
  • h3의 오차는 오류역전파법과 o3(세번째 펼친거의 출력)의 오차를 사용하여 계산. 다음 h2의 오차는 오류역전파로 구한 o2의 오차와 오차 h3을 이용하여 계산..

results matching ""

    No results matching ""