[DL] 딥러닝 개념 정리

최윤진·2023년 2월 17일
2

DL

목록 보기
1/5
post-thumbnail

허민석. 『나의 첫 머신러닝/딥러닝』. 위키북스, 2019.
https://www.youtube.com/watch?v=aircAruvnKk&t=613s
을 참고하여 작성했습니다.

📍 딥러닝의 기본 이론

📌 딥러닝이란?

딥러닝은 뉴런으로 구성된 레이어를 여러 개 연결해서 구성한 네트워크로, 네트워크를 어떻게 구성하느냐에 따라 X-NN(Neural Network)으로 불린다. 그 예로 CNN, RNN 등이 있다. 이 딥러닝은 인간의 뇌가 생각하는 방식을 머신러닝 알고리즘으로 설계한 것인데 아래에 구체적인 예시가 있다.


사람의 뇌는 저해상도의 이미지, 위와 같이 다른 이미지라도 전부 3이라고 인식 해낸다. 눈 안에 있는 시지각 세포들이 빛 신호를 받아들이는 패턴은 각각의 그림을 볼 때 서로 다른 양상을 가진다. 사람의 뇌에 있는 시각피질은 이런 차이에도 불구하고 두 이미지가 같은 개념을 가리킨다고 판단한다. 간단히, 이러한 원리를 적용한 개념이라고 할 수 있겠다.

📌 퍼셉트론

신경망(딥러닝)의 기원이 되는 알고리즘으로, 하나의 뉴런으로 다수의 입력을 받아 최종 결괏값을 0 또는 1로 출력하는 모델이다.
가중치(Weight)는 신호의 결과에 주는 영향력을 조절하는 역할을 한다.
페셉트론은 XOR 연산이 불가능하다는 한계점이 존재했는데, 이를 극복하기 위해 등장한 것이 다층 퍼셉트론이다. 다수의 뉴런으로 구성된 여러 층 구조를 갖춘 딥러닝을 다층 퍼셉트론(MLP)라고 부른다.
출처 : https://deepcell.kr/bbs/board.php?bo_table=dl&wr_id=11

+) 뉴런은 퍼셉트론과 유사한데, 퍼셉트론은 모든 입력을 가중치와 곱해준 후 합산한뒤, 스템함수에 그 결괏값을 넘겨주어 0 또는 1을 출력한다.
뉴런은 활성화 함수로 비선형 함수를 사용한다.(역전파를 사용한 모델 학습 시 활성화 함수가 미분 가능해야 하는데, 스템하수는 미분이 불가능하기 때문이다.)

📌 딥러닝의 기본구조


동그라미 = 뉴런(노드) ,네모 박스 = 레이어라고 이해하면 된다.
뉴런은 다른 레이어의 뉴런들과 선으로 연결되어 영향을 주고, 각각의 뉴런에 대한 영향 범위를 다르게 하기 위해서 선 위에 가중치라는 변수가 존재한다. 기본적으로 뉴런이 가지고 있는 정보는 가중치와 곱해져서 다음 레이어의 뉴런으로 전파되는 것이다. 뉴런 하나하나 숫자가 있고, 각 숫자가 연결되어 져서 이들 간에 숫자가 계속 변형해 나가는 그런 구조라고 이해하면 된다.

📌 딥러닝의 학습

1. 순전파

  • 딥러닝 값을 입력해서 출력을 얻는 과정을 말한다. (왼쪽에서 오른쪽으로 데이터가 흘러가는 과정)
  • 순전파 과정을 거치면 출력값을 얻게 되고, 정답과 출력값의 차이를 구할 수 있게 된다.

2. 손실함수

출력값과 정답의 차이를 계산한다.
출력값과 정답이 일치할 수록 손실함수가 적다!
매개변수를 조절해서 손실함수의 값을 최저로 만드는 과정이 최적화이고,
쉽게 말해 모델의 에러율을 최저로 줄인다는 의미이다.

3. 최적화

딥러닝에서 최적화란, 손실함수 값을 최소화하는 파라미터를 구하는 과정!
(예측값과 실제값의 차이를 최소화하는)
최적화 과정은 옵티마이저(Optimizer)를 통해 이루어짐
옵티마이저는 역전파 과정을 수행해 딥러닝 모델의 매개변수를 최적화함
[경사하강법]은 대표적인 최적화 방법임
반복적으로 손실함수에 대한 모델 매개변수의 미분값을 구한 후, 그 미분값의 반대 방향으로 매개변수를 조절해 나가면 결국에는 최저 손실함 수 값에 도달한다는 이론
(손실 함수 그래프에서 갑시 가장 낮은 지점으로 경사를 타고 하강하는 기법)

1번째 학습에서 미분값은 (+), 매개변수를 (-) 방향으로
2번째~50번째도 미분값이 (+), 매개변수를 (-) 방향으로
=최종적으로 미분값이 0인 위치인 변곡점에 도달했을 때 손실함수의 최저값에 도달하고, 매개변수가 모델의 최적의 매개변수가 되는 것

이 변곡점 지점을 로컬 미니멈이라 부르고, 여러 개 있을 때는 가장 낮은 로컬 미니멈을 글로벌 미니멈 이라한다.

+) 전통적으로 모든 학습 데이터의 손실함수를 계산한 후 경사 하강법으로 로컬 미니멈을 찾아나가는 방법으로 모델 매개변수를 최적화했는데, 이 방법을 배치 경사 하강법이라고 한다.

4. 역전파

  • 오차를 역전파하여 신경망을 통해 더 나은 결과 값을 내기 위해 가중치를 조정하는데 오차가 영향을 줌

  • 실제 딥러닝 모델에는 여러 레이어가 존재, 옵티마이저는 여러 레이어에 존재하는 매개 변수를 조정하기 위해 역전파를 사용

  • 옵티마이저는 손실함수의 값을 최저로 하기 위해 역전파를 사용해 딥러닝 모델의 모든 매개변수를 변경

    • 정답과 예측 값 사이의 차이가 있는지 계산하고, 그 오차값을 다시 뒤로 전파 해 나가면서 각 노드가 가지고 있는 가중치 값들을 업데이트 시켜 나가는 과정

    [원리]

  • 아무리 깊고 복잡한 층으로 구성되어 있다해도 Chain Rule을 활용해 미분 값을 얻어낼 수 있다.

  • Forward Pass시 Local Gradient를 미리 계산해 저장해 둔다.

  • 저장해둔 Local Gradient와 Global Gradient를 Backward Pass시 곱하여 최종 미분 값을 얻는다.

수식으로 보는 순전파/역전파


5. 옵티마이저

1) 배치 경사 하강법 (Batch Gradient Descent : BGD)

  • 전체 학습 데이터를 하나의 배치로 묶어 학습시키는 경사 하강법
  • 전체 데이터를 통해 학습시키기 때문에 가장 업데이트 횟수가 적다.(1 epoch당 1회 업데이트)
  • 전체 데이터를 모두 한 번에 처리하기 때문에, 메모리가 가장 많이 필요하다.

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

  • 전체 데이터 중 단 하나의 데이터를 이용해 경사 하강법을 1회 진행(배치 크기가 1)
    (= 전체 학습 데이터 중 랜덤하게 선택된 하나의 데이터로 학습해서 확률적 경사 하강법이라고 함)
  • 제한된 자원으로도 충분히 딥러닝 모델을 학습시킬 수 있다는 점이 가장 큰 장점(배치 경사 하강법 보다 계산량이 적음)
  • 배치 경사 하강법에 비해 매개 변수가 요동 치며 변하면서 근처의 로컬 미니멈을 지나쳐 글로벌 미니멈에 수렴할 수도 있지만, 배치 경사 하강법에 비해 못한 매개변수로 학습이 완료될 수도 있다.

    비유= 배치 경사하강법은 꾸준히 현재의 위치에서 최저점을 향해 내려가는 거북이이고, 확률적 경사하강법은 껑충껑충 뛰어다니면서 최저점을 찾는 토끼와 같다고 할 수 있음

++) 배치 경사하강법은 속도가 너무 느리고, 확률적 경사하강법은 빨리 학습되지만 모델이 최적화 되지 않은 경우가 많다. 그래서 등장한 개념이 미니배치이다.

3) 미니 배치
-배치/ 확률적 경사하강법의 절충안, 전체 데이터를 batch size 개씩 나눠서 배치로 학습 시키는 방법
훈련 데이터 1000개를 10개의 미니 배치로 나누어 학습하는 경우, 배치 사이즈는 100

  • 하나의 데이터에 대해 매개변수를 변경하는 것보다 안정적으로 최적화되고, 전체 데이터에 대해 매개변수를 변경하는 것보다 리소스, 학습시간이 적다 => 대다수 사용!

4) 모멘텀

  • 단순히 1차 미분만으로 정직하게 최적화를 진행하다 보면 당연히 근처의 로컬 미니멈으로 딥러닝 모델이 학습됨
    • 이를 개선하기 위해 모멘텀 방법을 사용


최초 모멘텀을 0으로 설정

  • 1번 지점에서는 기울기의 반대 방향으로 매개 변수가 조절한다.
  • 2번 지점에서는 모멘텀과 기울기의 반대 방향 모두 (+) 방향이므로 (+) 방향으로 매개변수가 조절된다.
  • 만약 배치 경사 하강법을 사용했다면?
    3번 지점에서 매개변수 최적화가 마무리 되었을 것이다.
    3번 지점에서 기울기는 0이지만 남아있는 모멘텀에 의해 (+)방향으로 매개변수가 조절된다.
    … 결과적으로 모멘텀 옵티마이저는 5번 지점으로 매개변수를 조절한다. 그러나 모멘텀 옵티마이저 역시 글로벌 미니멈으로 최적화 되지 않았다.( 최적화된다는 보장은 없다는 말)

5) 학습률 (learning rate)

  • 경사 하강법에서 파라미터를 업데이트하는 정도를 조절하기 위한 변수
  • 학습률을 크게 설정하면 매개변수 변경치가 커져서 로컬 미니멈으로 수렴하지 않을 수 있고, 너무 작게 설정하면 학습 시간이 상당이 오래 걸릴 수 있다.
    • 최초 무작위로 설정된 매개변수 위치에서는 로컬 미니멈에서 멀리 있을 확률이 크므로 학습률을 크게 설정해서 학습 속도를 증진/ 어느 정도 학습이 되었으면 매개변수가 로컬 미니멈에 수렴하도록 학습률을 작게 조절하면 효율적으로 학습할 수 있다.
      • 중간에 학습률을 조정하는방식: decay
      • 딥러닝의 상당히 많은 가중치에 동일한 학습률을 적용하게 된다. (각 가중치마다 역할이 다른데, 동일한 학습률을 적용하는 것은 지나친 일반화가 될 수 있음)
      • 학습률 조정이 탄력적이니 않다.

6) Adagrad

  • 개발자가 decay를 신경 쓰지 않아도 모델 학습에 따라 모델이 알아서 가중치별로 학습률을 지정하게 됨
  • 각 매개변수에 각기 다른 학습률을 적용하고, 빈번히 변화가 찾아오는 가중치는 학습률이 작게 설정, 변화가 적은 가중치는 학습률이 높게 설정되는 옵티마이저임

7) Adam

  • Adagrad의 학습률 자율 조정과 모멘텀의 효율적인 매개변수 변경 알고리즘을 조합한 알고리즘이다.
    • 최근 가장 많이 사용
profile
yunjin.log

1개의 댓글

comment-user-thumbnail
2023년 2월 21일

감사합니다..

답글 달기