크게 생각하고, 목표를 높게 잡고, 대담하게 행동하라.

“언젠가는 목표에 이를지도 모르는 단계를 밟는 것으로는 언제나 실패한다. 모든 단계가 그 자체로 목표인 동시에 목표로 이르는 단계여야한다.” - 괴테

728x90

AI/자연어 처리 4

[자연어처리] 간단한 시퀀스-투-시퀀스(Sequence-to-Sequence, seq2seq)

seq2seq seq2seq는 대표적으로 번역기 또는 챗봇에서 사용되는 모델이다. RNN의 구조를 어떻게 만들었냐에 따라서 seq2seq이 만들어지는데 아래 그림을 보면서 이해해보자. 영어 문장을 입력 받고 seq2seq을 통과하여 프랑스어로 출력하는 모습을 볼 수 있다. 크게 인코더와 디코더로 구성이 되어있고 인코더에서 입력받은 문장을 압축하여 CONTEXT라는 하나의 벡터가 되고, 이 벡터는 디코더의 입력벡터로 들어가게 된다. 즉, 입력문장 ->인코더 -> 컨텍스트 벡터 -> 디코더 -> 출력문장으로 진행이 된다. 인코더와 디코더의 내부에 대해 조금 자세히 알아보자. 인코더 위 사진을 보면 입력 문장이 단어 단위로 토큰화가 진행된 것을 확인할 수 있다. 각 단어 토큰은 RNN 셀의 각 시점이 된다(실..

AI/자연어 처리 2023.02.17

서브워드 토크나이저(1) - BPE

모델에 학습을 시켰지만 정작 테스트 할 때 모르는 단어가 나오면 문제를 해결하는 데 힘들어질 수 밖에 없다. 이러한 상황을 OOV(Out-of-Vocabulary) 문제라고 한다. OOV의 문제를 최소화하기 위해서 하나의 단어를 여러 서브워드로 분리하는 작업을 하는 데 이를 서브워드 분리(Subword segmentation)이라고 한다. ex) birthplace = birth + place 대표적인 서브워드 분리 알고리즘인 BPE에 대해 알아보자. BPE(Byte Pair Encoding) BPE는 기본적으로 데이터 압축 알고리즘이다. 간단한 작동 방법에 대해 알아보자. 아래와 같은 문자열이 주어졌다고 하자. aaabdaaabac aa가 반복되어 나온다. aa를 Z로 치환하자. ZabdZabac ab..

AI/자연어 처리 2023.02.15

[자연어처리] Word2Vec, Skip-gram

Word2Vec 워드투벡터(Word2Vec)이란 각 단어의 벡터 간 유사도를 측정하기 위한 방법이다. Word2Vec의 학습방식에는 CBOW(ContinuousBagofWords)와 Skip‑Gram 두 가지 방식이 있다. CBOW: 주변 단어들을 입력으로 중간에 있는 단어들을 예측 Skip‑Gram: 중간에 있는 단어들을 입력으로 주변 단어들을 예측 CBOW CBOW는 주변 단어들을 입력으로 받고 중간에 있는 단어를 예측한다. 중심 단어로부터 주변 단어를 앞, 뒤로 몇개 볼지 정해야하는데 이 범위를 윈도우(window)라고 한다. 위 예시에서는 window의 크기가 2인 셈이다. 우선 CBOW는 입력으로 주변 단어의 원-핫 벡터가 들어가게 된다. 그리고 입력층은 가중치 W와 곱해져서 투사층(Projec..

AI/자연어 처리 2023.02.13

[자연어 처리] 코사인 유사도(Cosine Similarity)

문장의 유사도를 구하기 위해서 다양한 유사도 기법을 사용한다. 그 중 코사인 유사도에 대해 알아보자. 코사인 유사도 코사인 유사도는 두 벡터의 코사인 각도로 구할 수 있다. 두 벡터의 각도가 0°인 경우는 1 90°인 경우는 0 180°로 반대의 방향을 가지면 -1 코사인 유사도는 -1과 1사이의 값을 갖게 되며 1에 가까울수록 유사도가 높다고 말할 수 있다. 아래 식은 코사인 유사도를 식으로 표현한 것이다. 활용 코사인 유사도 구하기 # overview열에 대한 TF-IDF 행렬 구하기 tfidf = TfidfVectorizer(stop_words='english') tfidf_matrix = tfidf.fit_transform(data['overview']) print('TF-IDF 행렬의 크기(sh..

AI/자연어 처리 2023.02.09
728x90