가사 코드에 따라 Attention을 통해 시각화 생성

개시하다


Advent calendar에 처음 참가합니다.
이전에 가사에서 코드를 생성하여 진행한 seq2 seq 모형을 제작하였다.
가사에서 코드 프로세스 생성
이 기사에서 우리는 코드를 시각화하기 위해 Attention으로 어떤 단어를 개선했다.
또한 이전 모델에서 1부터 단어의 삽입층을 배웠는데 이번에는 수다치가 제공한 학습이 끝난 분산된 표현을 사용했다.
성과물은 이쪽에 있어요.
Lyrics to Chords

Seq2seq with attention


seq2 seq는 시간 시퀀스 입력을 특징 벡터로 집합하는 인코더와 특징 벡터에 따라 시간 시퀀스 출력을 생성하는 인코더로 구성되어 있다.각각 RNN이 되고 LSTM 등을 사용해도 장시간 시퀀스 입력을 잘 처리할 수 있다.간단하고 알기 쉬운 예는 기계번역으로 일본어 문장을 단어로 나누어 순서대로 인코더를 입력한 후 인코더가 대응하는 영어 문장을 출력하도록 하는 것이다.
여기에 Attention이라는 메커니즘을 소개하면 입력문의 각 단어가 출력문의 어떤 단어에 비해 무게를 얻을 수 있기 때문에 무게가 비교적 큰 단어가 인터넷에서 주목하는 단어라는 것을 추측할 수 있다.
Attention Seq 2에서 대화 모형을 설치해 보았습니다.
지금까지 chainer Seq2 Seq(2)~Attention Model 편~
나는 Pytorch에서 실시했는데 pstorich의 튜토리얼 코드라면attention의 계산에서 순환이 헛되고 매우 느리기 때문에 행렬 연산으로 바꾸는 것이 가장 좋다.
seq2 seq이기 때문에 입력과 출력에 대응하는 권한은 2차원 행렬로 얻을 수 있습니다.하지만 어떤 단어를 부를 때는 그 시간에 맞는 코드가 있어야 하는데, 다른 시간의 코드가 너무 많으면 잘 모르겠어요.따라서 이번에는 출력 방향을 포인트로 하여 어떤 단어를 코드에 전체적으로 기여하는지를 가시화했다.

이미 배운 분산 표현의 이용


Seq2 seq에 일본어를 입력할 때 RNN 이전에 모든 결합층을 통해 one-hot 벡터에서 방차 표시로 전환한다.
이 전결합층도 학습이 가능하지만 가사와 코드가 대응하는 학습 데이터를 수집하기 어렵고 세계의 모든 곡을 수집했더라도 사회의 문장 데이터로 볼 때 드물다.따라서 이미 대량의 일본어 문장에서 배운 분산된 표현을 사용하여 어느 정도 단어의 뜻을 정확하게 이해할 수 있기를 기대한다.
100억 언어 규모의 국어연 일본어 사이트 어료고에 따르면 work 앱이 공개한 학습 분산 표현이 학습됐고, 단어와 분산 표현이 쓰인 텍스트 파일은 12GB였다.
사용 방법이 간단하여gensim으로 쉽게 읽을 수 있습니다.
학습된 Word2Vec 모델의 Sudachi 기반 사용
참고로 제 개인적인 취미는 서버를 빌려 웹 애플리케이션을 공개하는 것입니다. 최대 메모리는 1~2GB입니다.따라서gensim에서 12GB의 분산 표현을 사용하면 메모리가 완전히 부족합니다.
신경 네트워크를 학습할 때는 속도를 처리하려고 하기 때문에 메모리가 많은 기기를 쓰면 되지만, 예측에 사용하면 그렇게 속도가 빠르지 않아 매번 HDD(SSD)에서 읽는다.각종 시도의 결과는 다음과 같이 가장 빠르다.
Sudachipy에서 학습한 워드 2

결실


코드 진행과 가사의 관계 2.고정된 인코딩에 따라 구분해서 사용하면 같은 가사라도 의미가 다르다.
지난번과 마찬가지로 위 사이트에서 코드로 진행된 이미지를 입력하여 어떤 코드가 생성되어 진행될지 봅시다.
이번에 시각적으로 주목할 말은 어떤 말인가.
무게가 큰 단어일수록 붉게 보일 수 있다.

대조계


Dm→G→C의 활약은 "전달 가능한가요? 하지만 말해요! 사랑해요!"

Dm→G→CM 7의 활약은 "전달할 수 있을까? 하지만 말할게! 사랑해... 이래도 되나?"

"사랑해! 사랑해! A.I.SHI.TE.RU!!! 나랑 같이 가자!!!"

단조계


Dm→Em→Am의 표현: "아, 사랑해. 사랑해. 이루어질 수 없는 연애."

Dm→E7→Am의 표현은 "아, 사랑한다. 너무너무너무너무너무너무! 내가 사랑하는 나는 허황되고 슬픈 비극의 주인공이다"

D7→E7→Am의 활약은 "내가 말하겠다, 내가 말하겠다! 사랑...역시 안 된다. 처자 아닌가?"

끝맺다


역시 말로 표현할 수 없는 결과다.근데 키워드 같은 거에 반응하는 것 같아서요.너를 사랑하고, 허황되고, 아내 따위.
결과적으로 이런 평가는 매우 어렵다.
그나저나 sudachi는 Apache License 2.0이지만 웹 애플리케이션은 쓰지 않아도 된다.아니면 help 근처에 쓰는 게 좋을까요?아무 것도 안 써도 신경 쓰이는 것 같아서.

좋은 웹페이지 즐겨찾기