質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

2回答

812閲覧

(LSTMなどにより)encodeする時としない時

a_boy

総合スコア54

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

1クリップ

投稿2019/03/01 03:21

編集2019/03/01 05:16

現在、私が読んでいる書籍に掲載されたコードについてです。

自然言語での「質問」と、その質問に答えるための情報を提供する「テキスト」から、あらかじめ定義された語彙の中から「答え」を出力するというモデルを考えた際、これら二つの入力をまずembedし、それから1層のLSTMによってencodeすると書かれています。

また別の例では、SNSの投稿から投稿者の年齢や所得などを出力するというもので、入力に対し、embedはされているものの、encodeは行われていません。

どういった場合にencodeすればよいのか教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

上の例を具体的にしてみます。

  • 問題:猫の耳の形は?
  • テキスト:猫の耳の形は三角形である
  • 定義された語彙:丸, 三角, 四角,
  • 答え:三角

ある程度は統語的な情報を取り扱えないと、自然言語の文の意味していることはわかりません。「猫の耳・・・ではなく足の形は?」とか「猫の耳を半分にした形は?」とか「猫の耳の形は三角形ではない」とか「犬の耳の形は四角形だが、猫の耳の形は三角形である」とかが来ちゃう可能性がある訳です。なので、問題とテキストを読むためにLSTMを使います。

このタスクでは定義された語彙のembeddingを予測させれば良いので、1層のLSTMによってencodeした結果がそれになるように訓練するということでしょう(もう少し間になにか挟むのかもしれませんが)。

下の例を具体的にしてみます。年齢と性別を予測するというタスクに変えておきます。

  • データ1

テキスト:はなちゃんとディズニーランドに行った! 楽しかった♡
年齢:18歳
性別:女性

  • データ2

すぐに思いつかなかったので以下割愛

単語や言葉遣いなどがわかればだいたい予測できるので、統語的な情報は要らないことがわかります。doc2vecや単語ベクトルを平均するなどの方法を用いて文全体の分散表現を得て、それから機械学習を使って回帰問題を解けば良いとわかります。
(もっと言えば、この手の問題は分散表現が使えるようになる前からBag of Wordsなどでそれなりに解けていたはずです)

投稿2019/03/02 05:33

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

a_boy

2019/03/02 08:16 編集

ご回答ありがとうございます。 なぜencodeする必要があるかの根拠を明確に書いていただき、理解が深まりました!
guest

0

encodeという言葉は、意味が広いので、なんとも言い難いですが、LSTMでいうencodeは、情報の統合(embedされたベクトルを元に変換されたベクトルなりテンソルなり)ですね。これをdecodeすることで、出力となるわけです。

自然言語処理で、深層学習を使うものでは、基本的な処理の流れは以下になります。
単語(文)→embed(ベクトル化)→encode(サマる)→decode(出力ベクトル)→単語(文)に戻す。

つまるところ、出力がテキストの場合は、ここでいうencodeを使い、数値の場合は、単語ベクトル等(embedされたもの)から直接計算ロジックを組むだけ、となります。

ざっくり言うとこんな感じです。

投稿2019/03/01 09:15

ilove2dgirl

総合スコア50

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

a_boy

2019/03/01 14:23

ご回答ありがとうございます。 質問なのですが、encodeすることによって何が変わるのでしょうか? encodeするべき時はわかったのですが、何の目的で、またなぜ出力が数値の場合はencodeしなくてよいのかがわかりません。
ilove2dgirl

2019/03/02 04:51

encodeすることによって、一旦、入力の情報の全体を捉えます。 encodeをしないと、入力の情報をそのまま使うことしかできません。 正確に言うと、出力が数値の場合はencodeしなくて良い、ではなく、入力の情報を統合して判断する必要がなければ、encodeしなくてよい、となります。 人間の脳に例えると、何かを聞いて発言する際、耳→脳の処理がencode、脳→口がdecodeと思っていただけると、イメージがつきやすいかと思います。 出力が数値の場合、基本的には、encodeではなく、単語のベクトルをそのまま入力として計算できるよね、という理屈だと思います。少なくとも、自分が実装するとしたら、encoder-decoderモデルは使わず、直接計算ロジックを組みます。 参考ですが、encode、decodeについては、画像処理という別の分野ではありますが、こちらの記事がイメージ着きやすいかと思います。 https://qiita.com/kenmatsu4/items/b029d697e9995d93aa24 また、自然言語処理のでは、ここに載ってる図がイメージ着きやすいかなと思います。 https://satopirka.com/2018/02/encoder-decoder%E3%83%A2%E3%83%87%E3%83%AB%E3%81%A8teacher-forcingscheduled-samplingprofessor-forcing/
a_boy

2019/03/02 08:18

ご回答ありがとうございます! 質問にも答えていただき、非常に助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問