問題タブ [backpropagation]
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.
python - ニューラルネットワーク、パイソン
たとえば、y = x関数の重みを考え出すことができる単純なニューラルネットワークを作成しようとしています. これが私のコードです: http://codepad.org/rPdZ7fOz
ご覧のとおり、エラー レベルは実際にはそれほど低下しません。運動量と学習率を変更してみましたが、あまり役に立ちませんでした。私の入力、非表示、および出力の数は、私がやりたいことに対して正しいですか? そうでない場合、それは何ですか?もしそうなら、他に何が間違っている可能性がありますか?
java - 文字認識のためのニューラルネットワーク
入力としてビットマップを受け取り、アルファベットの各文字の可能性に対して 26 の出力を持つ単層ニューラル ネットワークのコードを追加しようとしています。
最初の質問は、追加される単一の非表示レイヤーに関するものです。非表示レイヤーには独自の出力値と重みのみのセットがあると考えて間違いありませんか? 独自の偏見を持つ必要はありません。
また、フィードフォワードの側面について正しく考えていることを確認できますか? ここにいくつかの擬似コードがあります:
それが正しいと仮定すると、トレーニングは次のようになりますか?
助けてくれてありがとう、私は非常に多くの例とチュートリアルを読みましたが、すべてを正しく行う方法をまだ判断できていません。
artificial-intelligence - フィードフォワード ニューラル ネットワーク トレーニングの効率的なデータセット サイズ
pybrain実装
を使用して、Python でフィードフォワード ニューラル ネットワークを使用しています。トレーニングには、逆伝播アルゴリズムを使用します。ニューラルネットワークでは、ネットワークを過小訓練/過剰訓練しないようにするために、適切な量のデータが必要であることを知っています。データセットのトレーニング データの約 1200 の異なるテンプレートを取得できました。
ここで質問があります:
トレーニングに最適なデータ量を計算するにはどうすればよいですか?
データセット内の 500 項目で試してみたところ、収束するのに何時間もかかったので、あまり多くのサイズを試す必要はありません。この最後のサイズでかなり良い結果が得られましたが、最適な量を見つけたいと思います. ニューラル ネットワークには、約 7 つの入力、3 つの隠れノード、および 1 つの出力があります。
machine-learning - ニューラルネットワークの重み付け
最近、私はバックプロパゲーションネットワークを研究し、いくつかの手動演習を行いました。その後、私は質問を思いつきました(おそらく意味がありません):2つの異なる置換方法に従うことに重要なことはありますか:1。インクリメンタルトレーニング:すべてのデルタWijがわかったら、提示する前に重みがすぐに更新されます次のトレーニングベクトル。2.バッチトレーニング:デルタWijが計算され、各模範トレーニングベクトルに対して保存されます。ただし、デルタWijは、重みを更新するためにすぐには使用されません。体重の更新は、トレーニングエポックの終わりに行われます。
しばらくグーグルで検索しましたが、結果が見つかりませんでした。
algorithm - 浮動小数点を変換してニューラルネットワークにフィードする方法は?
Neurons、Percepton、MultiLayerPerceptronの概念に関するオンラインチュートリアルを読んでいます。それでは、私自身の例でこの概念を実装したいと思います。私がやりたいのは、次の単純なアルゴリズムをネットワークに実装することです。
4つの浮動小数点数があると仮定するminus1
とplus1
、、、minus2
plus2
しかし、ここに私の懸念があります:
63.8990、-165.177、1.33001、または0.98401の番号をネットワークに供給するにはどうすればよいですか?
4つの数値があるので、どのように入力の数を選択する必要がありますが、4つの入力だけを使用するか、最初にすべてをビットに変換して、関連するビットの数に応じて入力の数を選択するかがわかりません。
3種類の出力(1、-1,0)を考慮すると、出力層に3つのニューロンが必要であり、それぞれが特定の種類の回答を表すか、ネットワークをトレーニングして、それぞれの種類の回答を個別に学習する必要があります(最初の1つは1つ)。ネットワーク、2番目の場合は-1、最後の場合は0)?
よろしくお願いします。よろしくお願いします。
ステファン
perl - 多層ニューラル ネットワークは負の値を予測しません
入力ベクトルの正弦を予測するために、多層パーセプトロンを実装しました。ベクトルは、ランダムに選択された 4 つの -1,0,1 と 1 に設定されたバイアスで構成されます。ネットワークは、ベクトルの内容の合計の正弦を予測する必要があります。
例 入力 = <0,1,-1,0,1> 出力 = Sin(0+1+(-1)+0+1)
私が抱えている問題は、ネットワークが負の値を予測することはなく、ベクトルの sin 値の多くが負であることです。すべての正またはゼロの出力を完全に予測します。エポックごとに更新される重みの更新に問題があると思います。以前にNNでこの問題に遭遇した人はいますか? どんな助けでも素晴らしいでしょう!!
注: ネットワークには 5 つの入力、1 つの隠れ層と 1 つの出力に 6 つの隠れユニットがあります。アクティブ化の隠れ層と出力層でシグモイド関数を使用しており、大量の学習率 (現在は 0.1) を試しました。
neural-network - Java based Neural Network --- how to implement backpropagation
I am building a test neural network and it is definitely not working. My main problem is backpropagation. From my research, I know that it is easy to use the sigmoid function. Therefore, I update each weight by (1-Output)(Output)(target-Output) but the problem with this is what if my Output is 1 but my target is not? If it is one at some point then the weight update will always be 0...For now I am just trying to get the darn thing to add the inputs from 2 input neurons, so the optimal weights should just be 1 as the output neuron simply adds its inputs. I'm sure I have messed this up in lots of places but here is my code:
OK so that is a lot of code so allow me to explain. The net is simple for now, just an input layer and an output layer --- I want to add a hidden layer later but I'm taking baby steps for now. Each layer is an arraylist of neurons. Input neurons are loaded with inputs, a 1 and a 2 in this example. These neurons fire, which calculates the sigmoid of the inputs and outputs that to the output neurons, which adds them and stores the value. Then the net backpropagates by taking the (answer-output)(output)(1-output)(output of the specific input neuron) and updates the weights accordingly. A lot of times, it cycles through and I get infinity, which seems to correlate with negative weights or sigmoid. When that doesn't happen it converges to 1 and since (1-output of 1) is 0, my weights stop updating.
The numCalled and totalSignal values are just so the algorithm waits for all neuron inputs before continuing. I know I'm doing this an odd way, but the neuron class has an arraylist of neurons called connections to hold the neurons that it is forward connected to. Another arraylist called backconns holds the backward connections. I should be updating the correct weights as well since I am getting all back connections between neurons i and j but of all neurons j (the layer above i) I am only pulling weight i. I apologize for the messiness --- I've been trying lots of things for hours upon hours now and still cannot figure it out. Any help is greatly appreciated!
neural-network - 離散出力のバックプロパゲーション ニューラル ネットワーク
私は、3 層の逆伝播ネットワークを使用して xor の例に取り組んでいます。出力層にシグモイド アクティベーションがある場合、(1,0) の入力は 1 の目的の出力に対して 0.99 を与える可能性があり、(1,1) の入力は 0 の目的の出力に対して 0.01 を与える可能性があります。
しかし、出力を 0 または 1 の離散値にしたい場合は、その間のしきい値を 0.5 に設定するだけでよいでしょうか? このしきい値は、他の重みと同じようにトレーニングする必要がありますか?
optimization - 勾配降下を行うときに勾配を確認する
フィードフォワード逆伝播オートエンコーダー (勾配降下によるトレーニング) を実装しようとしており、勾配を正しく計算していることを確認したいと考えていました。このチュートリアルでは、各パラメーターの導関数を一度に 1 つずつ計算することを提案していますgrad_i(theta) = (J(theta_i+epsilon) - J(theta_i-epsilon)) / (2*epsilon)
。これを行うためにMatlabでサンプルコードを書きましたが、あまり運がありませんでした.導関数から計算された勾配と数値的に検出された勾配の差は大きくなる傾向があります(>>有効数字4桁)。
誰かが提案を提供できる場合は、(勾配の計算またはチェックの実行方法のいずれかで)助けていただければ幸いです。読みやすくするためにコードを大幅に単純化したため、バイアスを含めず、重み行列を結び付けていません。
まず、変数を初期化します。
次に、いくつかの入力 imagex
を指定して、フィードフォワード伝搬を行います。
私が使用している損失関数は、標準の Σ(0.5*(z - x)^2)) です。
最後に、勾配が正しいことを確認します (この場合は、デコーダーに対してのみ行います)。
これを MNIST データセット (最初のエントリ) で実行すると、次のような結果が得られます。