부스트캠프 AI Tech 5기 3주차 [DL Basic & Data Viz]

README·2023년 3월 24일
0
post-thumbnail

DL Basic 학습 정리

1강

딥러닝 핵심 요소: 학습할 데이터, 모델, 오차를 측정할 loss 함수, 성능을 최적화할 알고리즘
loss 함수의 종류: MSE(회귀), CE(분류), MLE(확률 예측)

2강

딥러닝에서 Activation function을 쓰는 이유: Activation function이 없으면 linear 함수와 다를바 없음
Activation function의 종류: ReLU, Sigmoid, tanh
Entropy: 정보를 표현하기위한 최소 평균 자원량
Cross-Entropy: 정보를 표현하기 위한 자원량이지만 최적의 값이 아닌 값
KL-divergence: Entropy와 Cross-Entropy의 차

3강

Gradient Descent: 딥러닝 학습 방법 중 하나로 미분을 통해 최적점을 구하는 방법으로 SGD, MGD, Batch Gradient Descent가 있음
Generalization: 모델이 학습한 데이터가 아닌 다른 데이터에서도 좋은 성능을 낼 수 있도록 하는 것
Underfitting: 모델이 제대로 학습하지 못 한 경우
Overfitting: 모델이 학습 데이터에만 과도하게 적응해서 다른 데이터에서는 좋은 성능을 내지 못 하는 경우
Cross-validation: 모델 학습 과정에서 train data를 여러 조각으로 나누어서 모델 학습과 성능 검증에 사용하는 방법
Bagging: 동시에 여러개의 모델을 학습하여 사용하는 것으로 예측을 할 때 여러 모델의 예측 값을 조합하여 활용
Boosting: 여러개의 모델을 순차적으로 이어붙인 방법

4강

Convolution: convolution이란 두 함수의 곱으로 이미지의 특징을 추출하는 역할을 하고 연속구간에서는 적분으로 이산구간에서는 합으로 값을 구할 수 있습니다.
CNN: 이미지 특징 추출에 사용되는 Convolution layer와 Pooling layer, 의사 결정에 사용되는 Fully connected layer로 구성되고 이미지를 활용한 task에 많이 사용됩니다.
Pooling layer: Pooling은 2차원 데이터의 공간을 압축하는 연산으로 Pooling layer에서는 model의 parameter나 연산량을 줄이기위해서 이미지의 size를 줄여줍니다.
Stride: convolution 필터가 이동하는 간격으로 stride가 2일 경우 필터가 옆으로 2칸씩 이동하며 연산을 수행합니다.
Padding: convolution연산에서 데이터의 외곽부분을 특정 값으로 채우는 기법으로 보통 출력 크기를 조정하기 위해 사용됩니다.
Dense layer: 모든 뉴런과 모든 Input이 모두 서로 연결된 layer로 1차원 배열로 flatten된 행렬로 이미지를 분류하는데 사용됩니다.

5강

ReLU: ReLU는 0이하의 값이 들어올때는 0을 보다 큰 값이 들어올 때는 들어온 값을 그대로 출력하는 활성화함수입니다. ReLU에서는 sigmod 함수에서 문제가 되었던 gradient vanishing 문제가 완화되었고 현재 가장 널리 쓰이는 활성화함수입니다.
GoogLeNet: 2014년 ILSVRC에서 1위를 차지한 모델로 Inception module을 통해서 적은 파라미터만을 활용해서 깊은 구조를 만들 수 있도록 했습니다. Inception module은 1x1, 3x3, 5x5 세개의 Conv layer와 1개의 Max-pooling을 사용하고 여러 conv 연산을 통해 효율적으로 특징을 뽑아낸 뒤 ReLU 함수를 사용하고 각각의 출력을 연결해서 하나의 output으로 만들어냅니다.
ResNet: 딥러닝에서 기울기 소실/발산 문제를 해결하기 위해 활성화 함수 적용 전에 입력 데이터의 값을 더해주고 활성화 함수를 적용하는 Residual connection을 활용한 모델로 파라미터의 개수를 줄이면서도 성능은 향상되는 모습을 보여줬습니다.
DenseNet: DenseNet은 ResNet과 비슷하지만 활성 함수 적용 전에 입력데이터를 더해주는 대신 concat시켜주는 모델입니다. 이 방식에서는 원본의 값을 유지하면서 concat연산만 해주기 때문에 정보를 끝까지 온전한 상태로 유지시켜줄 수 있습니다.

6강

Fully Convolutional Network: Semantic Segmentation 작업에서 Fully Connected Layer를 1x1 convolution 연산으로 대체하여 연산량을 줄이고 segmentation의 성능을 높인 모델입니다.
Deconvolution: convolution 연산을 역으로 수행하는 것으로 피쳐 맵을 다시 원래 이미지 크기로 복원하는 것입니다.
YOLO: 2015년에 공개된 객체 탐지 모델로 이전의 모델들을 거의 능가했다. YOLO는 이미지를 w*k의 그리드로 나누고 각 부분에 대해 미리 정의된 형태의 bounding box를 예측하고 신뢰도를 측정한다. 그리고 높은 신뢰도가 있는 위치를 객체의 위치로 파악하고 그 위치에 어떤 객체가 있는지 파악한다.

7강

RNN: RNN 순환구조를 이루는 딥러닝 모델로 음성, 문자 등의 sequential data를 처리하기에 적합합니다. RNN의 특징은 은닉층에서의 output 값이 다음 은닉층 노드의 계산에도 사용된다는 것입니다. 이러한 특성때문에 순서가 있는 이전의 결과 값이 다음의 결과 값에도 영향을 미치고 이 때문에 순서가 있는 데이터를 처리하는데 유리합니다.
LSTM: LSTM은 기존의 RNN이 오래된 정보를 잘 보관하지 못한다는 단점을 보완하기 위해 등장한 모델입니다. LSTM은 Forget gate, Input gate를 통해 버릴 정보와 저장할 정보를 구분하고 output gate를 통해 값을 전달합니다.
GRU: GRU는 LSTM을 간단화한 모델로 input, ouput, forget 3가지 게이트를 가진 LSTM과 달리 update gate, reset gate 두 가지의 게이트만 가집니다.

8강

Transformer: Transformer는 2017년 발표된 모델로 최초의 rnn을 사용하지않고 attention만을 활용한 sequence transduction model입니다. Transformer는 encoder-decoder 구조로 설계되었고 기존의 모델들보다 훨씬 뛰어난 성능을 보였습니다.
Attention: 어떤 시점에서 어떤 부분의 데이터가 더 중요한지 판별하는 알고리즘으로 transformer의 기본구조입니다. Transformer에서는 attention을 통해 예측해야 할 단어가 입력된 단어들 중 어떤 부분과 가장 연관이 있는지 판별합니다.

9강

Bernoulli distribution: 베르누이 분포는 결과값이 두가지인 경우의 확률분포로 성공, 실패로 생각해보면 성공은 p, 실패는 1-p로 볼 수 있다.
Categorical distribution: 카테고리 분포는 결과값이 K개인 경우의 확률분포로 예를 들어보면 주사위가 있다.
Indepence: 만약 binary 이미지 데이터에서 픽셀을 단위로 구분하면 필요한 parameter의 수는 2^데이터의 수 가 됨, 하지만 이미지를 독립적인 단위로 계산하면 n개의 파라미터로 표현 가능하지만 표현력이 낮아짐
Autogressive Model: sequence 데이터를 처리할 때 현재의 값은 과거의 값을 반영했다는 것을 기반으로하는 모델입니다.

10강

Maximum Likelihood Learning: likelihood란 데이터가 특정 분포를 따라갈 확률을 말하고 Maximum Likelihood Learning은 likelihood가 최대가 되는 값을 선택하는 것이다.
GAN: 데이터를 생성하는 generator와 데이터를 구별하는 discriminater가 서로 경쟁을 하며 generator를 학습하는 과정입니다. GAN의 학습과정은 generator가 생성한 데이터와 실제 데이터를 discriminator가 구분하고 discriminator가 실제 데이터와 생성된 데이터를 잘 구분하지 못할수록 generator의 성능이 높은 것으로 알 수 있습니다.

Data Viz 학습 정리

1강

matplotlib: 파이썬에서 데이터를 시각화할 때 사용하는 패키지로 차트나 플롯 등 다양한 시각화 기능을 제공
데이터의 종류: 수치형(연속형, 이산형), 범주형(명목형, 순서형)

2강

Bar plot: Bar를 사용해서 데이터를 시각화하는 방식으로 대표적인 예시로 막대그래프가 있고 카테고리에 따른 수치를 비교하는 데 유용함
Line plot: Line을 통해 데이터를 시각화하는 방식으로 주식 그래프처럼 연속적으로 변화하는 값을 Line으로 나타내고 시간이나 순서에 따른 변화를 보기에 유용함
Scatter plot: 점을 통해서 데이터를 시각화하는 방식으로 상관관계를 본다거나 값의 분포, 이상치 확인 등에 유용함

3강

Text의 활용: 그래프나 차트만을 통해서 정보를 전달하는 데는 한계가 있으므로 Text를 통해서 좀 더 확실한 정보를 전달 가능
Color의 활용: Color를 통해서 그래프나 차트를 좀 더 알아보기 쉽게 할 수 있음(ex.산점도에서 카테고리별로 점의 색을 다르게 설정)
Facet: 화면을 분할하여 같은 방법으로 여러 feature를 보거나 전체 그래프에서는 볼 수 없는 세세한 정보를 보여줄 수 있음

Week 3 회고(의식의 흐름대로 쓴)

이번 주에는 딥러닝의 기초와 데이터 시각화에 대해 배웠는데 딥러닝 기초 부분이 많이 어려웠던 것 같다. 내용이 어려운 것인지 내가 멍청한 것인지 잘 모르겠지만 언젠가는 이해할 수 있는 날이 왔으면 좋겠다는 생각이 든다. 다른 활동으로는 논문을 읽고 정리해보는 시간을 가졌는데 이번 주에 보게 된 논문은 Transformer 논문이었다. 당연하게도 논문을 읽고 정리하는 것은 쉬운 일이 아니었다. 논문을 보면서도 내가 뭘 읽고 있는지 제대로 읽고 있는 게 맞는지 많은 생각이 들었었다. 이렇게 어렵고 힘든 한 주를 보내면서 과연 내가 이 분야를 공부할 수 있는 사람인지에 대해 생각해보게 되었다. 나중에 내가 이 분야로 가면 안 되는 사람이라는 걸 알게 되도 후회나 미련이 남지 않게 지금을 보내고 싶다.

profile
INTP 개발자 지망생

0개의 댓글