본문 바로가기
인공지능/ML-DL 기초

딥러닝의 전반적인 학습 과정

by 3n952 2023. 10. 17.
딥러닝은 도대체 어떻게 사람을 흉내내서 문제를 해결할까?
딥러닝의 학습이 이뤄지는 과정에 대해서 큰 틀에서 쉽게 알아보자!

1. 딥러닝이란?
2. 데이터 기반의 학습
3. 손실 함수
4. 옵티마이저

요즘에는 다양한 딥러닝 모델이 우리의 삶에 녹아들어 여러가지 문제를 사람인 듯이 해결한다.

마치 '사람처럼'이라는 것은 '사람의 관점'에서 '생각의 과정'이 비슷하다고는 할 수 없지만,

'결과적'으로는 매우 비숫하다.

 

그렇다면 어떻게 딥러닝은 인간이 생각하는 결과와 비슷한 결과를 낼 수 있을까?

 

1. 딥러닝이란?

딥러닝이란 인공지능의 한 분야로, 요즘 주목받는 생성형 AI, multi-modal 등의 모델이 모두 딥러닝 기반의 모델이다.

딥러닝은 입력을 받아 출력을 내는 과정을 사람의 신경세포를 모방하여 만들었다고 한다. 이를 인공신경망이라고 부른다.

이 때 deep이라는 개념은 입력과 출력 즉, 인공신경망을 순차적으로 깊~게 연결했다고 생각하면 된다.

(입력 -> 출력(입력) -> 출력(입력) -> .....-> 최종 출력)

그림1. 인공 신경망의 구조

입력을 받아 출력하는 정도와 그 값을 모두 수식과 그래프로 설명 가능하게 정의한다.

따라서 예측까지의 과정은 유기적으로 설명하지 못하지만 결과적으로 사람이 생각한 결과와 비슷하게 만들어 준다!

 

2.  데이터 기반의 학습

입력과 출력이 있는 건 알겠는데, 그 과정이 어떻게 이뤄지는 건지 궁금할 것이다.

그 과정을 알기 위해서는 크게 5가지 정도를 알면 좋을 것 같다.

1. 데이터
2. 가중치 파라미터
3. 손실함수
4. 옵티마이저
5. 오차역전파

(이 중 3~5는 보다 복잡한 개념이므로 자세한 내용은 따로 포스팅하도록 할 예정이다!)

 

딥러닝 / 머신러닝은 데이터를 기반으로 학습이 이뤄진다. 이게 무슨 말인고 하면 ..

데이터 포인트를 입력으로 하고 출력을 내는 것을 보고 "이 정도 출력이면 적당하네 / 안적당하네"를 판단하는 것이다.

가지고 있는 데이터는 유한하기 때문에 딥러닝 모델이 정말 잘 학습이 되었다면 데이터가 나타내는 것을 우리가 해결하고자 하는 문제에 잘 적용했다고 볼 수 있는 것이다.

 

예를 들어, 수능을 앞둔 고3 수험생의 수학 모의고사 성적이 70 / 88 / 96 / 92 라고 한다면 각각의 점수가 데이터 포인트가 되는 것이고,

이를 입력으로 딥러닝 모델에 학습시키면

각 점수를 보고 판단한 '수능 수학 예상 점수 예측' 이라는 문제에 잘 표현된다고 할 수 있는 것이다.

이를 데이터 기반의 학습이라고 할 수 있다.

 

가중치 파라미터란?
딥러닝 모델이 학습할 때 업데이트 되는 값으로 데이터가 입력으로 들어오면 가중치 파라미터에 의해 출력이 결정된다.
가령 입력이 2이고 가중치 파라미터가 2이면 출력은 4가 될 것이다.
입력은 고정되어 있는 값이므로 가중치의 값을 업데이트 하면서 모델이 최적의 성능을 보이게 하는 것이다.

 

정리하면 입력(고정) * 가중치(학습함에 따라 변함, 가변)

=> 출력(가변) (정확히 스칼라 곱셈으로는 표현할 수 없음)의 개념으로 이해하면 된다.

 

출처: 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/

 

3.  손실 함수

지금까지 안 사실은 결국 딥러닝은 입력과 출력을 가지는 어떠한 신경망이 수 많은 개수로 연결되어 있는 것을 의미하고,

그 입력과 출력은 입력으로 들어온 데이터가 어떠한 파리미터와의 연산을 통해 출력으로 내보내는 과정이다! 

라는 것이다.

그럼 한번 입력으로 데이터가 들어오고 계산된 출력으로 나가면 학습이 끝나는 것인가? 

결론은 아니다!

 

데이터가 입력으로 들어와서 출력으로 나가면 그 출력 된 값이 얼마나 잘 표현을 하는지

즉, 모델이 잘 학습이 되었는지 파악하여 다음 학습 스텝에서 파라미터를 조정하는 과정이 필요하다.

예를 들어, 입력이 2이며 출력을 0으로 하는 가중치를 찾고싶다고 하면, 처음 x(가중치)의 초기값이 5일 때는 10이 된다.

출력이 0이 되게 하고 싶으므로 x에 4를 넣으면 2가 줄어 출력이 8이 된다.

이 방식을 반복하여 x를 0으로 하면 비로소 출력이 0이 되고 그 때 모델이 잘 학습 되었다고 할 수 있다!

 

그럼 어떤 기준으로 모델이 잘 학습하는 지 알 수 있는데 ..? 라는 궁금증이 생긴다.

모델이 얼마나 잘 학습했는 지 나타내는 지표가 바로 손실 함수의 개념이다.

즉, 손실함수를 지표로 모델을 학습시키는 방향을 정하자! ( = 손실함수가 낮아야하면 손실함수 값을 낮게하도록 가중치를 업데이트 하자!)

해결하고자 하는 문제에 따라 손실함수는 다양하게 정의할 수 있다.

 

지금까지의 딥러닝의 학습 과정을 그림으로 표현하면 다음과 같다. 

 

출처 : 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/

 

4. 옵티마이저 (optimizer)

'손실함수가 가르키는 방향으로 가중치를 업데이트 하는 것'이 지금까지 알게된 딥러닝 모델의 학습 목표이다.

그럼 또 의문이 들 수 밖에 없다.

가중치를 어떻게 업데이트 할 것인가? 

 

가중치에 어떤 값을 뺄지 더할지 곱할지 등과 같이 어떠한 연산을 할 지 또한 어떤 값과 가중치를 연산하여 새로운 가중치로 사용할 지

에 대해 정의하는 것이 옵티마이저의 역할이다.

이렇게 말하면 바로 이해하기는 힘들다. 따라서 보다 자세한 내용은 따로 포스팅 할 예정이다.. 아마도?

 

 


 

정리하자면 다음과 같다.

 

딥러닝의 학습은 데이터에 기반하여 이뤄지며, 이 입력이 여러 신경망을 거쳐 출력으로 나오게 된다.

이 출력이 좋은지 나쁜지를 파악하기 위한 척도로 손실함수를 사용하며, 손실함수가 가르키는 방향대로

가중치를 업데이트 하는 방식을 정의하는 것이 옵티마이저이다!

 

유튜버 '코딩애플' 님이 매우 쉽게 설명한 영상이 있으니 이걸 보시는 것도 추천합니다!

 

https://www.youtube.com/watch?v=ivfp2wpPLzs&list=PLfLgtT94nNq1DrREU_qG2w4yd2ZzJb-FG&index=1

 

 


Reference
[1] 사진 자료, 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/