반응형

본 내용은  fastcampus 딥러닝/인공지능 올인원 패키지 online을 정리한 것이다.

순환 신경망에서 Tensor의 이해

다양한 입력과 출력

절결합 계층의 입출력 텐서

 

Rnn의 입력 텐서

순차적으로 들어온다.

입력 N x L x I 입력 텐서의 앞부분을 0으로 채우는 이유는 , 마지막 입력부터는 출력이 잘 나올 수 있다.

출력 N x L x O 출력 은 뒤부분을 0으로 채운다.

 

 

순환 신경망의 학습법

BPTT: Backpropagation through time  시간 펼침 역전파

입력 N x L x I  

배치로 나눈 학습 데이터 (B x L x I)

시간적으로 펼치면서 계산해야 하는 점을 제외하면 , 보통의 역전파와 동일한다.

배치로 피우기 힘들다. 펼침을 하나씩 더해야 하기 때문에 휠씬 메모리가 필요한다.

다중 입력, 다중 출력  => Truncated BPTT데이터 입력 쪼개서 한다.

Truncated 사이에는 역전파가 이루어지지 않는다.

 

Rnn Embedding을 사용한다. 

몇개의 word를 사용하는지 one-hot encoding사용한다.

특정단어들이 one-hot 으로 하면 안되서 실수쪽으로 가져오기 위해서 길이가 만든 feature vector를 바꿔주는 것이다.

 

 

tensorflow IMDB data load

import tensorflow as tf
imdb = tf.keras.datasets.imdb
(X_train, y_train) ,(X_test, y_test) = imdb.load_data(num_words = 10000) # 10000 개 데이터 가져오기

# 특정 길이 짤라야 하고 앞쪽에 padding을 한다.
X_train = tf.keras.preprocessing.sequence.pad_sequences(X_train, 
                                                       value = 0,
                                                       padding ='pre',
                                                       maxlen= 32)
X_test = tf.keras.preprocessing.sequence.pad_sequences(X_test, 
                                                       value = 0,
                                                       padding ='pre',
                                                       maxlen= 32)

 

Attention 기법

sequence-to-sequence model => seq2seq 번역 문제를 학습히기 위해 널리 사용되고 있는 rnn구조

encoder ->context -> decoder

 

영어 문장의 데이터화

Tokenizer와 Embedding이 필요하다.

단어 분리  , 문장주호 제거

Tokenizer:  단어들을 숫자로 바꾼다.

Embedding :  

 

한글 문장의 데이터화

형태소 분석 , 문장부호 제거 가 필요하다.

Tokenizer와 Embedding이 필요하다.

 

RNN 문제점

Gradient Vanishing기울기 소실 : 입출력 연관 관계가 멀리 떨어져 있으면 기울기 소실이 일어나 학습이 잘 되지 않는다.

멀리 떨어지면 기울기 소실 일어난다.

-> 해결법:

전에는 context하나 전달하였지만 Encoder hidden state를 모아서 Decoder로 각각 전달하면 기울기 소실을 해결할 수있다. 새로운 context뽑아서 사용가능하다. 적은 step 타고 간다.

효율적으로 하는것이 Anttention mechanism이다. 

서로 서로 연관있게 학습니다.  어디에 집중해야 하는지 집중하는것

 

Attention  신경망

Query: 질의 찾고자 하는 대상

key: 키 . 저장된 데이터를 찾고자 할 때 참조하는 값

value : 값 저장되는 데이터

Dictionary : key - value pair로 이루어진 집합 쌍으로 연결 

Query 로 해서 비교 하고 값 출력한다.

 

Attention mechanism query key-value사용 

query key비교해서 유사한지  날리고 원하는 유사도가 높은 것을 value로 묶어서 한다.

Attention 모델에선느 key와 value를 같은 값 사용

decoder에서 찾을 려고 할때 찾을 수 있는것은 encoder단이다.

encoder layer에서 필요한 key-value encoding해서 feature vector로 가지고 있는것이기 떄문에 decoder에서 는 encoder쪽을 참조로 하겠다.

전의 hidden layer가지고 사용한다.

출력은 유사도 가 되고 value를 섞어서 결과 출력 

Attention  value 를 concatenate하여 입력한다.

 

Attention 

Transformer 구조 사용

Transformer 어느 위치에 사용했는지 알아야 해서 position 을 사용

RNN으로 되여있어서 순차적으로 되여있다.

병렬적으로 일어나서 조금씩 다르다.

 

 

Word Embedding

Positional Encoding: 시간적 위치별로 고유의 Code 를 생성하여 더하는 방식

위치 에 있는 것

 

scaled Dot - Product Attention

Query , Key Value의 구조를 띄고 있음

softmax이용

 

Multi-Head Attention

Linear 연산 

head를 여러개 

h개의 Attention Layer 를 병렬적으로 사용 - 더 넓은 계층

Linear하면서 차원이 줄어들었다.

 

Masked Multi-Head Attention

Self Attention key 와 value가 같다.

 

Position-wise Feed-Forward

one-hot 

단어의 개수 

단어 하나마다 입력을 여서 출력이 나온다. 병렬적으로 사용해서 

 

Layer normalization   : 

batch영향을 받지 않는 것 

 

Attention mechanism

weighted sum을 많이 사용한다.

키와 value의 쌍이 있다.

 

Encoder입출력

encoder 출력을 key value로 넣기

입력 sequence 길이 n 

 

출력 sequence 길이 m -> 언어가 달라질 수 있어서 따로 변수로 한다.

Positional Encoding 시간적 위치별로 고유의 Code를 생성하여 더하는 방식

상대적 이치가 달라진다.

동시에 계산할수 있다는 것이 병렬 연산 transformer network에 중요한 역할

 

konlpy -> korean nature 

pip install konlpy

Okt -> 트위트에서 만든 페키지 형태소 분석

okt.morphs()->형태소 분석

Tokenizer() -> 몇개까지 fitting을 해준다.

각 단어들을 숫자로

ground truth -> test의 정답

 

과적합의 해결

overfitting 너무 과하게 fitting 

학습 데이터에 너무 fitting되여 있어서 test데이터에 성능이 떨어진다.

 

dataset

train data : 모델 학습 

validation data : 학습이 잘 되는지 검증

test data : 학습이 끝난후 모델 평가 -> 공정하게 하는 것 

1. early stopping: 감소하지 않으면 중단한다.

2. droup out : fully connect에서 몇개 제거하는 방법

3. Batch Normalization 

 

정규화 기법 Regularization:

알고리즘의 일반화 Generalization 를 개선하려는 모든 기법

정규화 기법을 도입하면서 loss값이 감소하는 것을 기대하면 안된다. => loss값을 증가하는 추세가 보인다.

loss training 에서 감소하지 않아도 validation에서 감소하는 목적을 하기 위하여 

흔히 최적화에 추가적인 손실 함수를 추가하는 것을 정규화 기법이라 부른다.

 

Weight Decay

 Weight의 l-2 Norm 을 최소화하는 정규화 기법, Weight가 지나치게 커지는 것을 막는다.

영상 복원문제 

VGG Loss : Vgg 16의 Feature만 사용

SSIM 화질 평가 기법 Structural Similarity Index

 

 

반응형

'교육동영상 > 01. 딥러닝인공지능' 카테고리의 다른 글

10. 합성곱 신경망 구현  (0) 2020.12.04
09. 딥러닝 기초-2  (0) 2020.12.04
08. 딥러닝 기초  (0) 2020.12.02
07. 이미지 분석 pytorch  (0) 2020.12.01
06. 이미지 분석 tensorflow 2.0  (0) 2020.11.25

+ Recent posts