本日は、インスピレーションと予算の枯渇のため、実験ができていなかったので、論文の解説をいたします。解説とか偉そうなことを言っていますが、主に自分用のメモみたいなものなのですが。Vectors」です。この手法は、文(センテンス)をベクトル化する手法の一つで、様々なNLPタスクで好成績を挙げたことで知られている去年の6月にarxivに公開された論文です。上で動くソースコードを公開しているので、実際に動かしてみることも可能です。Vectorsのですが、最大の特徴は教師なし学習でかなり質の高い文ベクトルを生成できる点にあります。実際に使用する入力データは、文章のコーパス(論文中ではブックコーパス)だけでできてしまいます。計算資源さえあればOKという、日曜大工な人間には最高に相性の良い手法となっています。その構造ですが、下記の図が一番わかりやすいでしょう。入力しているのは、文書中のi番目の文。出力は、同じくi-1番目とi+1番目の文である入力文書の前後の文です。正確に言うと、入力文を元に文ベクトルを生成するエンコーダと、文ベクトルを元に前の文と次の文を生成する2つのデコーダから成っているモデルです。GRUを使用していますが、エンコーダ・デコーダとして使用できればモデル上なんでもいいことになります。実際にどのように学習していくのか。手順は下記になります。エンコーダに入力となる文を最後まで入力する(入力に用いる単語ベクトルはあらかじめ用意しておく。ID形式とかなんでもOK)。エンコーダの学習により獲得した隠れ層の値を入力文のベクトルとして使用する。デコーダのこの時の隠れ層の値と、出力される単語に対応する語彙ベクトルの内積を求め、この値をその時点での該当単語の出力される確率として扱う。操作を繰り返し、単語生成確率の和を求め、この値が最大化されるようにエンコーダとデコーダのパラメータを学習するデコーダは、前の文を生成するものと次の文を生成するものの2つがあり、基本的にそれぞれで使用するパラメータは違うものを使用しますが、語彙ベクトルだけは共通のものを使用します。いうわけで、以上で学習は完了です。簡単ですね!注意点としては、学習時に出現していない単語がテストセットに含まれている時の扱いです。ベクトルから学習時に使用したベクトルに射影する線形変換を学習しすることにより、未知語の表現を獲得しエンコーダでも使用できるようにしています。デコード時に出力される語彙に関する言及は特にないので、増やすことについての考慮は特にされていないと思われます。使用して、適切な単語のみを考慮して学習できるように一部改変しながらもちているようです。いうわけで、後はエンコードしたりデコードしたりして遊んでみてねーとのことですね。エンコーダ・デコーダに使用するモデルを変更してみても面白いかもしてません。ついては、エンコーダー・デコーダーモデルにそういう+αもあるよという一般的な説明であって、実際に論文で説明している手法には使用されていないようです。(2)〜機械読解質問応答システム〜月別アーカイブはてなブログをはじめよう!KSKSKSKS2さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。