深層学習における重みとバイアスとは何ですか?


16

Tensorflow Webサイトから機械学習を学び始めています。ディープラーニングプログラムがたどる流れについて、非常に初歩的な理解を身に付けました(この方法は、本や大きな記事を読む代わりに、速く学ぶことができます)。

私が遭遇したいくつかの紛らわしいことがありますが、そのうちの2つは次のとおりです。

  1. バイアス
  2. 重量

tensorflowウェブサイトに関するMNISTチュートリアルでは、画像内の特定のパターンの存在の証拠を見つけるためにバイアスと重みが必要であると述べています。私が理解できないのは、BiasとWeightの値がどこでどのように決定されるかです。

これらの値を提供する必要がありますか、それともTensorFlowライブラリはトレーニングデータセットに基づいてこれらの値を自動的に計算しますか?

また、ディープラーニングで私のペースを加速する方法についていくつかの提案を提供できれば、それは素晴らしいことです!

Tensorflow初心者向けチュートリアル


3
以下のようなパラメータ統計モデル、彼らはされて学んだと推定最小化することにより、損失関数、データに依存します。そして、それが機械学習のすべてです。この教え方に従うなら、多くの質問をするでしょう。あなたが賢明な順序で物事を学ぶことができるように、CourseraのようなMOOCを取ることをお勧めします。
エムレ

これは非常に基本的なものなので、@ Emreが推奨するようなコースを実行する必要があります。
SmallChess

回答:


11

数学的に言えば。あなたがモデルであると想像してください(その種ではありません、図8のもの)

Y=WX+nigerian

それで、あなたは何を理解していますか?偏っているのは、あなたが持っているようなモデルでのその前提です。

重みに関しては、論理的に言えば、WeightはGradient(線形代数のa)、

グラデーションとは 、それは線形関数の急峻さです。

線形勾配が非常に急峻になる理由(高い正の値)

これは、X(入力)のわずかな変更がY軸(出力)に大きな違いを引き起こすためです。そのため、(モデルとしてではなく、優秀な数学者(あなたの分身))またはコンピューターがこの勾配を見つけようとします。これを重みと呼ぶことができます。違いは、鉛筆とグラフの本を使用してこれを見つけることですが、ブラックボックスはレジスタで電子マジックを行います。

機械学習プロセスでは、コンピューターまたはユーザーは、データポイント全体に多数の直線または線形関数を描画しようとしますが、

なぜあなたは多くの直線を描くようにしていますか?

グラフブック/コンピューターのメモリでは、適切に適合する線を表示しようとしているためです。

適切に適合するラインをどのようにして知ることができますか?

私のセカンダリースクールでは、データポイント全体に線を引くことを教えられ、すべてのデータポイントの真ん中を完全に通り抜ける線を視覚的にチェックしました(AIの誇大広告は忘れてください、私たちの脳は物事を見つめるだけで計算できます) 。しかし、コンピューターに関しては、各ラインの標準偏差と分散をデータポイントに向かって試行します。偏差が最小のライン(エラー関数と呼ばれることもあります)が選択されます。

涼しい!そう、そして何が起こる

その線の勾配が計算され、学習問題の重みが計算されたとしましょう

thatsは機械学習の基本的な理解であり、高校生はグラフブックにグラフをプロットしています


10

コース、おそらくAndrew NgのCourseraのMachine Learningを検討する必要があるというあなたの質問に対するコメントに同意します。これは高く評価されている無料の入門コースです。これは、機械学習の基礎に関する基本的な質問です。そのため、この回答では数学を取り上げていませんが、そのコースを含む多くの場所からそれを得ることができます。

バイアスと重みの値はどこでどのように決定されますか?

重みとバイアスは、モデルの学習可能なパラメーターです。ニューラルネットワークと同様に、線形回帰などの関連モデルでも同じ名前で表示されます。ほとんどの機械学習アルゴリズムには、このような学習可能なパラメーターが含まれています。

学習を開始する前のこれらのパラメーターの値は、ランダムに初期化されます(これにより、単一の値への収束がすべて停止されます)。次に、トレーニング中にデータが提示されると、正しい出力を持つ値に向かって調整されます。

これらの値を提供する必要がありますか、それともTensorFlowライブラリはトレーニングデータセットに基づいてこれらの値を自動的に計算しますか?

トレーニングの前に値を指定する必要はありませんが、パラメータの数(各層のサイズによって制御されるニューラルネットワーク)などを決定することもできます。TensorFlowは、トレーニング中に値を自動的に計算します。すでに訓練されたモデルがあり、それを再利用したい場合、ファイルから値をロードするなどして、値を直接設定します。

チュートリアルからの重みとバイアスの変更を処理する特定のコードは次のとおりです。

train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

この:

sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

最初の行は、重みと値の変更方法を定義します。これは、ほぼ「文字通り、勾配降下オプティマイザーを使用して、提供されたデータのクロスエントロピーを減らすトレーニング関数を定義する」と読むことができます。

yx


8

重量 -重量は接続の強さです。入力を増やすと、出力にどの程度の影響を与えますか。

ゼロに近い重みは、この入力を変更しても出力は変更されないことを意味します。多くのアルゴリズムは、ネットワークを簡素化するために、これらの重みを自動的にゼロに設定します。

バイアス -は、予測が実際の値からどれだけ離れているかを意味します。一般に、パラメトリックアルゴリズムはバイアスが高いため、学習が速く、理解しやすくなりますが、一般に柔軟性が低くなります。また、アルゴリズムバイアスの単純化された仮定を満たさない複雑な問題の予測パフォーマンスが低くなります。

低バイアスターゲット関数の形式に関するより多くの仮定を提案します。

High-Bia s:ターゲット関数の形式に関する仮定が少ないことを示唆します。


2
OPは、ニューラルネットワークのバイアスパラメーターについて尋ねていました。バイアスの定義は問題ありませんが、質問には答えないでください。
ニールスレーター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.