본문 바로가기

복습용 기술공부

230320 RNN, LSTM, 전이학습

@ 다시 복습하면서 볼때 사용하려고 적는 글

 

RNN 순환 신경망

- 시간의 흐름에 따라 변화하는 데이터 학습

 

NLP : 자연어 처리

- Natural Language Processing

- 한글, 영어 등... (일상어)

- 사람 말 ~> 컴퓨터 말

 

Word Embedding -> 단어 하나하나에 인덱스 할당 (벡터로 단어 표현)

 

※ 자연어는 단어 순서가 중요, 기존 신경망은 위치에 따른 가중치를 줄 수 없음

 

=> 문제 해결을 위해 나온 모델 Word2Vec 

 

Word2Vec : 주변 단어 이용, 중심 단어 예측 or 중심 단어 이용, 주변 단어 예측

~> 얘의 두 모델 CBOW, Skip-Gram Embedding

 

CBOW : 여러 단어 나열-> 관련도니 단어 추정 , 많은 양 텍스트에서 더 잘 작동

Skip-Gram Embedding : 특정 단어-> 문맥 단어 예측, 적은 양 데이터, 희귀한 단어에 대해서 더 잘 작동

 

 

ht=tanh( ht1Wh + xtWx+b)

 

BPTT (backpropagation throught time)

- 시간 방향 신경망 오차 역전파

- 기울기 소실 문제 있음

- 시간 차가 커지면 역전파시 불안정

 

바닐라 RNN 한계

-> 한계 : 앞 단어가 저 뒤의 단어를 꾸미면 학습이 안 됨.


LSTM

-> 문장이 복잡할 때 사용

 

RNN을 장기 기억하기 위해서 데이터를 쭉 저장해놓고 비교함.

-> 직전에 값을 계산해 유지할지 유지하지 않을지 고민하여 현재 상태에 업데이트(틀리면 0을 곱해 초기화)(step 1, 망각게이트), 상태값을 다시 구해서 업데이트(기존의 상태 값(step1)에 더함)(step, 입력 게이트),  RNN 동작처럼, 직전 weight와 tanh 계산해 가져와서 어떻게 넘길지 정함 (step3, 출력 게이트)

 

forget gate(망각 게이트) : 중요도가 커지면 커진만큼 들어가고, 작아지면 작아지는 만큼 상대값을 줄여주는 것.

input gate(입력 게이트) : 현재 입력 게이트와 w를 두개를 다시 계산해서, tanh를 통과 시켜 입력게이트에 집어 넣음

output gate(출력 게이트) : RNN에 일어나는 구간이라고 생각하면 됨, 직전 weight를 이용 해 출력

 

GRU 

-> LSTM 보다 단순해진 구조, LSTM의 연산량이 너무 많아서 GRU 선호, (게이트 2개)

- input gate, forget gate


!wget 으로 위젯 불러옴 jupyter 에선 import wget 해주면 됨
 
실제 tokenize *, 유니코드로 처리 u ->  ex) *tokenize(u'A B')
model.wv.most_similar (가장 연관되는 데이터 확인)
model.wv.similarity (유사도 확인)
model.wv.vocab (단어 확인)

사전 학습 모델 / 전이학습(Transfer Leaning)

사전 학습 모델

-> 기존 성능 좋은 모델 가져와서 내 모델에 적용시킨 것. (다른 문제 해결에 사용한 모델의 가중치를 활용해 새로운 문제에 적용)

 

전이학습 :

-> 사전 학습 모델 기반으로 구조, 파라미터 수정해 추가적으로 학습

 

유사한 데이터 종류 : _> 인터넷 검색해서 사진 보고 필요한 곳에 데이터 넣기

1. 데이터 충분, 도메인 다른 경우

2. 데이터 충분, 도메인 같은 경우

3. 데이터 부족, 도메인 다른 경우

4. 데이터 부족, 도메인 같은 경우

 

- 적은 양 데이터 -> 높은 성능(데이터 부족 or 노이즈 많아도 고품질 모델 가능)

 

from tensorflow.keras.applications import ResNet50V2(여기서 고르기)
resnet_model.trainable = False
-> params 를 0으로 만들기

 

'복습용 기술공부' 카테고리의 다른 글

네이버 옷 크롤링 코드 연습  (0) 2023.04.03
230324 seq2seq, tfrecord, super() 등.  (0) 2023.03.24
230317 공부 내용  (1) 2023.03.17
230316 CNN 팁, keras 팁  (0) 2023.03.16
230315 CNN과 tensorflow 기본  (0) 2023.03.15