7

入力としてビットマップを受け取り、アルファベットの各文字の可能性に対して 26 の出力を持つ単層ニューラル ネットワークのコードを追加しようとしています。

最初の質問は、追加される単一の非表示レイヤーに関するものです。非表示レイヤーには独自の出力値と重みのみのセットがあると考えて間違いありませんか? 独自の偏見を持つ必要はありません。

また、フィードフォワードの側面について正しく考えていることを確認できますか? ここにいくつかの擬似コードがあります:

// input => hidden
for j in hiddenOutput.length:
    sum=inputs*hiddenWeights
    hiddenOutput[j] = activationFunction(sum)
// hidden => output
for j in output.length:
    sum=hiddenOutputs*weights
    output[j] = activationFunction(sum)

それが正しいと仮定すると、トレーニングは次のようになりますか?

def train(input[], desired[]):
    iterate through output and determine errors[]
    update weights & bias accordingly
    iterate through hiddenOutput and determine hiddenErrors[]
    update hiddenWeights & (same bias?) accordingly

助けてくれてありがとう、私は非常に多くの例とチュートリアルを読みましたが、すべてを正しく行う方法をまだ判断できていません。

4

3 に答える 3

1

ディラン、これは宿題の期限が過ぎてからかもしれませんが、あなたが投稿した内容についていくつか考えがあります。

  • 入力ビットマップのサイズよりもはるかに大きな非表示レイヤーを作成します。
  • 入力 -> 非表示 -> 出力とは異なる重みとバイアスが必要です。
  • 誤差関数 (ディスクリミネーター) に多くの時間を費やします。
  • ニューラル ネットワークは一連の重みにすぐに固定される傾向があることを理解してください (通常は正しくありません)。最初からやり直して、別の順序でトレーニングする必要があります。

ニューラル ネットワークについて私が学んだことは、それらが機能している (または機能していない) 理由がわからないということです。それだけで、医療や金融の領域から遠ざける理由になります。

于 2010-11-30T19:47:09.190 に答える
0

バイアス用語の使用に関する限り、セクションを見つけましたなぜバイアス/しきい値を使用するのですか? comp.ai.neural-nets FAQで非常に便利です。そのFAQを読むことを強くお勧めします。

于 2012-09-19T04:22:01.917 に答える
0

http://www.ai-junkie.com/ann/evolved/nnt1.htmlを読みたいと思うかもしれません。そこでは、あなたがしていることについて正確に言及しています。また、学習方法の(ほとんど)簡単な説明とともにコードも提供しました。学習の側面はフィード フォワードとはまったく異なりますが、これにより NN の性質についていくつかのアイデアが得られることを願っています。

隠れ層や出力層にも偏りがあるべきだと私は信じています。

また、NN は扱いにくい場合があります。最初に 1 文字だけを識別してみてください。単一の出力のみから一貫したハイ/ロー信号を取得します。次に、同じ文字のさまざまなバリエーションでその信号を維持しようとします. その後、進行してさらに追加できます。試合でのみ出力を与える 26 の異なるネットワークを教えることで、それを行うことができます。または、26 の出力を持つ 1 つの大きな NN として作成することもできます。2 つの異なるアプローチ。

于 2010-12-12T08:10:23.423 に答える