이전 시간에 머신러닝 때 학습했던 내용 중 중요한 내용들에 대해서 정리해보았다. 오늘부터는 본격적으로 딥러닝에 대해서 학습해보도록 하자
1. 딥러닝이란?
인간의 두뇌에서 영감을 얻은 방식으로 데이터를 처리하도록 컴퓨터를 가르치는 인공지능 방식이다. 딥러닝은 머신러닝보다 그림, 텍스트, 사운드 및 기타 데이터의 복잡한 패턴을 인식하여 정확한 인사이트와 예측을 생성할 수 있다. 이러한 딥러닝 기술을 자동차, 항공, 우주, 제조, 전자, 의학 연구 및 기타 분야에서 여러 가지 사용 사례에 활용된다.
아래는 딥러닝이 AI의 어떤 범주에 있는지 나타낸 사진이다.
이러한 형식적인 정의를 뒤로 하고 딥러닝이 어떤 구조인지 알아보자!
2. 딥러닝의 구조
딥러닝은 앞에서 다뤘던 퍼셉트론 구조에서 은닉층을 추가하여 여러개의 층을 이루게 해 인간의 신경 세포인 뉴런처럼 나타낸 것이다. 이해를 돕기 위해 은닉층 레이어의 노드 하나를 뜯어서 살펴보자.
이전 레이어의 각 노드로부터 신호를 전달받는다. 이때 신호는 가중치 * 신호로 다음 레이어의 각 노드로 전달되는데 이때 가중치는 다 다르게 부여된다. 이전 레이어의 노드들에서 신호*가중치를 전달받아 이를 가중합으로 나타낸 후, 활성화 함수에 넣어 값을 구한다. 그 후 이 값에 다시 가중치를 붙혀 다음 레이어의 노드에 값을 전달한다. (설명하기 쉽지 않네...)
추가적으로 여기서 x는 feature라고 생각하자!
# 순전파와 역전파
순전파의 경우 위에서 설명했듯이 입력층에 입력이 들어오면 은닉층을 거치며 웨이트를 수정하고 출력층에 도달하였을 때 Loss function을 이용하여 Loss를 구하는 과정이다.
여기까지는 이해하는데 크게 어려움은 없다. 그럼 역전파(Back propagation) 는 무엇일까?
# 연쇄 법칙
연쇄 법칙이란 '합성함수의 미분은 합성함수를 구성하는 각 함수의 미분의 곱으로 나타낼 수 있다' 이다. 두 함수 y = f(k), k = g(x) 를 합성하여 얻은 합성함수 y = f(g(x)) 는 도함수의 정의를 적용하면 다음과 같이 도함수를 얻을 수 있다.
합성함수의 미분은 바깥함수를 먼저 미분한 다음, 다시 안쪽 함수를 미분하여 곱하면 된다. 예를 들면...
이를 통해 여러 개의 함수가 미분가능하면 여러 개의 함수를 합성한 함성함수도 항상 미분이 가능하다는 것을 알 수 있다! 고등학교 때 배운 겉미분과 속미분을 생각하면 된다. 이를 그림을 통해 더 쉽게 이해해보자.
다음으로 수식으로 봐보자. 라이프니츠 표기법으로는 아래처럼 쓸 수 있다.
연쇄법칙은 변수가 여러개일때, 어떤 변수에 대한 다른 변수의 변화율을 알아내기 위해 사용한다. 예를 들어 y가 u에 의존하고, u가 x에 의존한다고 하면 x에 대한 y의 변화율은 u에 대한 y의 변화율과 x에 대한 u의 변화율을 곱함으로써 계산할 수 있다. 여기서 주의해야 할 점이 있다. 나 또한 그렇게 생각했었는데 분모의 du 와 분자의 du가 약분되어 왼쪽의 dy/dx 라는 결과가 나온다고 생각해서는 안된다! dy/dx는 어떤 함수를 x에 대해 미분한다는 의미로 dx, dy, du들은 자신들만으로 의미를 갖지 못한다. 그러나 dx, dy 자체에 미분이라는 의미를 주어 함성함수나 역함수의 미분법에서는 dy/dx를 형식적으로 분수와 같이 다룬다. 위에서 예로 들었던 y = f(k), y = g(x) 의 합성함수 y = f(g(x))를 통해 라이프니츠 표기법으로 나타내보자.
Q. 그렇다면 왜 딥러닝에서 연쇄법칙을 사용할까?
딥러닝에서 연쇄 법칙을 사용하는 이유는 딥러닝에서 weight와 bias를 업데이트 하기 위해 각 층별 노드들의 미분값들이 Back Propagation 될때 누적되어 미분되는데 이때 ChainRule, 연쇄법칙 즉 합성함수 미분이 사용된다.
지금까지 연쇄법칙에 대해 다루었다. 이제 이 내용을 바탕으로 역전파(Back Propagation)에 대해 알아보자.
# Back Propagation(역전파)
역전파는 동일 입력층에 대해 원하는 값이 출력되도록 각 계층의 가중치를 조정하는 방법으로 사용됩니다. 즉, 예측값과 실제값의 차이인 오차를 계산하고, 이것을 다시 역으로 전파하여 가중치를 조정하는 과정이다. 역전파 과정에서는 최적화 함수를 이용한다. 말로 설명하는거보다 직접 어떻게 계산하는지를 보는게 훨씬 이해가 잘 될 것이다.
처음 들어보는 용어가 있다. 최적화 함수? 옵티마이저는 무엇인가?
# Optimizer(최적화 알고리즘)
옵티마이저는 왜 쓸까?
우리는 딥러닝에서 모델이 정확하게 결과를 뱉어내도록 하는 것이 학습의 핵심이다. 그러기 위해 Loss Function을 정의하여야 하고, 그리고 Loss Function을 최적화해야 한다. 이때 최소값을 찾아가는 것을 최적화(optimization)이라고 하고 이를 수행하는 알고리즘이 최적화 알고리즘(optimizer)이다.
다시 말해서 학습과정에서 목적지(최솟값)에 보다 빠르고 정확하게 도달하기 위해서 사용한다!
아래에 임의의 값을 지정해주고 순전파와 역전파가 진행되는 과정을 쭉 나타내었다.
다음 시간엔 Cnn에 대해 알아보도록 하겠다!!
'AI > DeepLearning' 카테고리의 다른 글
[DL] LSTM & GRU & 양방향 RNN (0) | 2024.11.15 |
---|---|
[DL] RNN (7) | 2024.11.13 |
[DL] 시계열 분석 (1) | 2024.11.08 |
[DL] CNN (2) | 2024.11.08 |
[DL] 딥러닝을 위한 준비 (3) | 2024.09.27 |