Deep Learning

Deep Learning

[ DL ] Transformer에서의 Feed-Forward Network

Transformer에서의 Feed-Forward Network Transformer의 Encoder와 Decoder 모듈 내에 위치한 `Feed-Forward Network(FFN)`은 attention mechanism이 처리하는 데이터를 정제하는데 중요한 역할을 한다. 먼저 `Multi-head Attention Sublayer`와 `Post-Layer Normalization(Post-LN)`을 거친 output은 $d_{model}=512$의 차원을 유지하며, FFN에 입력된다. 이 FFN은 시퀀스의 각 position에서 독립적으로 데이터를 순차적으로 처리하는 데 중요한 역할을 수행한다.Transformer의 인코더와 디코더 내부의 FFN은 `fully connected network`이면서 ..

Deep Learning

[ DL ] Data Parallelism(DP), Distributed Data Parallelism(DDP)

본 포스팅은 다음 글을 기반으로 작성하였습니다.좋은 자료 공유해주셔서 감사합니다. Jupyter Notebook Viewer그런데 잠깐, All-reduce를 언제 수행하는게 좋을까요?¶ All-reduce를 backward()연산과 함께 하는게 좋을까요? 아니면 backward()가 모두 끝나고 step() 시작 전에 하는게 좋을까요? 결과적으로 backward()와 all-nbviewer.org Overview of Parallelism`병렬화(Parallelism)`란, 여러 개를 동시에 처리하는 기술을 의미하며 머신러닝에서는 주로 여러개의 디바이스에서 연산을 병렬화하여 속도나 메모리 효율성을 개선하기 위해 사용한다. 병렬화는 크게 `Data Parallelism`, `Model Parallelis..

Deep Learning

[ DL ] Multi-processing, Message Passing, P2P, Process Group, NCCL, GLOO, MPI, Collective Communication

본 포스팅은 다음 글을 기반으로 작성하였습니다. 매우 좋은 자료 공유해주셔서 감사합니다.  Jupyter Notebook Viewer2. Large-scale의 시대에 우리는 무엇을 준비해야 할까?¶ Large-scale transformer 모델은 기존과 아키텍처는 거의 동일한데, 모델의 모델과 데이터 사이즈를 엄청나게 키운 것입니다. 그래서 몇몇 사람들nbviewer.org Why Large Scale?그동안 많은 연구에서 언어 모델의 아키텍처의 변화가 생각보다 큰 차이를 가져오진 못한다고 말한다. 물론, 언어 모델의 성능이 어느 정도 향상된 것은 사실이지만 이것이 드라마틱한 성능 개선을 의미하진 않는다. 결국 모델의 성능에 가장 큰 영향을 끼치는 것은 데이터와 모델의 크기이다. 둘 중 굳이 더 중요..

Deep Learning

[DL] 성능 최적화 - Batch Normalization, Dropout, Early Stopping

성능 최적화 데이터를 사용한 성능 최적화 일반적으로 ML/DL 알고리즘은 데이터양이 많을수록 성능이 좋기 때문에 가능한 많은 데이터를 수집 많은 데이터를 수집할 수 없다면 직접 데이터를 만들어 사용 활성화 함수로 시그모이드(0~1의 값), 하이퍼볼릭 탄젠트(-1~1의 값) 등을 사용하여 데이터셋 범위를 조정 정규화, 규제화, 표준화 등도 성능 향상에 도움 알고리즘을 사용한 성능 최적화 ML/DL을 위한 다양한 알고리즘 중 유사한 용도의 알고리즘들을 선택하여 모델을 훈련시켜 보고 최적의 성능을 보이는 알고리즘을 선택해야 한다. 알고리즘 튜닝을 위한 성능 최적화 모델을 하나 선택하여 훈련시키려면 다양한 하이퍼파라미터를 변경하면서 훈련시키고 최적의 성능을 도출해야 한다. 진단 : 성능 향상이 어느 순간 멈췄을..

Deep Learning

[DL] 학습 관련 기술들 - SGD, Momentum, AdaGrad, Adam, optimization, Xavier, He, Batch Normalization

매개변수 갱신 확률적 경사 하강법(SGD) 신경망 학습의 목적은 손실 함수의 값을 가능한 한 낮추는 매개변수를 찾는 것으로 이는 곧 매개변수의 최적값을 찾는 문제이며, 이러한 문제를 푸는 것을 `최적화(optimization)`이라고 한다. 최적의 매개변수 값을 찾기 위한 단서로 매개변수의 기울기(미분)를 이용하는데, 매개변수의 기울기를 구해 기울어진 방향으로 매개변수 값을 갱신하는 일을 반복해서 최적의 값을 향해 다가가는 것이 `확률적 경사 하강법(SGD)`이다. SGD는 다음과 같은 수식으로 표현이 가능하다. 결국 SGD는 기울어진 방향으로 일정 거리만 가겠다는 단순한 방법이다. SGD를 파이썬 코드로 구현하면 다음과 같다. class SGD: def __init__(self, lr=0.01): se..

Deep Learning

[RNN] Seq2seq Learning - Encoder & Decoder, Attention, Feedforward Neural Network

Sequence-to-sequence model `Seq2Seq` 모델은 words, letters, features of images 등의 sequence data를 Inputs으로 사용하며 Outputs 또한 또다른 sequence data이다. 여기서 입력에 사용하는 sequence에 해당하는 item의 개수와 출력의 sequence에 해당하는 item의 개수가 동일할 필요는 없다. 이러한 sequence-to-sequence 모델은 번역 머신으로 사용되며 이 경우 sequence는 단어들로 구성되며, output 또한 마찬가지로 단어들로 구성된다. Encoder-Decoder Seq2Seq 모델은 `Encoder`와 `Decoder`로 구성된다. 각각의 역할은 다음과 같다. Encoder : in..

Deep Learning

[RNN] 순환 신경망 - RNN, Vanilla RNN, encoder-decoder, BPTT, LSTM, GRU, Attention

기억을 갖는 신경망 모델 RNN 기억을 전달하는 순환 신경망 시간과 공간적 순서 관계가 있는 데이터를 `순차 데이터(sequence data)`라고 부른다. 순차 데이터는 시공간의 순서 관계로 형성되는 문맥 또는 `콘텍스트(context)`를 갖는다. 현재 데이터를 이해할 때 앞뒤에 있는 데이터를 함께 살펴보면서 콘텍스트를 파악해야 현재 데이터의 역할을 이해할 수 있다. 인공 신경망이 데이터의 순서를 고려하여 콘텍스트를 만들려면 데이터의 순차 구조를 인식할 수 있어야 하고, 데이터의 콘텍스트 범위가 넓더라도 처리할 수 있어야 한다. 이런 점들을 고려하여 만든 인공 신경망이 바로 `순환 신경망(RNN: Recurrent Neural Network)`이다. 순방향 신경망이나 컨벌루션 신경망과는 다르게 순환 ..

Deep Learning

[RNN] RNN, LSTM and GRU

순환 신경망 학습 학습이란 데이터를 통해 parameters를 추정한다는 것을 의미한다. 순환 신경망은 t시점까지의 과거 정보를 활용하여 y를 예측하게 되는데, 학습 대상이 되는 파라미터는 3가지이다. 첫 번째는 t 시점의 데이터를 반영한 W_xh 가중치, 두 번째는 t 시점 이전의 정보를 반영하는 W_hh 가중치, 그리고 t 시점의 y를 예측할 때 활용하는 W_hy 가중치이다. 해당 파라미터는 매 시점마다 공유하는 구조이며(parameter sharing), 매 시점 파라미터를 구성하는 값이 같다. 또한 최적의 W는 W를 매 시점 적용했을 때 Loss가 최소가 되는 W이다. hidden state와 예측값은 다음과 같이 계산된다. 순환 신경망이 3가지의 가중치를 추론하는 학습과정은 다음과 같다. Los..

Deep Learning

[RNN] Recurrent Neural Networks and Attention(Introduction)

시계열 데이터 예측 분석 방법론 트렌드 `시계열 데이터(Time Series Data)`란, 시간의 흐름에 따라 순서대로 관측되어 시간의 영향을 받게 되는 데이터를 말한다. 이러한 시계열 데이터에는 `시계열 단변량 데이터(Univariate time series data)`, `시계열 다변량 데이터(Multivariate time series data)`, `시계열 이미지 데이터(Time series image data)` 등이 있다. 전통 통계 기반 시계열 데이터 분석 방법론 이동평균법(Moving average) 지수평활법(Exponential smoothing) ARIMA(Autoregressive integrated moving average) 모델 SARIMA(Seasonal ARIMA) 모델 ..

Deep Learning

[DL] 초기화와 정규화 - Xavier Initialization, He Initialization, batch normalization, weight decay, early stopping, data augmentation, bagging, Dropout

가중치 초기화(Weight Initialization) 신경망을 학습할 때 손실 함수에서 출발 위치를 결정하는 방법이 모델 `초기화(initialization)`이다. 특히 가중치는 모델의 파라미터에서 가장 큰 비중을 차지하기 때문에 가중치의 초기화 방법에 따라 학습 성능이 크게 달라질 수 있다. 상수 초기화 신경망의 가중치를 모두 0으로 초기화하여 뉴런의 가중치가 0이면 가중 합산 결과는 항상 0이 되고, 활성 함수는 가중 합산 결과인 0을 입력받아서 늘 같은 값을 출력한다. 예를 들어 활성 함수가 ReLU나 하이퍼볼릭 탄젠트면 출력은 0이 되고 시그모이드면 출력은 항상 0.5가 된다. 0이 아닌 다른 값의 경우에도 만약 가중치를 모두 같은 상수로 초기화하면 신경망에 `대칭성(symmetry)`이 생겨..

Junyeong Son
'Deep Learning' 카테고리의 글 목록