[2] Network - CNN, RNN, LSTM, Transformer
업데이트:
[1] Vision
[1-1] CNN
- ConvNet
- convolutional layer + fc layer + pooling layer 등을 쌓아 생성
- spatial structure를 유지하면서도 feature extraction이 가능
- conv-layer
- input data에 대해 여러개의 filter를 적용하여 feature map을 추출. 입력데이터의 spatial pattern을 인식하도록 학습
- pooling layer
- feature map의 크기를 줄이는 역할 → 모델 계산 복잡도를 낮추고, 작은 변화에 invariance 하게 학습이 가능해짐 + overfitting 방지
- cnn에서 자주 쓰는 activation function은?
- ReLU 계열 (gradient vanishing 문제 완화, 연산이 빠름)
- CNN은 translation variance (equivariance)하다
- max pooling + CNN의 weight sharing + learn local features, softmax를 통한 확률값 계산
- CNN 계열 image classification network
- [1-1] LeNet (layer 8개 이하)
- 1998, Yann LeCun 연구팀이 제시한 단순한 CNN
- feature를 잘 추출하고, 이미지의 공간적인 topology를 잘 반영
- [1-2] AlexNet (layer 8개 이하)
- 처음으로 ReLU activation을 사용 (연산량이 빠름)
- overfitting 방지를 위해
- data augmentation, dropout, batchnorm layer를 도임
- [2-1] VGGNet (layer 22개 이하)
- 3x3의 작은 filter를 사용 (이전에는 5x5를 사용)
- 필터의 사이즈를 줄이고 모델의 depth를 키워 더 효율적인 receptive field를 갖게 함. & layer 당 더 작은 parameter
- layer의 depth를 키워 (activation function이 더 많아짐) → 더 많은 non-linearity를 줌
- padding을 통해 image size를 유지
- 3x3의 작은 filter를 사용 (이전에는 5x5를 사용)
-
[2-2] GoogleNet (layer 22개 이하)
- inception module을 반복하는 형태
- inception module안에 1x1 conv를 추가해서 dimension을 줄여줌 (bottle neck layer라고 부름. 깊은 network에서 중요한 정보를 뽑아주는 역할 + 비선형성을 증가시켜 복잡한 함수도 approximation해주는 역할)
- max pooling 을 통해 conv 연산 후 dimension을 줄여줌
- inception module을 반복하는 형태
- [3] ResNet
- CNN에서 layer가 깊다고 성능이 좋은 것은 아니었음. 실제로 20층 이상의 layer를 쌓으면 성능이 degradation 됨 → ResNet: residual learning을 통해 모델이 깊어져도 학습이 잘되게 구현
- skip connection
- [1-1] LeNet (layer 8개 이하)
[2] NLP
[2-1] Text Embedding
[2-2] Language Model
[2-3] RNN / LSTM
[2-4] Transformer
- attention과 self-attention의 개념
- self-attention
- Query: 현재 위치의 토큰이 다른 위치의 토큰과 어떤 관련이 있는지를 알아내기 위한 질의 벡터
- Key: 모든 위치의 토큰들이 Query에 대해 어떤 관련이 있는지를 나타내는 벡터
- Value: Attention 스코어에 기반하여 가중 평균을 계산할 때 사용되는 벡터
- 이렇게 계산된 Attention 값은 입력 시퀀스의 각 위치에 대해 다른 위치들의 정보를 종합한 컨텍스트 벡터로 해석할 수 있음. 이를 통해 Transformer는 장기 의존성 문제를 해결하고, 시퀀스 내의 토큰들 간의 관계를 효과적으로 모델링 가능
- self-attention
-
Transformer
Transformer는 RNN(Recurrent Neural Network)이나 CNN(Convolutional Neural Network)과는 다른 아키텍처로, 시퀀스 데이터 처리에 널리 사용되는 모델
- 순차적 처리 vs 병렬 처리
- RNN: 시퀀스 데이터를 순차적으로 처리함. 각 타임스텝의 출력이 다음 타임스텝의 입력으로 사용됨.
- CNN: 일반적으로 고정된 크기의 입력을 처리하며, 필터를 사용하여 local 특징을 추출합니다.
- Transformer: 입력 시퀀스 전체를 한 번에 처리하며, 병렬 연산이 가능함. → 학습 속도가 크게 향상
- 장기 의존성 문제 해결 방식
- RNN: LSTM이나 GRU와 같은 변형을 사용하여 장기 의존성 문제를 해결.
- CNN: 장기 의존성 문제를 직접적으로 해결하기 어려우며, 일반적으로 지역적 특징에 초점을 맞춤.
- Transformer: Self-Attention 메커니즘을 사용하여 장기 의존성 문제를 해결함. 입력 시퀀스의 모든 위치 간의 관계를 직접 모델링 가능.
- 위치 정보 반영 방식
- RNN: 순차적 처리로 인해 위치 정보가 자연스럽게 반영됨.
- CNN: 위치 정보를 반영하기 위해 위치 임베딩(Positional Embedding)을 추가로 사용할 수 있습니다.
- Transformer: 위치 정보를 반영하기 위해 위치 인코딩(Positional Encoding)을 사용. 이는 입력 임베딩에 위치 정보를 더해줌.
- 컨텍스트 크기
- RNN: 이론적으로 무한한 컨텍스트 크기를 가질 수 있지만, 실제로는 그래디언트 소실 문제로 인해 제한됨.
- CNN: 일반적으로 고정된 크기의 컨텍스트 윈도우를 사용.
- Transformer: Self-Attention을 통해 입력 시퀀스의 모든 위치를 참조할 수 있어 이론적으로 무한한 컨텍스트 크기를 가질 수 있음
- 순차적 처리 vs 병렬 처리
댓글남기기