Writer: Harim Kang
해당 포스팅은 딥러닝 공부를 시작하는 의미로 기본적인 딥러닝에 대한 설명과 용어를 정리하였습니다. 내용 구성은 전공 수업과 개인 검색, 관련 책에 대한 내용들을 재구성하고 재생각도 함께 작성하였습니다.
딥러닝은 머신러닝의 한 분야입니다. 연속된 층(Layer)에서 점진적으로 학습을 하는 것에 강점이 있으며, 기계 학습의 새로운 방식입니다. 딥러닝에서 딥(Deep)은 연속된 층으로 학습한다는 의미입니다. 층의 숫자는 모델의 깊이를 나타내기 때문입니다.
제 생각이지만 머신러닝, 그 중에서도 딥러닝은 앞으로는 기본적인 알고리즘 수준이 될 것입니다. 마치 1,2학년 전공으로 배우는 자료구조나 알고리즘처럼 말이죠. 모든 분야와 어울리게 될 것이고, 소프트웨어적으로도 많은 분야에 기본적으로 사용될 것이라고 생각됩니다. 많은 혁신과 발전은 항상 이루어지고 있고, 딥러닝의 이해는 그것들의 기초라고 생각하고 있습니다. 지금 배워야할 때입니다.
또한, 최근에는 아래와 같은 이유들로 많은 발전을 이루어내며, 관련된 수많은 논문들이 쏟아져 나오고 있습니다.
딥러닝은 기본 층들을 쌓아서 구성한 신경망(Neural Network)이라는 모델을 사용하여 학습을 진행합니다. 신경망은 뉴런(Neuron)들로 이루어진 그룹을 의미합니다. 신경망은 원래 신경 생물학의 용어입니다. 뉴런들의 끝이 다른 뉴런들과 연결된 구조입니다. 뇌 구조를 이해하는 것에서 영감을 받아서 딥러닝 모델의 핵심 개념을 설명하지만, 실제로 뇌를 모델링하여 만든 것은 아니라고 합니다. 그저 하나의 데이터 학습을 새로운 방식으로 하는 수학 모델이라고 보시면 됩니다.
Biological Neural Network(BNN)
생물학적으로는 Biological Neural Network(BNN)이라고 합니다. 생물학적인 뉴런은 시냅스(Synapse)를 통해서 전기신호를 이용하여 의사소통합니다. 시냅스는 세포의 끝에 위치하여 다음 세포로 신호를 전달하는 역할을 합니다.
Artificial Neural Network(ANN)
뉴런(Neuron)
생물학적인 뉴런의 개념에 기초한 수학적인 함수를 의미합니다.
뉴런이 활성 중인지에 따라서 활성함수가 결정됩니다.
해당 뉴런의 결과가 0이라면, 신호를 주고받지 않는 비활성화된 뉴런이란 것을 알수 있습니다. (activation function)
신경망 학습의 목표는 가중치의 정확한 값을 찾는 것에 있습니다. 어떤 층이 있을 때, 해당 층을 데이터가 거치면서 일어나는 변환은 해당 층의 가중치를 매개변수로 가지는 함수를 통해서 일어납니다.
학습은 주어진 입력을 정확한 출력으로 매핑시키기 위해 모든 층의 가중치를 찾는 것을 의미합니다.
신경망 학습의 순서를 간단하게 설명해보겠습니다.
이러한 신경망 학습과 관련된 용어를 정리해보겠습니다.
주어진 입력값들을 받은 뉴런의 출력값을 돌려주는 함수입니다.
현재 뉴런의 활성화에 따라 출력값을 결정합니다.
대표적인 활성함수
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
ReLU (Rectified Linear Unit)
import numpy as np
def relu(x):
return np.maximum(0, x)
이외의 용어들은 추후 함께 설명하겠습니다. 이후의 포스팅 내용은 '시작하세요! 텐서플로 2.0 프로그래밍' 책을 따라가며 공부한 내용들을 정리하겠습니다.
텐서플로우 블로그: https://tensorflow.blog/케라스-딥러닝/1-딥러닝이란-무엇인가/
BNN: Prediction of crude oil viscosity using feed-forward back-propagation neural network (FFBPNN)
딥러닝 (6) - CNN (Convolutional Neural Network) (2) | 2020.02.24 |
---|---|
딥러닝 (5) - 분류(Classification) 네트워크 (1) | 2020.02.24 |
딥러닝 (4) - 회귀(Regression) 네트워크 만들기 (0) | 2020.02.12 |
딥러닝 (3) - AND, OR, XOR 연산 신경망 만들기 (0) | 2020.02.07 |
딥러닝 (2) - 텐서플로우 2.0 기초와 뉴런 만들기 (2) | 2020.02.06 |