본문 바로가기
카테고리 없음

Deep learning 의 구조: 복잡한 수식 없이 이해하기

by 빛나는존재 2024. 7. 23.

큰 틀에서의 Deep learning은 무엇일까

Deep learning 을 배우다 보면 개인적으로 느끼는 불편함이 처음부터 자료형 (예를 들어, 파이토치라면 텐서란 무엇인지 등등) 에 대한 지식을 배우게 한다는 것이다. 내가 당장 알고 싶은것은 큰 틀에서 Deep learning 을 하는 이유는 무엇이고 어떠한 프로세스로 작동하는지 등등인데 이것부터 설명하는 책은 아직까지 내가 본 적이 없다. 그래서 이 포스팅에서는 자료형 이야기 보다는 Deep learning 의 목적, 어떤 절차로 Deep learning 이 진행되는지 등에 대해 이야기 해보려고 한다. (사실 이 문제는 비단 데이터 사이언스 뿐 만 아니라 프로그래밍 책을 보면 뭘 봐도 변수명 짓는 법, 자료형 부터 배우게 하더라.. 어느 유명한 강사님께서도 이런 걸 보시고는 본인이 책을 낸다면 파일 입출력을 맨 첫 챕터로 하겠다고 하는 말을 인상적으로 들은 적이 있다.)

Deep learning 은 뭐고, 왜 하는 거니?

Deep learning 은 왜 machine learning 의 일종이기도 하지만 왜 하필 'deep' 이라는 단어가 붙을까. 이는 예측을 위한 신경망 구조가 겹겹이 쌓여 있기 때문이다. machine learning 이건, deep learning 이건 궁극적인 목적은 정확한 예측이다. 예측 대상이 Categorical 한 변수일 경우에는 이를 'classification'이라고 하고 continuous 한 숫자인 경우 'prediction' 이라고 하지만 결국 둘 다 특정 변수의 값을 예측하는 것 이라고 할 수 있다. Deep learning 을 실행할 수 있는 framework 중 유명한것이 tensorflow, pytorch 등이 있는데 요즘은 pytorch 도 연구용으로 많이 쓰이는 추세 같다. 

 

가장 간단한 pytorch 코드로 알아보는 딥러닝 순서

이 코드는 파이토치 공식 사이트의 기초 튜토리얼 중 하나이며, 여기서는 sin 함수의 값을 예측 해보려고 다. (저자: Justin Johnson) 


이러한 예제 코드로 봤을 때 데이터 정의하는 부분 제외 하고 대략적인 process는
1. Forward propagation: y를 weight and bias 를 이용하여 계산하여 y 값을 predict 한다
2. loss (실제 y 값과 predict 된 값간의 차이로 인해 발생하는 손실) 계산 한다
3. loss 를 토대로 gradient 를 계산하고 backward propagation 을 한다
4. weight 를 update 한다. 이 때, learning rate 를 적용시켜서 너무 날 것의 (?) 미분값이 들어가지 않도록 해준다. 
이 4가지 파트이다.

여기서 눈 여겨 볼 점은 Backward propagation 할 때 편미분으로 gradient descent 를 하는 방법이다. 이에 대한 자세한 설명은 이어지는 다음 포스팅에서 다룰 것이다.

 

반응형