이 저장소에서 우리는 Canonical Penn TreeBank (PTB) 코퍼스에서 3 개의 언어 모델을 훈련시킵니다. 이 코퍼스는 각각 약 929K 및 73K 토큰의 교육 및 검증 세트로 나뉩니다. 우리는 (1) 선형 보간을 갖는 전통적인 트리 그램 모델, (2) (Bengio et al., 2003)에 의해 설명 된 신경 확률 론적 언어 모델 및 (3) 장거리 메모리 (LSTM) 단위를 갖는 정규화 된 재발 신경 네트워크 (RNN)를 구현한다 (Zaremba et al., 2015). 또한 LSTM 모델에 대한 일련의 수정을 실험하고 다층 모델을 사용한 검증 세트에서 92.9의 당혹감을 달성합니다.
스탠포드 정서인 TreeBank 정서 분류 작업에서, 우리는 영화 리뷰에서 가져온 문장의 코퍼스가 제공됩니다. 각 문장은 긍정적, 음수 또는 중립으로 태그되었습니다. 우리는 중립 예제를 제거하고 긍정적 문장과 부정적인 문장 사이의 이진 결정으로 작업을 공식화하는 데 따른다 (Kim, 2014).
각 모델 변형에 대해 예측을 공식화합니다
테스트 케이스의 경우
~처럼

어디
활성화 기능이며
우리의 배운 무게,
입력을위한 기능 벡터입니다
, 그리고
바이어스 벡터입니다. 이 문제 세트에서 

모두를 위해
우리는 SST-2 데이터 세트에서 긍정적 및 부정적인 감정 입력 만 고려하기 때문에. 우리는 모든 모델 구현에 Pytorch를 사용하며 모든 모델은 각각 크기 10의 배치, 학습 속도 1e-4, Adam Optimizer 및 Negative Log Ovelihood 손실 함수를 사용하여 각각 10 개의 에포크에 대해 훈련됩니다. 이 설정에 대한 유일한 예외는 학습 매개 변수와 함께 하나의 에포크에 적합한 다차 순진한 베이에 대한 예외였습니다.
= 1.0.
허락하다 

교육 케이스의 기능 수 벡터가 되십시오
분류 레이블로
.
기능 세트입니다
기능 발생 수를 나타냅니다
훈련 사례에서
. 의 수 벡터를 정의하십시오
~처럼
=
+
스무딩 매개 변수의 경우
. 우리는 왕과 매닝을 따라 카운트를 바이어링하는 데 따른다.
= 
. 식 (1)과 관련하여
긍정적 인 예와 부정적인 예의 수 사이의 로그 카운트 비율입니다.
= 로그 (
/
) 어디
그리고
교육 데이터 세트에서 긍정적 및 부정적인 교육 사례의 수는
입력 발생 수입니다
, 그리고
맵핑하는 이진 표시기 기능입니다
0과 0보다 큰 경우 1 ~ 1. 우리는 유니그램 만 기능으로 간주합니다.
우리는 체중과 편향 행렬을 배웁니다
그리고
최적화하기 위해

어디
~이다
-각 훈련 샘플에 대한 단어의 백색 유니 그램 카운트를 나타내는 차원 벡터. 우리의 구현에서 우리는 대표합니다
그리고
단일 완전히 연결된 층을 사용하여 Sigmoid 활성화 하의 2 개의 단위 출력 층에 직접 맵핑됩니다.
cbow 아키텍처에서 단어 길이의 문장 입력의 각 단어
a에 매핑됩니다
-차원 임베딩 벡터. 모든 단어의 임베딩 벡터는 단일 기능 벡터를 생성하기 위해 평균화됩니다.
이는 전체 입력을 나타냅니다. 특히,

어디 

그리고 

, 그리고
=
모두를 위해
문장 임베딩 및 단어 임베딩의 차원입니다. 이 인코딩
그런 다음 SoftMax 활성화 하에서 출력 클래스를 나타내는 2 개의 출력 장치에 직접 맵핑하는 단일 완전히 연결된 층으로 전달됩니다.
허락하다 

be the
-차원 단어 벡터
-입력 문장의 단어. 입력 배치로 모든 문장을 패딩 한 후 같은 길이로
, 어디
배치에서 모든 문장의 최대 길이 문장 인 경우 각 문장은 다음과 같이 표시됩니다.

어디
연결 작업입니다. 허락하다
단어의 연결을 나타냅니다
,,,
, ...,
. Convolutional Neural Networks에서는 Convolution Operations를 적용합니다 

필터 크기로
필터 크기가 효과적으로 복구 할 단어의 창 크기 인 기능을 생성합니다. 허락하다
이 작업에서 생성 된 기능이어야합니다. 그 다음에

어디
바이어스 용어입니다
정류 된 선형 단위 (Relu) 함수입니다. 필터 길이 크기를 적용합니다
입력 문장에있는 단어의 가능한 모든 창문을 통해 기능 맵을 생성합니다.

구현에서는 필터 크기를 통해 복잡합니다 

그런 다음 각각의 특징을 연결하십시오
단일 벡터로. 우리는 최대 시간 풀링 작업 (Collobert et al, 2011)을 연결된 기능 맵의 벡터에 적용합니다.
그리고 얻습니다
= max (
). 그런 다음 드롭 아웃을 적용합니다
= 0.50까지
오버 피트팅에 대한 정규화 측정 값으로, 이것을 완전히 연결된 층으로 전달하고 출력을 통해 SoftMax를 계산하십시오.
마지막으로 CNN 아키텍처에 대한 일련의 수정으로 구현하여 SST-2 데이터 세트에 대해 약간의 성능 향상을 제공했습니다. 이 구현에서, 우리는 스탠포드의 장갑 사전 훈련 벡터 (Pennington et al., 2014)를 사용하여 다음을 변경합니다.
다음 (Kim, 2014)에 따르면, 우리는 컨볼 루션 및 최대 풀링 단계 중에 두 개의 워드 임베딩 테이블을 사용합니다. 하나는 정적이지 않거나 모델의 일반 모듈로 훈련 중에 업데이트되었으며, 다른 하나는 최적화기에서 생략하고 훈련 실행 중에 정적으로 보존됩니다. 모델의 전방 패스에서,이 두 세트의 임베딩은 "채널"치수를 따라 함께 연결된 다음 단일 텐서로서 3 개의 컨볼 루션 레이어로 전달되며, 장갑 모델의 300 치수 각각에 대해 2 개의 값이 있습니다.
3 개의 Convolutional Kernel에서 최대 풀이 된 기능을 나타내는 결합 된 기능 벡터를 생성 한 후, 우리는 입력의 비 패딩 된 단어 수를 단일 추가 차원으로 추가하여 301 차원 텐서를 생성하여 2 유닛 출력에 매핑됩니다. 엔지니어링 관점에서 볼 때, 우리는 이것이 SST-2 데이터 세트의 성능을 약간 향상 시킨다는 것을 발견합니다. 여기서 평균적으로 긍정적 인 문장은 부정적인 문장보다 약간 길다-19.41 단어 대 19.17. 이것이 다른 데이터 세트에 걸쳐 있을지 또는 SST-2에 특정한 지 여부는 확실하지 않습니다. (또한 명백하지는 않지만 흥미로운 코퍼스-언어 론적 질문을 암시하는 것 같습니다.“긍정적 인”문장은 일반적으로“부정적인”문장보다 길어집니다.)
위에서 설명한 두 가지 변경 외에도 다음을 포함하여 CNN 아키텍처에 대한 광범위한 다른 수정을 실험했습니다.
최종 출력 장치에 매핑하기 전에 MaxPooled CNN 벡터를 평균화 된 CBOW 벡터와 연결하여 CBOW 모델과 CNN 아키텍처를 결합합니다.
글러브 임베딩을 구글 레 우스 임베딩으로 교체했습니다 (Mikolov et al., 2013). 이 아이디어는 뉴스 기사에 대해 교육을 받았기 때문에 PTB에 유용한 도메인 특이성이있을 수 있다는 생각에서 비롯되었습니다.
CNN 아키텍처의 맥락에서 (Kim, 2014)가 설명한대로 "다 채널"임베딩을 구현했습니다. 훈련 중에 업데이트되는 단일 임베딩 층을 사용하는 대신, 미리 훈련 된 가중치 매트릭스는 두 개의 개별 임베딩 층으로 복사됩니다. 하나는 훈련 중에 업데이트되고 다른 하나는 최적화에서 생략하고 훈련 중에 변경되지 않은 상태로 유지됩니다. 순방향 통과 워드 인덱스는 각 테이블에 별도로 매핑 된 다음, 두 텐서가 임베딩 치수를 따라 연결되어 각 토큰에 대해 단일 600 차원 임베딩 텐서를 생성합니다.
배치에 대한 다양한 접근법을 실험했습니다. Torchtext의 BPTTIterator 와 같은 훈련 중 하나의 끊임없는 시퀀스로 코퍼스를 모델링하는 대신, 우리는 코퍼스를 개별 문장으로 나누고 각 문장에서 각 토큰에 대해 별도의 훈련 사례를 생성하려고 시도했습니다. 예를 들어,“나는 검은 고양이를 좋아한다”라는 문장을 위해 우리는 5 가지 맥락을 만들었다.
에이. “ <SOS> I”
비. “ <SOS> 좋아요”
기음. " <SOS> 나는 검은 색을 좋아한다"
디. “ <SOS> 나는 검은 고양이를 좋아한다”
이자형. " <SOS> 나는 검은 고양이를 좋아한다 <EOS> "
그리고 모델은 첫 번째 t -1 토큰으로부터 시간 단계 t 에서 각 컨텍스트에서 마지막 토큰을 예측하도록 훈련된다. 우리는 pytorch의 pack_padded_sequence 함수를 사용하여 LSTM에 가변 길이 입력을 처리했습니다. 실제로, 이것은 단어 앞에서 컨텍스트에서 더 넓은 범위의 기능을 쉽게 설계 할 수 있기 때문에 매력적이었습니다. 예를 들어, T -1 컨텍스트를 앞뒤로 통과하여 양방향 BPTTIterator 을 쉽게 구현하기가 쉽습니다. 그러나 우리는 이것을 시도한 후에, 코퍼스의 문장은 기사 ---- 따라서 주제별 / 개념적 수준으로 그룹화되기 때문에 BPTTIterator 의 코퍼스의 지속적인 표현과 결코 경쟁력이 없다는 것을 깨달았습니다. 즉, 모델이 다음에 어떤 유형의 단어가 올라야하는지에 대한 문장 경계에서 유용한 정보를 배울 수 있습니다.
드롭 아웃 백분율 변경, 초기 임베딩 층에 드롭 아웃 적용 등과 같은 다양한 정규화 전략을 실험했습니다.
이러한 변화 중 어느 것도 초기 단일 계층, 1000 단위 LSTM에서 개선되지 않았습니다. 우리의 최고의 성능 모델은 섹션 3.4에 설명 된 모델이었습니다. 우리가 각 섹션 3 모델로 달성 한 당황은 표 1에 설명되어 있습니다.
| 모델 | 당황 |
|---|---|
| 선형 보간 트리 그램 | 178.03 |
| 신경 언어 모델 (5 그램) | 162.2 |
| 1 층 LSTM | 101.5 |
| 3 층 LSTM + 연결 | 92.9 |
연결이있는 다층 LSTM은 간단한 LSTM 기준선을 이겼지 만 동일한 코퍼스 및 유사한 아키텍처를 사용하여 (Zaremba et al., 2015)에 의해 기술 된 78.4 검증 당도 성능을 복제 할 수 없었습니다. 즉, 용지에 설명 된 구성 (2 층, 650 및 1500 단위 아키텍처)에 설명 된 구성을 사용할 때, 우리의 모델은 논문에 설명 된 접근 방식과 일치하는 방식으로 드롭 아웃을 적용 할 때에도 5-6 에포크 내에서 과잉 부담합니다. 반대로, (Zaremba et al., 2015)는 55 명의 에포크에 대한 훈련을 언급합니다.)
우리는 4 가지 클래스의 모델을 훈련 시켰습니다. 즉, 선형 보간이있는 전통적인 트리 그램 모델, 기대 극대화로 배운 가중치; 다음 간단한 신경망 언어 모델 (Bengio et al., 2003); 단일 층 LSTM 기준선; 그리고이 모델에 대한 확장은 서로 다른 크기의 세 층, 처음 두 층의 연결을 건너 뛰고, 정규화 (Zaremba et al., 2015). 최종 모델은 대략 동등한 하이퍼 파라미터를 사용하여 (Zaremba et al., 2015)에 의해보고 된 78.4 및 82.7에 비해 92.9의 당혹감을 달성합니다.
Y. Bengio, R. Ducharme, P. Vincent, C. Jauvin. "신경 확률 론적 언어 모델." 기계 학습 연구 3, 페이지 1137–1155. 2003.
D. Jurafsky. "언어 모델링 : N-Grams 소개." 강의. 스탠포드 대학교 CS124. 2012.
Y. 김. "문장 분류를위한 컨볼 루션 신경 네트워크." 자연 언어 처리의 경험적 방법에 관한 2014 회의 (EMNLP), 1746–1751 페이지. 2014.
T. Mikolov, K. Chen, G. Corrado, J. Dean. "벡터 공간에서 단어 표현의 효율적인 추정." ARXIV PREPRINT ARXIV : 1301.3781. 2013.
J. Pennington, R. Socher, C. Manning. "장갑 : 단어 표현을위한 글로벌 벡터." 자연 언어 처리의 경험적 방법에 관한 2014 회의 (EMNLP), 1532-1543 페이지. 2014.
W. Zaremba, I. Sutskever, O. Vinyals. 2015.“반복 신경 네트워크 정규화.” Arxiv preprint arxiv : 1409.2329. 2015.