2024. 7. 9. 15:29ㆍstudy/DL(1)
앞서 포스팅에서 머신러닝, 딥러닝에 대해 다뤄보았다. 이 chapter에서는 DL(deep learning)에 대해 다뤄볼 것이며 이전 포스팅보다 조금 더 상세하게 풀어나갈 생각이다. AI는 무엇인가? AI는 넓은 영역이다. AI를 한 문장으로 설명하자면 인간의 task를 대신할 수 있는 분야라고 말할 수 있겠다. (인간의 task라고 하면 학습하고 사고하고 추론하는 등의 능력이라 할 수 있다.)위의 그림처럼 크게 영역을 3가지로 나눌 수 있다. 딥러닝을 알아가기 전에 머신러닝을 이해해야지 딥러닝을 이해하기 쉽기 때문에 이번 포스팅에서는 머신러닝(ML)이 무엇인지 풀어나가겠다.
머신러닝은 AI의 한 분야이다. 때문에 머신러닝도 인간의 능력을 실현하게끔하는 기술, 알고리즘의 집합이라 할 수 있다. 여기서 machine은 기계를 의미하며 computer를 뜻한다. 그렇다면 어떻게 인간의 능력을 실현하게 끔 하는걸까? (머신러닝이 나오기 전의 ai는 인공지능의 입문 폴더를 참고해주시길 바란다.)
머신러닝에서 러닝은 Learning이다. machine(computer) learning으로 유추할 수 있듯이 컴퓨터가 학습한다는 것이다. 컴퓨터를 어떻게 교육시켜야하는 것일까? 우리도 어떠한 지식을 습득할 때, 책이나 서치가 필요하듯이 컴퓨터에게도 어떠한 데이터들이 필요하다. 컴퓨터에게 제공될 데이터에는 데이터가 가지고 있는 특징과 그 특징을 가지는 데이터의 결과값이 있다. 특징을 feature, 결과값을 label 또는 target이라고 한다. 인공지능 머신러닝 분야는 생각보다 오래되지 않았기때문에 사용되는 용어가 아직까지는 통일적이지 않아서 여러가지 언어를 알아 두는 것은 나중에 AI분야에 대한 논문을 읽을 때 많은 도움이 될 것이다. ML을 함수근사(function approximation)로 이해하면 쉬울 것이다. y=f(x)에서 x를 feature, y를 label 또는 target으로 이해하면 된다.
데이터를 크게 training data와 test(or inference)data로 위의 자료처럼 나눌 수 있고 training data를 training data와 validation(or evaluation)data로 나눌 수 있다. Training data는 실제로 모델을 최적화 때 사용되는 데이터, Validation(evaluation) data는 모델이 잘 최적화되고 있는지 중간 중간에 확인하기 위한 데이터이며 Test(inference) data는 훈련이 다 완료된 후, 최종적으로 모델의 성능을 검증하기 위한 데이터이다.
예를들어, 8개의 데이터들이 있다고 가정하자. attribute가 feature가 되겠고 Quality가 label이자 target이 되겠다. 8개의 데이터를 Training data라고 하고 또 Training data를 tranining data와 validation data로 나눌 수 있다고 했다. 보통 Training data를 8:2로 나눈다. 첨부한 자료의 data는 8개지만 10개라고 가정한다면 8개는 Training data이고 2개는 validation data가 되겠다. 그렇다면 Test data는 완전히 새로운 data가 되어야지 모델의 성능을 검증할 수 있겠다.
이렇게 데이터들을 가지고 알고리즘을 훈련시키는 과정을 학습이라고 할 수 있다. 다시말해서 학습은 ML 모델(함수)의 파라미터를 찾는 과정이다. Parameter(파라미터)는 변수를 의미하는 것으로 ML에서 가장 중요한 것은 parameter을 찾는 것이다. parameter를 업데이트 함으로써 ML의 성능은 더 높아지는 것이다. 모델이 함수라고 하였는데 y=ax+b에서 y는 label, target이고 x는 feature이 되겠고 a와 b가 바로 parameter가 되겠다.
인공지능이 다루는 문제를 대표적인 2가지로 나누면 분류(classification)과 회귀(regression)이 있겠다. 분류는 이산적인 값이나 특정 카테고리를 예측하는 것이 목표이고 회귀는 연속적인 값을 예측하는 것을 목표로 하고 있다. 회귀모델의 종류에는 선형회귀(Linear regression)과 로지스틱 회귀(logistic regression)이 있다. 선형 회귀는 변수들의 관계를 선형적으로 표현하는 것으로 parameter를 조정해서 손실함수를 최소화하는 것이 목표이다. 여기서 손실함수(loss function)은 실제 데이터값과 모델이 출력한 데이터 값의 차이를 나타내는 함수를 의미하고 이 손실함수를 최적화 하는 것이 ML의 목표라 할 수 있겠다.
선형모델의 최적화에는 손실함수로 잔차제곱합(RSS)이 사용된다. RSS는 residual sum of squares로 실제 데이터 값과 모델이 출력해 낸 값의 차이를 잔차라고 하고 이 잔차를 제곱하여 더한 값을 RSS라고 한다. 즉, parameter를 조정해서 손실함수를 최적화하고 비로소 잔차제곱합(모델이 내놓은 데이터 값이 실제 데이터와 얼마나 차이나는지를 수치화 한 것)을 최소화 하는 것이 ML의 성능을 결정하게 된다. 왜 잔차에 절댓값을 씌우면 되지 굳이 제곱을 하는 것일까? parameter를 조정할 때 미분이 필요한데 절댓값 함수는 미분 불가능하지만 제곱합은 미분이 수월하고 잔차 부호의 통일도 가능하기 때문에 제곱합을 하여 실제데이터와 모델의 데이터의 차이를 표현하였다.
손실함수를 위와 같이 잡을 수 있고 손실함수를 최소하기 위해서는 loss값이 최소인 지점이 실제 데이터와 가장 가까운 데이터가 되겠다. 손실함수를 최소화할 수 있는 parameter m과 b를 찾기 위한 방법 중 하나인 최소제곱법이 있다. 계산 과정은 위의 자필 노트를 참고하기 바란다.
위와 같은 풀이과정이 나오게 된다. (+행렬로 계산하는 방법도 있음).이렇게 손실함수를 어떻게 가장 작게 할 수 있는 수학적인 방법을 optimization(최적화)라고 한다. 앞서 알아본 최소제곱법 뿐만 아니라 경사하강법 또한 최적화 방법 중의 하나이다. 다음 포스팅에서는 경사하강법에 대해 알아보겠다.
'study > DL(1)' 카테고리의 다른 글
[Data] NETCDF-4 형식의 데이터 셋을 다뤄보기 (2) | 2024.07.20 |
---|---|
[Gradient Descent] (2) | 2024.07.11 |