인공지능/머신러닝

[머신러닝 - 이론] 딥러닝의 기본 (Fundamental of Deep Learning)

바보1 2022. 4. 9. 11:43

1. 딥러닝이란?

 

깊은 신경망은 신경망에 층을 많이 두어 성능을 높이는 기술입니다.

MLP에 은닉층을 더 많이 두면 깊은 신경망이 됩니다.

 

구조적으로는 쉬운 개념입니다.

 

하지만 학습이 잘 안 되는 경향이 있습니다.

 

층이 깊어질수록 오류 역전파 알고리즘의 미분 값이 출력 층에서 입력 층으로 갈수록 소멸되기 때문입니다.

이를 그레디언트 소멸 문제라고 합니다. 즉 층이 깊어질수록 학습이 잘 안 됩니다.

또한 데이터 셋이 작으면 추정할 매개변수는 많아지는데 데이터는 적어 over fitting이 일어나게 됩니다.

추가적으로 계산 시간이 매우 크다는 점이 단점입니다.

 

이때 딥러닝은 새로 창안된 이론이나 원리는 깊은 신경망과 동일합니다.

값싼 GPU의 등장, 데이터 셋의 크기 증가, 학습 알고리즘의 발전 (ReLU 활성화 함수, 규제 기법, 다양한 손실 함수와 옵티마이저 개발) 등으로 인해 딥러닝은 기술의 혁신이라 불립니다.

 

딥러닝을 공부하기 위해서는 텐서플로우, 파이토치 둘 중에 한 개를 써야 하는데, 보통 파이토치는 연구자들이 많이 쓰고, 텐서플로우는 상대적으로 초보자가 하기 쉽기 때문에 텐서플로우 기준으로 하겠습니다.

 


2. 딥러닝의 구조와 동작

 

 

간단한 구조지만 실제로는 은닉층이 더 많을 수도 있습니다.

또한 은닉층의 노드 개수가 더 많을 수도 있습니다.

 

만약 L-1개의 은닉층이 있다면, L층 신경망이 됩니다.

 

딥러닝은 가중치 행렬이 매우 많습니다.

 

이를 수학적 기호로 표현하면

\(O=\tau_L(\cdots \cdots\tau_2(U^2\tau_1(U^1X^T)))\)

라는 기괴한 수학적 기호가 탄생하게 됩니다.

이는 훈련 집합 전체에 대한 연산입니다.

 

이때 손실 함수는

\(J(U^1, U^2, \cdots, U^L)=\frac{1}{|M|}\sum_{x\epsilon M}||y-o||^2 \)

= \(J(U^1, U^2, \cdots, U^L)=\frac{1}{|M|}\sum_{x\epsilon M}||y - \tau_L(\cdots\cdots\tau_2(U^2\tau_1(U^1X^T)))||^2\)

이 됩니다.

 

하지만 층이 깊어질수록 오류 역전파의 가중치 갱신은 소멸되는 단점이 있습니다.

 

\(U^l = U^l + \rho (-\triangle U^l), l = L, L-1, \cdots , 1\)

이렇게 학습이 됩니다.

 


3. 요약

 

깊은 신경망, 딥러닝은 기존의 MLP에서 은닉층을 더 많이 추가한 것

그레디언트 소멸 문제, 작은 데이터 셋, 오랜 학습시간은 시대가 지나면서 해결됨

 

다양한 활성화 함수, 방대해진 데이터, GPU의 등장으로 해결 가능

 

감사합니다.

 

 

 

지적 환영합니다.