목록분류 전체보기 (56)
개발자의 스터디 노트
BERT란? - 구글에서 개발한 NLP(자연어처리) 사전 훈련 기술이며, 특정 분야에 국한된 기술이 아니라 모든 자연어 처리 분야에서 좋은 성능을 내는 범용 Language Model입니다. - BERT는 사전 훈련 언어모델 입니다. 특정 과제를 수행하기 위한 모델의 성능은, 데이터가 충분히 많다면 Embedding이 큰 영향을 미칩니다. 이 임베딩 과정에서 BERT를 사용하는 것이고, BERT는 특정 과제를 하기 전 사전 훈련 Embedding을 통해 특정 과제의 성능을 더 좋게 할 수 있는 언어 모델입니다. - BERT 이전에 임베딩을 Word2Vec, GloVe, FastText 등의 방식을 많이 사용했지만, 요즘은 고성능을 내는 대부분의 모델에서 BERT를 많이 사용하고 있다고 합니다. 이런 BE..
임베딩을 사용하여 문서 분류 전이 학습은 3단계의 과정을 거쳐 학습됩니다. 1. 사전 훈련된 단어 임베딩을 로드 2. 뉴스 기사를 분류하여 사전 훈련된 임베딩을 미세 조정 3. 단어 간의 공간 관계를 감지하는 합성곱 신경망을 사용하여 학습 학습 데이터는 AG 뉴스 데이터 셋을 사용합니다. - 데이터 마이닝과 정부 추출 방법을 연구할 목적으로 2005년에 수집한 뉴스 기사 모음 - 100만 개 이상의 기사 학습에는 스포츠, 과학/기술, 세계, 비즈니스의 네 가지 범주로 균등하게 분할된 뉴스 기사 12만 개로 구성된 축소 버전을 사용합니다. 아래 다운로드 경로를 통해 전 처리된 학습 데이터를 다운로드합니다. https://docs.google.com/uc?export=download&id=1Z4fOgvrNh..
글로브(Global Vectors for Word Representation, GloVe)는 카운트 기반과 예측 기반을 모두 사용하는 방법론으로 2014년에 미국 스탠포드대학에서 개발한 단어 임베딩 방법론입니다. 카운트 기반의 LSA(Latent Semantic Analysis)와 예측 기반의 Word2Vec의 단점을 지적하며 이를 보완한다느 목적으로 나왔고, 실제로도 Word2Vec 만큼 뛰어난 성능을 보여줍니다. 앞서 실습했던 위키백과 데이터로 GloVe 학습을 진행하도록 하겠습니다. 우선 실습을 위해 GloVe 패키지를 설치 합니다. pip install glove_python_binary 윈도우에서는 제대로 설치가 되지 않아 실습이 안돼서 리눅스 장비에서 실습을 진행하였습니다. 실습을 진행한 리눅..
한국어 위키 백과 데이터 베이스로 Word2Vec 학습을 해보겠습니다. 1. 위키피디아로부터 데이터를 파싱하기 위한 wikiextractor를 설치합니다. pip install wikiextractor 2. 위키디피아 데이터를 다운로드 합니다. Index of /kowiki/latest/ (wikimedia.org) Index of /kowiki/latest/ dumps.wikimedia.org kowiki-latest-pages-articles.xml.bz2 파일을 다운로드하였습니다. 3. 위키익스트랙터를 사용하여 위키피디아 덤프를 파싱 합니다. python -m wikiextractor.WikiExtractor kowiki-latest-pages-articles.xml.bz2 4. 위키피디아 데이터를..
인공지능 스터디를 위한 참고 싸이트를 공유합니다. 1. 한국어 임베딩 - 한국어 임베딩이라는 도서와 관련된 사이트입니다. https://ratsgo.github.io/embedding/ 한국어 임베딩 한국어 임베딩 관련 튜토리얼 페이지입니다. ratsgo.github.io 2. 딥 러닝을 이용한 자연어 처리 입문 - WikiDocs에서 운영하는 온라인 책입니다. https://wikidocs.net/book/2155 딥 러닝을 이용한 자연어 처리 입문 많은 분들의 피드백으로 수년간 보완되어 온 딥 러닝 자연어 처리 무료 eBook입니다. 기본적인 텍스트 전처리부터 BERT와 같은 PLM의 다양한 다운스트림 태스크를 ... wikidocs.net 3. KoNLPy 한국어 형태소 분석기 https://kon..
프랑켄 슈타인 데이터셋으로 Word2Vec CBOW모델을 만들어 봅니다. 우선 프랑켄 슈타인 데이터셋을 다운로드 받습니다. https://docs.google.com/uc?export=download&id=1dRi4LQSFZHy40l7ZE85fSDqb3URqh1Om 프로젝트 쿠텐베르크에서 메리 셸리의 소설 프랑켄슈타인의 전처리 데이터입니다. 해당 데이터는 아래와 같이 전처리된 데이터입니다. CBOW 작업 : 왼쪽 문맥과 오른쪽 문맥을 사용해 단어를 예측합니다. 문맥 윈도 길이는 양쪽으로 2입니다. 텍스트 위를 슬라이딩하는 윈도가 지도 학습 샘플을 생성합니다. 각 샘플의 타깃 단어는 가운데 단어입니다. 길이가 2가 아닌 윈도는 적절하게 패딩 됩니다. 예를 들어 윈도 #3은 i pitied와 my pity라..
1. 임베딩을 배우는 이유 그동안 우리는 벡터 표현으로 원-핫 표현을 사용했습니다. 이 벡터의 길이는 어휘 사전의 크기와 같고, 값은 특정 단어를 나타내는 한 위치만 1이고 나머지는 모두 0입니다. 또한 카운트 기반 표현을 보았습니다. 이 벡터의 길이는 모델에 있는 고유한 단어의 개수와 같지만, 문장에 등장하는 카운트 값은 단어의 빈도에 상응합니다. 카운트 기반 표현은 중요한 내용이나 의미가 벡터의 여러 차원에 표현되어서 분산적 표현이라고도 부릅니다. 분산 표현은 역사가 깊고 많은 머신러닝 및 신경망 모델에서 잘 동작합니다. 분산 표현은 단어가 훨씬 낮은 밀집 벡터로 표현된다는 사실에서 이름을 따왔습니다. 단어의 의미와 다른 속성이 이 밀집 벡터의 여러 차원에 걸쳐 분산됩니다. 저차원으로 학습된 밀집 표..
1. 풀링 풀링(pooling)은 고차원 특성 맵을 저차원 특성 맵으로 요약하는 연산입니다. 합성곱의 출력은 특성 맵입니다. 특성 맵의 값은 입력의 일부 영역을 요약합니다. 합성곱 연산의 중첩되는 특징 때문에 많은 특성이 중복될 수 있습니다. 풀링은 고차원이고 중복 가능성이 높은 특성 맵을 저차원으로 요약하는 방법입니다. 풀링은 특성 맵의 국부적인 영역에 적용하는 합, 평균, 최댓값과 같은 산술 연산입니다. 이런 풀링 연산을 각각 합 풀링(sum pooling), 평균 풀링(average pooling), 최대 풀링(max pooling)이라 합니다. 풀링은 통계적으로 약하고 크기가 큰 특성 맵을 강하고 작은 특성 맵으로 개선할 수 있습니다. 2. 배치 정규화 배치 정규화(batch normalizati..