본문 바로가기
728x90
반응형

전체 글110

이코테 2021 - 정렬 정렬 (Sorting) : 데이터를 특정한 기준에 따라 순서대로 나열하는 것일반적으로 문제 상황에 따라서 적절한 정렬 알고리즘이 공식처럼 사용된다데이터의 개수가 적을 때데이터의 개수가 많지만, 데이터의 범위가 특정 범위로 한정되어 있을 때이미 데이터가 거의 정렬되어 있을 때 선택 정렬 : 처리되지 않은 데이터 중에서 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸는 것을 반복 EX) 0-9까지 10장의 숫자카드 순서대로 정렬하기 전체 데이터 중 가장 작은 '0'을 선택하여 맨 앞의 데이터 '7'과 자리를 바꾼다. '7'과 자리를 바꾼 '0'을 제외한 나머지 데이터 중에서, 가장 작은 '1'을 선택하여 맨 앞 데이터인 '5'와 자리를 바꾼다. 마찬가지로 이미 정렬이 끝난 '0'과 '1'을 제외한 나.. 2024. 7. 10.
[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.
728x90
반응형