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

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

新規登録して質問してみよう
ただいま回答率
85.50%
機械学習

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

Q&A

解決済

1回答

653閲覧

ニューラルネットワークにおける逆方向への演算による入力値の復元

wotaku

総合スコア13

機械学習

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

0グッド

0クリップ

投稿2020/08/03 22:39

ざっくりとした質問内容は,**『学習済みのニューラルネットワークにおいて,出力側から入力を入れて,逆方向から演算することで,元の入力値の復元は可能か?』**というものです.

例えば,多層パーセプトロンを用いてMNISTの分類器を作ったとします.
モデルの内部には,学習させた重みパラメータ(weightとbias)が存在します.
そこで,本来出力値である10個の確率の配列を,出力側から入力し,逆方向に演算していくことで入力値である数字の手書き画像を復元することは可能なのか?というものです.

試しに学習させたモデルの重みとバイアスを出力側から順番にget_weights()で取り出し,
逐一matmulで演算したものを描画してみたのですが,モザイク状のイメージしか出力されませんでした.

演算は以下のように行ったのですが,やはり間違っているのでしょうか.
(形状なども無理やり合うように転置したので,おかしい部分があるかと思います)

Python

1idx = np.random.randint(x_test.shape[0]) 2inpt = x_test[idx] 3res = myModel.predict(inpt[tf.newaxis, ...]) # 確率値 4 5l = myModel.layers[3] 6res += l.get_weights()[1] # バイアス項 7res = np.matmul(l.get_weights()[0], res.T) # 重み 8 9l = myModel.layers[2] 10res = res.T + l.get_weights()[1] # バイアス項 11res = np.matmul(l.get_weights()[0], res.T) # 重み

上記演算では,活性化関数(ここではsigmoidおよびsoftmax)を全く考慮していませんが,やはり必要でしょうか.

尚,画像は以下のようになります.
![イメージ説明

確率値ごとに,このモザイク状の画像もそれぞれの特徴があるようには見受けられました.
(配列の2の部分だけが大きい(=2が答え)ときは特徴的な黒い横棒が表れる等)
しかし数字の手書き画像とは程遠いものです.

原理上可能ということであれば,もう少し突き詰めて考えてみようと思っているので,
可能か不可能かということだけでもご教示頂ければ幸いです.

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

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

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

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

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

guest

回答1

0

ベストアンサー

質問に記載のことを実現するには双方向型ネットワーク構造を持つニューラルネットワークを実装する必要があると考えます。記載のコードは入力層から出力層に向けて一方向に信号が伝達されることを前提にしているので、逆方向の計算結果が入力値になることを保証しません。一方、双方向型ネットワークであれば順方向と逆方向を学習するので、期待する結果を得られると思います。
双方向型ネットワークの代表的なものにボルツマンマシン(その改良型のRBM)が
あります。このあたりを調べてはいかがでしょうか

投稿2020/08/05 00:38

R.Shigemori

総合スコア3376

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

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

wotaku

2020/08/09 05:12

返答が遅れてしまい申し訳ありません. やはり通常のモデル構造では原理的に難しいということですね. 双方向型ネットワークについて調べてみます.ありがとうございました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問