반응형

인공지능/자연어 처리 147

자연어 처리 python - 워드 임베딩 만들기 - GloVe

빈도기반 - 유의미한 단어의 변환이 있어도 유사도가 비슷하게 나온다. word2vec는 n을 설정하기 때문에 전체를 반영하지 못한다. 이럼 행렬이 엄청 커질거 같은데.... (중심)like 전체 등장 횟수중 (주변)deep과 등장한 횟수으로 1/3으로 봐서 동시 등장한 확률을 볼 수 있다. 결국 어떤 단어가 등장했을 때 어떤 단어가 등장할 확률을 구할 수 있다.

자연어 처리 python - 워드 임베딩 만들기 - Fast Text

목표 - 대표적인 단어 임베딩 방법론인 FastText의 작동 원리를 이해할 수 있다. 여기서 n-gram은 단어단위 이다. 학습을 이전의 방식(skip gram)보다 훨씬 많이 할 수 있다. C = 주변 단어 유사도 = 코사인유사도 -> 단어에 대한 여러 벡터와 주변 단어 모든 벡터를 내적 여기선 분자를 최대화 해야 한다. -> 내적을 최소화 한다.

자연어 처리 python - 워드 임베딩 만들기 - Word2Vec(CBOW, Skip-gram)

희소 벡터의 문제를 해결! 기본적인 분포 가설이다. CBOW - 주변 단어를 보고 학습 단어를 배우겠다. skip -gram - 중심 단어를 보고 주변 단어를 배우겠다. 토큰화를 잘 하기 위해 강아지가 -> 강아지 학습데이터도 늘리고, 관계도 만들 수 있다. 딥러닝이 아니라 하나의 앝은 레이어를 가진 머신러닝이라고 볼 수 있다. 단순한 원 핫 벡터를 사용한다. 인풋 레이어에서 프로젝션 레이어로 어떻게 메핑할까가 중요하다. 여기선 강아지를 보고 작고, 귀여운, 문, 앞에가 나와야 한다. 학습기회가 많아짐으로써 조정, 오차 잡는 것을 따라잡을 수 없다. 중의성, 모호성을 많이 녹여내진 못했다. 학습데이터에 없다면 학습하기 어렵다. 새로운 단어가 생기면 재 학습해야 한다. 빈도가 적으면 단어를 확실하게 학습하..

자연어 처리 - 워드 임베딩 만들기 - 워드 임베딩이란?

임베딩을 하는 과정도 결국 인코딩의 하나긴 하네요 강아지에 1이 왜 두갠지 모르겠지만 하나만 1 이어야 할 텐데... 모델은 그 많은 사전 중에 하나를 찾아야 하기 때문에 효율이 너무 감소 단어의 중의성, 모호성 등 어렵게 만드는 요소들을 표현하지 못한다. 여기선 5차원으로 표현했네요 여기에 중의성과 모호성도 포함되어 있습니다. 일반화 - 모호성과 중의성을 포함한다. 행렬을 축소하는 곳에서 많이 사용되는 방식이다. 학습되기 전에는 랜덤으로 선택하긴 하지만 학습하면서 점차 위치를 잡게 된다. 임베딩 = 단어 길이 * 내가 원하는 차원 개수 20개가 안되면 패딩을 채워 넣는다.

자연어 처리 python 실습 - BERT 모델의 임베딩 간 유사도 측정

BERT 모델의 임베딩 간 유사도 측정 Introduction Chapter 3. 컴퓨터는 자연어를 어떻게 이해하는가 강의의 BERT 모델의 임베딩 간 유사도 측정 실습 강의입니다. 강의에서 배웠던 여러 가설 기반 임베딩을 직접 구축해보고, 구축한 임베딩을 활용하여 문장 간 유사도를 계산합니다. 추가로, 구축 방법 별 유사도 경향을 분석하여 임베딩에 대한 이해도를 높입니다. 1. 문서 집합 구축 테스트할 다양한 문장(문서)들에 대한 문서 집합을 구축합니다. 자연어의 특성인 유사성과 모호성을 잘 설명할 수 있도록 문장 예시들을 구성합니다. 의미가 유사한 문장 간 유사도 계산 (조사 생략): (sen_1, sen_2) 의미가 유사한 문장 간 유사도 계산 (순서 변경): (sen_1, sen_3) 문장 내 단..

임베딩이란? - 임베딩 구축 방법 2 - 분포 가설과 언어 모델

목표 - 분포 가설에 기반한 임베딩 구축 방법과 언어 모델 기반의 임베딩 구축 방법에 대해 이해하기 2번이랑 3번이랑 중요도가 살짝 애매하네유 주변 단어를 통해 뜻을 유추할 수 있다. 독립적이면 서로 관련 없는 단어로 볼 수 있고, 확률이 높다면 의미가 연결되어 있다고 볼 수 있다. CBOW - 중심 단어를 주변 단어를 통해 유추한다 SKIP gram - 중심 단어를 통해 주변 단어를 유추한다. 엄청나게 작은 확률로 등장할 것 입니다.. 문장이 길수록 확률이 점점 낮아지기 때문에 n-gram을 통해 제한하게 되면 확률이 많이 높아지게 된다. 근본적으론 빈도 기반이다.

임베딩이란 ? - 임베딩 구축 방법 1 - 단어의 출현 빈도

목표 - 단어의 출현 빈도가 중요하다는 가설에 기반한 임베딩 구축 방법에 대해 이해하자 주제가 비슷한 문서라면 출현 횟수가 비슷할 것이라는 전제가 깔려있다. 행렬이 너무 크기도 하고, 정보의 양도 적어 효율성이 너무 떨어진다. 중복 원소를 포함한다. 출현 횟수로 표현하는 것이다. 코퍼스 범위에서 문서 범위로 줄인 것이다. the 같은 의미가 적지만 출현 횟수가 높은 것들이 종요하다고 보일 수 있다. 빈도 이상의 무엇인가를 고려한다. 단어의 중요도와 비례한다. n이 엄청 커서 log를 씌워 스케일링하는 것이다. 여기서 로그는 10의 로그네요 단어 문서 행렬에 idf값이 들어가는 것이다. 유사도가 좀 더 높긴 하다. 맥락적 유사도를 반영하지 못하는 것이 큰거 같은데. 그리고 행렬도 아직도 너무 크고

자연어 처리 python - 컴퓨터는 자연어를 어떻게 이해하는가?

목표 - 자연어를 컴퓨터가 이해할 수 있게 수치화하는 이유와 수치화의 방식인 임베딩을 이해하기 아스키 코드는 구분을 해줄 뿐 의미를 담고있지 않다. 이차원 벡터화를 안하고 저렇게 표현하나....? 일단 아스키 코드로 변환하는 것 보다 의미를 담을 수 있게 된다. 벡터화 간의 사직연산이 가능하다! 언어학적 지식들이 점점 불필요해졌다. - 다량의 데이터로 해결

컴퓨터는 자연어를 어떻게 이해하는가? - 자연어 특성

목표 - 자연어에서 단어의 의미와 단어 간 유사성과 모호성에 대해 이해할 수 있습니다. 백터화? 배, 말과 같은 단어들을 벡터에 모든 의미를 담기 어려울 수 있다. 통계적으로 많이 사용되는 뜻은 있겠지만 일단 배의 의미는 10개나 된다. 모델 입장에서 이러한 단어들의 관계 파악은 너무 힘들어지는 것이다. 동음이의어를 통한 데이터 증강도 가능하다! 데이터양이 적었을 경우 이러한 시도들이 많았다. 요즘 데이터가 많아서 데이터를 때려 박아 해소하기도 한다. 단어의 계층과 의미를 한눈에 알 수 있게 해 준다. 계속 업데이트가 필요하다!, 맥락적으로 이해해야 하는 것들을 표현할 수 없다. 좋은 성능을 위해서 레이블이 좋아야 한다.

728x90
728x90