상세 컨텐츠

본문 제목

딥러닝 (1) - Deep Learning 소개 및 용어 정리

IT/Deep Learning

by HarimKang 2020. 2. 4. 00:40

본문

딥러닝 - 1. Intro to Deep Learning

Writer: Harim Kang

해당 포스팅은 딥러닝 공부를 시작하는 의미로 기본적인 딥러닝에 대한 설명과 용어를 정리하였습니다. 내용 구성은 전공 수업과 개인 검색, 관련 책에 대한 내용들을 재구성하고 재생각도 함께 작성하였습니다.


딥러닝(Deep Learning)이란?

딥러닝은 머신러닝의 한 분야입니다. 연속된 층(Layer)에서 점진적으로 학습을 하는 것에 강점이 있으며, 기계 학습의 새로운 방식입니다. 딥러닝에서 딥(Deep)은 연속된 층으로 학습한다는 의미입니다. 층의 숫자는 모델의 깊이를 나타내기 때문입니다.

왜 딥러닝을 공부할까요?

제 생각이지만 머신러닝, 그 중에서도 딥러닝은 앞으로는 기본적인 알고리즘 수준이 될 것입니다. 마치 1,2학년 전공으로 배우는 자료구조나 알고리즘처럼 말이죠. 모든 분야와 어울리게 될 것이고, 소프트웨어적으로도 많은 분야에 기본적으로 사용될 것이라고 생각됩니다. 많은 혁신과 발전은 항상 이루어지고 있고, 딥러닝의 이해는 그것들의 기초라고 생각하고 있습니다. 지금 배워야할 때입니다.

또한, 최근에는 아래와 같은 이유들로 많은 발전을 이루어내며, 관련된 수많은 논문들이 쏟아져 나오고 있습니다.

  • 하드웨어의 발전
  • 데이터의 증가
  • 알고리즘의 향상

신경망(Neural Network)

딥러닝은 기본 층들을 쌓아서 구성한 신경망(Neural Network)이라는 모델을 사용하여 학습을 진행합니다. 신경망은 뉴런(Neuron)들로 이루어진 그룹을 의미합니다. 신경망은 원래 신경 생물학의 용어입니다. 뉴런들의 끝이 다른 뉴런들과 연결된 구조입니다. 뇌 구조를 이해하는 것에서 영감을 받아서 딥러닝 모델의 핵심 개념을 설명하지만, 실제로 뇌를 모델링하여 만든 것은 아니라고 합니다. 그저 하나의 데이터 학습을 새로운 방식으로 하는 수학 모델이라고 보시면 됩니다.

  • Biological Neural Network(BNN)

    • 생물학적으로는 Biological Neural Network(BNN)이라고 합니다. 생물학적인 뉴런은 시냅스(Synapse)를 통해서 전기신호를 이용하여 의사소통합니다. 시냅스는 세포의 끝에 위치하여 다음 세포로 신호를 전달하는 역할을 합니다.

  • Artificial Neural Network(ANN)

    • 생물학적인 뉴런의 개념을 따서 만든 컴퓨팅(전산적)적인 모델입니다.
    • 두개의 층(Layers)이상으로 구성되어있다는 것이 특징입니다.
  • 뉴런(Neuron)

    • 생물학적인 뉴런의 개념에 기초한 수학적인 함수를 의미합니다.

    • 뉴런이 활성 중인지에 따라서 활성함수가 결정됩니다.

    • 해당 뉴런의 결과가 0이라면, 신호를 주고받지 않는 비활성화된 뉴런이란 것을 알수 있습니다. (activation function)

신경망의 구성

  • Input Layer (입력층)
    • 입력 뉴런들로 구성된 층을 의미합니다.
  • Output Layer (출력층)
    • 결과물을 생산하는 출력 뉴런을 의미합니다.
  • Hidden Layer (은닉층)
    • 입력층과 출력층 사이에 있는 Layer를 의미합니다.

  • Deep Neural Network (DNN)
    • 적어도 3개의 층이상으로 이루어진 신경망을 의미합니다. (2개이상의 Hidden Layer)

신경망 학습이란?

신경망 학습의 목표는 가중치의 정확한 값을 찾는 것에 있습니다. 어떤 층이 있을 때, 해당 층을 데이터가 거치면서 일어나는 변환은 해당 층의 가중치를 매개변수로 가지는 함수를 통해서 일어납니다.

학습은 주어진 입력을 정확한 출력으로 매핑시키기 위해 모든 층의 가중치를 찾는 것을 의미합니다.

신경망 학습의 순서를 간단하게 설명해보겠습니다.

신경망 학습의 순서

  1. 데이터를 입력받습니다.
  2. 층에 도달할 때마다 해당 층의 가중치를 사용하여 출력 값을 계산합니다.
  3. 모든 층에서 반복합니다. 마지막으로는 예측 값이 나옵니다.
  4. 예측 값은 실제 값과 비교하는 손실 함수를 통해서 점수를 계산합니다.
  5. 해당 점수를 피드백으로 삼아서, 손실 점수가 감소되는 방향으로 가중치를 수정합니다. (Optimizer)
  6. 위의 과정을 반복(Loop)합니다.
  7. 손실 함수를 통해 계산되는 손실 점수를 최소화시키는 가중치를 찾아냅니다.

이러한 신경망 학습과 관련된 용어를 정리해보겠습니다.


관련 용어 정리

Weight (가중치)

  • 뉴런사이의 연결 강도를 의미합니다.
  • 신경망이 훈련을 하는 동안, 업데이트되어 weight가 변경됩니다.
  • Learnable Parameters라고도 부릅니다.

Bias

  • Bias 뉴런의 가중치를 의미합니다.
  • 해당 값 또한, 훈련 시 업데이트 됩니다.

Activation Function (활성 함수)

  • 주어진 입력값들을 받은 뉴런의 출력값을 돌려주는 함수입니다.

  • 현재 뉴런의 활성화에 따라 출력값을 결정합니다.

    • 1은 뉴런을 활성화, 0은 뉴런을 비활성화
  • 대표적인 활성함수

    • Sigmoid Function

      • 초창기에 많이 사용된 활성함수로, S자형 곡선을 가지는 함수입니다.

      • AND, OR, XOR 연산을 다루는데 적합한 함수입니다.

      • 또한 Binary Classification에 적합한 함수입니다.

      • 출력 값의 범위: [0, 1]

        import numpy as np
        
        def sigmoid(x):
        	return 1 / (1 + np.exp(-x))
    • Hyperbolic Tangent

      • tanh함수는 sigmoid의 s자곡선 형태를 가지면서, 출력값의 범위는 -1과 1사이인 함수입니다.
      • 값의 범위: [-1, 1]
    • ReLU (Rectified Linear Unit)

      • Sigmoid의 대안으로 나온 활성함수로, 0이하의 수는 0을, 양수인 경우에는 양수를 그대로 반환하여 값의 왜곡이 적어집니다.
      • 값의 범위: [0, inf]
import numpy as np
def relu(x):
    return np.maximum(0, x)

이외의 용어들은 추후 함께 설명하겠습니다. 이후의 포스팅 내용은 '시작하세요! 텐서플로 2.0 프로그래밍' 책을 따라가며 공부한 내용들을 정리하겠습니다.

Reference

텐서플로우 블로그: https://tensorflow.blog/케라스-딥러닝/1-딥러닝이란-무엇인가/
BNN: Prediction of crude oil viscosity using feed-forward back-propagation neural network (FFBPNN)

관련글 더보기