‘Gradient descent’ 경사하강법. 직역하면 기울기 하강.
- 정의 : 모델이 데이터를 잘 표현할 수 있도록 기울기(변화율)를 사용하여 모델을 조금씩 조정하는 최적화 알고리즘
이라고 하는데..솔직히 딥러닝 입문자들은
- 모델이 뭔가요?
- 모델이 데이터를 잘 표현?
- 기울기를 왜 사용?
- 조금씩 조정한다는 건 또 뭔지
- 최적화 알고리즘??
감이 안 잡힐거에요. 다 알아요. 누구나 그랬으니까요. 하나하나 뜯어보도록 하죠.
1. 모델이 뭔가요?
모델이 뭐죠? 한혜진같은 모델을 말하는 건 아닐테고.. 딥러닝을 좀 배우신 분들도 대충 느낌으론 알겠는데 정의를 뭐라고 해야할지 막막하지 않나요?
모델이란 ‘학습 데이터로 학습된 머신러닝 알고리즘’ 이라고 합니다. 딥러닝은 규칙기반 시스템(Rule-based system)으로 풀기엔 너무 복잡하여 거의 불가능한 문제를 풀기 위한 것인데요. 딥러닝 알고리즘은 알아서 수식을 찾아줍니다. 이걸 바로 학습이라고 하죠. 그런데 이렇게 찾아진 수식은 너무 복잡해서 복사 붙여넣기 해서 쓰기엔 한계가 있던거죠. 그래서 파일 형식으로 들고 다니면서 사용하게 된 것인데요. 이러한 수식 또는 알고리즘을 ‘모델’이라고 합니다.
2. 모델이 데이터를 잘 표현?
모델이란 ‘학습 데이터로 학습된 머신러닝 알고리즘’ 이라고 한다고 했죠? 이처럼 모델이 탄생하려면 학습할 데이터가 필요하고 데이터들을 잘 활용해서 좋은 수식을 만들어내야 합니다. 이 말을 데이터를 잘 표현한다고 하는건데요. 아래의 그림처럼 기본적으로 모델은 데이터들의 특징을 잘 파악하고 특징별로 분류를 잘 해야 합니다. 그래야 나중에 새로운 데이터를 모델한테 ‘이건 뭐게?’ 했을 때 ‘이 데이터는 제가 짠 수식을 대입해본 결과 y값은 100이 되겠네요!’ 라고 할 수 있는겁니다. 참고로 x는 입력값, y는 모델이 추론한 값입니다.
아, 학습하기 전에는 모델을 생성하기 위해 누군가 미리 y의 값을 정해준건데요. 이건 ‘지도 학습’이기 때문입니다. 지도 학습이란 딥러닝에게 문제와 정답을 알려주면서 ‘자, 여기서 유형을 파악하고 다음에 비슷한 문제가 나오면 니가 알아서 풀어봐~’ 라는 겁니다. 그 외에도 비지도 학습, 강화 학습이라는 것들이 있는데 이 사이트를 참고하시기 바랍니다.
3. 기울기(변화율)를 왜 사용?
지도 학습은 문제와 정답지를 미리 받아놓고 학습하는거라고 했죠? 그럼 잘 학습시켜야 할 것 아니에요? 지도 학습에선 기울기(변화율)를 이용해서 학습을 시킨답니다. 딥러닝은 문제를 대충 추론해서 정답이랑 비교했을 때 얼마나 다른지(오차)를 계산에서 그걸 가중치라는 것에 넣고 다음문제를 풀 때 반영합니다.
'이전 문제를 A라는 방식으로 풀었을 때 오차가 몇 %생겼으니까 다음 문제는 B라는 방식으로 풀어보자'
이런식이죠. 그런데 여기서 오차를 이전 오차값 대비 현재 오차값의 변화량으로 계산하는데, 미적분학에서 변화량을 미분해서 계산하면 편하니까 딥러닝도 이런 방법을 쓰는 겁니다.
기울기가 크다 = 오차가 크다, 기울기가 작다 = 오차가 작다
4. 조금씩 조정한다는 건 또 뭔지
딥러닝은 문제를 대충 추론해서 정답이랑 비교했을 때 얼마나 다른지(오차)를 계산에서 그걸 가중치라는 것에 넣고 다음문제를 풀 때 반영한다고 했죠? 그리고 기울기가 작을수록 오차가 작은거라고 했죠? 기울기를 최대한 0에 가깝게 만들기 위해 계속 가중치를 조정하면서 업데이트하는 겁니다.
5. 최적화 알고리즘??
앞에서 기울기를 조금씩 조정한다는 것은 바로 기울기를 최대한 0에 가깝게 만들기 위해 계속 가중치를 조정하면서 업데이트하는 거라고 했죠? 최적화 알고리즘은 바로 기울기를 0으로 도달하기 위한 최적의 길을 찾는 것이라고 생각하시면 됩니다. 최적화 알고리즘은 ‘Optimizer’라고도 하며 ‘Gradient descent’도 한 종류입니다.
따라서
‘Gradient descent’ 즉 경사하강법은 Optimizer이며 처음에 말씀드렸듯이, 모델이 데이터를 잘 표현할 수 있도록 기울기(변화율)를 사용하여 모델을 조금씩 조정하는 최적화 알고리즘입니다. 아래는 Optimizer들의 종류와 발달 과정이니 참고하시기 바랍니다.
ref
https://tensorflow.blog/%EC%BC%80%EB%9D%BC%EC%8A%A4-%EB%94%A5%EB%9F%AC%EB%8B%9D/1-%EB%94%A5%EB%9F%AC%EB%8B%9D%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80/
https://tech.dslab.kr/2019/09/27/doitdeeplearning-ch1/
Next
선형 회귀와 경사 하강법의 관계
go to -> Next
손실 함수와 경사 하강법의 관계
go to -> Next