問題タブ [autoencoder]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
matlab - 独立した隠れたアクティベーションを備えた教師なしニューラル ネットワーク: エントロピーまたは尖度ペナルティを実装する方法は?
簡単に言えば:
教師なしニューラル ネットワークのコストと逆伝播に ICA のようなエントロピーまたは尖度ペナルティ項を実装するにはどうすればよいですか (スタックされたスパース オートエンコーダーを使用しています)。
詳細に:
Andrew Ng の UFLDL チュートリアルに基づいて、Matlab にスパース オートエンコーダー (AE) を共役勾配降下法と Wolfe 直線探索で実装しました。これにより、infomax を使用した独立成分分析 (ICA) よりもはるかにクリーンな結果が得られます (AE の隠れ層の活性化を eeglab の runica 関数の ICA 活性化と比較します)。
しかし、ICA のように、アクティベーションの最大の独立性も、私にとって重要な基準です。だから私はより高品質の sNN 隠しアクティベーションを実現したいのですが、それらを独立させたいと思っています。言い換えれば、スパース性と独立性の両方から恩恵を受けたいのです。
ICA は、エントロピーまたは尖度ペナルティ項を使用して、コンポーネント (アクティベーション) 間の相互情報を最小限に抑えます。
私は単に matlab の goropy または kurtosis 関数を適用しようとしました: 与えられた非表示層の活性化行列 'a' が (outputNeurons*hiddenNeurons) である場合、私は次のようにします:
これは悪い結果をもたらし、独立したアクティベーションはありませんでした。バックプロパゲーションのペナルティの誤差も計算する必要があると思いますが、方法がわかりませんでした。上記のコストペナルティが正しいかどうかもわかりません。
上記のコードを改善するため、または単純な数学用語で正しい方向に向けるためのアイデアはありますか?
machine-learning - VAE を実行した後、完全なフィード フォワード ネットワークで平均絶対誤差が下がらないのはなぜですか?
予測モデルを構築しようとしています。最初は変分オートエンコーダーを実行し、機能を 2100 から 64 に減らしました。
トレーニング用の (5000 X 64) サンプルとテスト用の (2000 X 64) サンプルを使用して、完全なフィード フォワードまたは MLP ネットワークを構築しようとしましたが、その結果、平均絶対誤差が 161 に達しても下がらなくなりました。すべてのハイパーパラメーターと隠しレイヤーを変えてみましたが、役に立ちませんでした。
その理由と、この問題を克服するにはどうすればよいかを誰かが提案できますか?
python - Theano オートエンコーダーのマージとトレーニング
Theano のオートエンコーダーを使用して、2 つの異なるタイプのデータからコンテキスト固有の機能を発見しようとしています。
最初のタイプには 13 の機能があり、2 番目のタイプには 60 の機能があります。
どちらも、オートエンコーダーの独自の独立したスタックを持っています。
最上位レイヤーの出力をマージし、これらを教師ありトレーニング用の回帰レイヤーにフィードします。
各コンテキストの事前トレーニングは正しく機能しているようですが、チュートリアルの標準トレーニング機能を使用して微調整中に問題が発生しました。
次のエラーが表示されます。
これは、トレーニング中に Theano ノードが処理される方法と関係があると思います。トレーニング バッチ (5, 73) が、最初のコンテキスト (13, 20) から個別に出力ノードに直接適用されているようです。
matlab - 定数関数を学習する MATLAB オートエンコーダー
MATLAB で基本的なオートエンコーダーをトレーニングしようとしています。私のデータは 430 の 10 次元ポイントで、オートエンコーダー コードは次のようになります。
ご覧のとおり、線形デコーダーを使用しています。これをデータセットで実行するとautoenc
、定数関数を学習するだけになります。すべての入力重みは最終的に異なりますが、実行predict(autoenc, data)
すると、各データ ポイントに対して同じベクトルが得られます。何が起こっているのでしょうか?
編集:もう少し調べてみたところ、オートエンコーダーがデータの平均値を単純に学習してそれを1日と呼ぶことがあるというのは一般的な現象のようです。どうやらこれは最適化エラーであり、これは極小値です。関連リンク; 多少関連するリンク。どちらも満足のいく答えを提供しません。私が知る限り、MATLAB のオートエンコーダーは共役勾配のみを提供します。
tensorflow - Tensorflow を使用してオートエンコーダーから隠れユニット/ソフトマックス (機能) を抽出 (プロット) する方法
私は ML が初めてで、tensorflow を使用しています。
オートエンコーダーの機能を見たいのですが、隠しユニットを抽出する (見る) 方法がわかりません。
誰かが私を助けることができますか?
独自のデータセットを作成しましたが、元のコードは MNIST です: https://jmetzen.github.io/2015-11-27/vae.html
非表示ユニットのレイヤーを追加してスタック AE に変換しました.. (スタックになったかどうかはわかりませんが、機能しました)
python - 入力パラメーターを Theano 関数に渡す正しい方法は何ですか?
Theano ライブラリがインストールされた Python 2.7 (更新されたバージョン) を使用していますが、入力パラメーターに問題があり、Theano 関数を定義しています。
コードは次のとおりです。
それはここから取られた:
http://deeplearning.net/tutorial/code/SdA.py
そして、Eclipseでこのエラーが発生します:
したがって、この方法でコードを変更すると、次のようになります。
動作しますが、corruption_level と learning_rate の値を渡すことができません。
誰でも助けることができますか?ありがとう!
ルカ
neural-network - 畳み込みオートエンコーダーが意味のあるフィルターを学習しない
畳み込みオートエンコーダーを理解するために TensorFlow で遊んでいます。これを行う単純な単層オートエンコーダーを実装しました。
入力 (次元: 95x95x1) ---> エンコード (32 個の 5x5 フィルターによる畳み込み) ---> 潜在表現 (次元: 95x95x1x32) ---> デコード (結合された重みを使用) ---> 再構築された入力 (次元: 95x95x1)
入力は白黒のエッジ画像、つまり RGB 画像のエッジ検出の結果です。
フィルターをランダムに初期化し、モデルをトレーニングして損失を最小限に抑えました。ここで、損失は、入力と再構成された入力の平均二乗誤差として定義されます。
1000 ステップでトレーニングした後、私の損失は収束し、ネットワークは画像を適切に再構築できます。ただし、学習したフィルターを視覚化すると、ランダムに初期化されたフィルターとあまり変わらないように見えます。ただし、フィルターの値はトレーニング ステップごとに変化します。
少なくとも水平方向と垂直方向のエッジ フィルターを期待していました。または、ネットワークが「ID フィルター」を学習していた場合、フィルターはすべて白か何かであると予想していたでしょうか?
誰かこれについて何か考えがありますか?または、何が起こっているかを分析するために何ができるかについて何か提案はありますか? デコードする前にプーリング層とデプーリング層を含める必要がありますか?
ありがとうございました!
P / S:RGB画像で同じモデルを試してみましたが、フィルターはランダムに見えます(ランダムな色のしみのように)。
autoencoder - オートエンコーダーでのエンコードとデコードのアルゴリズム
現在、R を使用してオートエンコーダーに取り組んでいます。R でオートエンコーダー パッケージを試しましたが、結果を解釈できません。そこで、オートエンコーダー用の R コードを作成しようとしています。私の質問は、オートエンコーダーでエンコードとデコードがどのように行われるかです。そのための公式またはアルゴリズムはありますか?誰でも私を助けてもらえますか?