본문 바로가기

Etc../인공지능 연구동향

[인공지능 연구동향] Neural_Netwrok_기본

Neural Networks 기본

개요

딥러닝을 배우는 이유

  • 딥러닝은 다양한 분야에서 다양한 Task를 수행하기 위해 사용 함.
  • 컴퓨터 비전 뿐 아니라 자연어 처리(GPT3), 음성처리(웨이브넷) 분야에서도 놀라운 성능을 보여주고 있음
  • 또한, 게임(체스, 바둑, 도타, 스타크래프트) 분야나 제어분야 (자율주행차량) 에서도 널리 사용되고 있음.

딥러닝이 다양한 분야에서 성공을 거두는 것에 도움 준 요소들

  • *컴퓨팅 파워의 향상 *(특히 GPU) : GPU는 컴퓨터 그래픽을 처리하기 위한 장치로 CPU에 비해 굉장히 많은 코어를 가지고 있기 때문에 기계학습에 사용되고 있다. 딥러닝의 주요 연산은 행렬곱셈으로 이루어져 있기 때문에 병렬화 하기 매우 용이하기 때문.
  • 최근에는 벡터, 행렬연산에 최적화된 Tensor Processing Unit(TPU)로 불리는 하드웨어도 딥러닝 분야의 성공을 이끌고 있다.
  • 데이터 : 인터넷, 사물인터넷 그 외 여러 소스를 통해 매우 많은 데이터를 수집하고 활용할 수 있다
  • 알고리즘 : 딥러닝 모델이 가지고 있는 Modularity는 다양한 아이디어들을 조합하여 성능을 향상시키고 다른 분야와 접목하는데 큰 도움을 주고 있다.

딥러닝이란 다양한 종류의 기능적 모듈을 조합하여 네트워크를 구성하고 그 네트워크를 데이터로부터 Grdient 기반 Optimization을 이용하여 학습하는 것 - 얀 레쿤-

Deep Learning is constructing networks of parameterized functional modules and training them from examples using gradient based optimization. - Yann LeCun -

  • 여기서 중요한 점은 우리는 아주 거대한 하나의 네트워크 모델을 만드는 것이 아닌, 다양한 모듈을 정의하고 그 모듈들의 조합으로 네트워크를 구성한다는 것이다.

The deep Learning Puzzle

  • 각각의 노드는 인풋이 들어와 정해진 연산을 하고 아웃풋을 내보내는 형태
  • 일반적으로 인풋이 아웃풋에 어떠한 영향을 주는지 고려해야한다.
  • 아웃풋의 조절이 필요할 때 인풋을 조절할 줄 알아야 한다.
  • 따라서, 우리가 Neural Network를 학습시키기 위해서는 일반적으로 각각의 노드에서 인풋에 대해 미분 가능하도록 정의해야 한다.



Neural Network

  • 사람의 뇌는 대략 860억개의 뉴런을 가지고 있다는 연구결과가 있다.
  • 이러한 뉴런은 수천개의 다른 뉴런들과 연결되어 있다.
  • 뉴런은 시간에 따른 스테이트를 가지면서 시간에 따라 스파이크를 아웃풋으로 가진다

Artificial neuron

  • 모든 뉴런의 특성을 다 표현하는 게 아닌 몇몇 신경생리학적 관점에서 관찰한 뉴런의 성질에 초점을 맞춘 모델(인풋, 연산, 아웃풋)

$$
\bar{x} = \sum\limits_{i=1}^dw_ix_i+b
$$

  • 간단한 수준의 연산이며, 단순하게 보면 그저 Weighted sum이다.
  • 실제 뉴런과는 다르게 시간에 대한 차원을 제거하여 stateless하다
  • 시간에 따른 스파이크를 표현할 수 없어서 아웃풋은 real value를 가지게 된다.
  • Artificial neuron을 적절히 조합하면 linear layer를 구성할 수 있고 수식을 Wx + b형태의 간단한 affine transformation으로 정리할 수 있다.
  • W를 매트릭스 형태로 정리할 수도 있고 인풋도 vectorized형태로 정리할 수 있는데, 이런 현태로 사용할 경우 연산 효율을 크게 높일 수 있다.
  • Linear Layer : 선형대 수학에서는 affine 연산에 해당하지만 딥러닝 분야에서는 WX + b와 같은 연산도 일반적으로 linear하다고 표기한다.
  • Unit : 각 레이어에 있는 뉴런
  • W : 가중치 , parameter, weight, parameter weight 등으로 불린다.
  • 현재까지의 linear layer는 linear regression을 벗어나지 못했다.

Single Layer Neural Network

  • 가장 간단한 구조인 한개의 레이어를 가지는 neural network
  • 가장 처음 노드는 Linear 모듈
  • 데이터가 들어오면 데이터와 리니어모듈의 파라미터간 연산을 통해 아웃풋을 만든다.
  • 리니어 모듈만 계속 쌓거나 조합한다고 네트워크의 성능을 크게 높일 수 없다.
  • 따라서 non-Linearity(비선형성)를 넣어줄 필요가 있다.

Sigmoid Activation Function

$$
Sigmoid function\ \ \ f_\alpha(x) = \frac{1}{1+e^{-x}}
= \frac{e^x}{e^{x}+1}
$$

  • 시그모이드는 실수입력을 0부터 1사이의 값으로 만들어준다.
  • 이러한 activation function은 엄격하게 본다면 확률 값을 만든다고 할 수는 없지만 아웃풋이 0~1이기 때문에 probability estimation으로 보기도 한다.
  • 인풋이 아주 작거나 아주 크면 시그모이드의 미분값이 0에 가깝다.
  • 이러한 특징은 나중에 학습을 진행할 때 업데이트를 진행할 수 없는 vanishing gradient 현상을 야기한다.



활성화 함수의 필요성

  • 만약 좌표계에 두 군집이 있을 때 Linear Function만으로 네트워크를 구성한다면 네트워크 사이즈가 아무리 커져도 선형을 벗어날 수 없기 때문에 일직선으로 군집을 분류할 수 없다면 영원히 분류할 수 없다.
  • 하지만 activation function을 사용하게 된다면 이론상으로는 아무리 복잡한 function이라도 근사할 수 있게 된다. (universal approximation theorem)
  • universal approximation theorem : 어떠한 연속적인 함수라도 시그모이드 기반의 1-hidden layer neural network가 근사할 수 있음을 증명함.



Loss Function

  • 우리가 뉴럴네트워크를 통해 나온 아웃풋이 실제 나와야 하는 것과 어느정도 차이가 나는지 / 정답과 얼마나 근사한지를 판단하기 위한 함수
  • 가장 일반적으로 사용되는 손실함수는 cross entropy

$$
l_{ce(p,t)} = -[t*log_p]+(1-t)log(1-p)]
$$

  • 여기서 p는 예측값 즉, 아웃풋의 결과값, t는 타겟 즉, 나와야하는 정답을 의미
  • P와 T에 따라서 실수 값을 아웃풋으로 내놓음.
  • loss값이 작을 수록 올바른 예측을 한것 .
  • cross entropy 는 cross entropy loss, negative log likelihood, logistic loss등 다양한 표현을 사용하지만 다 동일한 의미를 가진다.
  • 시그모이드 함수와 조합되어 사용 됨



Softmax

  • 분류할 클래스가 2개를 초과할 때 사용
  • Maximum function의 smooth버전

$$
f_{sm}(x) = \frac{e^x}{\sum_{j=1}^{k}e^{x_j}}
$$

  • 인풋을 양수로 바꿔준 후 전체 값에 대해서 normalize하여 일종의 확률 값 형태로 만들어 줌.
  • 분류에 있어 가장 널리, 일반적으로 사용되고 있는 final activation function
  • 소프트 맥스의 특수한 case -> sigmoid
  • 시그모이드의 일반화 표현 -> Softmax
  • 시그모이드와 비슷하지만 특정 구간에서 같은 단점을 가짐
  • Softmax와 cross entropy를 조합한 loss function은 분류 뿐 아니라 강화학습까지 폭넓게 사용됨

장점

  • 여러개 클래스에서도 분류가 잘 이루어짐
  • 소프트맥스가 결합되어 사용되기 때문에 상대적으로 numerically stable함.

단점

  • sparse한 아웃풋을 잘 표현하지 못함.
  • 특성상 결과 값이 0이나 1은 표현할 수 없음.
  • 클래스의 개수가 늘어나는 것에 대해 안정적이지 않음.



Two-layer Neural Network

  • single Layer 네트워크 중간에 노드가 더 늘어난 것.
  • 히든 뉴런을 통해 XOR문제와 같은 선 하나로 해결할 수 없는 문제를 해결할 수 있음
  • 히든 레이어는 인풋스페이스를 nonlinear하게 Transeformation하여 복잡한 문제도 해결 가능하게 만들어줌
  • Playground : 뉴럴네트워크가 복잡한 인풋 스페이스를 어떻게 다루고 해결하는지 시각적으로 확인 가능



Deep Neural Network

  • 시그모이드의 아주 작은 인풋이나 아주 작은 인풋은 gradient vanishing 문제가 발생하는데 네트워크가 깊어지면 이 문제는 더욱 심각해 진다.
  • ReLU(rectified linear unit) : 이런 문제를 조금 완화하기 위한 activation function

$$
f_{relu}(x) = max(0,x)
$$

$$
f_{sp}(x) = log(l+e^x)
$$

  • 0보다 크면 인풋값을 그대로 내보내고 0보다 작으면 0으로 내보내 주는 형태
  • 네트워크의 수학적 분석이 매우 간단해짐.
  • 0보다 작은 부분에 대해서 값이 0이기 때문에 업데이트가 되지 않는 dead neuron이 발생할 수 있음
  • 0에서는 미분이 되지 않기 떄문에 미리 저장된 값을 사용하기도 함.
  • ReLU를 접목시킨 Neural Network는 낮은 레이어에서 라인과 코너와 같은 Low Level feature에 대해서 학습하고 레이어가 깊어질수록 그 전에 학습한 feature를 조합하여 High Level feature를 학습하는 모양을 가진다.
  • 이를 기반으로 이미지 분류와 같은 Task를 수행하도록 한다.

Depth

  • 한 레이어 안에 있는 뉴런 하나당 표현 할 수 있는 linear region은 polinominal하게 증가한다.
  • 하지만, 네트워크가 깊어질수록 이전 레이어의 뉴런들이 표한 linear region들을 조합하여 깊이에 따른 linear region은 exponential하게 증가한다.
  • 뉴런의 증가보다 깊이가 깊어지는 것이 더 중요하게 되는 것.
  • 깊은 모델일수록 더 많은 비선형성, 더 많은 파라미터들이 조합되어 네트워크 학습이 어려워짐



참고 : K-MOOC 인공지능 연구동향 - 중앙대학교 김영빈 교수님