[책] 밑바닥부터 시작하는 딥러닝 1권

kestrelkestrel
3 min read

도서 구매 링크: 교보문고, 예스24
저자: 사이토 고키
출판사: 한빛미디어


후기

  • 낮은 단계부터 차근차근 구현하며 이해해 나가기 때문에 개념을 잡는 데 도움이 됨

  • 설명이 친절하고 세세함

  • (읽으면서 계속 추가 예정)


정리

2. 퍼셉트론

  • 퍼셉트론은 입출력을 갖춘 알고리즘이다. 입력을 주면 정해진 규칙에 따른 값을 출력한다.

  • 퍼셉트론에서는 ‘가중치’와 ‘편향’을 매개변수로 설정한다.

  • 퍼셉트론으로 AND, NAND, OR 게이트 등의 논리 회로를 표현할 수 있다.

  • XOR 게이트는 단층 퍼셉트론으로는 표현할 수 없다.

  • 2층 퍼셉트론을 이용하면 XOR 게이트를 표현할 수 있다.

  • 단층 퍼셉트론은 직선형 영역만 표현할 수 있고, 다층 퍼셉트론은 비선형 영역도 표현할 수 있다.

  • 다층 퍼셉트론은 (이론상) 컴퓨터를 표현할 수 있다.

3. 신경망

  • 신경망에서는 활성화 함수로 시그모이드 함수와 ReLU 함수 같은 매끄럽게 변화하는 함수를 이용한다(퍼셉트론에서는 갑자기 변화하는 계단 함수를 활성화 함수로 사용).

  • 넘파이의 다차원 배열을 잘 사용하면 신경망을 효율적으로 구현할 수 있다.

  • 기계학습 문제는 크게 회귀와 분류로 나눌 수 있다.

  • 출력층의 활성화 함수로는 회귀에서는 주로 항등 함수를, 분류에서는 주로 소프트맥스 함수를 이용한다.

    • 소프트맥스 함수 구현 시 계산식에서 최댓값을 빼주어 오버플로를 방지할 수 있다.

    • $$y_k = \frac{e^{a_k}}{\sum_{i=1}^{n}e^{a_i}} = \frac{Ce^{a_k}}{C\sum_{i=1}^{n}e^{a_i}} = \frac{e^{a_k+logC}}{\sum_{i=1}^{n}e^{a_i+logC}} = \frac{e^{a_k+C'}}{\sum_{i=1}^{n}e^{a_i+C'}}$$

    • 소프트맥스 함수는 단조 증가 함수이므로 적용해도 원소의 대소 관계는 변하지 않는다.

    • 따라서 지수 계산에 드는 자원 낭비를 줄이고자 예측 단계에서는 소프트맥스 함수 적용을 보통 생략한다(학습 단계에서는 소프트맥스 함수 사용).

  • 분류에서는 출력층의 뉴런 수를 분류하려는 클래스 수와 같게 설정한다.

  • 입력 데이터를 묶은 것을 배치라 하며, 예측 처리를 배치 단위로 진행하면 결과를 훨씬 빠르게 얻을 수 있다.

    • 수치 계산 라이브러리 대부분이 큰 배열을 효율적으로 처리할 수 있도록 최적화되어 있기 때문

    • 느린 I/O를 통해 데이터를 읽는 횟수가 줄어, 버스에 부하가 줄고, 빠른 CPU나 GPU로 순수 계산을 수행하는 비율이 높아지기 때문

4. 신경망 학습

  • 기계학습에서 사용하는 데이터셋은 훈련 데이터와 시험 데이터로 나눠 사용한다.

  • 훈련 데이터로 학습한 모델의 범용 능력을 시험 데이터로 평가한다.

  • 신경망 학습은 손실 함수를 지표로, 손실 함수의 값이 작아지는 방향으로 가중치 매개변수를 갱신한다.

    • 정확도를 지표로 삼는 경우, 정확도는 이진값(맞음/틀림)을 반환하는 불연속 함수이므로 가중치 매개변수의 미미한 변화에는 거의 반응을 보이지 않고, 변할 때는 불연속적으로 갑자기 변한다.

    • 반면, 손실 함수는 가중치 매개변수의 값이 조금 변하면 그에 따라 손실 함수 값도 연속적으로 변화하여 가중치 매개변수를 점진적으로 조정할 수 있다.

  • 가중치 매개변수를 갱신할 때는 가중치 매개변수의 기울기를 이용하고, 기울어진 방향으로 가중치의 값을 갱신하는 작업을 반복한다.

  • 미분은 한순간의 변화량을 나타낸다.

    • 예를 들어, df(x)/dx 의 경우 x의 작은 변화가 함수 f(x)을 얼마나 변화시키느냐를 의미한다.
  • 아주 작은 값을 주었을 때의 차분으로 미분하는 것을 수치 미분이라고 한다.

    • 학교 수학 시간에 배운 수식을 전개해 계산하는 해석적 미분과 달리, 수치 미분은 차이(h)를 무한히 0으로 줄이는 것이 불가능해 어쩔 수 없이 오차가 존재하는 한계가 있다.

    • 오차를 줄이기 위해 중앙 차분을 활용하기도 한다.

  • 수치 미분을 이용해 가중치 매개변수에 대한 손실 함수의 기울기를 구할 수 있다.

  • 수치 미분을 이용한 계산하는 시간이 걸리지만, 그 구현은 간단하다. 한편, 다음 장에서 구현하는 (다소 복잡한) 오차역전파법은 기울기를 고속으로 구할 수 있다.

5. 오차역전파법

  • 계산 그래프를 이용하면 계산 과정을 시각적으로 파악할 수 있다.

  • 계산 그래프의 노드는 국소적 계산으로 구성된다. 국소적 계산을 조합해 전체 계산을 구성한다.

    • 전체가 아무리 복잡해도 각 노드에서는 단순한 계산에 집중하여 문제를 단순화할 수 있다.
  • 계산 그래프는 중간 계산 결과를 보관할 수 있어서 다수의 미분을 효율적으로 계산할 수 있다.

  • 계산 그래프의 순전파는 통상의 계산을 수행한다. 한편, 계산 그래프의 역전파로는 각 노드의 미분을 구할 수 있다.

  • 신경망의 구성 요소를 계층으로 구현하여 기울기를 효율적으로 계산할 수 있다(오차역전파법).

  • 수치 미분과 오차역전파법의 결과를 비교하면 오차역전파법의 구현에 잘못이 없는지 확인할 수 있다(기울기 확인).

0
Subscribe to my newsletter

Read articles from kestrel directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

kestrel
kestrel