티스토리 뷰

TIL & WIL/Deep Learning

✨ 딥러닝 기초

니츄 2023. 4. 11. 00:11

머신러닝과 딥러닝의 차이점?

  • 공통점 : 데이터를 분석하고 패턴을 찾아내는 것을 목표로 한다.
  • 차이점 : 목적과 방법 (인간 개입의 여부❗)
  • 머신러닝
    • 목적 : 컴퓨터가 데이터를 이용하여 학습하고, 이를 기반으로 새로운 데이터를 분석하거나 예측하는 알고리즘을 개발
    • 방법 : 인간이 직접 특징을 도출할 수 있도록 설계한다.  (= 예측값 출력)
  • 딥러닝
    • 목적 : 인공신경망을 사용하여 데이터를 분석하고, 보다 더 복잡하고 정교한 모델을 만들어 패턴을 찾아낸다.
    • 방법 : 인공지능이 스스로 일정 범주의 데이터를 바탕으로 공통된 특징을 도출하고, 그 특징으로 예측값을 출력한다.
                 (사람보다 빠른 학습 속도를 보이며, 원하는 빅데이터를 학습 후 활용이 가능하다)
    • 인공신경망(ANN : Artificial Neural Network)이란?
      : 인공지능 분야에서 가장 중요한 알고리즘 중 하나로, 인간 뇌의 신경망을 모방하여 만들어졌다.
       데이터에서 패턴을 학습하고 이를 바탕으로 새로운 데이터를 예측하거나 분류하는 등의 작업을 수행한다.
      • 여러 개의 노드(node)로 구성되어 있으며, 이를 뉴런(neuron)이라고 한다.
      • 각 뉴런은 여러 개의 입력값을 받아들이고, 이를 가중치(weight)와 함께 계산한 후, 출력값을 내보낸다.
      • 이렇게 계산된 출력값은 다시 다른 뉴련의 입력값이 된다.
      • 이 과정을 여러 층(layer)으로 구성된 신경망에서 반복하여, 입력값으로부터 출력값을 예측하는 모델을 만든다.

 

 

 

 

 


 

 퍼셉트론(Perceptron), 초기의 인공신경망

  • 가장 단순한 형태의 순방향 신경망(Feedfoward) 네트워크 "선형분류기"로도 볼 수 있다.
  • 입력값과 가중치의 곲을 더한 후, 이를 임계치와 비교하여 출력값(0 또는 1)을 결정하는 모델.
    이를 통해, 입력값에 대한 이진분류를 수행할 수 있다.
  • 단순형태이기 때문에 딥러닝과 같은 복잡한 모델을 만들 수는 없지만 여러 개의 퍼셉트론을 결합하여 다층 퍼셉트론(Multi-Layer Perceptron)을 만들어, 비선형적 문제를 해결하는데 활용이 된다.

 

 

 

 

 


 

 인공신경망(ANN)의 문제점?

 문제점 1. 학습데이터에 따른 과적합 문제가 있다.

 : 데이터양이 많지 않은 경우, 학습이 학습데이터에만 특화되어 새로운 데이터를 받았을 때 성능이 떨어질 수 있다.

 

해결방안 

 : 사전훈련(제한 볼츠만 머신, RBM : Restricted Boltzmann Machine)을 통해 과적합을 방지할 수 있다.

  • RBM : 층간 연결을 없앤 형태로, 순방향 신경망의 각 층을 효과적으로 사전훈련 한다.
  • 이 과정을 통해 과적합을 방지할 수 있는 수준으로 초기화 지점을 잡고, 이를 다시 감독된 역전파를 통해 학습한다.

 문제점 2. 학습 시간이 너무 느리다.

해결방안

: 그래픽 카드의 발전으로(GPU, CUDA) 학습시간이 빠르게 개선되었다.

 

 

 

 

 

 


 

 딥러닝의 연산 : 순전파와 역전파

Model architecture

  • 순전파(Forward Propagation)
    • 인공신경망에서 입력층에서 출력층 방향으로 예측값의 연산이 진행되는 과정이다.
    • 입력값은 입력층, 은닉층을 지나며 각 층에서의 가중치와 함께 연산된다.
    • 출력층에서 모든 연산을 마친 예측값이 도출된다.
  • 역전파(Back Propagation)
    • 순전파와 반대로 출력층에서 입력층 방향으로 계산하면서 가중치를 업데이트 한다.
    • 역전파를 통해 가중치 비율을 조정하여 오차감소를 진행하고 다시 순전파 진행으로 오차감소를 확인할 수 있다.
    • 역전파의 과정
      • 1. 출력층의 오차 계산 : 실제값과 예측값 간의 오차 계산
      • 2. 이전 층으로 오차 역전파 : 이 때 전파되는 오차는 해당 뉴런의 출력값과 가중치의 곱
      • 3. 가중치 업데이트 : 학습률(learning rate)이라는 하이퍼 파라미터를 사용하여 가중치 업데이트의 정도 조절
      • 4. 1~3 과정(순전파와 역전파의 과정)을 반복하며 모델을 학습

 

 

 

 


 

 활성화 함수(Activation Function)란?

  • 활성화 함수는 인공신경망에서 입력값을 출력값으로 변환하는 함수이다.
  • 입력값과 가중치의 곱과 편향(bias)을 더한 값을 활성화 함수에 입력하면, 해당 함수가 적용된 출력값이 생성된다.
  • 인공신경망의 비선형을 담당한다.
    선형함수만을 사용하면 인공신경만은 단순한 선형 변환이 되어버리기 때문에 비선형적인 패턴을 학습할 수 없다.
  • 대표적인 활성화 함수
    • 시그모이드 함수 : 구간 [0,1] 내에서 S자 모양의 곡선을 그리며 출력값을 정규화 한다.
    • ReLU(Rectified Linear Unit) : 입력값이 0 이상이면 그대로 출력, 0 이하면 0으로 출력한다.
    • 하이퍼볼릭 탄젠트(Tanh) : 구간 [-1, 1] 내에서 S자 모양의 곡선을 그리며 출력값을 정규화 한다.

활성화 함수의 생김새 비교하기

  • 딥러닝에서는 주로 ReLU 함수가 사용된다. 계산이 간단하고 학습이 빠르게 이루어지기 때문이다.
    그러나 입력값이 음수인 경우 출력값이 0이 되어 일부 뉴런이 죽어버리는 현상이 발생할 수 있다.
    해결방안 : Leaky ReLU, ELU 등의 변형함수 사용 !

 

 활성화 함수 1. 시그모이드(Sigmoid)

: 구간 [0,1] 내에서 S자 모양의 곡선을 그리며 출력값을 정규화 한다.

  • 장점 : 모델 제작에 필요한 시간을 줄인다. tanh과 비교하였을 때 상대적으로 느리지만 세심하게 학습한다.
  • 단점 : 미분 범위가 짧아 정보가 손실될 수 있다. (Gradient Vanishing = 기울기 소실 현상)
  • 활용 : 로지스틱 회귀, 이진분류(Binary Classification)  등

 

 활성화 함수 2. 하이퍼볼릭 탄젠트(tanh)

: 구간 [-1, 1] 내에서 S자 모양의 곡선을 그리며 출력값을 정규화하는 쌍곡선 함수 중 하나.

  • 장점 : 데이터 중심을 0으로 위치시키는 효과가 있기 때문에, 다음 층의 학습이 더 쉽게 이루어진다.
    시그모이드보다 출력 범위가 넓고, 경사면이 큰 범위가 더 크기 때문에 더 빠르게 수렴하여 학습 성능이 올라간다.
  • 단점 : 미분 범위가 짧아 정보가 손실될 수 있다. (Gradient Vanishing = 기울기 소실 현상)

 

 기울기 소실(Gradient Vanishing)이란?

: 깊은 인공신경망을 학습할 때 역전파 과정에서 입력층으로 갈수록 기울기가 점차 작아지는 현상 (ANN 신경망의 문제점으로 대두)

  • 역전파 알고리즘은 출력값과 정답(label) 간의 오차를 최소화하기 위해 가중치를 조절한다.
  • 이 때, 입력층과 가까운 층들은 오차를 전파할 때 미분값이 곱해지는데, 이 과정에서 미분값이 0에 수렴하여 문제가 발생한다.
  • 입력층에 가까운 층들에서 가중치 업데이트가 제대로 되지 않으면 결국 최적의 모델을 찾을 수 없게 된다.
  • 학습과정에서 기울기 소실로 인해 최적값의 도출이 어려워진다.
  • 기울기 폭주(Gradient Exploding)
    : 반대의 경우로, 기울기가 점차 커지더니 가중치들이 비정상적으로 큰 값이 되며 발산되는 것. (RNN에서 쉽게 발생)

 

 활성화 함수 3. 렐루(ReLU)

: 입력값이 0 이상이면 그대로 출력, 0 이하면 0으로 출력한다.

  • 장점 : 기울기 소실 문제를 해결한다. 미분 계산이 훨씬 간편해져서 학습 속도가 빨라진다.
  • 단점 : Dying Relu (x가 0보다 작거나 같으면 항상 동일한 값인 0을 출력한다)
  • 활용 : 기울기 소실을 완화하는 간단한 방법으로 은닉층의 활성화 함수로 ReLU나 Leaky ReLU를 사용할 수 있다.

 

 활성화 함수 4. 리키렐루(Leaky ReLU)

: 렐루의 Dying ReLu 현상을 해결하기 위해 나온 ReLU 변형함수

  입력값이 음수일 경우 0이 아닌 0.001과 같은 매우 작은 수를 반환한다. (x가 0보다 작아도 정보가 손실되지 않는다)

 

 

 

 

 

 


 

 딥러닝의 학습과정

: 출력값과 실제값을 비교하여 그 차이를 최소화하는 가중치(weight)와 편향(bias)의 조합을 찾는 것.

  • 가중치는 오차를 최소화하는 방향으로 모델이 스스로 탐색한다. (= 역전파)
  • 오차계산은 실제 데이터를 비교하며 손실함수를 최소화하는 값을 탐색한다. (알맞은 손실함수의 선정은 매우 중요함)
  • 알맞은 손실함수를 찾아 최소화하기 위해 고안된 방법이 경사하강법이며, 옵티마이저로 경사하강법의 원리를 이용한다.

 

 

 

 

 

 


 

손실함수 (Loss Function)

분류의 손실함수(우)

  • 손실함수는 실제값과 예측값의 차이를 수치화해주는 함수이다.
  • 손실함수 J(W)가 2차 함수와 같이 볼록 함수의 형태라면 미분으로 손실이 가장 작은 가중치(W*)을 찾을 수 있다.
  • 2차 함수는 "아래로 볼록한 형태의 2차 함수 그래프에서 기울기(미분)가 0인 지점에서 최솟값을 갖는다."
  • 손실함수의 종류

 

 

 

 

 


 

경사하강법(Gradient Descent)이란?

  • 경사하강법은 손실함수의 현재 위치에서 조금씩 손실이 낮아지는 쪽으로 가중치를 움직이며 최솟값을 찾는 방법이다.
  • 딥러닝에서는 손실함수의 형태가 복잡하기 때문에 계산량이 매우 증가하며, 미분이 0이 되는 값이 여러 개 존재한다.
    그렇기 때문에 미분만으로는 최솟값을 찾기 어렵고, 경사하강법과 같은 최적화 방법을 이용하는 것이다.
  • 전제
    • 해당 함수의 경사를 쉽게 구할 수 있다.
    • 함수가 거의 모든 구간에서 연속적이고, 미분이 가능하다.

 

 확률적 경사하강법(Stochastic Gradient Descent)

  • 경사하강법과 다르게 한 번 학습할 때 모든 데이터에 대해 가중치를 조절하는 것이 아닌, 
    랜덤하게 추출한 일부 데이터에 대해 가중치를 조절하며 최적이 해를 찾는다.
  • 장점 : 속도 개선
  • 단점 : 극소(local minima) 문제 = 최적 해의 정확도가 낮다.

 

 극소(local miniam) 문제

  • 함수 내의 극값 정의
    • 극소점(local minimum point) : 주위의 모든 점의 함수값 이하의 함수값을 갖는 점.
    • 최소점(global minimum point) : 정의역의 모든 점의 함수값 중에서 최솟값을 갖는 점.
  • 옵티마이저는 손실함수에서 최소점이 최소가 되는 부분을 찾아야하지만, 수많은 극소점 중 최소점에 해당하지 않는 극소점을 찾는 문제가 발생한다.

 

 

 

 

 


 

 최적화 함수, 옵티마이저(Optimizer)

: 데이터와 손실함수를 기반으로 모델이 업데이트되는 방식.

  • 손실함수를 최소화하는 방향으로 가중치를 갱신하는 알고리즘
  • 경사하강법에 기반을 둔 옵티마이저 : SGD, RMSProp, Adagrad, Adam 등

  • 옵티마이저의 종류 
Modules Functions
schedules tf.keras.optimizers.schedules 네임스페이스용 공개 API deserialize(...) serialize함수의 역함수
Classes get(...) Keras Optimizer 인스턴스를 검색
Adadelta 두 가지 단점을 해결하기 위해 차원당 적응 학습률을 기반으로 하는 확률적 경사하강법 serialize(...) 옵티마이저 구성을 JSON 호환 python dict로 직렬화
Adagrad 훈련 중 매개변수가 업데이트되는 빈도에 따라 조정되는 매개변수별 학습률이 있는 옵티마이저  
Adam 1차 및 2차 모멘트의 적응적 추정을 기반으로 하는 확률적 경사하강법
Adamax Adam의 변형으로, 임베딩이 있는 모델에서는 Adam보다 성능이 우수
Ftrl FTRL 알고리즘을 구현하는 옵티마이저
Nadam Nesterov 모멘텀이 있는 Adam
Optimizer Keras 옵티마이저의 기본 클래스
RMSprop Adagrad의 개선 방식으로 AdaGrad의 Root Square에 가중평균 Mean이라는 개념을 추가하여 그라디언트 제곱의 이동(할인된) 평균 유지
SGD 경사하강법(운동량 포함) 옵티마이저

 

 

 

 

 


 

 딥러닝의 과정

 

 

 

 

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함