요즘 학계뿐 아니라 산업에서 AI를 중심으로 산업이 변화하고, 기업의 주가가 오르내리고 있습니다. 이런 AI의 기초를 배울 수 있는 수업인 딥러닝의 기초에 대해 소개드리겠습니다. 이후 본문에서 중요 용어는 볼드체로 표시를 해놨으니 이것을 집중적으로 보셔도 좋습니다.
1. 과목에서 배울 수 있는 내용
1.1 과목의 전반적인 개요
딥러닝의 기초 과목은 딥러닝의 기초 모델(linear layer, CNN, RNN, ...)부터 최신 모델(Transformer)까지 여러 모델의 수학적 기초를 배울 수 있고 python으로 실제 구현을 해볼 수 있는 과목입니다. 강의에서 다루는 주요 내용은 다음과 같습니다.
- Probability, Brief Mathematical Background
- Image Multi-class Classification, Feedforward Neural Network
- Back-propagation, Stochastic Gradient Descent (SGD)
- Convolutional Neural Network (CNN)
- CNN Backpropagation
- Training Neural Networks (Optimization, Practical)
- Recurrent Neural Network (RNN), Long Short Term Memory (LSTM)
- Attention, Machine Translation
- Transformer
- Self-Supervised Learning (Auto-encoder, Contrastive Learning)
- Generative Model - Variational Auto Encoder (VAE), Generative Adversarial Network (GAN)
또한 4개의 과제에서 구현할 항목은 다음과 같습니다. 과제는 교수님의 분반마다 내용이 달라질 수 있는 점 참고 부탁드려요.
- (numpy) linear layer, two-layer network, train flow (loss, forward, backward, activation)
- (numpy) CNN, train flow (loss, forward, backward, activation), (pytorch) CNN
- RNN, LSTM, Attention, Transformer
- VAE, GAN
1.2 수업
1.2.1 Overview
딥러닝 기초 수업에서 배우는 여러 neural network 들은 modern deep learning model을 이해하는 데 필수 기초가 됩니다. 위 목차와 같이, 기초적인 Linear Network, 이미지의 특징을 학습하는 CNN, 자연어를 학습하는 RNN 부터 chatGPT의 기초 모델인 Transformer, Diffusion과 같은 이미지 생성형 모델인 VAE, GAN 등까지 수업에서 다루게 됩니다. 또한 딥러닝 모델을 학습시키는 여러 방법론 (loss, back-propagation, optimization) 및 수학적 기초도 다루게 됩니다.
1.2.2 Model Training
딥러닝의 가장 기본이 되는 Linear layer의 학습 과정을 설명해 보도록 하겠습니다. 어떤 network의 학습이란 해당 network의 parameter을 수많은 데이터(input)를 통해 업데이트하는 과정을 의미합니다. 전체 network는 수많은 layer을 겹겹이 쌓아 만들게 됩니다. 각 sub-layer들의 output은 다음 sub-layer의 input이 됩니다.
그리고 전체 network의 최종 output은 어떤 task이냐에 따라 달라집니다. 예를 들어 사진을 보고 고양이, 개, 등을 분류하는 classification task의 경우 각 class(고양이, 개, …)에 대한 확률입니다. 이때 input 데이터(사진)데이터(사진)를 넣어 얻은 output 확률과, 사진의 실제 정답 class (고양이, 개, …)와의 차이인 Loss를 정의하게 됩니다.
만약 Loss가 크다면 정답과 거리가 멀기 때문에 파라미터를 많이 업데이트 해야하고, Loss가 작다면 정답과 가깝기 때문에 파라미터를 적게 업데이트하는 방식으로 딥러닝 모델을 학습하게 됩니다. 데이터로부터 Loss를 계산하는 과정을 Forward-Propagation, Loss를 미분하여 얻은 값으로 파라미터를 업데이트하는 과정을 Back-Propagation이라고 합니다.
위 사진은 수많은 layer 중 중간의 하나의 sub-layer을 나타낸 것입니다. 이 layer에는 W, b라는 파라미터 행렬이 있고, 두 행렬이 학습 대상입니다. ($b$는 bias입니다.)
Forward-Propagation에서 s는 이전 layer의 output이자, 이번 layer의 input이 되고, $q=Ws+b$는 output이 됩니다. 이때 바로 q를 다음 layer로 넘기는 것이 아니라 activation layer을 거치게 됩니다.
activation layer는 non-linear한 function으로 흔히 쓰이는 것은 위와 같이 max(0, x) (또는 ReLU) 함수입니다. $\tilde q$ 는 이 activation layer을 통과한, 이 sub-layer의 output이 됩니다. 최종 layer에서는 단순히 ReLU activation을 하지 않고, softmax layer을 통과시켜, 각 class의 확률로 변환합니다. 또한 Loss(보통 classification task에서는 Cross Entropy를 사용합니다.)를 계산합니다.
$$\frac{\partial L}{\partial \tilde q}=\frac{\partial q_1}{\partial \tilde q}\frac{\partial L}{\partial q_1}=W^{T}\delta_1$$
$$\frac{\partial L}{\partial q}=\frac{\partial \tilde q}{\partial q}\frac{\partial L}{\partial \tilde q}=\text{diag}\{f'(q)\}W^{T}\delta_1 \triangleq \delta$$
$$\frac{\partial L}{\partial W}=\delta \,s^T$$
$$W\leftarrow W-\eta \frac{\partial L}{\partial W}$$
Back-Propagation에서는 최종 layer에서 Loss를 계산한 것을 바탕으로, 최종 layer부터 input 데이터를 넣는 최 앞단 layer까지 차례대로 계산후에 파라미터를 업데이트하게 됩니다. 위 수식은 이를 보여줍니다. 이때 q1은 이후 layer의 중간 output (activation 통과 전) 값이고, $f(x) = max(0, x)$ 입니다. 위처럼 dL/dW를 구하여 파라미터를 업데이트하게 됩니다. 위에서 기술한 것은 하나의 input (사진), 하나의 sub-layer에 대해서 forward 및 back Propagation을 나타낸 것이고, 실제로 코드로 구현을 하게 되면 수만 장의 input과 수십 개의 layer로 이루어진 network을 직접 학습시켜 볼 수 있습니다.
1.2.3 Deep Learning Application
딥러닝의 기초 과목을 수강하게 되면 전통적으로 알고리즘을 설계해 진행하던 연구에 딥러닝 모델을 차용하여 어떻게 연구 방향이 발전되고 변화하고 있는 지를 몸으로 느낄 수 있습니다. 딥러닝 모델의 학습은 데이터를 통해 모델의 parameter을 해당 task에 맞게 optimizationoptimization 하는 과정입니다.
예를 들어 computer vision의 task 중 하나인 이미지의 어떤 물체를 정확히 찾아내는 object detection을 생각해 봅시다.. 기존의 방법의 경우 linear algebra를 이용한 알고리즘을 설계한, 즉 rule-based method였습니다. parameter을 업데이트하며 학습된 모델에 사진을 넣으면 위와 같이 object detection을 하는 방향으로 변화하였습니다. 이런 변화는 기존의 rule-based 알고리즘의 성능을 넘어섰고, 이뿐만 아니라 많은 분야에서 기존의 방법을 대체하고 있습니다. 다른 예시로는 번역기가 있겠네요.
1.3 과제
과제는 위에서 기술하였듯이 총 4개의 과제가 나옵니다. 흔히 딥러닝 모델을 만들 때 보통은 PyTorch 혹은 TensorFlow와 같은 Library를 사용하므로, 실제로 내부의 코드들이 어떻게 돌아가는지 알 기회가 없습니다.
하지만 과제 1, 2은 python numpy library를 이용해 직접 linear layer 및 CNN의 forward, backward propagation 및 loss, activation, normalization 등을 구현하고, 데이터를 넣어 학습을 할 때 loss가 주는 것을 확인할 수 있습니다. 또한 자연어 처리의 대표 모델인 Attention, Transformer을 구현하고 또한 generative model의 대표 모델인 VAE 및 GAN을 pytorch library를 통해 구현할 수 있습니다.
이때 GAN으로 생성형 모델을 구현하는 마지막 과제에서는 FID score에 따른 차등으로 점수를 받기에, 여러 시행착오를 통해 원본 이미지를 잘 복원하는 모델을 만들어야 하는 과제입니다. (FID score란 원본 이미지를 얼마나 잘 복원했냐를 평가하는 metric 입니다. 널리 쓰이는 생성형 모델의 평가 지표 중 하나입니다.)
2. 선배의 조언
2.1 Prerequisites
- [확률변수 및 확률과정의 기초] 과목에서 배우는 확률변수, [전기시스템선형대수] 혹은 [선형대수학] 과목에서 배우는 선형대수학, 그리고 벡터 미적분학은 복습하시고 수강하시는 게 훨씬 편합니다. 학부 4학년 과목이기도 하고, 짧은 학기 동안 수많은 내용을 나가야 하므로 교수님께서 기초는 대부분 생략하시고 식 전개를 하십니다.
- 고전적인 머신러닝을 다루는 선수 과목인 [기계학습 기초 및 전기정보 응용]을 듣고 오시면 당연히 도움이 되지만, 저 같은 경우도 수강을 하지 않았음에도 불구하고 크게 무리는 없었습니다. 이 선수 과목보다는 선형대수학, 벡터 미적분, 확률의 기초를 복습하시는 게 더 중요해 보입니다.
- python의 numpy, pandas 등의 library를 사용한 데이터 처리를 미리 해볼 필요는 없습니다. 하지만 python 자체에 친숙하지 않으시다면, 가볍게 복습을 하시는 게 좋습니다. 4개의 과제가 모두 python을 다룰 줄 안다고 가정하기 때문입니다.
2.2 조언
- 과제를 하시다 보면 수업 시간에 배웠던 개념이 명확히 이해되실 겁니다. 다만, 이해가 되지 않는 부분에 대해서는 유튜브 및 구글링을 강력히 추천드립니다. 현재 시대는 바야흐로 딥러닝의 시대인 만큼, 많은 분들이 유튜브들이 정리해서 올려주신 너무나 좋은 내용들이 많습니다.
- 또한 수업 후반부의 generative model 중 VAE에 대해서는 재야의 명강의 [오토인코더의 모든 것]을 들으시면 바로 이해가 됩니다.
3. 진로 선택에 도움 되는 점
2024년은 산업 구조가 AI 기술을 중심으로 개편되고 있는 시대를 맞이하고 있습니다.
반도체 분야는 인공지능 학습을 위한 텐서 가속기 개발에 총력을 기울이고 있고, 2024년 기준 엔비디아는 시가총액이 2024.6.26 기준 3.1 trillion USD(대략 4300조원)를 넘어섰습니다. 이에 따라 AI 연구 분야가 아닌 대학원으로 진학하던, AI랑 관련 없어 보이는 회사에 취업을 하더라도 AI에 대한 지식 및 코드를 돌릴 수 있을 정도의 능력은 필수가 되었다고 생각합니다.
딥러닝은 여러 분야에서 폭넓게 응용이 되고 있고, 직접 딥러닝 이론을 연구하지 않더라도 딥러닝 기반 모델들을 도구로 써서 연구를 하시는 분들도 굉장히 많기 때문에 응용 포텐셜이 굉장히 높습니다.
4. 맺음말
앞서 기술했듯이, 인공지능에 대한 기초적인 내용을 알고 있으면 분명 훗날 도움이 되리라 생각이 듭니다. 따라서 꼭 한 번쯤은 수강해야 하는 과목이라고 생각합니다.
References
(사진 자료는 모두 문태섭 교수님의 딥러닝의 기초 수업 자료의 일부를 발췌하였습니다.)
'전공백서 > 전기정보공학부' 카테고리의 다른 글
전기정보공학부: 로봇공학개론 (1) | 2024.06.30 |
---|---|
전기정보공학부: 알고리즘의 기초 (0) | 2024.06.29 |
전기정보공학부: 디지털 시스템 설계 및 실험 (0) | 2024.06.26 |
전기정보공학부: 기초회로이론 및 실험 (0) | 2024.06.23 |
전기정보공학부: 데이터통신망의 기초 (3) | 2024.02.29 |
댓글