Tensorflowファーストフードチュートリアル(5)-範数
2426 ワード
マトリックスステップパラメータ
ファーストフードのチュートリアルとして、できるだけコードを多くして、ツールを多く紹介して、原理と公式を少なくします.しかし、私もこのようにはっきり言えないことをよく知っています.結局、問題の複雑さはここにあります.皆さんと一緒にTensorflowで1周探索した後、私は必ず数学の基礎がしっかりしているさらなるチュートリアルを書かなければなりません.
ノルム初認識
一般大学の本科の「線形代数」教材では、範数や広義逆などの知識を話さず、「マトリックス論」の授業を学ぶ必要がある.しかし不幸なことに、深い勉強で頻繁に使われています.だから私たちはやはり基礎的な概念を持っていなければなりません.
ベクトルでもマトリクスでも,機械学習ではそれらの大きさに対するメトリックが常に必要である.ベクトルのメトリックについて、私たちの第一印象はベクトルの長さでいいのではないでしょうか.もっと文化的な名詞に変えると、オキリの距離です.このような高い距離は、実はすべての値の平方の和の平方根です.ord='euclidean'のパラメータでtfを呼び出すことができます.normはオキリドの範数を求めに来た.例:
これは神秘的ではありません.私たちはsqrtで計算します.
次に,ベクトルの範数を行列に広げた.実はやはりスープを交換して薬を交換しないで、やはり平方和の平方根を求めます.
元の列のベクトルを2 x 2の行列に変えて、私たちは範数を求め続けます.今ではFrobeniusという大きな名前があります.
まあ、計算すると[1,2,3,4]ベクトルの範数値と同じです.
ノルムの定義
ユークリッド範数とFrobenius範数は範数の特例にすぎない.より一般的には、範数の定義は以下の通りである.
範数は本質的にベクトルを非負の値にマッピングする関数である.p=2のとき,範数をユークリッド範数と呼ぶ.機械の勉強で使いすぎたので、普通は簡単に書きます.
より厳密に言えば、範数は以下の性質を満たす任意の関数である.
(三角不等式、triangle inequalityと呼ばれる)
範数の普及
範数に加えて,機械学習では範数がよく用いられ,すべての要素の絶対値の和である.
ベクトルまたはマトリクスにどれだけの要素があるかを計算したい場合があります.この要素の個数は範数とも呼ばれます.しかし、この呼び方は科学的ではない.上の3つの定義の3つ目に合わないからだ.一般的には、やはり範数を使用することをお勧めします.
次の例を見てみましょう.
また、最大ノルム(max norm)ともいうノルムもある.最大パラメータは、ベクトルの最大振幅を持つ要素の絶対値を表します.
ord=npを使うことができます.infのパラメータは最大の範数を求める.
範数と賦範空間
最後に、数学上の範数の厳密な定義を見てみましょう.上記の概念とコード実装に対する理解を経て、今ではこの定義はもう理解しにくくない.
1ベクトルの範数を定義する:Vを数域F上の線形空間とし、Vのいずれかのベクトルxに対して、非負の実数に対応し、以下の条件を満たす.正定性:x=0 のみ整合性: 三角不等式:任意に対して、すべてあり、ベクトルxの範数と呼ばれ、賦範空間である.
2行列の範数を定義します:Aごとに、実関数N(A)に対応する場合、以下の条件を満たすとします.非負性:,正定性: 整合性: 三角不等式:,N(A)=をAの一般化行列の範数と呼ぶ.さらに,上の同類の一般化行列の範数について, という結論が得られた.(行列乗算の)適合性:は、Aの行列定数と呼ばれる.
ファーストフードのチュートリアルとして、できるだけコードを多くして、ツールを多く紹介して、原理と公式を少なくします.しかし、私もこのようにはっきり言えないことをよく知っています.結局、問題の複雑さはここにあります.皆さんと一緒にTensorflowで1周探索した後、私は必ず数学の基礎がしっかりしているさらなるチュートリアルを書かなければなりません.
ノルム初認識
一般大学の本科の「線形代数」教材では、範数や広義逆などの知識を話さず、「マトリックス論」の授業を学ぶ必要がある.しかし不幸なことに、深い勉強で頻繁に使われています.だから私たちはやはり基礎的な概念を持っていなければなりません.
ベクトルでもマトリクスでも,機械学習ではそれらの大きさに対するメトリックが常に必要である.ベクトルのメトリックについて、私たちの第一印象はベクトルの長さでいいのではないでしょうか.もっと文化的な名詞に変えると、オキリの距離です.このような高い距離は、実はすべての値の平方の和の平方根です.ord='euclidean'のパラメータでtfを呼び出すことができます.normはオキリドの範数を求めに来た.例:
>>> a02 = tf.constant([1,2,3,4],dtype=tf.float32)
>>> sess.run(tf.norm(a02, ord='euclidean'))
5.477226
これは神秘的ではありません.私たちはsqrtで計算します.
>>> np.sqrt(1*1+2*2+3*3+4*4)
5.477225575051661
次に,ベクトルの範数を行列に広げた.実はやはりスープを交換して薬を交換しないで、やはり平方和の平方根を求めます.
>>> a03 = tf.constant([[1,2],[3,4]],dtype=tf.float32)
>>> a03
>>> sess.run(a03)
array([[1., 2.],
[3., 4.]], dtype=float32)
元の列のベクトルを2 x 2の行列に変えて、私たちは範数を求め続けます.今ではFrobeniusという大きな名前があります.
>>> sess.run(tf.norm(a03,ord=2))
5.477226
まあ、計算すると[1,2,3,4]ベクトルの範数値と同じです.
ノルムの定義
ユークリッド範数とFrobenius範数は範数の特例にすぎない.より一般的には、範数の定義は以下の通りである.
範数は本質的にベクトルを非負の値にマッピングする関数である.p=2のとき,範数をユークリッド範数と呼ぶ.機械の勉強で使いすぎたので、普通は簡単に書きます.
より厳密に言えば、範数は以下の性質を満たす任意の関数である.
範数の普及
範数に加えて,機械学習では範数がよく用いられ,すべての要素の絶対値の和である.
ベクトルまたはマトリクスにどれだけの要素があるかを計算したい場合があります.この要素の個数は範数とも呼ばれます.しかし、この呼び方は科学的ではない.上の3つの定義の3つ目に合わないからだ.一般的には、やはり範数を使用することをお勧めします.
次の例を見てみましょう.
>>> sess.run(tf.norm(a03,ord=1))
10.0
また、最大ノルム(max norm)ともいうノルムもある.最大パラメータは、ベクトルの最大振幅を持つ要素の絶対値を表します.
ord=npを使うことができます.infのパラメータは最大の範数を求める.
>>> sess.run(tf.norm(a03,ord=np.inf))
4.0
範数と賦範空間
最後に、数学上の範数の厳密な定義を見てみましょう.上記の概念とコード実装に対する理解を経て、今ではこの定義はもう理解しにくくない.
1ベクトルの範数を定義する:Vを数域F上の線形空間とし、Vのいずれかのベクトルxに対して、非負の実数に対応し、以下の条件を満たす.
2行列の範数を定義します:Aごとに、実関数N(A)に対応する場合、以下の条件を満たすとします.