딥러닝 프레임워크/딥러닝 기초

DeepLearning

Zoo_10th 2024. 3. 27.

1. DeepLearning

딥러닝은 인공신경망(Artificial Neural Network)의 일종이다. 인공신경망은 생물학적인 신경망의 작동 원리를 모방하여 만들어졌다. 딥러닝은 여러 층의 인공신경망을 통해 데이터를 분석하고 인식하는 방식으로 작동한다. 이 방식은 이미지, 음성, 텍스트 등 다양한 형태의 데이터를 처리하고 분석하는 데 매우 효과적이다.

인공신경망은 입력층(Input Layer), 은닉층(Hidden Layer), 출력층(Output Layer)으로 구성한다. 입력층은 데이터를 받아들이는 역할을 하며, 출력층은 분류 등의 결과를 출력하는 역할을 한다. 은닉층은 입력층과 출력층 사이에 위치하며, 입력층에서 받아들인 데이터를 처리하는 역할을 한다.

이미지 인식 분야에서는 딥러닝을 이용하여 사물 인식, 얼굴 인식 등이 가능해졌다. 음성 인식 분야에서는 음성 명령 인식, 음성 합성 등에서 활용되고 있으며, 자연어 처리 분야에서는 기계 번역, 문서 요약 등에서 활용되고 있다.

2000년대 이후로는 빅데이터와 클라우드 컴퓨팅의 발전으로 인해 딥러닝의 발전 속도가 가속화되었다. 특히 2012년에는 AlexNet이라는 딥러닝 알고리즘이 이미지 인식 분야에서 대회에서 압도적인 성적을 내며 딥러닝 기술의 대중화를 이루어졌다. 이후에는 딥러닝의 발전으로 인해 이미지, 음성, 자연어 처리 등 다양한 분야에서의 응용이 이루어지고 있다.

2. 딥러닝의 시작

2-1. 신경망

딥러닝은 인공신경망의 일종이다. 인공신경망은 생물학적인 신경망의 작동 원리를 모방하여 만들어졌다. 신경망은 입력층(Input Layer), 은닉층(Hidden Layer), 출력층(Output Layer)으로 구성된다. 입력층은 데이터를 받아들이는 역할을 하며, 출력층은 분류 등의 결과를 출력하는 역할을 한다. 은닉층은 입력층과 출력층 사이에 위치하며, 입력층에서 받아들인 데이터를 처리하는 역할을 한다.

2-2. 퍼셉트론

퍼셉트론(Perceptron)은 인공신경망의 한 종류로, 신경망의 기본 구성 요소이다. 퍼셉트론은 다수의 입력을 받아들여 하나의 출력을 내보내는 구조를 가지고 있다. 입력과 출력은 0 또는 1의 값을 가질 수 있습니다. 퍼셉트론은 입력값과 가중치(weight)를 곱한 합이 임계치(threshold)보다 크면 1, 작으면 0을 출력한다.

수식은 아래와 같다

θ 는 임계치이다.

3. 논리 게이트

논리 게이트는 디지털 회로에서 논리 연산을 수행하는 중요한 요소이다. 이들 게이트는 딥러닝에서도 매우 중요한 개념으로 사용된다. 논리 게이트의 종류에는 AND, OR, XOR, 그리고 NAND 게이트가 있다. 각각의 게이트는 입력 신호에 따라 출력값이 결정된다.

1) AND 게이트는 입력 신호가 모두 1일 때만 출력이 1이 되는 논리 게이트

2) OR 게이트는 입력 신호 중 하나 이상이 1일 때 출력이 1이 되는 논리 게이트

3) NAND 게이트는 입력 신호가 모두 1일 때 출력이 0이 되는 논리 게이트

4) XOR 게이트는 입력 신호 중 하나만 1일 때 출력이 1이 되는 논리 게이트

논리 게이트를 조합하여 복잡한 문제를 해결하는 네트워크를 구성한다.

3-1. AND 게이트

AND 게이트는 입력 신호가 모두 1일 때만 출력이 1이 되는 논리 게이트이다.

3-2. OR 게이트

OR 게이트는 입력 신호 중 하나 이상이 1일 때 출력이 1이 되는 논리 게이트이다.

3-3. NAND 게이트

NAND 게이트는 입력 신호가 모두 1일 때 출력이 0이 되는 논리 게이트이다.

3-4. XOR 게이트

XOR 게이트는 입력 신호 중 하나만 1일 때 출력이 1이 되는 논리 게이트이다.

4. 딥러닝의 구조

딥러닝은 인공신경망의 일종으로, 여러 층의 인공신경망을 통해 데이터를 분석하고 인식하는 방식으로 작동한다. 이 방식은 이미지, 음성, 텍스트 등 다양한 형태의 데이터를 처리하고 분석하는 데 매우 효과적이다. 딥러닝의 구조를 살펴보면 다음과 같다.

4-1. 가중치(Weights)

딥러닝에서는 입력 데이터와 가중치를 곱한 값을 활성화 함수에 입력하여 출력값을 얻는다. 이때 가중치는 학습 과정에서 최적의 값을 찾아내는 매우 중요한 변수이다.

4-2. 활성화 함수(Activation Function)

함수는 입력층에서부터 출력층까지 전달되는 신호를 변환하여 다음 층으로 전달한다. 이렇게 변환된 신호는 다음 층에서 가중치와 함께 처리되어 최종적인 출력값을 생성하게 된다.

딥러닝에서 가장 널리 사용되는 활성화 함수 중 하나는 ReLU(Rectified Linear Unit) 함수다. 이 함수는 입력이 양수인 경우에는 그대로 출력하고, 입력이 음수인 경우에는 출력값을 0으로 만듭니다. 이 함수는 계산이 매우 간단하며, 신경망의 학습 속도를 빠르게 만들어준다.

시그모이드 함수는 입력값을 0과 1 사이의 값으로 변환한다. 이 함수는 과거에는 널리 사용되었지만, 양 끝단에서 기울기가 매우 작아지는 문제점이 있어 현재는 잘 사용되지 않는다.

소프트맥스 함수는 다중 클래스 분류 문제에서 사용되는 활성화 함수다. 입력값을 각 클래스에 대한 확률값으로 변환하여 출력한다. 이 함수는 출력값이 모두 0과 1 사이에 있으며, 모든 출력값의 합이 1이 되도록 보장한다. 이 함수는 분류 정확도를 높이는 데 매우 유용하다.

1) Sigmoid 함수

시그모이드 함수는 딥러닝에서 가장 많이 사용되었던 활성화 함수 중 하나다. 이 함수는 입력값을 0과 1 사이의 값으로 변환하여 출력한다. 이 함수는 과거에는 널리 사용되었지만, 양 끝단에서 기울기가 매우 작아지는 문제점이 있어 현재는 잘 사용되지 않는다.

시그모이드 함수는 신경망의 출력값을 확률로 해석할 수 있어 분류 문제에서 주로 사용되었다. 이 함수는 입력값이 커지면 출력값이 1에 수렴하고, 입력값이 작아지면 출력값이 0에 수렴한다. 이러한 특성은 이진 분류 문제에서 매우 유용하게 사용된다.

하지만, 시그모이드 함수는 양 끝단에서 기울기가 매우 작아지는 문제가 있다. 이러한 문제는 역전파 알고리즘에서 기울기가 매우 작아져 학습이 불안정해지는 현상을 발생시킨다. 이러한 문제를 해결하기 위해 다른 활성화 함수들이 개발되었다.

2) TanH 함수

TanH함수는 하이퍼볼릭 탄젠트 함수로, 다양한 활성화 함수 중 하나다. TanH 함수는 Sigmoid 함수와 유사하지만, 출력값의 범위가 -1에서 1로 더 넓은 범위를 가지고 있다.

딥러닝에서 주로 사용되는 활성화 함수 중 하나이며, 출력값이 양수나 음수에 따라 양수나 음수로 크게 출력되는 특성이 있다. 이러한 특징을 가지고 있어, 입력값이 어떤 범위에 있더라도 출력값이 일정하게 나오는 Sigmoid 함수와는 달리 TanH 함수는 입력값이 0에 가까울수록 출력값이 더욱 민감하게 변화한다.

3) ReLu 함수

입력(x)이 음수일 때는 0을 출력하고, 양수일 때는 x를 출력한다. 경사 하강법(gradient descent)에 영향을 주지 않아 학습 속도가 빠르고, 기울기 소멸 문제가 발생하지 않는 장점이 있다. 렐루 함수는 일반적으로 은닉층에서 사용되며, 하이퍼볼릭 탄젠트 함수 대비 학습 속도가 6배 빠르다. 문제는 음수 값을 입력받으면 항상 0을 출력하기 때문에 학습 능력이 감소하는데, 이를 해결하려고 리키 렐루(Leaky ReLU) 함수 등을 사용한다.

4) Softmax 함수

소프트맥스 함수는 다중 클래스 분류 문제에서 사용되는 활성화 함수다. 이 함수는 입력값을 각 클래스에 대한 확률값으로 변환하여 출력한다. 출력값은 모든 출력값의 합이 1이 되도록 보장하며, 분류 정확도를 높이는 데 매우 유용하다.

4-3. 손실함수 (Loss function)

손실 함수는 딥러닝 모델의 출력값과 정답 데이터 사이의 차이를 계산하는 함수다. 이 값을 최소화하는 방향으로 모델을 학습시킨다. 대표적인 손실 함수로는 평균 제곱 오차(Mean Squared Error), 교차 엔트로피 오차(Cross-entropy Error) 등이 있다.

 

4-4. 경사하강법

경사하강법(Gradient Descent)은 딥러닝 모델을 학습시키기 위한 최적화 알고리즘 중 하나다. 이 알고리즘은 모델의 손실 함수 값을 최소화하는 방향으로 모델의 가중치(weight)와 편향(bias)을 조절한다.

경사하강법은 다음과 같은 과정으로 이루어진다.

  1. 손실 함수의 기울기를 구한다.
  2. 기울기가 감소하는 방향으로 가중치(w)와 편향(b)을 업데이트한다.
  3. 1과 2를 반복하여 손실 함수의 값을 최소화한다.

경사하강법은 다양한 종류가 있으며, 대표적으로 배치 경사하강법(Batch Gradient Descent), 확률적 경사하강법(Stochastic Gradient Descent), 미니배치 경사하강법(Mini-Batch Gradient Descent) 등이 있다.

배치 경사하강법은 전체 데이터셋을 한 번에 학습하는 방법으로, 계산량이 많아 대규모 데이터셋에서는 시간이 오래 걸린다. 확률적 경사하강법은 데이터셋에서 랜덤하게 하나의 데이터를 선택하여 학습하는 방법으로, 계산량이 적지만 노이즈가 많을 수 있다. 미니배치 경사하강법은 전체 데이터셋에서 일부 데이터를 랜덤하게 선택하여 학습하는 방법으로, 배치 경사하강법과 확률적 경사하강법의 장점을 결합한 방법이다.

적절한 학습률(learning rate)과 최적화 알고리즘을 선택하여 모델의 학습을 최적화할 수 있다.

5. TensorFlow 실습

https://playground.tensorflow.org/

TensorFlow는 구글에서 개발한 오픈소스 머신러닝 프레임워크다. 딥러닝 모델 구성 및 학습, 추론 등을 위한 다양한 모듈과 API를 제공한다. TensorFlow는 C++, Python, Java, Go 등 다양한 언어로 개발할 수 있으며, CPU, GPU 등 다양한 하드웨어에서 실행할 수 있다. TensorFlow는 쉽게 배울 수 있는 Keras API를 지원하며, TensorFlow Hub에서는 다양한 사전 학습된 모델을 제공한다.

TensorFlow Playground는 TensorFlow를 사용하여 딥러닝 모델을 학습할 수 있는 웹 기반 도구이다. 사용자는 다양한 데이터셋을 선택하고, 다양한 하이퍼파라미터를 조절하여 모델의 구성 및 학습을 직접 시도할 수 있다. TensorFlow Playground는 머신러닝을 처음 접하는 사용자도 쉽게 배울 수 있도록 설계되어 있다.

 

728x90

'딥러닝 프레임워크 > 딥러닝 기초' 카테고리의 다른 글

TensorFlow 실습  (0) 2024.03.28

댓글