코딩일기

[Deep Learning] 1. 딥러닝 개념, 개요, 구성, 활성화함수 본문

Code/딥러닝(NL)

[Deep Learning] 1. 딥러닝 개념, 개요, 구성, 활성화함수

daje 2021. 5. 3. 12:11
728x90
반응형

 

 

안녕하십니까 다제입니다. 

 

오늘은 딥러닝의 기초적인 개념에 대해서 학습을 진행토록 하겠습니다. 

 

 

 


 

 

목차 

1. 딥러닝 & 인공지능 정의 

 

2. 딥러닝은 왜 갑자기 인기있는가?

 

3. 딥러닝과 머신러닝의 차이는 무엇인가? 

 

4. 딥러닝의 구성 

 

5. 활성화 함수 

 

 

 


 

 

 

1. 딥러닝 & 인공지능 정의  

 

1-1. 딥러닝의 정의 

2개 이상의 Hidden Layer를 가지는 다층 신경망으로써 신경망을 학습할 때 손실 함수(Loss function)를 통해 예측값과 실제값의 차이(로스값)를 평가하고 역전파[경사 하강법(Gradient Descent)]을 통해 최적의 가중치, bias를 찾아 로스값을 최소화하는 학습 방법 

 

1-2. 인공지능의 정의 

인간의 지능으로 할 수 있는 사고, 학습, 자기 개발 등을 컴퓨터가 할 수 있도록 하는 방법을 연구하는 컴퓨터 공학 및 정보기술의 한 분야(인공지능 > 머신러닝 > 딥러닝)

 

 


 

 

2. 딥러닝은 왜 갑자기 인기가 많아졌을까?

 

가장 중요한 이유는 XOR problem이 역전팍 학습방법을 통해 해결되었기 때문입니다. 

 

1) 컴퓨터의 성능 향상 - 학습시간이 매우 길었는데 GPU, TPU가 발전되면서 학습시간 감소 

2) 데이터의 증가 - 인터넷속도↑, SNS활성화, 핸드폰, 사물인터넷에 따른 데이터량 급증 

3) 알고리즘 개발 - 딥러닝의 단점(Overfitting과 Gradient Vanishing) 완화 시킬 수 있는 알고리즘 개발

4) 이세돌, 알파고 대국을 통한 사회적 관심 급증 

 

 


 

 

3. 딥러닝과 머신러닝의 차이는?

머신러닝은 기계가 학습하는 모든 것을 의미하고

딥러닝은 이러한 기계학습 중에서도 사람의 뇌의 네트워크와 유사하게 neural network를 기반으로 학습하는 방법 입니다. 이렇게 neural network를 기반으로 하는 하는 이유는 표현학습(representation learning) 때문입니다. 

 

표현학습이란?

원본 데이터에서 가장 대표적인 특성(feature)과 이런 특성을 추출하는 방법을 학습하는 것을 의미합니다. 

이 말을 조금 쉽게 표현하지면, 어떤 특성이 중요한지 모르니까 랜덤하게 가중치를 학습시키고 역전파로 가중치를 업데이트한 후 정말 대표적이고 중요한 특징을 찾는 일련의 과정을 의미합니다. 

 

즉, 딥러닝과 머신러닝의 가장 큰 차이는 표현학습(representation learning)이라 할 수 있습니다.

 

 


 

 

4. 딥러닝의 구성 

 -. 딥러닝은 크게 입력층, 은닉층, 출력층으로 구성되어 있습니다.

 -. 각각의 층은 퍼셉트론이라는 노드로 구성이 되어 있으며, 층에서 층으로 이동할 때는 가중치라는 계수와 활성함수에 따라 신호전달 유무 및 강도가 결정됩니다. 

 

이제 각각의 개념들을 살펴보도록 하겠습니다. 

 

4-1. 퍼셉트론(perceptron)

-. 단순히 하나의 노드(뉴런)으로 이루어진 신경망입니다. 

-. 다수의 입력값을 가질 수 있고 하나의 출력값을 낸다는 특징이 있습니다.

 

4-2. 입력층(Input Layers)

-. 입력층은 데이터셋으로부터 입력을 받습니다. 입력 변수의 수와 입력 노드의 수는 같습니다.

-. 보통 입력층은 어떤 계산도 수행하지 않고 그냥 값들을 전달하기만 하는 특징을 가지고 있습니다.

-. 그래서 신경망의 층수(깊이, depth)를 셀 때 입력층은 포함하지 않습니다.

 

4-3. 은닉층(Hidden Layers)

 -. 계산이 없는 입력층과 출력층 사이에 있는 층들을 은닉층(Hidden Layers) 이라고 부릅니다.

 -. 은닉층에 있는 계산의 결과를 사용자가 볼 수 없기(hidden) 때문에 이런 이름이 붙었습니다.

 -. 은닉층은 XOR게이트로 해결하지 못하는 non-linear한 문제는 해결하기 위해 발생된 개념입니다. 

 -. 그러나, 아무리 은닉층을 많이 쌓아도 해결이 안되는 non-linear한 문제가 해결이 되지 않아 활성화함수가 도입되었습니다. 

 -. 이와 같은 이유로 활성화함수를 사용하는 것입니다. 

 -. 참고적으로 계산이 일어나는 층이 둘 이상인 신경망을 다층(multilayer) 신경망 이라고 부릅니다.

 

4-4. 출력층(Output Layers)

 -. 출력층에는 대부분 활성함수(activation function)가 존재합니다.

 -. 이러한 활성화함수는 풀고자 하는 문제에 따라 다른 종류를 사용합니다.

  • 회귀 문제에서 예측할 목표 변수가 실수값인 경우 활성화함수가 필요하지 않으며 출력노드의 수는 출력변수의 갯수와 같습니다.
  • 다중클래스(multi-class)를 분류하는 경우 출력층 노드가 부류 수 만큼 존재하며 소프트맥스(softmax) 함수를 활성화 함수로 사용합니다.

 


 

5. 활성화함수(Acitvation Functions)

 -. 활성화함수는 XOR gate처럼 특정한 조건이 맞으며 신호를 전달하는 함수라고 생각하면 됩니다.

 -. 신경망에서는 입력된 데이터를 계산한 결과가 특정한 조건을 만족하면 다음 층으로 신호를 내보내는 역할을 한다. 

 

이러한 활성화함수는 크게 4가지 종류가 있다. ( 출처 : 링크참조 )

 


<시그모이드(Sigmoid)>

 -. 수식 : 

  * output값을 0에서 1사이로 만들어준다. 데이터의 평균은 0.5를 갖게 됩니다. 

  * 위 그림의 시그모이드 함수의 기울기를 보면 input값이 어느정도 크거나 작으면 기울기가 아주 작아집니다.

  * 이로인해 생기는 문제점은 Vanishing Gradient현상이 있다.

 

 -. Vanishing gradient

  * 이렇게 시그모이드로 여러 layer를 쌓았다고 가정하면 출력층에서 멀어질수록 기울기가 거의 0에 수렴하게 됩니다.

  * 즉, 역전파를 반복 할 수록 대부분의 노드에서 기울기가 0이되어 결국 gradient가 거의 완전히 사라지게 됩니다. 

  * 결국 입력층쪽 노드들은 기울기가 사라지므로 학습이 되지 않게 된다. 

 

 -. 그럼 언제 Sigmoid함수를 사용해야하지???

  * 대부분의 경우에서 시그모이드함수는 좋지 않기때문에 사용하지 않습니다.

  * 그러나binary classification경우에는 Sigmoid함수를 사용합니다. 이진분류니까요!

 

 -. 요약

  * 장점) binary classification의 출력층 노드에서 0~1사이의 값을 만들고 싶을때 사용합니다.

  * 단점) Vanishing gradient - input값이 너무 크거나 작아지면 기울기가 거의 0이 됩니다.


<Tanh>

 -. 수식 : 

 -. 특징

  * 시그모이드 함수와 거의 유사하며 차이점은 -1~1값을 가지고 데이터의 평균이 0이라는 점입니다.

  * 시그모이드보다 Tanh가 성능이 더 좋으나, 시그모이드와 마찬가지로 Vanishing gradient라는 단점이 있다.

 

 -. 결론

  * 장점) output데이터의 평균이 0으로써 시그모이드보다 대부분의 경우에서 학습이 더 잘 된다.

  * 단점) 시그모이드와 마찬가지로 Vanishing gradient현상이 일어난다.


<ReLU>

-. 수식 : 

  * 대부분의 경우 일반적으로 ReLU의 성능이 가장 좋기때문에 ReLU를 사용한다.

  * "Hidden layer에서 어떤 활성화 함수를 사용할지 모르겠으면 ReLU를 사용하면 된다" - Andrew ng

 

 -. 특징

  * 대부분의 input값에 대해 기울기가 0이 아니기 때문에 학습이 빨리 된다. 

  * 학습을 느리게하는 원인이 gradient가 0이 되면 발산하기 때문이다. 

  * 이를 대부분의 경우에서 막아주기 때문에 시그모이드, Tanh같은 함수보다 학습이 빠르다.

  * 그림을 보면 input이 0보다 작을 경우 기울기가 0이기 때문에 대부분의 경우에서 기울기가 0이 되는것을 막아주는게 납득이 안 될수 있지만 실제로 hidden layer에서 대부분 노드의 z값은 0보다 크기 때문에 기울기가 0이 되는 경우가 많지 않다. 

 

 -. 결론

  * 장점) 대부분의 경우에서 기울기가 0이 되는 것을 막아주기 때문에 학습이 아주 빠르게 잘 되다.

 

  * 단점) 위에서 언급했듯이 z가 음수일때 기울기가 0이라는 것이지만 실제로는 거의 무시할 수 있는 수준으로 학습이 잘 되기 때문에 단점이라 할 수도 없다.

 


<leaky ReLU>

 -. 수식 : 

 -. 특징

  * ReLU와 유일한 차이점으로는 max(0, z)가 아닌 max(0.01z, z)라는 점이다.

  * 즉, input값인 z가 음수일 경우 기울기가 0이 아닌 0.01값을 갖게 된다.

  * leaky ReLU를 일반적으로 많이 쓰진 않지만 ReLU보다 학습이 더 잘 되긴 한다.

 

 -. 결론

  * 장점) z가 음수일때 기울기가 0이 아닌 0.01을 갖게 하므로 ReLU보다 학습이 더 잘 된다.

 


 

7. 기타 

 -. np.exp : 지수값을 구하는 함수로써, 시그모이드 함수를 만들 때 사용된다.

 -. 참고링크 : codetorial.net/numpy/functions/numpy_exp.html

 

 -. np.dot :두 배열의 내적을 구하는 numpy 함수 

 -. 참고링크 : codetorial.net/numpy/functions/numpy_dot.html

 


 

후~ 숨가쁘게 달려왔네요!

읽어주셔서 감사드리며, 필요한 내용은 언제든지 가져다가 쓰시고, 출처만 밝혀주세요

 

오늘도 함께 공부할 수 있어서 감사합니다. 

 

 

 

728x90
반응형
Comments