본문 바로가기
728x90
반응형

전체 글100

[Goorm] 딥러닝을 이용한 자연어 처리 8 (Attention 메커니즘) 지금까지는 seq2seq모델이 RNN 기반의 LSTM모델보다 더 좋은 성능을 낸다는 것을 알 수 있었다. 하지만, 텍스트의 길이가 길어질수록 정확도가 0%에 가까워졌다. Seq2Seq의 문제점 고정된 길이의 컨텍스트 벡터seq2seq 모델은 입력 시퀀스를 고정된 크기의 컨텍스트 벡터로 압축한다. 이 컨텍스트 벡터는 모든 입력 정보를 담아야 하기 때문에, 특히 긴 시퀀스에서는 중요한 정보를 잃을 수 있다. 이러한 정보 손실로 인해 디코더가 필요한 모든 정보를 얻지 못하게 되어, 예측 정확도가 떨어지게 된다.긴 시퀀스 처리의 어려움긴 시퀀스를 처리할 때, 초기 입력 정보가 컨텍스트 벡터에 제대로 반영되지 않거나 희석될 수 있다.디코더가 전체 시퀀스를 제대로 이해하지 못하고, 출력시퀀스를 정확히 예측하지 못하.. 2024. 7. 9.
[Goorm] 딥러닝을 이용한 자연어 처리 7 ( Seq2Seq 와 인코더/디코더) 해보기 실습 1 ~ 10 사이의 숫자 5개를 입력하면 거꾸로 출력되는 모델 만들기검증은 계속 반복하며 Quit를 입력하면 종료Ex)  8 4 2 3 7 > 7 3 2 4 8 RNN에서 Seq2Seq로 - Step 1 (RNN을 사용한 모델 설계) import numpy as npfrom tensorflow.keras.models import Sequentialfrom tensorflow.keras.layers import Embedding, LSTM, Dense, TimeDistributed, Bidirectionalx= np.random.randint(0, 10, size= (1000,5))y= np.array([i[::-1] for i in x])model= Sequential()model.add(E.. 2024. 7. 9.
[Goorm] 딥러닝을 이용한 자연어 처리 6 (LSTM과 CNN으로 IMDB 사용하기) Embedding 함수: 각 인덱스는 고유한 벡터 값으로 변환되며,학습 과정에서 이 벡터 값은 업데이트될 수 있지만, 동일한 인덱스는 항상 동일한 벡터로 매핑된다. 시퀀스(Sequence)의 개념시퀀스는 순서가 있는 데이터의 나열을 의미한다. 시퀀스는 다음과 같은 다양한 형태로 나타날 수 있다:단어 시퀀스: 문장을 구성하는 단어들의 순서. 예) "I love machine learning"이라는 문장의 단어 시퀀스: ["I", "love", "machine", "learning"].문자 시퀀스: 단어를 구성하는 문자들의 순서. 예) "hello"라는 단어는 문자 시퀀스: ["h", "e", "l", "l", "o"].숫자 시퀀스: 숫자들이 순서대로 나열된 것. 예) [1, 2, 3, 4, 5]는 숫자 시.. 2024. 7. 7.
[Goorm] 딥리닝을 이용한 자연어 처리 5 (LSTM 이용) LSTM을 이용한 로이터 뉴스 카테고리 분류하기 : 입력된 문장의 의미를 파악하는 것은 단어간의 관계를 파악한다기 보다 모든 단어를 종합하여 하나의 카테고리로 분류하는 작업이라고 할 수 있다.   1. 데이터 로드import numpyimport tensorflow as tffrom tensorflow.keras.datasets import reuters# seed값 설정seed= 0numpy.random.seed(seed)tf.random.set_seed(seed)(x_train, y_train), (x_test, y_test) = reuters.load_data(num_words=1000, test_split=0.2)# 데이터 확인하기category= numpy.max(y_train)+1print(c.. 2024. 7. 6.
[Goorm] 딥러닝을 이용한 자연어 처리 4 (RNN & LSTM) 시퀀스 배열로 다루는 순환 신경망 (RNN)  이전까지는 단어와 단어 간의 관계나 연관으로 임베딩값이 결정되었다. (NN)하지만 이는 문장 전체의 의미를 이해할 수 없다.이를 해결하기 위해 '순환신경망' 방법이 고안됨 ❗ RNN (Recurrent Neural Network, 순환신경망)순환 신경망은 여러개의 데이터가 순서대로 입력되었을 때, 앞서 입력받은 데이터를 잠시 기억해 놓는 방법기억된 데이터가 얼마나 중요한지 판단하여 별도의 가중치를 부여모든 입력 값에 이 작업을 순서대로 실행하므로 다음 층으로 넘어가기 전에 같은 층을 맴도는 것 처럼 보임 → 순환신경망 예를 들어,  ' 오늘 주가가 몇이야? ' 라고 묻는다고 가정해보면토큰 단위로 모델에 입력된다고 했을 때, 앞에 들어가는 입력에 따라 뒤로 전.. 2024. 7. 5.
[Goorm] 딥러닝을 이용한 자연어 처리 3 (IMDB + GloVe 이용) 사전 훈련된 단어 임베딩 사용하기  훈련데이터가 부족하다면 작업에 맞는 단어 임베딩을 학습할 수 없음대신 미리 계산된 임베딩 공간에서 임베딩 벡터를 로드할 수 있음 ( pre-trained 불러오기)단어 임베딩은 일반적으로 단어 출현 통계를 사용하여 계산됨word2vec의 차원은 성별처럼 구체적인 의미가 있는 속성을 잡아냄케라스의 Embedding층을 위해 내려 받을 수 있는 미리 계산된 단어 임베딩 데이터베이스가 여럿있음그 중 하나가 word2vec 임인기 있는 또 다른 하나는 GloVe(Global Vectors for Word Representation) 임이 기법은 단어의 동시 출현(co-occurrence)12 통계를 기록한 행렬을 분해하는 기법을 사용함데이터에서 가져온 수백만 개의 영어 토큰에.. 2024. 7. 5.
[Goorm] 딥러닝을 이용한 자연어 처리 2 (IMDB 이용) IMDB 셋을 가져와 텍스트 데이터 다루기; Internet Movie DataBase 영화에 대한 리뷰가 담긴 텍스트 데이터  심화 실습 1. 데이터준비import osac_dir= '/content/aclImdb'train_dir = os.path.join(ac_dir,'train')test_dir = os.path.join(ac_dir,'test')texts = []labels = []for label in ['neg','pos']: txts_dir= os.path.join(train_dir,label) for fname in os.listdir(txts_dir): if fname[-4:] == '.txt': with open(os.path.join(txt.. 2024. 7. 5.
[Python] items 함수 이전 포스팅 get함수와 마찬가지로 딕셔너리에서 사용하는 함수 [Python] get 함수get 함수는 딕셔너리에서 사용되는 함수이다. 2개의 인자를 사용하는데딕셔너리의 key 값None 대신 사용할 default 값 예를 들어 볼까,dic= {'red': 12, 'yellow':56, 'green': 38, 'blue':93}val= dic.get('red')print(val)#data-yun.tistory.com 같은 딕셔너리를 사용했을때dic= {'red': 12, 'yellow':56, 'green': 38, 'blue':93}for i in dic: print(i)# red# yellow# green# bluefor k, v in dic.items(): print('k:',k,' v:',v)# .. 2024. 7. 3.
[Python] get 함수 get 함수는 딕셔너리에서 사용되는 함수이다. 2개의 인자를 사용하는데딕셔너리의 key 값None 대신 사용할 default 값 예를 들어 볼까,dic= {'red': 12, 'yellow':56, 'green': 38, 'blue':93}val= dic.get('red')print(val)# 12val= dic.get('pink')print(val)# Noneval= dic.get('pink', 10)print(val)# 10> 'pink'의 경우는 dic 딕셔너리에 있는 key가 아니다.> 따라서 없는 key의 값의 경우는 두번째 인자로 받은 것을 반환한다. 2024. 7. 3.
728x90
반응형