ラビットチャレンジ【深層学習day3】~Seq2seq~

概要

Sequence to Sequence(以下、Seq2seq)は翻訳技術が大きく向上させた技術である

つまり1つの入力(文章)を入れて1つの出力を出すモデルである

Encoder,Decoderが使用されている

Seq2seq以降も改良されたモデルが開発されている

この章では以下の項目を学んだ

・Seq2seqの基礎

・Encoder RNN

・Decoder RNN(確認テスト1つ含む)

・演習チャレンジ

・HRED

・VHRED(確認テスト1つ含む)

・オートエンコーダ

・VAE(確認テスト1つ含む)

Seq2seq

Encoder-Decoderモデルの一種である

以下のような構造をしている

f:id:Maruring:20210717123607p:plain

Encoder-RNN

以下のような処理をしている

①文章を単語等のトークン毎に分割し、トークンごとにIDをふる

トークンIDごとにonr-hotベクトルを割り当てる

③one-hotベクトルをembeding表現に変換する

④ID順ごとにRNNを入れていき、最終的に分の意味を持つベクトル(though vector)にする

f:id:Maruring:20210717124028p:plain

Decoder-RNN

以下のような処理をしている

①EncoderRNNのtrough vectorから各トークンの生成確率を出力

②生成確率に基づいてトークンをランダムに選ぶ

③②で選ばれたトークンをEmbedingしてDecoderRNNの次の入力とする

④①~③を繰り返して②で得られたトークンを文字列に直す

<<確認テスト>>

下記の選択肢から、seq2seqについて説明しているものを選べ

RNNを用いたEncoder-Decoderモデルの一種であり、機械翻訳などのモデルに使われる

演習チャレンジ

e = E.dot(w)

HRED

Seq2eqでは1問1答しかできず、変な応答になる

そこでSeq2seq+Context RNNを付け加えたモデルで解決した

VHRED

HREDは会話の「流れ」のような多様性が無い

VAEの潜在変数の概念を追加することで解決した構造

<<確認テスト>>

seq2seqとHRED、HREDとVHREDの違いを簡潔に述べよ。

seq2seqはEncoder,Decoderで構成されるモデルで会話の前後を考慮しない。HREDではSeq2seqにContext RNN付け加えることで会話の前後を考慮する

VHREDではVAEの潜在変数の概念を追加している

オートエンコーダ

教師なし学習の一つ。そのため学習時の入力データは訓練データのみで教師データは利用しない

入力データから潜在変数zに変換するニューラルネットワークをEncoder逆に潜在変数zをインプットとして元画像を復元するニューラルネットワークをDecoder

オートエンコーダは以下のような構造をしている

f:id:Maruring:20210717142150p:plain

VAE

通常のオートエンコーダの場合、何かしらの存在変数zに押し込まれているデータがどんな構造をしているかわからない

VAEでは潜在変数zに確率分布z∼N(0,1)を仮定したもの

<<確認テスト>>

VAEは自己符号化器の潜在変数に確率分布を導入したもの