NLP—————word_embedding

2008 단어 pythonDeepLearningNLP
Embedding 이라는 단 어 는 깊이 있 는 학습 을 접 한 학생 들 이 낯 설 지 않 습 니 다.keras 공식 문서 에서 삽입 층 은 정수(아래 표)를 고정 크기 의 벡터 로 바 꿉 니 다.(이 설명 은 너무 모호 하 다!!)
실제로 embedding 이라는 단 어 는 wordEmbedding 에서 유래 했다.삽입 층 을 사용 하 는 데 는 주로 세 가지 이유 가 있다.
4.567917.onehot 인 코딩 을 사용 하면 벡터 의 차원 이 높 고 매우 희소 하 다.만약 사전 에 2000 개의 단 어 를 포함한다 면 모든 단어의 onehot 벡터 는 2000 개의 정수 로 구성 되 는데 그 중에서 1 개 만 있 고 나머지 는 0 이다.이것 은 매우 낭비 적 이 고 효율 이 매우 낮다
4.567917.onehot 인 코딩 에 있어 서 임 의 두 단어 간 은 모두 독립 적 이 고 단 어 를 기호 화 했 을 뿐 그 어떠한 의미 정보 도 포함 하지 않 았 으 며 embedding 은 의미 차원 의 어휘 간 의 관 계 를 표현 할 수 있다
4.567917.인터넷 훈련 과정 에서 모든 삽 입 된 벡터 가 업데이트 되 고 다 차원 공간 에서 의 단어 와 단어 간 의 유사 성 을 시각 화 할 수 있다
밤 들 기:deeplearning is very deep onehot 인 코딩 에 따라:
deeplearning==>[1,0,0,0]
is==>[0,1,0,0]
very==>[0,0,1,0]
deep==>[0,0,0,1]
이 문장 은 비교적 짧 고 4*4 차원 의 벡터 공간 으로 저장 되 었 다.만약 에 어휘 표 가 크 면 저장 공간 은 지수 형식 으로 증가 하고 효율 이 낮 을 것 이다.
한편,wordEmbedding 은 색인 에 잠재 적 인 요 소 를 분배 하고 n 개의 잠재 적 인 요 소 를 분배 하면 삽 입 된 벡터 는 모든 길이 가 n 임 을 나타 낸다.2 개의 잠재 인자 로 이상 의 예 를 나타 낸다.deep==>[0.32,0.02].이 벡터 의 길 이 는 어휘 표 의 크기 에 제약 을 받 지 않 는 다 는 것 을 알 수 있다.물론 embedding 의 구체 적 인 수 치 는 음성 메시지 가 있 기 때문에 우 리 는 평소에 워드 2 vec 등 훈련 된 끼 워 넣 기 를 사용 합 니 다.여 기 는 군말 하지 않 습 니 다.
여기 서 실제 프로젝트 의 예 를 하나 더 들 어 보 겠 습 니 다.이 프로젝트 는 github 의 핫 한 오픈 소스 프로젝트 입 니 다.textcn,저 는 예비 처리 단어의 일부분 만 말 합 니 다.
self.W = tf.Variable(tf.random_uniform([vocab_size, embedding_size], -1.0, 1.0),name="W")
#                  vocab_size,        embedding     embedding_size       ,      ,          [-1,1]         

self.embedded_chars = tf.nn.embedding_lookup(self.W, self.input_x)
#        input_x                 embedding  ,input_x   [batch_size,sequence_size]       ,         [batch_size,sequence_size,embedding_size]

self.embedded_chars_expanded = tf.expand_dims(self.embedded_chars, -1)
#    ,          

이 코드 는 네트워크 모델 을 구축 할 때 구조 입력 input 의 규모 입 니 다.가장 중요 한 것 은 그 중의 차원 변 화 를 파악 하 는 것 입 니 다.완전한 예 는 프로젝트 주 소 를 찾 아 볼 수 있 습 니 다.
 
 

좋은 웹페이지 즐겨찾기